Re: Animations in ConTeXt
So again. Is it possible to write something like the above animation
Richard Rascher-Friesenhausen asked packages
in ConTeXt (as a module)?
If Acrobat can display them, ConTeXt can generate them. Here is a simple example. \setupoutput [pdf] \setupcolors [state=start] \setupinteraction [state=start] \setuppapersize [S6][S6] %% this is just code to get something to animate \startMPinclusions picture thearrow, thestar; drawarrow (origin--up) scaled 10mm withpen pencircle scaled 3pt withcolor .9 red; setbounds currentpicture to (fullcircle scaled 22mm); thearrow:= currentpicture scaled 5; currentpicture:= nullpicture; for angle=0 step 72 until 359: draw thearrow rotated angle; endfor thestar:= currentpicture; currentpicture:= nullpicture \stopMPinclusions \setupMPvariables [drawstar] [rotation=0] \startuniqueMPgraphic{drawstar}{rotation} draw thestar rotated \MPvar{rotation}; \stopuniqueMPgraphic %% now we define some symbols (the frames of the animated sequence) \def\definestarsymbol#1{% \definesymbol [star #1] [\uniqueMPgraphic{drawstar}{rotation=#1}]} \definestarsymbol{0} \definestarsymbol{6} \definestarsymbol{12} \definestarsymbol{18} \definestarsymbol{24} \definestarsymbol{30} \definestarsymbol{36} \definestarsymbol{42} \definestarsymbol{48} \definestarsymbol{54} \definestarsymbol{60} \definestarsymbol{66} %% the frames are put into a fieldstack \definefieldstack [vortex] [star 0, star 6, star 12, star 18, star 24, star 30, star 36, star 42, star 48, star 54, star 60, star 66] %% and this is the JavaScrip code that displays the frames one by one \startJSpreamble MyField used later var current = 1; var delay = 200; % 200 milliseconds var timer; var running = false; % animation currently not running function Advance_Angle ( ) { this.getField("vortex:"+current).value = "Off"; if (++current > 12) % number of frames { current = 1; } % loop through frames this.getField("vortex:"+current).value = "On"; } \stopJSpreamble %% we want to control the starting and stopping of the animation \startJScode Rotate_Star uses MyField if (running) { try { app.clearInterval(timer); } catch(except) {}; running = false; } else { timer = app.setInterval("Advance_Angle()",delay); running = true; } \stopJScode \starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop)} {\fieldstack [vortex]} \stoptext Of course you would want to put the symbol definitions and the definition of the fieldstack into a loop. I tried %% \newcount\angle %% \angle=0%\zerocount %% \dorecurse{12} {% %% \number\angle:\qquad %% \definestarsymbol{\the\angle} %% \symbol[star \number\angle]\par %% \advance\angle by 6} and did get the single symbols. I wasn't successful however in putting the symbol list of the fieldstack definition into a loop. Perhaps the ConTeXt gurus can help. Best regards, Richard
Hi Richard, thanks for this example. I tried it and voilà! Willi Richard Hirsch wrote:
Richard Rascher-Friesenhausen asked
So again. Is it possible to write something like the above animation
packages
in ConTeXt (as a module)?
If Acrobat can display them, ConTeXt can generate them.
Here is a simple example.
\setupoutput [pdf] \setupcolors [state=start] \setupinteraction [state=start] \setuppapersize [S6][S6]
%% this is just code to get something to animate \startMPinclusions picture thearrow, thestar;
drawarrow (origin--up) scaled 10mm withpen pencircle scaled 3pt withcolor .9 red; setbounds currentpicture to (fullcircle scaled 22mm);
thearrow:= currentpicture scaled 5; currentpicture:= nullpicture;
for angle=0 step 72 until 359: draw thearrow rotated angle; endfor
thestar:= currentpicture; currentpicture:= nullpicture \stopMPinclusions
\setupMPvariables [drawstar] [rotation=0] \startuniqueMPgraphic{drawstar}{rotation} draw thestar rotated \MPvar{rotation}; \stopuniqueMPgraphic
%% now we define some symbols (the frames of the animated sequence) \def\definestarsymbol#1{% \definesymbol [star #1] [\uniqueMPgraphic{drawstar}{rotation=#1}]}
\definestarsymbol{0} \definestarsymbol{6} \definestarsymbol{12} \definestarsymbol{18} \definestarsymbol{24} \definestarsymbol{30} \definestarsymbol{36} \definestarsymbol{42} \definestarsymbol{48} \definestarsymbol{54} \definestarsymbol{60} \definestarsymbol{66}
%% the frames are put into a fieldstack \definefieldstack [vortex] [star 0, star 6, star 12, star 18, star 24, star 30, star 36, star 42, star 48, star 54, star 60, star 66]
%% and this is the JavaScrip code that displays the frames one by one \startJSpreamble MyField used later var current = 1; var delay = 200; % 200 milliseconds var timer; var running = false; % animation currently not running
function Advance_Angle ( ) { this.getField("vortex:"+current).value = "Off"; if (++current > 12) % number of frames { current = 1; } % loop through frames this.getField("vortex:"+current).value = "On"; } \stopJSpreamble
%% we want to control the starting and stopping of the animation \startJScode Rotate_Star uses MyField if (running) { try { app.clearInterval(timer); } catch(except) {}; running = false; } else { timer = app.setInterval("Advance_Angle()",delay); running = true; } \stopJScode
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop)} {\fieldstack [vortex]} \stoptext
Of course you would want to put the symbol definitions and the definition of the fieldstack into a loop. I tried %% \newcount\angle %% \angle=0%\zerocount %% \dorecurse{12} {% %% \number\angle:\qquad %% \definestarsymbol{\the\angle} %% \symbol[star \number\angle]\par %% \advance\angle by 6} and did get the single symbols. I wasn't successful however in putting the symbol list of the fieldstack definition into a loop. Perhaps the ConTeXt gurus can help.
Best regards,
Richard
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
I don't get it. Examples (animations) on http://www.fi.muni.cz/~xholecek/animations/ compile and work OK with my TeX and Acrobat (Windows XP, Adobe Acrobat Professional 6.0.1). However, the example below doesn't work on my computer. I replaced some lines below with: \starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop) or % this line was added as described in MetaFun manual click \goto {here} [JS(Walk_Field{vortex})] for next step} {\fieldstack [vortex]} \stoptext which results in the PDF file attached. Stepping in JS(Walk_Field{vortex}) works OK, while continuous animation in JS(Rotate_Star) doesn't. Is this because of my (old?) ConTeXt distribution (ver 2005.01.31, fmt 2005.5.16), because of my (old/buggy?) Acrobat/OS or because of problems in JavaScript? Thank you, Mojca Willi Egger wrote:
Hi Richard,
thanks for this example. I tried it and voilà!
Willi
Richard Hirsch wrote:
Richard Rascher-Friesenhausen asked
So again. Is it possible to write something like the above animation
packages
in ConTeXt (as a module)?
If Acrobat can display them, ConTeXt can generate them.
Here is a simple example.
\setupoutput [pdf] \setupcolors [state=start] \setupinteraction [state=start] \setuppapersize [S6][S6]
%% this is just code to get something to animate \startMPinclusions picture thearrow, thestar;
drawarrow (origin--up) scaled 10mm withpen pencircle scaled 3pt withcolor .9 red; setbounds currentpicture to (fullcircle scaled 22mm);
thearrow:= currentpicture scaled 5; currentpicture:= nullpicture;
for angle=0 step 72 until 359: draw thearrow rotated angle; endfor
thestar:= currentpicture; currentpicture:= nullpicture \stopMPinclusions
\setupMPvariables [drawstar] [rotation=0] \startuniqueMPgraphic{drawstar}{rotation} draw thestar rotated \MPvar{rotation}; \stopuniqueMPgraphic
%% now we define some symbols (the frames of the animated sequence) \def\definestarsymbol#1{% \definesymbol [star #1] [\uniqueMPgraphic{drawstar}{rotation=#1}]}
\definestarsymbol{0} \definestarsymbol{6} \definestarsymbol{12} \definestarsymbol{18} \definestarsymbol{24} \definestarsymbol{30} \definestarsymbol{36} \definestarsymbol{42} \definestarsymbol{48} \definestarsymbol{54} \definestarsymbol{60} \definestarsymbol{66}
%% the frames are put into a fieldstack \definefieldstack [vortex] [star 0, star 6, star 12, star 18, star 24, star 30, star 36, star 42, star 48, star 54, star 60, star 66]
%% and this is the JavaScrip code that displays the frames one by one \startJSpreamble MyField used later var current = 1; var delay = 200; % 200 milliseconds var timer; var running = false; % animation currently not running
function Advance_Angle ( ) { this.getField("vortex:"+current).value = "Off"; if (++current > 12) % number of frames { current = 1; } % loop through frames this.getField("vortex:"+current).value = "On"; } \stopJSpreamble
%% we want to control the starting and stopping of the animation \startJScode Rotate_Star uses MyField if (running) { try { app.clearInterval(timer); } catch(except) {}; running = false; } else { timer = app.setInterval("Advance_Angle()",delay); running = true; } \stopJScode
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop)} {\fieldstack [vortex]} \stoptext
Best regards,
Richard
Hi Mojca, this is strange, on my installation with Acrobat 7.0.1 under Windows XP both the stepwise and continuous part work properly. Willi Mojca Miklavec wrote:
I don't get it. Examples (animations) on http://www.fi.muni.cz/~xholecek/animations/ compile and work OK with my TeX and Acrobat (Windows XP, Adobe Acrobat Professional 6.0.1). However, the example below doesn't work on my computer.
I replaced some lines below with:
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop) or % this line was added as described in MetaFun manual click \goto {here} [JS(Walk_Field{vortex})] for next step} {\fieldstack [vortex]} \stoptext
which results in the PDF file attached.
Stepping in JS(Walk_Field{vortex}) works OK, while continuous animation in JS(Rotate_Star) doesn't. Is this because of my (old?) ConTeXt distribution (ver 2005.01.31, fmt 2005.5.16), because of my (old/buggy?) Acrobat/OS or because of problems in JavaScript?
Thank you, Mojca
Willi Egger wrote:
Hi Richard,
thanks for this example. I tried it and voilà!
Willi
Richard Hirsch wrote:
Richard Rascher-Friesenhausen asked
So again. Is it possible to write something like the above animation
packages
in ConTeXt (as a module)?
If Acrobat can display them, ConTeXt can generate them.
Here is a simple example.
\setupoutput [pdf] \setupcolors [state=start] \setupinteraction [state=start] \setuppapersize [S6][S6]
%% this is just code to get something to animate \startMPinclusions picture thearrow, thestar;
drawarrow (origin--up) scaled 10mm withpen pencircle scaled 3pt withcolor .9 red; setbounds currentpicture to (fullcircle scaled 22mm);
thearrow:= currentpicture scaled 5; currentpicture:= nullpicture;
for angle=0 step 72 until 359: draw thearrow rotated angle; endfor
thestar:= currentpicture; currentpicture:= nullpicture \stopMPinclusions
\setupMPvariables [drawstar] [rotation=0] \startuniqueMPgraphic{drawstar}{rotation} draw thestar rotated \MPvar{rotation}; \stopuniqueMPgraphic
%% now we define some symbols (the frames of the animated sequence) \def\definestarsymbol#1{% \definesymbol [star #1] [\uniqueMPgraphic{drawstar}{rotation=#1}]}
\definestarsymbol{0} \definestarsymbol{6} \definestarsymbol{12} \definestarsymbol{18} \definestarsymbol{24} \definestarsymbol{30} \definestarsymbol{36} \definestarsymbol{42} \definestarsymbol{48} \definestarsymbol{54} \definestarsymbol{60} \definestarsymbol{66}
%% the frames are put into a fieldstack \definefieldstack [vortex] [star 0, star 6, star 12, star 18, star 24, star 30, star 36, star 42, star 48, star 54, star 60, star 66]
%% and this is the JavaScrip code that displays the frames one by one \startJSpreamble MyField used later var current = 1; var delay = 200; % 200 milliseconds var timer; var running = false; % animation currently not running
function Advance_Angle ( ) { this.getField("vortex:"+current).value = "Off"; if (++current > 12) % number of frames { current = 1; } % loop through frames this.getField("vortex:"+current).value = "On"; } \stopJSpreamble
%% we want to control the starting and stopping of the animation \startJScode Rotate_Star uses MyField if (running) { try { app.clearInterval(timer); } catch(except) {}; running = false; } else { timer = app.setInterval("Advance_Angle()",delay); running = true; } \stopJScode
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop)} {\fieldstack [vortex]} \stoptext
Best regards,
Richard
------------------------------------------------------------------------
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
Mojca Miklavec wrote:
I don't get it. Examples (animations) on http://www.fi.muni.cz/~xholecek/animations/ compile and work OK with my TeX and Acrobat (Windows XP, Adobe Acrobat Professional 6.0.1). However, the example below doesn't work on my computer.
I replaced some lines below with:
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop) or % this line was added as described in MetaFun manual click \goto {here} [JS(Walk_Field{vortex})] for next step} {\fieldstack [vortex]} \stoptext
which results in the PDF file attached.
(old/buggy?) Acrobat/OS or because of problems in JavaScript?
works ok here in acrobat 7 (acrobat has fuzzy ways of initializing js and widgets) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Hans Hagen wrote:
works ok here in acrobat 7
(acrobat has fuzzy ways of initializing js and widgets)
btw, such animations keep running whil teh doc is closes (70% cpu time !), so normally one should stop the similation (in js code) at closedocument time (can be an action). Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Hans Hagen wrote:
Mojca Miklavec wrote:
I don't get it. Examples (animations) on http://www.fi.muni.cz/~xholecek/animations/ compile and work OK with my TeX and Acrobat (Windows XP, Adobe Acrobat Professional 6.0.1). However, the example below doesn't work on my computer.
I replaced some lines below with:
\starttext \placefigure [here] [fig:animation] {A simple \MetaFun\ animation, click \goto {here} [JS(Rotate_Star)] to start (or stop) or % this line was added as described in MetaFun manual click \goto {here} [JS(Walk_Field{vortex})] for next step} {\fieldstack [vortex]} \stoptext which results in the PDF file attached.
(old/buggy?) Acrobat/OS or because of problems in JavaScript?
works ok here in acrobat 7
(acrobat has fuzzy ways of initializing js and widgets)
Yes, in the meantime I noticed that too. Acrobat 5 doesn't support those JS stuff at all, but the funny thing is that Acrobat 6 supports only a half of it. I was already running a continuous animation in Acrobat 6 (the one mentioned above), however it was compiled from plain TeX and I don't know how to include the fields in the same way in ConTeXt and how to write the same JS code for them. JS(Rotate_Star) didn't work in Acrobat 6, but I don't want to care about the bugs in Adobe products. They will never be removed (if ever) as soon as the bugs are removed from ConTeXt :) Mojca
Mojca Miklavec wrote:
Yes, in the meantime I noticed that too. Acrobat 5 doesn't support those JS stuff at all, but the funny thing is that Acrobat 6 supports only a half of it. I was already running a continuous animation in Acrobat 6 (the one mentioned above), however it was compiled from plain TeX and I don't know how to include the fields in the same way in ConTeXt and how to write the same JS code for them.
timers were added in version 6
JS(Rotate_Star) didn't work in Acrobat 6, but I don't want to care about the bugs in Adobe products. They will never be removed (if ever) as soon as the bugs are removed from ConTeXt :)
currently in acrobat you can use catch to make sure that the document at least opens ok here is the deal: - i add the attached (a bit old and rusty) file to the distribution - and you add an animation page to the wiki (you probably recognize the result if you process it) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
[a little off topic] http://www.quiss.org/swftools/examples.html (pdf -> swf; open new views if we think mp->pdf->swf driven by context..) http://www.pragma-ade.com/dir/itdemos/internal/media/ (how to play mediashow.smi ? maybe https://player.helixcommunity.org can help ?) luigi
On 5/22/05, Richard Hirsch
Of course you would want to put the symbol definitions and the definition of the fieldstack into a loop. I tried %% \newcount\angle %% \angle=0%\zerocount %% \dorecurse{12} {% %% \number\angle:\qquad %% \definestarsymbol{\the\angle} %% \symbol[star \number\angle]\par %% \advance\angle by 6} and did get the single symbols. I wasn't successful however in putting the symbol list of the fieldstack definition into a loop. Perhaps the ConTeXt gurus can help.
I discovered some possible sources of problems, but didn't manage to solve them. I changed this part of code (just for debugging reasons): \startuniqueMPgraphic{drawstar}{rotation} draw thestar rotated \MPvar{rotation}; % this line was added label("\MPvar{rotation}", origin); \stopuniqueMPgraphic Problem N. #1: -------------- Consider now the following definition: \newcount\angle \angle=0 \definesymbol [star \the\angle] [\uniqueMPgraphic{drawstar}{rotation=\the\angle}] \advance\angle by 6 \definesymbol [star \the\angle] [\uniqueMPgraphic{drawstar}{rotation=\the\angle}] This should define two symbols, \symbol[star 0] and \symbol[star 6]. It did, but "rotation=\the\angle" resulted in "6" in both cases (the last value), so we get two identical pictures. \the\angle can be replaced manually by 0/6/12/... but that's not the point. ???? Problem N. #2: -------------- Instead of writing \definestarsymbol{0} \definestarsymbol{6} \definestarsymbol{12} ... I tried to use: \newcount\angle {\angle=0\loop\ifnum\angle<67% \definesymbol [star \the\angle] [{\uniqueMPgraphic{drawstar}{rotation=0}}] Defining symbol \the\angle \dots\crlf \advance\angle by 6 \repeat} Because of some unknown reason \symbol[star 0], ... cannot be recalled at all. Can anyone find the reason for problems? I had very similiar problems when trying to add \loop\ifnum...\repeat to the example in http://www.fi.muni.cz/~xholecek/animations/, which is written in plain TeX anyway. Mojca
Mojca Miklavec wrote:
\newcount\angle \angle=0 \definesymbol [star \the\angle] [\uniqueMPgraphic{drawstar}{rotation=\the\angle}] \advance\angle by 6 \definesymbol [star \the\angle] [\uniqueMPgraphic{drawstar}{rotation=\the\angle}]
This should define two symbols, \symbol[star 0] and \symbol[star 6]. It did, but "rotation=\the\angle" resulted in "6" in both cases (the last value), so we get two identical pictures. \the\angle can be replaced manually by 0/6/12/... but that's not the point.
Can anyone find the reason for problems?
\definesymbol[whatever][something which is expanded at the time of invocation \newcount\angle % dangerous command, better use MyAngle or so \expanded {\definesymbol [star \number\angle] [\noexpand\uniqueMPgraphic{drawstar}{rotation=\number\angle}] \advance\angle by 6 \expanded {\definesymbol [star \number\angle] [\noexpand\uniqueMPgraphic{drawstar}{rotation=\number\angle}] ugly but needed Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (5)
-
Hans Hagen
-
luigi.scarso
-
Mojca Miklavec
-
Richard Hirsch
-
Willi Egger