diff options
author | Karl Berry <karl@freefriends.org> | 2020-04-25 20:47:38 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-04-25 20:47:38 +0000 |
commit | 1ef16d82e52f4296be46ce5bf5a74e213257b7e3 (patch) | |
tree | 52480676fdb0a8c258a6774b0e4e0c45ea24e104 /Master/texmf-dist/tex/latex | |
parent | 4bed4ce56b3f38c07390902dd1d37411ea42e1bb (diff) |
animate (25apr20)
git-svn-id: svn://tug.org/texlive/trunk@54874 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/animate/animate.sty | 134 |
1 files changed, 81 insertions, 53 deletions
diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty index 75fca7a6a46..b4e05000ab6 100644 --- a/Master/texmf-dist/tex/latex/animate/animate.sty +++ b/Master/texmf-dist/tex/latex/animate/animate.sty @@ -13,7 +13,7 @@ \NeedsTeXFormat{LaTeX2e} -\def\@anim@version{2020/03/25} +\def\@anim@version{2020/04/25} \ProvidesPackage{animate} [\@anim@version\space PDF & SVG animations from files and inline graphics] @@ -104,7 +104,7 @@ \endlinechar`\:% `:' appended to every line read \IfFileExists{#1.xbb}{% %read from xbb file - {\catcode`\%=0\sbox0{\input{#1.xbb}}}% + {\catcode`\:=12\catcode`\%=0\sbox0{\input{#1.xbb}}}% \ifdefined#3\else% \PackageError{animate}{% Cannot read number of pages from file\MessageBreak% @@ -118,23 +118,22 @@ %read from command pipe (`extractbb') %firstly, check whether reading from pipe is allowed \immediate\closein\@inputcheck% - \immediate\openin\@inputcheck="|extractbb -h"% - \let\@anim@foo\@anim@bar% <-- needed for some reason to make - \ifeof\@inputcheck% <-- this test work correctly + \immediate\openin\@inputcheck="|extractbb -h"\relax% + \ifeof\@inputcheck% \immediate\closein\@inputcheck% \PackageError{animate}{% Cannot determine number of pages in file\MessageBreak% ----------------------------------------\MessageBreak% #1.#2\MessageBreak% ----------------------------------------\MessageBreak% - Try --shell-escape option (--enable-pipes in MikTeX),% + Try --shell-escape option (--enable-pipes in MiKTeX),% \MessageBreak or run\MessageBreak% \space\space extractbb #1.#2\MessageBreak% on the command line to provide a valid `xbb' file% }{}% \else% \immediate\closein\@inputcheck% - {\catcode`\%=0\sbox0{\@@input "|extractbb -O #1.#2"}}% + {\catcode`\:=12\catcode`\%=0\sbox0{\@@input "|extractbb -O #1.#2"}}% \fi% }% }} @@ -349,14 +348,14 @@ %helper macro that typesets graphics file into savebox \if@anim@dvips \def\@anim@filebox#1#2{% dvips: no multi-page support - \edef\@anim@curfile{[clip\@anim@gropts]{#1}}% + \edef\@anim@curfile{[\@anim@gropts]{#1}}% \global\setbox\@anim@box=\hbox{% \expandafter\includegraphics\@anim@curfile}% } \else %pdfTeX, LuaTeX, dvipdfmx, xetex, dvisvgm \def\@anim@filebox#1#2{% - \edef\@anim@curfile{[clip\@anim@gropts,page=#2]{#1}}% + \edef\@anim@curfile{[\@anim@gropts,page=#2]{#1}}% \global\setbox\@anim@box=\hbox{% \expandafter\includegraphics\@anim@curfile}% } @@ -398,7 +397,8 @@ \gdef\@anim@boxscale{\@ne}% %append final dims to inclusion opts, also used for the remaining files %of the current animation - \xdef\@anim@gropts{\@anim@gropts,width=\@anim@animwidth% + \xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi width=\@anim@animwidth% ,height=\@anim@animheight,totalheight=\@anim@animtotalheight}% \fi% \fi% @@ -1535,10 +1535,22 @@ \ifnum\@anim@resizeflags=7\relax% height+totalheight+width->totalheight+width \global\@anim@resizeflags=5% \fi% - \if@anim@hiresbb\xdef\@anim@gropts{\@anim@gropts,hiresbb}\fi% - \if@anim@interpolate\xdef\@anim@gropts{\@anim@gropts,interpolate}\fi% - \ifx\@anim@pagebox\@empty\else% - \xdef\@anim@gropts{\@anim@gropts,pagebox=\@anim@pagebox}\fi% + \ifx\@anim@bb\@empty\else\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi\@anim@bb}\fi% + \ifx\@anim@viewport\@empty\else\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi\@anim@viewport}\fi% + \ifx\@anim@trim\@empty\else\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi\@anim@trim}\fi% + \ifx\@anim@angle\@empty\else\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi\@anim@angle}\fi% + \if@anim@clip\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi clip}\fi% + \if@anim@hiresbb\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi hiresbb}\fi% + \if@anim@interpolate\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi interpolate}\fi% + \ifx\@anim@pagebox\@empty\else\xdef\@anim@gropts{\@anim@gropts% + \ifx\@anim@gropts\@empty\else,\fi\@anim@pagebox}\fi% \ifthenelse{\boolean{@anim@autoplay}\OR\boolean{@anim@autoresume}}{% \setboolean{@anim@autoplayorresume}{true}% }{}% @@ -2790,6 +2802,22 @@ \define@key{anim@user}{keepaspectratio}[true]{% \setboolean{@anim@iso}{#1}% } +\define@key{anim@user}{bb}{% + \xdef\@anim@bb{bb=#1}% +} +\define@key{anim@user}{viewport}{% + \xdef\@anim@viewport{viewport=#1}% +} +\define@key{anim@user}{trim}{% + \xdef\@anim@trim{trim=#1}% +} +\define@key{anim@user}{angle}{% + \xdef\@anim@angle{angle=#1}% +} +\newboolean{@anim@clip} +\define@key{anim@usr}{clip}[true]{% + \setboolean{@anim@clip}{#1}% +} \newboolean{@anim@hiresbb} \define@key{anim@user}{hiresbb}[true]{% \setboolean{@anim@hiresbb}{#1}% @@ -2799,10 +2827,10 @@ \setboolean{@anim@interpolate}{#1}% } \define@key{anim@user}{pagebox}{% - \gdef\@anim@pagebox{#1}% + \xdef\@anim@pagebox{pagebox=#1}% } \define@key{anim@user}{scale}{% - \gdef\@anim@boxscale{#1}% + \xdef\@anim@boxscale{#1}% } \define@key{anim@user}{buttonsize}{% \gdef\@anim@btnsize{#1}% @@ -2946,7 +2974,7 @@ \newboolean{@anim@ctrlright} \newboolean{@anim@ctrlcentre} \define@key{anim@user}{controlsaligned}{% - \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% + \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% \ifthenelse{\equal{\@anim@tmpvar}{left}}{% \setboolean{@anim@ctrlleft}{true}% \setboolean{@anim@ctrlright}{false}% @@ -3063,18 +3091,6 @@ \define@key{anim@user}{every}{% embed every #1th frame \ifnum#1<\@ne\relax\gdef\@anim@every{1}\else\gdef\@anim@every{#1}\fi% } -\define@key{anim@user}{bb}{% - \g@addto@macro\@anim@gropts{, bb=#1}% -} -\define@key{anim@user}{viewport}{% - \g@addto@macro\@anim@gropts{, viewport=#1}% -} -\define@key{anim@user}{trim}{% - \g@addto@macro\@anim@gropts{, trim=#1}% -} -\define@key{anim@user}{angle}{% - \g@addto@macro\@anim@gropts{, angle=#1}% -} \newboolean{@anim@meas} \define@key{anim@user}{measure}[true]{% \setboolean{@anim@meas}{#1}% @@ -3107,6 +3123,11 @@ \setboolean{@anim@doscaling}{true}% \global\let\@anim@boxscale\@anim@@boxscale% \global\let\if@anim@iso=\if@anim@@iso% + \global\let\@anim@bb\@anim@@bb% + \global\let\@anim@viewport\@anim@@viewport% + \global\let\@anim@trim\@anim@@trim% + \global\let\@anim@angle\@anim@@angle% + \global\let\if@anim@clip=\if@anim@@clip% \global\let\if@anim@hiresbb=\if@anim@@hiresbb% \global\let\if@anim@interpolate=\if@anim@@interpolate% \global\let\@anim@pagebox\@anim@@pagebox% @@ -3308,6 +3329,26 @@ \define@key{anim@pkg}{keepaspectratio}[true]{% \setboolean{@anim@@iso}{#1}% } +\def\@anim@@bb{} +\define@key{anim@pkg}{bb}{% + \xdef\@anim@bb{bb=#1}% +} +\def\@anim@@viewport{} +\define@key{anim@pkg}{viewport}{% + \xdef\@anim@@viewport{viewport=#1}% +} +\def\@anim@@trim{} +\define@key{anim@pkg}{trim}{% + \xdef\@anim@@trim{trim=#1}% +} +\def\@anim@@angle{} +\define@key{anim@pkg}{angle}{% + \xdef\@anim@@angle{angle=#1}% +} +\newboolean{@anim@@clip} +\define@key{anim@pkg}{clip}[true]{% + \setboolean{@anim@@clip}{#1}% +} \newboolean{@anim@@hiresbb} \define@key{anim@pkg}{hiresbb}[true]{% \setboolean{@anim@@hiresbb}{#1}% @@ -3318,7 +3359,7 @@ } \def\@anim@@pagebox{} \define@key{anim@pkg}{pagebox}{% - \def\@anim@@pagebox{#1}% + \xdef\@anim@@pagebox{pagebox=#1}% } \def\@anim@@boxscale{1}% \define@key{anim@pkg}{scale}{% @@ -3389,7 +3430,7 @@ \setboolean{@anim@@ctrlcentre}{true} \def\@anim@@ctrlsindent{\z@} \define@key{anim@pkg}{controlsaligned}{% - \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% + \@anim@parse@ctrlsalignarg\@anim@tmpvar\@anim@tmpdima#1+\@nil% \setboolean{@anim@@ctrlcentre}{false}% \ifthenelse{\equal{\@anim@tmpvar}{left}}{% \setboolean{@anim@@ctrlleft}{true}% @@ -3569,7 +3610,7 @@ \if@anim@controls@play% var a#1_btnPauseLeft,a#1_btnPlayLeft,a#1_btnPauseRight,a#1_btnPlayRight;$% \fi% - var a#1_playsRight,a#1_isPaused;$% + var a#1_playsRight,a#1_isPaused\if@anim@step\else,a#1_playing\fi;$% \if@anim@step\else var a#1_int;$% timer id (takes return val of setIntervall()) % function pointers @@ -4228,7 +4269,7 @@ \@anim@@jsvardecls{#1}% variables that are supposed to be global (function(){$% IIFE (self-executing anon. function) to limit scope function onload(){$% - \@anim@@jsinit{#1}% + \@anim@@jsinit{#1}$% \if@anim@nomouse\else document.getElementById('anm#1').addEventListener('mouseup',% onMouseUpWdgt);$% @@ -4236,10 +4277,6 @@ onMouseDownWdgt);$% document.getElementById('anm#1').addEventListener('touchend',% onTouchEndWdgt);$% - document.getElementById('anm#1').addEventListener('touchstart',% - onTouchStartWdgt);$% - document.getElementById('anm#1').addEventListener('touchmove',% - onTouchMove);$% \fi% onvisible();$% in case of `autoplay' option }$% @@ -4259,28 +4296,19 @@ document.addEventListener('visibilitychange',onVisibilityChange);$% window.addEventListener('load',onload);$% \if@anim@nomouse\else - var permPause#1=false; function onWidgetUpAction(event){$% \@anim@wdgtUpJS{#1}% }$% - function onTouchStartWdgt(event){$% - event.preventDefault();$% - event.stopPropagation();$% - permPause#1=false; - \@anim@wdgtDownJS{#1}% - }$% function onTouchEndWdgt(event){$% event.preventDefault();$% event.stopPropagation();$% - if(event.targetTouches.length>0){permPause#1=true;}$% - else{$% - if(permPause#1){permPause#1=false;}$% - else{onWidgetUpAction(event);}$% - }$% - }$% - function onTouchMove(event){$% - event.preventDefault();$% - event.stopPropagation();$% + \if@anim@step\else + if(a#1_playing){try{a#1_pause();}catch(e){}}else{$% + \fi% + \@anim@wdgtUpJS{#1}% + \if@anim@step\else% + }$% + \fi% }$% function onMouseDownWdgt(event){$% event.preventDefault();$% |