Animation: Difference between revisions
Content added Content deleted
m (removed trailing newlines in Elm solution) |
m (→{{header|Phix}}: added syntax colouring) |
||
Line 2,292: | Line 2,292: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
{{libheader|Phix/pGUI}} |
{{libheader|Phix/pGUI}} |
||
Clicking on the label changes the animation direction. |
|||
<lang Phix>-- demo\rosetta\Animation.exw |
|||
<!--<lang Phix>(phixonline)--> |
|||
include pGUI.e |
|||
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Animation.exw</span> |
|||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> |
|||
string hw = "Hello World! " |
|||
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span> |
|||
bool direction = true |
|||
Ihandle label |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">hw</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"Hello World! "</span> |
|||
<span style="color: #004080;">bool</span> <span style="color: #000000;">direction</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span> |
|||
function timer_cb(Ihandle /*ih*/) |
|||
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">label</span> |
|||
hw = iff(direction?hw[$]&hw[1..-2]:hw[2..$]&hw[1]) |
|||
IupSetAttribute(label,"TITLE",hw) |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">button_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*ih*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000080;font-style:italic;">/*button*/</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">pressed</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">/*x*/</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">/*y*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000080;font-style:italic;">/*pStatus*/</span><span style="color: #0000FF;">)</span> |
|||
return IUP_IGNORE |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">pressed</span> <span style="color: #008080;">then</span> |
|||
end function |
|||
<span style="color: #000000;">direction</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">not</span> <span style="color: #000000;">direction</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
function key_cb(Ihandle /*ih*/, atom c) |
|||
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_CONTINUE</span> |
|||
if c=K_ESC then return IUP_CLOSE end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
if c=K_UP then direction = not direction end if |
|||
return IUP_CONTINUE |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">timer_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*ih*/</span><span style="color: #0000FF;">)</span> |
|||
end function |
|||
<span style="color: #000000;">hw</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">direction</span> <span style="color: #0000FF;">?</span> <span style="color: #000000;">hw</span><span style="color: #0000FF;">[$]</span> <span style="color: #0000FF;">&</span> <span style="color: #000000;">hw</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]</span> |
|||
<span style="color: #0000FF;">:</span> <span style="color: #000000;">hw</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..$]</span> <span style="color: #0000FF;">&</span> <span style="color: #000000;">hw</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span> |
|||
procedure main() |
|||
<span style="color: #7060A8;">IupSetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">label</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hw</span><span style="color: #0000FF;">)</span> |
|||
IupOpen() |
|||
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_IGNORE</span> |
|||
label = IupLabel(hw,"FONT=\"Verdana, 18\"") |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
Ihandle dlg = IupDialog(label,"TITLE=Animation, DIALOGFRAME=YES, CHILDOFFSET=70x40, SIZE=200x80") |
|||
IupSetCallback(dlg, "K_ANY", Icallback("key_cb")) |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
IupShow(dlg) |
|||
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span> |
|||
Ihandle hTimer = IupTimer(Icallback("timer_cb"), 160) |
|||
<span style="color: #000000;">label</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #000000;">hw</span><span style="color: #0000FF;">,</span><span style="color: #008000;">`FONT="Verdana, 18"`</span><span style="color: #0000FF;">)</span> |
|||
IupMainLoop() |
|||
<span style="color: #7060A8;">IupSetCallback</span><span style="color: #0000FF;">(</span><span style="color: #000000;">label</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"BUTTON_CB"</span><span style="color: #0000FF;">,</span> <span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"button_cb"</span><span style="color: #0000FF;">))</span> |
|||
IupClose() |
|||
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #000000;">label</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE=Animation, DIALOGFRAME=YES, CHILDOFFSET=70x40, SIZE=200x80"</span><span style="color: #0000FF;">)</span> |
|||
end procedure |
|||
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">hTimer</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupTimer</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"timer_cb"</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">160</span><span style="color: #0000FF;">)</span> |
|||
⚫ | |||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span> |
|||
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
⚫ | |||
=={{header|PicoLisp}}== |
=={{header|PicoLisp}}== |