summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-02-07 23:23:32 +0000
committerKarl Berry <karl@freefriends.org>2014-02-07 23:23:32 +0000
commite768bd4467a0c031caef65ceb6ca960a4ee11208 (patch)
tree76e382ccbfa040dd12cba3f8143ab79853a63729 /Master/texmf-dist/tex/latex
parent187f01497820820a6075023f1825aacdac0e86cc (diff)
animate (7feb14)
git-svn-id: svn://tug.org/texlive/trunk@32909 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/animate/animate.sty797
1 files changed, 371 insertions, 426 deletions
diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty
index d493f0fa054..96771b6038b 100644
--- a/Master/texmf-dist/tex/latex/animate/animate.sty
+++ b/Master/texmf-dist/tex/latex/animate/animate.sty
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}
-\def\@anim@version{2013/09/24}
+\def\@anim@version{2014/02/06}
\ProvidesPackage{animate}
[\@anim@version\space PDF animations from files and inline graphics]
@@ -91,35 +91,8 @@
be embedded using pdfTeX%
}
}}
- %macro for adding AcroForm entry to PDF Catalog
- \def\@anim@acroform{%
- \ifdefined\Acro@Form@added\else%
- \pdfcatalog{/AcroForm<</Fields []/NeedAppearances true>>}%
- \gdef\Acro@Form@added{}%
- \fi%
- }
\else
- \if@anim@@dvipdfmx
- %macro for adding AcroForm entry to PDF Catalog
- \def\@anim@acroform{%
- \ifdefined\Acro@Form@added\else%
- \special{pdf:put @catalog <<%
- /AcroForm<</Fields []/NeedAppearances true>>>>}%
- \gdef\Acro@Form@added{}%
- \fi%
- }
- \else % dvips
- %macro for adding AcroForm entry to PDF Catalog
- \def\@anim@acroform{%
- \ifdefined\Acro@Form@added\else%
- \special{ps:
- mark {Catalog} <<%
- /AcroForm <</Fields []/NeedAppearances true>>%
- >> /PUT pdfmark
- }%
- \gdef\Acro@Form@added{}%
- \fi%
- }
+ \if@anim@@dvipdfmx\else % dvips
%if geometry package is loaded, execute `\geometry{dvips}' right before
% `\begin{document}'
\let\@anim@document\document
@@ -240,12 +213,13 @@
\newboolean{@anim@useocg}
% true if any of `autoplay' or `autoresume' options is set
\newboolean{@anim@autoplayorresume}
-% true if any of `controls' or `palindrome' options is set
-\newboolean{@anim@ctrlorplndrm}
+% true if any of `controls' or `palindrome' or `label' options is set
+\newboolean{@anim@morejs}
\newboolean{@anim@timeline} %true if `timeline' option is set
\newboolean{@anim@multipage} % multipage document?
-%add OCProperties entries to Catalog
+%add AcroForm and OCProperties entries to Catalog
+\ifdefined\@anim@fields\else\def\@anim@fields{}\fi %takes Field object refs
\ifpdf
\newcount\@anim@@ocgs
\pdfobj reserveobjnum
@@ -261,6 +235,23 @@
>>
>>
}
+ %macro for adding AcroForm entry to PDF Catalog
+ \def\@anim@acroform{%
+ \ifdefined\Acro@Form@added\else%
+ \newcount\@anim@@fields%
+ \pdfobj reserveobjnum%
+ \global\@anim@@fields=\pdflastobj%
+ \pdfcatalog{%
+ /AcroForm <</Fields \the\@anim@@fields\space 0 R /NeedAppearances true>>%
+ }%
+ \AtEndDocument{%
+ \immediate\pdfobj useobjnum \@anim@@fields {%
+ [\@anim@fields]%
+ }%
+ }%
+ \gdef\Acro@Form@added{}%
+ \fi%
+ }
\def\@anim@ocgs{}
\def\@anim@offocgs{}
\AtEndDocument{%
@@ -285,6 +276,19 @@
/D <</BaseState/ON /OFF @anim@offocgs>>
>>
>>}
+ %macro for adding AcroForm entry to PDF Catalog
+ \def\@anim@acroform{%
+ \ifdefined\Acro@Form@added\else%
+ %array which takes refs to all widget annotations
+ \special{pdf:obj @anim@fields [ ]}%
+ \special{pdf:put @catalog <<%
+ /AcroForm <</Fields @anim@fields /NeedAppearances true>>>>}%
+ \AtEndDocument{%
+ \special{pdf:put @anim@fields \@anim@fields}%
+ }%
+ \gdef\Acro@Form@added{}%
+ \fi%
+ }
\else
\special{ps:
mark /_objdef {@anim@ocgs} /type/array /OBJ pdfmark
@@ -294,7 +298,22 @@
/OCGs {@anim@ocgs}
/D <</BaseState/ON /OFF {@anim@offocgs}>>
>>
- >> /PUT pdfmark
+ >> /PUT pdfmark%
+ }
+ %macro for adding AcroForm entry to PDF Catalog
+ \def\@anim@acroform{%
+ \ifdefined\Acro@Form@added\else%
+ \special{ps:
+ mark /_objdef {@anim@fields} /type/array /OBJ pdfmark
+ mark {Catalog} <<%
+ /AcroForm <</Fields {@anim@fields} /NeedAppearances true>>
+ >> /PUT pdfmark%
+ }%
+ \AtEndDocument{%
+ \special{ps: mark {@anim@fields} 0 [\@anim@fields] /PUTINTERVAL pdfmark}%
+ }%
+ \gdef\Acro@Form@added{}%
+ \fi%
}
\fi
\fi
@@ -535,12 +554,12 @@
}{% flip around horizontal axis in portrait mode
[1 0 0 -1 0 frame@lly frame@ury add] concat%
}ifelse
- }?pdfmark
+ }?pdfmark%
}%
\begin{picture}(0,0)\put(0,0){\box#3}\end{picture}%
\special{ps:
mark /EP pdfmark
- grestore
+ grestore%
}%
\xdef\@anim@lastxform{@anim@frm@#1@#2}%
\@anim@newkey{img@#2}{{@anim@frm@#1@#2}}%
@@ -579,7 +598,7 @@
\special{ps:
mark /_objdef {@anim@ocg@#1@#2} /type/dict /OBJ pdfmark
mark {@anim@ocg@#1@#2} <</Type/OCG /Name (#1.#2)>> /PUT pdfmark
- mark {@anim@ocgs} {@anim@ocg@#1@#2} /APPEND pdfmark
+ mark {@anim@ocgs} {@anim@ocg@#1@#2} /APPEND pdfmark%
}%
}
\fi
@@ -646,9 +665,10 @@
\fi%
/FT/Btn/Ff 65537% non-interactive push button
/BS <</W 0>>%
- /AP <</N \the\pdflastxform\space 0 R>>%
+ /MK <</TP 1/I \the\pdflastxform\space 0 R/IF<</S/A/FB true>>>>%
/T (#1.#2)%
}%
+ \xdef\@anim@fields{\@anim@fields\the\pdflastannot\space 0 R\space}%
}
\else
\if@anim@@dvipdfmx
@@ -706,10 +726,11 @@
\if@anim@useocg/OC @anim@ocg@#1@#2\fi%
/FT/Btn/Ff 65537%
/BS <</W 0>>%
- /AP <</N @anim@anmfrm@#1@#2>>%
+ /MK <</TP 1/I @anim@anmfrm@#1@#2/IF<</S/A/FB true>>>>%
/T (#1.#2)%
>>%
}%
+ \xdef\@anim@fields{\@anim@fields @annot@\the\@anim@fieldnum\space}%
\global\advance\@anim@fieldnum by \@ne%
}
\else
@@ -723,7 +744,7 @@
/Type/XObject/Subtype/Form/FormType 1
/BBox [frame@llx frame@lly frame@urx frame@ury]
/Resources <</XObject <<\@anim@getkeyval{frmxobject@#2}>>>>
- >> /PUT pdfmark
+ >> /PUT pdfmark%
}%
\if@anim@useocg%
\@anim@newocg{#1}{#2}%
@@ -783,10 +804,11 @@
\if@anim@useocg/OC {@anim@ocg@#1@#2}\fi%
/FT/Btn/Ff 65537
/BS <</W 0>>%
- /AP <</N {@anim@anmfrm@#1@#2}>>%
+ /MK <</TP 1/I {@anim@anmfrm@#1@#2}/IF<</S/A/FB true>>>>%
/T (#1.#2)%
- /ANN pdfmark
+ /ANN pdfmark%
}%
+ \xdef\@anim@fields{\@anim@fields{annot@\the\@anim@fieldnum}\space}%
\global\advance\@anim@fieldnum by \@ne%
}
\fi
@@ -859,7 +881,7 @@
/Properties <</oc0 {#1.Play#2} /oc1 {#1.Pause#2}>>%
/XObject <</im0 {btnPlay#2:#3} /im1 {btnPause#2:#3}>>%
>>%
- >> /PUT pdfmark
+ >> /PUT pdfmark%
}%
}
\fi
@@ -1043,7 +1065,7 @@
}if
#2
}?pdfmark mark /EP pdfmark
- grestore
+ grestore%
}%
}
\else
@@ -1527,8 +1549,11 @@
\setboolean{@anim@autoplayorresume}{true}%
}{}%
\ifthenelse{\boolean{@anim@controls}\OR\boolean{@anim@palindrome}}{%
- \setboolean{@anim@ctrlorplndrm}{true}%
+ \setboolean{@anim@morejs}{true}%
}{}%
+ \ifx\empty\@anim@label\empty\else%
+ \setboolean{@anim@morejs}{true}%
+ \fi%
\ifthenelse{\NOT\boolean{@anim@controls}\AND\boolean{@anim@step}}{%
\setboolean{@anim@loop}{true}%
}{}%
@@ -1588,8 +1613,14 @@
\@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
\fi%
\fi%
- \xdef\@anim@fps{#2}% current frame rate
- \xdef\@anim@nfps{#2}%
+ \xdef\@anim@nfps{#2\space}% current frame rate
+ \xdef\@anim@nfps{\expandafter\zap@space\@anim@nfps\@empty}%
+ \ifdim\@anim@nfps\p@<\z@%
+ \PackageError{animate}{%
+ Negative frame rate `\@anim@nfps' is not allowed%
+ }{}%
+ \fi%
+ \xdef\@anim@fps{\@anim@nfps}%
%
%read all frames of the sequence
\loop\ifnum\@anim@curframe\@anim@relop\@anim@last\else%
@@ -1623,6 +1654,7 @@
\fi%
\endgroup%
\global\advance\@anim@num by \@ne%
+ \@anim@acroform%
}%
%adjust catcodes of several characters within \animategraphics
\let\@anim@animategraphics\animategraphics
@@ -1768,7 +1800,7 @@
\@anim@otherjscriptkey%
>>%
}%
- \@anim@acroform%
+ \xdef\@anim@fields{\@anim@fields\the\pdflastannot\space 0 R\space}%
\hbox to \@anim@animwidth\p@ {%
\vrule width 0pt height \@anim@animheight\p@ depth \@anim@animdepth\p@%
\hss%
@@ -1796,7 +1828,7 @@
>>
>>%
}%
- \@anim@acroform%
+ \xdef\@anim@fields{\@anim@fields @annot@\the\@anim@fieldnum\space}%
\global\advance\@anim@fieldnum by \@ne%
\hbox to \@anim@animwidth\p@ {%
\vrule width 0pt height \@anim@animheight\p@ depth \@anim@animdepth\p@%
@@ -1839,9 +1871,9 @@
>>%
\@anim@otherjscriptkey%
>>%
- /ANN pdfmark
+ /ANN pdfmark%
}%
- \@anim@acroform%
+ \xdef\@anim@fields{\@anim@fields{annot@\the\@anim@fieldnum}\space}%
\global\advance\@anim@fieldnum by \@ne%
\hbox to \@anim@animwidth\p@ {%
\vrule width 0pt height \@anim@animheight\p@ depth \@anim@animdepth\p@%
@@ -1866,11 +1898,12 @@
/FT/Btn/Ff 65536% push button
/BS <</W 0>>%
/H/I%
- /AP <</N \@anim@getkeyval{btn#3}>>%
+ /MK <</TP 1/I \@anim@getkeyval{btn#3}/IF<</S/A/FB true>>>>%
/T (#1.#2)%
\@anim@tooltip%
/A <</S/JavaScript/JS (\@anim@upjscriptstring)>>%
}%
+ \xdef\@anim@fields{\@anim@fields\the\pdflastannot\space 0 R\space}%
\vrule width 0pt height \@anim@tmpdima depth 0pt%
\hss%
}%
@@ -1888,12 +1921,13 @@
/FT/Btn/Ff 65536%
/BS <</W 0>>%
/H/I%
- /AP <</N @btn#3>>%
+ /MK <</TP 1/I @btn#3/IF<</S/A/FB true>>>>%
/T (#1.#2)%
\@anim@tooltip%
/A <</S/JavaScript/JS (\@anim@upjscriptstring)>>%
>>%
}%
+ \xdef\@anim@fields{\@anim@fields @annot@\the\@anim@fieldnum\space}%
\global\advance\@anim@fieldnum by \@ne%
\vrule width 0pt height \@anim@tmpdima depth 0pt%
\hss%
@@ -1926,12 +1960,13 @@
/FT/Btn/Ff 65536
/BS <</W 0>>
/H/I
- /AP <</N {btn#3}>>%
+ /MK <</TP 1/I {btn#3}/IF<</S/A/FB true>>>>%
/T (#1.#2)%
\@anim@tooltip%
/A <</S/JavaScript/JS (\@anim@upjscriptstring)>>%
- /ANN pdfmark
+ /ANN pdfmark%
}%
+ \xdef\@anim@fields{\@anim@fields{annot@\the\@anim@fieldnum}\space}%
\global\advance\@anim@fieldnum by \@ne%
\hbox to \the\@anim@tmpdima {%
\vrule width 0pt height \the\@anim@tmpdima\space depth 0pt%
@@ -1968,11 +2003,16 @@
\setboolean{@anim@autoplayorresume}{true}%
}{}%
\ifthenelse{\boolean{@anim@controls}\OR\boolean{@anim@palindrome}}{%
- \setboolean{@anim@ctrlorplndrm}{true}%
+ \setboolean{@anim@morejs}{true}%
}{}%
+ \ifx\empty\@anim@label\empty\else%
+ \setboolean{@anim@morejs}{true}%
+ \fi%
\ifthenelse{\NOT\boolean{@anim@controls}\AND\boolean{@anim@step}}{%
\setboolean{@anim@loop}{true}%
}{}%
+ \global\@anim@curframe@zb=\z@%
+ \global\@anim@skipfram=\z@%
\if@anim@draft\else%
%create button faces if necessary
\if@anim@controls%
@@ -1988,11 +2028,11 @@
\@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
\fi%
\fi%
- \xdef\@anim@fps{#2}%
- \xdef\@anim@nfps{#2}% current frame rate (for use in \newframe)
+ \if@anim@step\else%
+ \xdef\@anim@nfps{-1}%
+ \@anim@processfpsarg{#2}%
+ \fi%
\fi%
- \global\@anim@curframe@zb=\z@%
- \global\@anim@skipfram=\z@%
\@anim@beginframe%
\ignorespaces%
}{%
@@ -2015,6 +2055,7 @@
\endgroup%
\global\advance\@anim@num by \@ne%
\setboolean{@anim@inside}{false}%
+ \@anim@acroform%
}
\let\@anim@animateinline\animateinline
\def\animateinline{\@anim@sanitize\@anim@animateinline}
@@ -2032,37 +2073,42 @@
\@anim@endframe{\the\@anim@num}{\the\@anim@curframe@zb}%
\@ifstar\@anim@newframestar\@anim@newframe%
}
+\def\@anim@processfpsarg#1{%
+ %process frame rate argument
+ \xdef\@anim@pfps{\@anim@nfps}%
+ \xdef\@anim@nfps{#1\space}%
+ \xdef\@anim@nfps{\expandafter\zap@space\@anim@nfps\@empty}%
+ \ifx\@anim@nfps\@empty% no change of frame rate
+ \xdef\@anim@nfps{\@anim@pfps}%
+ \fi%
+ \ifnum\@anim@curframe@zb=\z@%
+ \xdef\@anim@fps{\@anim@nfps}% default fps
+ \xdef\@anim@nfpsat{\@anim@nfps}%
+ \else%
+ \xdef\@anim@nfpsat{\@anim@nfpsat,\@anim@nfps}%
+ \fi%
+ \ifdim\@anim@nfps\p@=\@anim@pfps\p@\else%
+ \ifnum\@anim@curframe@zb=\z@\else%
+ \setboolean{@anim@chfps}{true}% change fps
+ \fi%
+ \fi%
+ \ifdim\@anim@nfps\p@<\z@%
+ \PackageError{animate}{%
+ Negative frame rate `\@anim@nfps' is not allowed%
+ }{}%
+ \fi%
+}%
\newcommand{\@anim@newframe}[1][]{% #1: new frame rate
\ifnum\@anim@skipfram=\z@%
+ \global\advance\@anim@curframe@zb by \@ne%
\if@anim@draft\else%
\if@anim@step\else%
\if@anim@timeline\else%
- \edef\@anim@pfps{\@anim@nfps}%
- \edef\@anim@nfps{#1}%
- \ifx\@anim@nfps\@empty%
- \edef\@anim@nfps{\@anim@pfps}%
- \else%
- \ifdim\@anim@nfps\p@=\@anim@pfps\p@\else%
- \ifnum\@anim@curframe@zb=\z@%
- \xdef\@anim@fps{#1}%
- \fi%
- %build JavaScript commands to fill the `nFpsAt' & `pFpsAt' arrays
- \xdef\@anim@nfpsat{%
- \@anim@nfpsat%
- a\the\@anim@num.nFpsAt[\the\@anim@curframe@zb]=Math.abs(#1);%
- }%
- \xdef\@anim@pfpsat{%
- \@anim@pfpsat%
- a\the\@anim@num.pFpsAt[\the\@anim@curframe@zb]=%
- Math.abs(\@anim@pfps);%
- }%
- \setboolean{@anim@chfps}{true}% change fps
- \fi%
- \fi%
+ %process frame rate argument
+ \@anim@processfpsarg{#1}%
\fi%
\fi%
\fi%
- \global\advance\@anim@curframe@zb by \@ne%
\fi%
\@anim@beginframe%
\ignorespaces%
@@ -2078,32 +2124,18 @@
a\the\@anim@num.pauseAt[\the\@anim@curframe@zb]=1;%
}%
\setboolean{@anim@pauseframes}{true}%
- \xdef\@anim@pfps{\@anim@nfps}%
- \xdef\@anim@nfps{#1}%
- \ifx\@anim@nfps\@empty%
- \xdef\@anim@nfps{\@anim@pfps}%
- \else%
- \ifdim\@anim@nfps\p@=\@anim@pfps\p@\else%
- \ifnum\@anim@curframe@zb=\z@%
- \xdef\@anim@fps{#1}%
- \fi%
- %build JavaScript commands to fill the `nFpsAt' & `pFpsAt' arrays
- \xdef\@anim@nfpsat{%
- \@anim@nfpsat%
- a\the\@anim@num.nFpsAt[\the\@anim@curframe@zb]=Math.abs(#1);%
- }%
- \xdef\@anim@pfpsat{%
- \@anim@pfpsat%
- a\the\@anim@num.pFpsAt[\the\@anim@curframe@zb]=%
- Math.abs(\@anim@pfps);%
- }%
- \setboolean{@anim@chfps}{true}% change fps
- \fi%
- \fi%
\fi%
\fi%
\fi%
\global\advance\@anim@curframe@zb by \@ne%
+ \if@anim@draft\else%
+ \if@anim@step\else%
+ \if@anim@timeline\else%
+ %process frame rate argument
+ \@anim@processfpsarg{#1}%
+ \fi%
+ \fi%
+ \fi%
\fi%
\@anim@beginframe%
\ignorespaces%
@@ -2522,28 +2554,7 @@
\or%
\if@anim@step\else%
%second field: new frame rate
- \xdef\@anim@pfps{\@anim@nfps}%
- \xdef\@anim@nfps{#1\space}%
- \xdef\@anim@nfps{\expandafter\zap@space\@anim@nfps\@empty}%
- \ifx\@anim@nfps\@empty% no change of frame rate
- \xdef\@anim@nfps{\@anim@pfps}%
- \else%
- \ifdim\@anim@nfps\p@=\@anim@pfps\p@\else%
- \ifnum\@anim@curframe@zb=\z@%
- \xdef\@anim@fps{#1}%
- \fi%
- %build JavaScript commands to fill the `nFpsAt' & `pFpsAt' arrays
- \xdef\@anim@nfpsat{%
- \@anim@nfpsat%
- a\the\@anim@num.nFpsAt[\the\@anim@curframe@zb]=Math.abs(#1);%
- }%
- \xdef\@anim@pfpsat{%
- \@anim@pfpsat%
- a\the\@anim@num.pFpsAt[\the\@anim@curframe@zb]=Math.abs(\@anim@pfps);%
- }%
- \setboolean{@anim@chfps}{true}% change fps
- \fi%
- \fi%
+ \@anim@processfpsarg{#1}%
\fi%
\global\advance\@anim@curfield by \@ne%
\@anim@parseline#2\@nil%
@@ -2713,6 +2724,22 @@
}
%command options
+\define@key{anim@user}{label}{%
+ \gdef\@anim@label{#1}%
+ \ifcsname @anim@#1\endcsname%
+ \PackageWarning{animate}{Label #1 multiply defined}
+ \ifdefined\@anim@multlabel\else
+ \gdef\@anim@multlabel{}%
+ \AtEndDocument{%
+ \PackageWarningNoLine{animate}{%
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\MessageBreak
+ @@ There were multiply-defined labels! @@\MessageBreak
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}%
+ }%
+ \fi%
+ \fi%
+ \expandafter\gdef\csname @anim@#1\endcsname{}%
+}
%setting the widget size
\define@key{anim@user}{width}{%
\gdef\@anim@widtharg{#1}%
@@ -2909,6 +2936,10 @@
\if@anim@grxloaded\g@addto@macro\@anim@gropts{, trim=#1}%
\else\@anim@missing{graphicx}\fi%
}
+\define@key{anim@user}{angle}{%
+ \if@anim@grxloaded\g@addto@macro\@anim@gropts{, angle=#1}%
+ \else\@anim@missing{graphicx}\fi%
+}
\newboolean{@anim@meas}
\define@key{anim@user}{measure}[true]{%
\setboolean{@anim@meas}{#1}%
@@ -2928,6 +2959,7 @@
%macro to reset macros and booleans
\def\@anim@reset{%
+ \gdef\@anim@label{}%
\gdef\@anim@boxscale{1.0}%
\global\@anim@resize\z@%
\gdef\@anim@widtharg{\width}%
@@ -2969,7 +3001,7 @@
\setboolean{@anim@multipage}{false}%
\setboolean{@anim@meas}{false}%
\setboolean{@anim@autoplayorresume}{false}%
- \setboolean{@anim@ctrlorplndrm}{false}%
+ \setboolean{@anim@morejs}{false}%
}
%package options
@@ -3161,7 +3193,7 @@
\def\@anim@pojscript#1{%
\special{ps:
mark /_objdef {a#1@pojscript} /type/stream /OBJ pdfmark
- mark {a#1@pojscript} (\@anim@@pojscript{#1}) /PUT pdfmark
+ mark {a#1@pojscript} (\@anim@@pojscript{#1}) /PUT pdfmark%
}%
}
\fi
@@ -3174,14 +3206,13 @@
var a#1_intd;%
\fi
var a#1,a#1_int;%
- if(typeof(a#1)=='undefined'){% initialize animation
- a#1=new Object();%
+ if(typeof(a#1)==='undefined'){% initialize animation
+ a#1=new Object();% animation object
%takes references to frame ocgs/Field objects belonging to the current
%animation
a#1.fr=new Array();%
\if@anim@controls
a#1.btn=new Array();%takes references to control button face ocgs
- a#1.sm=1;% speed multiplier
\fi%
%initialize fr & btn properties
\if@anim@useocg
@@ -3224,18 +3255,14 @@
\fi%
\ifx\@anim@poster\@anim@posterlast % set default frame
%holds index of the frame to be displayed
- a#1.idx=\@anim@maxframe;%
+ a#1.on=a#1.idx=\@anim@maxframe;%
\else % first & none
- a#1.idx=0;%
+ a#1.on=a#1.idx=0;%
\fi%
%playing state and direction
- \if@anim@step%
- \if@anim@palindrome
- a#1.playsRight=true;%
- \fi%
- \else
- a#1.isPlaying=false;%
- a#1.playsRight=true;%
+ \if@anim@morejs a#1.playsRight=true;\fi%
+ \if@anim@step\else
+ a#1.playing=false;%
a#1.isPaused=false;%
\if@anim@pauseframes
%this array takes the frame numbers at which to pause playback
@@ -3244,13 +3271,19 @@
\fi%
\if@anim@chfps
%arrays that take frame numbers (array index) and fps values
- a#1.nFpsAt=new Array();%
- \@anim@nfpsat%
- a#1.pFpsAt=new Array();%
- \@anim@pfpsat%
- a#1.fps=Math.abs(\@anim@fps);%
+ a#1.nFpsAt=new Array(\@anim@nfpsat);%
\fi
- a#1.dt=1000/(1e-6+Math.abs(\@anim@fps));%
+ a#1.fps=\@anim@fps;a#1.sm=1;%
+ a#1.setFps=function(f){%
+ a#1.fps=f;%
+ if(a#1.playing){%
+ \if@anim@morejs
+ if(a#1.playsRight){a#1.playRight();}else{a#1.playLeft();}%
+ \else
+ a#1.playRight();%
+ \fi%
+ }%
+ };%
\fi%
\if@anim@usrjs
%array to take frame numbers (array index) and user provided JavaScript
@@ -3258,189 +3291,125 @@
\@anim@usrjsat%
\fi%
%actions
- a#1.actnEndLeft=function(){%
- \if@anim@step\else
- a#1.actnPause();%
- a#1.isPaused=false;% because it has been explicitly stopped
+ a#1.seekFrame=function(f){%
+ if(f>\@anim@maxframe||f<0){return(-1);}%
+ var old=a#1.idx;a#1.idx=f;%
+ \if@anim@usrjs
+ if(a#1.usrJSat[f]){%
+ var ret=app.setTimeOut('try{a#1.usrJSat[a#1.idx]();}catch(e){%
+ console.show();console.println(e);}',1);%
+ }%
\fi%
\if@anim@useocg
- a#1.fr[a#1.idx].state=false;%
- a#1.idx=0;%
- a#1.fr[0].state=true;%
+ a#1.fr[a#1.on].state=false;%
\else
- a#1.fr[a#1.idx].display=display.hidden;%
- a#1.idx=0;%
- a#1.fr[0].display=display.visible;%
- curdoc.dirty=false;%
- \fi%
- \if@anim@chfps
- a#1.fps=Math.abs(\@anim@fps);%
- a#1.dt=1000/(1e-6+a#1.fps);%
- \fi%
- };%
- a#1.actnEndRight=function(){%
- \if@anim@step\else
- a#1.actnPause();%
- a#1.isPaused=false;%
+ a#1.fr[a#1.on].display=display.hidden;%
\fi%
\if@anim@useocg
- a#1.fr[a#1.idx].state=false;%
- a#1.idx=\@anim@maxframe;%
- a#1.fr[a#1.idx].state=true;%
+ a#1.fr[f].state=true;%
\else
- a#1.fr[a#1.idx].display=display.hidden;%
- a#1.idx=\@anim@maxframe;%
- a#1.fr[a#1.idx].display=display.visible;%
+ a#1.fr[f].display=display.visible;%
curdoc.dirty=false;%
+ \fi
+ a#1.on=f;%
+ \if@anim@step\else%
+ \if@anim@chfps
+ if(a#1.nFpsAt[f]!=a#1.fps){%
+ a#1.setFps(a#1.nFpsAt[f]);%
+ }%
+ \fi%
\fi%
- \if@anim@chfps %frame rate from the last fps change (\@anim@nfps)
- a#1.fps=Math.abs(\@anim@nfps);%
- a#1.dt=1000/(1e-6+a#1.fps);%
- \fi%
+ \if@anim@step\else\if@anim@meas a#1.frcnt++;\fi\fi
+ return(old);%
};%
- a#1.actnNext=function(){%
- \if@anim@useocg
- a#1.fr[a#1.idx].state=false;%
- \else
- a#1.fr[a#1.idx].display=display.hidden;%
+ a#1.stopFirst=function(){%
+ \if@anim@step\else
+ a#1.pause();%
+ a#1.isPaused=false;% because it has been explicitly stopped
\fi
- try{%
- \if@anim@useocg
- a#1.fr[++a#1.idx].state=true;%
- \else
- a#1.fr[++a#1.idx].display=display.visible;%
- curdoc.dirty=false;%
- \fi%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- \if@anim@step\else\if@anim@meas a#1.frcnt++;\fi\fi%
- }catch(e){%
- --a#1.idx;%
+ a#1.seekFrame(0);%
+ };%
+ a#1.stopLast=function(){%
+ \if@anim@step\else
+ a#1.pause();%
+ a#1.isPaused=false;%
+ \fi
+ a#1.seekFrame(\@anim@maxframe);%
+ };%
+ a#1.gotoNext=function(){%
+ if(a#1.seekFrame(a#1.idx+1)<0){%
\if@anim@palindrome%
\if@anim@step
- a#1.actnEndRight();%
+ a#1.stopLast();%
a#1.playsRight=false;%
- \else%
- if(a#1.isPlaying){--a#1.idx;}%
- \if@anim@useocg
- a#1.fr[a#1.idx].state=true;%
- \else
- a#1.fr[a#1.idx].display=display.visible;%
- curdoc.dirty=false;%
- \fi%
- \if@anim@meas if(a#1.isPlaying){a#1.stopMeas();}\fi
- if(a#1.isPlaying){a#1.isPaused=true;a#1.actnPlayLeft();}%
+ \else
+ if(a#1.playing){%
+ \if@anim@meas a#1.stopMeas();\fi
+ a#1.seekFrame(a#1.idx-1);%
+ a#1.playLeft();%
+ }%
\fi%
\else%
\if@anim@step
- a#1.actnEndRight();%
+ a#1.stopLast();%
\else%
\if@anim@loop
- if(a#1.isPlaying){%
- \if@anim@chfps
- a#1.fps=Math.abs(\@anim@fps);%
- a#1.dt=1000/(1e-6+a#1.fps);%
- \fi
- a#1.actnEndLeft();%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- a#1.actnPlayRight();%
- }else{a#1.actnEndRight();}%
+ if(a#1.playing){%
+ a#1.seekFrame(0);%
+ a#1.setFps(\@anim@fps);%
+ }else{a#1.stopLast();}%
\else
- a#1.actnEndRight();%
+ a#1.stopLast();%
\fi%
\fi%
- \fi%
+ \fi
}%
\if@anim@step\else%
- \if@anim@chfps
- if(%
- a#1.nFpsAt[a#1.idx]>=0&&%
- a#1.nFpsAt[a#1.idx]!=a#1.fps%
- ){%
- a#1.fps=a#1.nFpsAt[a#1.idx];%
- a#1.dt=1000/(1e-6+a#1.fps);%
- if(a#1.isPlaying){a#1.isPaused=true;a#1.actnPlayRight();}%
- }%
- \fi%
\if@anim@pauseframes
- if(a#1.isPlaying&&a#1.pauseAt[a#1.idx]){a#1.actnPause();}%
+ if(a#1.playing&&a#1.pauseAt[a#1.idx]){a#1.pause();}%
\fi%
\fi%
};%
- \if@anim@ctrlorplndrm
- a#1.actnPrev=function(){%
- \if@anim@useocg
- a#1.fr[a#1.idx].state=false;%
- \else
- a#1.fr[a#1.idx].display=display.hidden;%
- \fi
- try{%
- \if@anim@useocg
- a#1.fr[--a#1.idx].state=true;%
- \else
- a#1.fr[--a#1.idx].display=display.visible;%
- curdoc.dirty=false;%
- \fi%
- \if@anim@step\else\if@anim@meas a#1.frcnt++;\fi\fi%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- }catch(e){%
- ++a#1.idx;%
+ \if@anim@morejs
+ a#1.gotoPrev=function(){%
+ if(a#1.seekFrame(a#1.idx-1)<0){%
\if@anim@palindrome%
\if@anim@step
- a#1.actnEndLeft();%
+ a#1.stopFirst();%
a#1.playsRight=true;%
- \else%
- if(a#1.isPlaying){++a#1.idx;}%
- \if@anim@useocg
- a#1.fr[a#1.idx].state=true;%
- \else
- a#1.fr[a#1.idx].display=display.visible;%
- curdoc.dirty=false;%
- \fi%
- \if@anim@meas if(a#1.isPlaying){a#1.stopMeas();}\fi
- if(a#1.isPlaying){a#1.isPaused=true;a#1.actnPlayRight();}%
+ \else
+ if(a#1.playing){%
+ \if@anim@meas a#1.stopMeas();\fi
+ a#1.seekFrame(a#1.idx+1);%
+ a#1.playRight();%
+ }%
\fi%
\else%
\if@anim@step
- a#1.actnEndLeft();%
+ a#1.stopFirst();%
\else%
\if@anim@loop
- if(a#1.isPlaying){%
- \if@anim@chfps
- a#1.fps=Math.abs(\@anim@nfps);%
- a#1.dt=1000/(1e-6+a#1.fps);%
- \fi
- a#1.actnEndRight();%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- a#1.actnPlayLeft();%
- }else{a#1.actnEndLeft();}%
+ if(a#1.playing){%
+ a#1.seekFrame(\@anim@maxframe);%
+ }else{a#1.stopFirst();}%
\else
- a#1.actnEndLeft();%
+ a#1.stopFirst();%
\fi%
\fi%
\fi%
}%
\if@anim@step\else%
- \if@anim@chfps
- if(%
- a#1.pFpsAt[a#1.idx]>=0&&%
- a#1.pFpsAt[a#1.idx]!=a#1.fps%
- ){%
- a#1.fps=a#1.pFpsAt[a#1.idx];%
- a#1.dt=1000/(1e-6+a#1.fps);%
- if(a#1.isPlaying){a#1.isPaused=true;a#1.actnPlayLeft();}%
- }%
- \fi%
\if@anim@pauseframes
- if(a#1.isPlaying&&a#1.pauseAt[a#1.idx]){a#1.actnPause();}%
+ if(a#1.playing&&a#1.pauseAt[a#1.idx]){a#1.pause();}%
\fi%
\fi%
};%
\fi%
\if@anim@step\else
- a#1.actnPause=function(){%
- \if@anim@meas if(a#1.isPlaying){a#1.stopMeas();}\fi
+ a#1.pause=function(){%
+ \if@anim@meas if(a#1.playing){a#1.stopMeas();}\fi
try{app.clearInterval(a#1_int);}catch(e){}%
- a#1.isPlaying=false;%
+ a#1.playing=false;%
a#1.isPaused=true;%
\if@anim@controls
a#1.btn['PauseLeft'].state=false;%
@@ -3449,10 +3418,10 @@
a#1.btn['PlayRight'].state=true;%
\fi%
};%
- a#1.actnPlayRight=function(){%
+ a#1.playRight=function(){%
try{app.clearInterval(a#1_int);}catch(e){}%
- a#1.playsRight=true;%
- a#1.isPlaying=true;%
+ \if@anim@morejs a#1.playsRight=true;\fi
+ a#1.playing=true;%
a#1.isPaused=false;%
\if@anim@controls
a#1.btn['PauseLeft'].state=true;%
@@ -3461,15 +3430,14 @@
a#1.btn['PlayRight'].state=false;%
\fi%
\if@anim@meas a#1.startMeas();\fi
- a#1_int=app.setInterval(%
- 'a#1.actnNext()',a#1.dt\if@anim@controls/a#1.sm\fi%
- );%
+ a#1_int=app.setInterval('a#1.gotoNext()',%
+ 1000/(1e-6+a#1.fps)/a#1.sm);%
};%
- \if@anim@ctrlorplndrm
- a#1.actnPlayLeft=function(){%
+ \if@anim@morejs
+ a#1.playLeft=function(){%
try{app.clearInterval(a#1_int);}catch(e){}%
a#1.playsRight=false;%
- a#1.isPlaying=true;%
+ a#1.playing=true;%
a#1.isPaused=false;%
\if@anim@controls
a#1.btn['PauseLeft'].state=true;%
@@ -3478,48 +3446,24 @@
a#1.btn['PlayRight'].state=false;%
\fi%
\if@anim@meas a#1.startMeas();\fi
- a#1_int=app.setInterval(%
- 'a#1.actnPrev()',a#1.dt\if@anim@controls/a#1.sm\fi%
- );%
+ a#1_int=app.setInterval('a#1.gotoPrev()',%
+ 1000/(1e-6+a#1.fps)/a#1.sm);%
};%
\fi%
\if@anim@controls
- a#1.actnIncr=function(){% speed up animation
- try{app.clearInterval(a#1_int);}catch(e){}%
- a#1.sm*=1.2;%
- if(a#1.isPlaying){%
- if(a#1.playsRight){%
- a#1_int=app.setInterval('a#1.actnNext()',a#1.dt/a#1.sm);%
- }else{%
- a#1_int=app.setInterval('a#1.actnPrev()',a#1.dt/a#1.sm);%
- }%
- }%
+ a#1.fpsIncr=function(){% speed up animation
+ a#1.sm*=1.1;%
+ a#1.setFps(a#1.fps);%
};%
- a#1.actnDecr=function(){% slow down animation
- try{app.clearInterval(a#1_int);}catch(e){}%
- a#1.sm/=1.2;%
- if(a#1.isPlaying){%
- if(a#1.playsRight){%
- a#1_int=app.setInterval('a#1.actnNext()',a#1.dt/a#1.sm);%
- }else{%
- a#1_int=app.setInterval('a#1.actnPrev()',a#1.dt/a#1.sm);%
- }%
- }%
+ a#1.fpsDecr=function(){% slow down animation
+ a#1.sm/=1.1;%
+ a#1.setFps(a#1.fps);%
};%
- a#1.actnReset=function(){% reset to default speed
+ a#1.fpsReset=function(){% reset to default speed
a#1.sm=1;%
- try{app.clearInterval(a#1_int);}catch(e){}%
- if(a#1.isPlaying){%
- if(a#1.playsRight){%
- a#1_int=app.setInterval('a#1.actnNext()',a#1.dt/a#1.sm);%
- }else{%
- a#1_int=app.setInterval('a#1.actnPrev()',a#1.dt/a#1.sm);%
- }%
- }%
+ a#1.setFps(a#1.fps);%
};%
\fi%
- \fi%
- \if@anim@step\else%
\if@anim@meas
var spc=String.fromCharCode(32);%
a#1.frcnt=0;% frame counter for speed measurements
@@ -3531,58 +3475,87 @@
};%
a#1.stopMeas=function(){%
a#1.msEnd=(new Date()).getTime();%
- app.alert({%
- cMsg:'av.'+spc+'frame'+spc+'rate:'+spc+%
- 1e3*a#1.frcnt/(a#1.msEnd-a#1.msStart)+spc+'fps',%
- nIcon:3%
- });
+ console.show();console.println(%
+ 'av.'+spc+'frame'+spc+'rate:'+spc+%
+ 1e3*a#1.frcnt/(a#1.msEnd-a#1.msStart)+spc+'fps'%
+ );%
};%
\fi%
\fi%
- }%
- \if@anim@step\else%
- \if@anim@autoplay%
- \if@anim@useocg%
- \if@anim@ctrlorplndrm
- if(a#1.playsRight){a#1.actnPlayRight();}else{a#1.actnPlayLeft();}%
- \else%
- a#1.actnPlayRight();%
- \fi%
+ \if@anim@morejs%
+ \if@anim@step
+ a#1.stepBwd=function(){a#1.seekFrame(a#1.idx-1);};%
+ a#1.stepFwd=function(){a#1.seekFrame(a#1.idx+1);};%
\else
- \if@anim@ctrlorplndrm
- if(a#1.playsRight){%
- a#1_intd=app.setTimeOut('a#1.actnPlayRight()',1);%
- }else{%
- a#1_intd=app.setTimeOut('a#1.actnPlayLeft()',1);%
- }%
- \else%
- a#1_intd=app.setTimeOut('a#1.actnPlayRight()',1);%
- \fi%
+ a#1.stepBwd=function(){if(!a#1.playing){a#1.seekFrame(a#1.idx-1);}};%
+ a#1.stepFwd=function(){if(!a#1.playing){a#1.seekFrame(a#1.idx+1);}};%
+ a#1.playBwd=function(){%
+ if(a#1.idx==0){a#1.stopLast();}%
+ a#1.playLeft();%
+ };%
+ a#1.playFwd=function(){%
+ if(a#1.idx==\@anim@maxframe){a#1.stopFirst();}%
+ a#1.playRight();%
+ };%
\fi%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
\fi%
- \if@anim@autoresume
- if(a#1.isPaused){%
- \if@anim@useocg%
- \if@anim@ctrlorplndrm
- if(a#1.playsRight){a#1.actnPlayRight();}else{a#1.actnPlayLeft();}%
- \else
- a#1.actnPlayRight();%
- \fi%
- \else%
- \if@anim@ctrlorplndrm
- if(a#1.playsRight){%
- a#1_intd=app.setTimeOut('a#1.actnPlayRight()',1);%
- }else{%
- a#1_intd=app.setTimeOut('a#1.actnPlayLeft()',1);%
+ \ifx\empty\@anim@label\empty\else
+ if(typeof(anim)==='undefined'){anim=new Array();}%
+ if(typeof(anim['\@anim@label'])==='undefined'){%
+ anim['\@anim@label']={%
+ \if@anim@step\else
+ playBwd: a#1.playBwd,%
+ playFwd: a#1.playFwd,%
+ pause: a#1.pause,%
+ get isPlaying(){return(a#1.playing);},%
+ get fps(){return(a#1.fps);},%
+ set fps(f){%
+ if(f>=0){a#1.setFps(f);}else{%
+ console.show();console.println('Error:fpsNotAllowed');%
+ }%
+ },%
+ get dt(){return(1000/(1e-6+a#1.fps)/a#1.sm);},%
+ \fi
+ get playsFwd(){return(a#1.playsRight);},%
+ get numFrames(){return(\@anim@frames);},%
+ get frameNum(){return(a#1.idx);},%
+ set frameNum(f){%
+ f=Math.floor(f);%
+ if(f<0||f>\@anim@maxframe||isNaN(f)){%
+ console.show();console.println('Error:frameNumNotInRange');%
+ return;%
}%
- \else
- a#1_intd=app.setTimeOut('a#1.actnPlayRight()',1);%
- \fi%
- \fi%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
+ \if@anim@step
+ a#1.seekFrame(f);%
+ \else
+ if(a#1.playing){%
+ a#1.pause();a#1.seekFrame(f);%
+ if(a#1.playsRight){a#1.playRight();}else{a#1.playLeft();}%
+ }else{a#1.seekFrame(f);}%
+ \fi%
+ },%
+ stopFirst: a#1.stopFirst,%
+ stopLast: a#1.stopLast%
+ };%
}%
\fi%
+ a#1.seekFrame(a#1.on);%
+ }%
+ curdoc.dirty=false;%
+ \if@anim@step\else%
+ \if@anim@autoplayorresume%
+ \if@anim@autoresume
+ if(a#1.isPaused){%
+ \fi%
+ \if@anim@morejs
+ if(a#1.playsRight){a#1.playRight();}else{a#1.playLeft();}%
+ \else
+ a#1.playRight();%
+ \fi%
+ \if@anim@autoresume%
+ }%
+ \fi%
+ \fi%
\fi%
}
@@ -3593,10 +3566,10 @@
\if@anim@step\else
if(%
\if@anim@autopause
- a#1.isPlaying||%
+ a#1.playing||%
\fi
a#1.isPaused%
- ){a#1.actnPause();}%
+ ){a#1.pause();}%
else{%
\if@anim@controls
a#1.playsRight=true;%
@@ -3606,18 +3579,10 @@
\fi%
\fi%
\fi%
- \ifx\@anim@poster\@anim@posterlast%
- \if@anim@useocg
- a#1.actnEndRight();%
- \else
- a#1_intd=app.setTimeOut('a#1.actnEndRight()',1);%
- \fi%
- \else%
- \if@anim@useocg
- a#1.actnEndLeft();%
- \else
- a#1_intd=app.setTimeOut('a#1.actnEndLeft()',1);%
- \fi%
+ \ifx\@anim@poster\@anim@posterlast
+ a#1.stopLast();%
+ \else
+ a#1.stopFirst();%
\fi%
\if@anim@step\else%
}%
@@ -3627,7 +3592,7 @@
/D <</S/JavaScript/JS (% pause on MouseDown
%disable focus rectangle
app.focusRect=false;%
- try{if(a#1.isPlaying){a#1.actnPause();}}catch(e){}%
+ try{if(a#1.playing){a#1.pause();}}catch(e){}%
)>>%
\fi%
/U <</S/JavaScript/JS (% play/resume on MouseUp
@@ -3636,39 +3601,37 @@
\if@anim@palindrome
if(a#1.idx==\@anim@maxframe){%
a#1.playsRight=false;%
- a#1.actnPrev();%
+ a#1.gotoPrev();%
}else if(a#1.idx==0){%
a#1.playsRight=true;%
- a#1.actnNext();%
+ a#1.gotoNext();%
}else if(a#1.playsRight){%
- a#1.actnNext();%
+ a#1.gotoNext();%
}else{%
- a#1.actnPrev();%
+ a#1.gotoPrev();%
}%
\else
if(a#1.idx==\@anim@maxframe){%
- a#1.actnEndLeft();%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
+ a#1.stopFirst();%
}else{%
- a#1.actnNext();%
+ a#1.gotoNext();%
}%
\fi%
\else%
- \if@anim@palindrome%
+ \if@anim@palindrome
if(a#1.idx==\@anim@maxframe){%
- a#1.actnPlayLeft();%
+ a#1.playLeft();%
}else if(a#1.idx==0){%
- a#1.actnPlayRight();%
+ a#1.playRight();%
}else if(a#1.playsRight){%
- a#1.actnPlayRight();%
+ a#1.playRight();%
}else{%
- a#1.actnPlayLeft();%
+ a#1.playLeft();%
}%
\else
- if(a#1.idx==\@anim@maxframe){a#1.actnEndLeft();}%
- a#1.actnPlayRight();%
+ if(a#1.idx==\@anim@maxframe){a#1.stopFirst();}%
+ a#1.playRight();%
\fi%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
\fi%
}catch(e){}%
)>>%
@@ -3689,49 +3652,31 @@
\xdef\@anim@upjscriptstring{%
app.focusRect=false;%
\ifx\@anim@action\@anim@EndLeft
- a#1.actnEndLeft();%
+ a#1.stopFirst();%
\else%
- \ifx\@anim@action\@anim@StepLeft%
- \if@anim@step
- if(a#1.idx!=0){a#1.actnPrev();}%
- \else
- if(!a#1.isPlaying&&a#1.idx!=0){a#1.isPaused=true;a#1.actnPrev();}%
- \fi%
+ \ifx\@anim@action\@anim@StepLeft
+ a#1.stepBwd();%
\else%
\ifx\@anim@action\@anim@PlayPauseLeft
- if(a#1.isPlaying){a#1.actnPause();}else{%
- if(a#1.idx==0){a#1.actnEndRight();}%
- a#1.actnPlayLeft();%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- }%
+ if(a#1.playing){a#1.pause();}else{a#1.playBwd();}%
\else%
\ifx\@anim@action\@anim@PlayPauseRight
- if(a#1.isPlaying){a#1.actnPause();}else{%
- if(a#1.idx==\@anim@maxframe){a#1.actnEndLeft();}%
- a#1.actnPlayRight();%
- \if@anim@usrjs try{a#1.usrJSat[a#1.idx]();}catch(e){}\fi%
- }%
+ if(a#1.playing){a#1.pause();}else{a#1.playFwd();}%
\else%
- \ifx\@anim@action\@anim@StepRight%
- \if@anim@step
- if(a#1.idx!=\@anim@maxframe){a#1.actnNext();}%
- \else
- if(!a#1.isPlaying&&a#1.idx!=\@anim@maxframe){%
- a#1.isPaused=true;a#1.actnNext();%
- }%
- \fi%
+ \ifx\@anim@action\@anim@StepRight
+ a#1.stepFwd();%
\else%
\ifx\@anim@action\@anim@EndRight
- a#1.actnEndRight();%
+ a#1.stopLast();%
\else%
\ifx\@anim@action\@anim@Minus
- a#1.actnDecr();%
+ a#1.fpsDecr();%
\else%
\ifx\@anim@action\@anim@Reset
- a#1.actnReset();%
+ a#1.fpsReset();%
\else%
\ifx\@anim@action\@anim@Plus
- a#1.actnIncr();%
+ a#1.fpsIncr();%
\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
}