summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-08-24 18:26:42 +0000
committerKarl Berry <karl@freefriends.org>2007-08-24 18:26:42 +0000
commit7e5d4a6894005a55af8ca409356fff320be6dde3 (patch)
treeaa0144262f353f5dc67f4538edcce09fc70033b0 /Master/texmf-dist
parentf7ddc9080facd61f95673362b5af441285d284fc (diff)
animate update (23aug07)
git-svn-id: svn://tug.org/texlive/trunk@4788 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/animate/README29
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/animate.pdfbin964629 -> 977650 bytes
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/animate.tex99
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps318
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps315
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps318
-rw-r--r--Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps315
-rw-r--r--Master/texmf-dist/tex/latex/animate/animate.sty732
8 files changed, 1851 insertions, 275 deletions
diff --git a/Master/texmf-dist/doc/latex/animate/README b/Master/texmf-dist/doc/latex/animate/README
index d3b570d2956..c4c96822e10 100644
--- a/Master/texmf-dist/doc/latex/animate/README
+++ b/Master/texmf-dist/doc/latex/animate/README
@@ -10,9 +10,9 @@ Author:
Description:
This package provides an interface to create portable, JavaScript driven PDF
- animations from sets of (vector) graphics files or from inline (vector)
- graphics, such as LaTeX-picture, PSTricks or pgf/TikZ generated pictures,
- or just from typeset text.
+ animations from sets of (vector) graphics or rasterized image files or from
+ inline (vector) graphics, such as LaTeX-picture, PSTricks or pgf/TikZ
+ generated pictures, or just from typeset text.
It supports the usual PDF making workflows, i. e. pdfLaTeX and LaTeX ->
dvips -> ps2pdf (Ghostscript).
@@ -42,18 +42,18 @@ Description:
`doc/' directory for details and examples.
Keywords: include, portable, PDF, animation, animating, embed, animated,
- graphics, LaTeX, pdfLaTeX, PSTricks, pgf, TikZ, MetaPost,
- LaTeX-picture, inline graphics, vector graphics, dvips, ps2pdf,
- JavaScript, Adobe Reader
+ graphics, LaTeX, pdfLaTeX, animated GIF, PSTricks, pgf, TikZ,
+ MetaPost, LaTeX-picture, inline graphics, vector graphics, dvips,
+ ps2pdf, JavaScript, Adobe Reader
Usage:
\usepackage[<package options>]{animate}
- * Package options: autopause, autoplay, autoresume, controls,
- buttonsize=<size>, screenbg=<colour>, buttonbg=<colour>,
- loop, palindrome, step, poster=[first | none | last]
+ * Package options: autopause, autoplay, autoresume, controls, final, draft,
+ buttonsize=<size>, buttonbg=<colour>, buttonfg=<colour>,
+ loop, palindrome, step, poster[=first | none | last]
\animategraphics[<options>]{<frame rate>}{<file basename>}{<first>}{<last>}
@@ -67,16 +67,17 @@ Usage:
\end{animateinline}
* Command options: width=<width>, height=<height>, depth=<depth>,
- scale=<factor>, autopause, autoplay, autoresume, controls,
- buttonsize=<size>, screenbg=<colour>, buttonbg=<colour>,
- loop, palindrome, step, poster=[first | none | last],
- begin={<begin text>}, end={<end text>},
- timeline=<timeline file>
+ scale=<factor>, autopause, autoplay, autoresume, final,
+ draft, controls, buttonsize=<size>, buttonbg=<colour>,
+ buttonfg=<colour>, loop, palindrome, step,
+ poster[=first | none | last], begin={<begin text>},
+ end={<end text>}, timeline=<timeline file>
Requirements:
pdfeTeX, version >= 1.20
+ Ghostscript, version >= 8.31 or Adobe Distiller
Adobe Reader, version >= 6
diff --git a/Master/texmf-dist/doc/latex/animate/doc/animate.pdf b/Master/texmf-dist/doc/latex/animate/doc/animate.pdf
index 4f6af7af3ac..515464e7fa6 100644
--- a/Master/texmf-dist/doc/latex/animate/doc/animate.pdf
+++ b/Master/texmf-dist/doc/latex/animate/doc/animate.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/animate/doc/animate.tex b/Master/texmf-dist/doc/latex/animate/doc/animate.tex
index 7e9cc0dc8d1..7450281cd45 100644
--- a/Master/texmf-dist/doc/latex/animate/doc/animate.tex
+++ b/Master/texmf-dist/doc/latex/animate/doc/animate.tex
@@ -28,7 +28,7 @@
\parindent0pt
\parskip1.2ex
-\def\keywords{include, portable, PDF, animation, animating, embed, animated, graphics, LaTeX, pdfLaTeX, PSTricks, pgf, TikZ, LaTeX-picture, MetaPost, inline graphics, vector graphics, dvips, ps2pdf, JavaScript, Adobe Reader}
+\def\keywords{include, portable, PDF, animation, animating, embed, animated, graphics, LaTeX, pdfLaTeX, animated GIF, PSTricks, pgf, TikZ, LaTeX-picture, MetaPost, inline graphics, vector graphics, dvips, ps2pdf, JavaScript, Adobe Reader}
\hypersetup{
bookmarksnumbered,linktocpage,breaklinks,
pdftitle={The animate Package},
@@ -46,22 +46,25 @@
\begin{document}
\title{The {\sffamily animate} Package}
-\author{Alexander Grahn\\[1ex]\includegraphics[height=2.7ex]{mailto}}
+\author{Alexander Grahn \animategraphics[autoplay,loop,height=1.8ex]{8}{bye_}{0}{3}\protect\footnote{Animated GIF taken from \href{http://www.phpBB.com}{phpBB} forum software and burst into set of EPS files using \href{http://www.imagemagick.org}{ImageMagick} before embedding.}\\[1ex]\includegraphics[height=2.7ex]{mailto}}
\maketitle
-\begin{abstract}\noindent
-A \LaTeX{} package for creating portable, JavaScript driven PDF animations from sets of graphics files or inline graphics.
+\begin{abstract}
+\raggedright
+
+\noindent A LaTeX package for creating portable, JavaScript driven PDF animations from sets of vector graphics or rasterized image files or from inline graphics.
\vskip 0.2\baselineskip
-\raggedright\emph{Keywords}: \keywords
+\emph{Keywords}: \keywords
\end{abstract}
\tableofcontents
-\newpage
+
+%\newpage
\section{Introduction}
-This package provides an interface to create PDFs with animated content from sets of graphics files, from inline graphics, such as \LaTeX-picture, PSTricks or pgf/TikZ generated pictures, or just from typeset text. Unlike standard movie/ video formats, which can be embedded, for example, using the \LaTeX{} package `movie15'~\cite{movie15}, package `animate' allows for animating vector graphics. The result is roughly similar to the SWF (Flash) format, although not as space-efficient.
+This package provides an interface to create PDFs with animated content from sets of graphics or image files, from inline graphics, such as \LaTeX-picture, PSTricks or pgf/TikZ generated pictures, or just from typeset text. Unlike standard movie/video formats, which can be embedded, for example, using the \LaTeX{} package `movie15'~\cite{movie15}, package `animate' allows for animating vector graphics. The result is roughly similar to the SWF (Flash) format, although not as space-efficient.
-Package `animate' supports the usual PDF making workflows, i.\,e. pdf\LaTeX{} and \LaTeX{} $\rightarrow$ \verb+dvips+ $\rightarrow$ \verb+ps2pdf+\,(Ghost\-script).
+Package `animate' supports the usual PDF making workflows, i.\,e. pdf\LaTeX{} and \LaTeX{} $\rightarrow$ \verb+dvips+ $\rightarrow$ \verb+ps2pdf+/Distiller.
The final PDF can be viewed in current Adobe Reader\textsuperscript{\scriptsize\textregistered}s on all supported platforms.
@@ -69,7 +72,8 @@ The `animate' package makes use of Optional Content Groups (OCG), also known as
\section{Requirements}
\begin{trivlist}
-\item pdf$\varepsilon$\TeX{}, version $\ge1.20$ for PDF output
+\item pdf$\varepsilon$\TeX{}, version $\ge1.20$ for direct PDF output
+\item Ghostscript, version $\ge8.31$ or Adobe Distiller for PS to PDF conversion
\item Adobe Reader, version $\ge6$
\end{trivlist}
@@ -79,25 +83,27 @@ The file `animate.sty' should be stored in a place where \LaTeX{} can find it.
\section{Using the package}
First of all, read Section~\ref{sect:bugs} on problems related to this package. Then, invoke the package by putting the line
\begin{verbatim}
- \usepackage[<package options>]{animate}
+\usepackage[<package options>]{animate}
\end{verbatim}
to the preamble of your document, i.\,e. somewhere between \verb+\documentclass+ and \verb+\begin{document}+.
`animate' honours the package options:
\begin{verbatim}
- autoplay
- autopause
- autoresume
- controls
- buttonsize=<size>
- loop
- palindrome
- screenbg=<colour>
- buttonbg=<colour>
- step
- poster=[first | none | last]
+autoplay
+autopause
+autoresume
+loop
+palindrome
+draft
+final
+controls
+buttonsize=<size>
+buttonbg=<colour>
+buttonfg=<colour>
+step
+poster[=first | none | last]
\end{verbatim}
-The same options are also available as command options and will be explained shortly. However, if used as package options they have global scope, taking effect on all animations in the document.
+The same options are also available as command options and will be explained shortly. However, if used as package options they have global scope, taking effect on all animations in the document. In turn, command options locally override global settings.
If PDF is generated via DVI and Postscript by the command sequence \verb+latex+ $\rightarrow$ \verb+dvips+ $\rightarrow$ \verb+ps2pdf+, the `graphicx' package is required. \emph{Important:} The \verb+dvips+ option `\verb+-Ppdf+' should \emph{not} be set when converting the intermediate DVI into Postscript. If you cannot do without, put `\verb+-X 2400 -Y 2400+' \emph{after} `\verb+-Ppdf+' on the command line.
@@ -117,7 +123,7 @@ and the environment
\end{animateinline}
\end{verbatim}
-While \verb+\animategraphics+ can be used to assemble animations from sets of existing graphics files, the environment `\verb+animateinline+' is intended to create the animation from the typeset material it encloses. This material can be pictures drawn within the \LaTeX{} \verb+picture+ environment or using the advanced capabilities of PSTricks or pgf/TikZ. Even ordinary textual material may be animated in this way. The parameter \verb+<frame rate>+ specifies the number of frames per second of the animation.
+While \verb+\animategraphics+ can be used to assemble animations from sets of existing graphics files, the environment `\verb+animateinline+' is intended to create the animation from the typeset material it encloses. This material can be pictures drawn within the \LaTeX{} `\verb+picture+' environment or using the advanced capabilities of PSTricks or pgf/TikZ. Even ordinary textual material may be animated in this way. The parameter \verb+<frame rate>+ specifies the number of frames per second of the animation.
By default, the animation is build frame by frame in the order of inclusion of the embedded material. However, extended control of the order of appearance, superposition and repetition of the material is available through the `\verb+timeline+' option (see below).
@@ -143,11 +149,6 @@ autoresume
\end{verbatim}
Resume previously paused animation when the page is opened again.
\begin{verbatim}
-begin={<begin text>}
-end={<end text>}
-\end{verbatim}
-(`\verb+animateinline+' only.) \verb+<begin text>+ and \verb+<end text>+ are inserted into the code at start and end of each frame. Mainly used for setting up some drawing environment, such as\\ \verb+begin={\begin{pspicture}(...)(...)},+ \verb+end={\end{pspicture}}+.
-\begin{verbatim}
loop
\end{verbatim}
The animation restarts immediately after reaching the end.
@@ -156,6 +157,19 @@ palindrome
\end{verbatim}
The animation continuously plays forward and backward.
\begin{verbatim}
+draft
+final
+\end{verbatim}
+With `\verb+draft+' the animation is not embedded. Instead, a box with the exact dimensions of the animation is inserted. Option `\verb+final+' does the opposite as it forces the animation to be built and embedded. Both options can be used to reduce compilation time during authoring of a document. To get the most out of them it is recommended to set `\verb+draft+' globally as package or class option and to set `\verb+final+' locally as command option of the animation that is currently worked on. After the document has been finished, the global `\verb+draft+' option can be removed to embed all animations.
+\begin{verbatim}
+begin={<begin text>}
+end={<end text>}
+\end{verbatim}
+(`\verb+animateinline+' only.) \verb+<begin text>+ and \verb+<end text>+ are inserted into the code at start and end of each frame. Mainly used for setting up some drawing environment, such as
+\begin{verbatim}
+ begin={\begin{pspicture}(...)(...)}, end={\end{pspicture}}
+\end{verbatim}
+\begin{verbatim}
controls
\end{verbatim}
Inserts control buttons below the animation widget. The meaning of the buttons is as follows, from left to right: stop \& first frame, step backward, play backward, play forward, step forward, stop \& last frame, decrease speed, default speed, increase speed. Both `play' buttons are replaced by a large `pause' button while the animation is playing.
@@ -164,7 +178,7 @@ width=<width>
height=<height>
depth=<depth>
\end{verbatim}
-Resize the animation widget. Any valid \TeX{} dimension is accepted as parameter. Option `\verb+depth+' specifies how far the animation widget should extend below the bottom line of the running text. If only one of these options is given, the others are scaled to keep the aspect ratio.
+Resize the animation widget. Any valid \TeX{} dimension is accepted as parameter. Option `\verb+depth+' specifies how far the animation widget should extend below the bottom line of the running text. If only one or two of these options are given, the unspecified dimensions are scaled to keep the aspect ratio.
\begin{verbatim}
scale=<factor>
\end{verbatim}
@@ -172,16 +186,16 @@ Scales the animation widget by \verb+<factor>+.
\begin{verbatim}
buttonsize=<size>
\end{verbatim}
-Changes the control button height to \verb+<size>+, which must be a valid \TeX{} dimension. The default button height is 1.44em and thus scales with the current font size.
+Changes the control button height to \verb+<size>+, which must be a valid \TeX{} dimension. The default button height is \verb+1.44em+ and thus scales with the current font size.
\begin{verbatim}
-screenbg=<colour>
buttonbg=<colour>
+buttonfg=<colour>
\end{verbatim}
-The background of the animation and control button widgets is transparent by default. It can be turned into a solid colour by the parameter \verb+<colour>+, which is an array of space-separated numbers (\emph{without} surrounding brackets) in the range from 0.0 to 1.0. The number of array elements determines the colour model in which the colour is defined: (1) gray value, (3) RGB, (4) CMYK.
+By default, control button widgets are drawn with black strokes on transparent background. The background can be turned into a solid colour by the first option, while the second option specifies the stroke colour. The parameter \verb+<colour>+ is an array of colon-(`\verb+:+')-separated numbers in the range from 0.0 to 1.0. The number of array elements determines the colour model in which the colour is defined: (1) gray value, (3) RGB, (4) CMYK. For example, `\verb+1+', `\verb+1:0.5:0.2+' and `\verb+0.5:0.3:0.7:0.1+' are valid colour specifications.
\begin{verbatim}
-poster=[first | none | last]
+poster[=first | none | last]
\end{verbatim}
-Specifies which frame (first, last or none) to display and print if the animation is not activated. Option `poster=first' need not be explicitly set because it is the default.
+Specifies which frame (first, last or none) to display and print if the animation is not activated. The first frame is shown by default. Thus `\verb+poster+' or `\verb+poster=first+' need not be explicitly set.
\begin{verbatim}
step
\end{verbatim}
@@ -191,21 +205,21 @@ timeline=<timeline file>
\end{verbatim}
\verb+<timeline file>+ is a plain text file whose contents determines the order of appearance of the embedded material during the animation. In addition, it allows to freely reorder, repeat and overlay the material at any point of the animation. This may greatly reduce the file size of the resulting PDF, as objects that do not change between several or all frames, such as coordinate axes or labels, can be embedded once and reused in other frames of the animation.
-If a timeline is associated with the animation, the graphics files or inline graphics embedded by \verb+animategraphics+ and `\verb+animateinline+' no longer represent the actual frames of the animation. Rather, they are a collection of \emph{transparencies} that can be played with at will. In order to identify the transparencies within the timeline file, they are numbered in the order of their inclusion, starting at zero.
+If a timeline is associated with the animation, the graphics files or inline graphics embedded by \verb+\animategraphics+ and `\verb+animateinline+' no longer represent the actual frames of the animation. Rather, they are a collection of \emph{transparencies} that can be played with at will. In order to identify the transparencies within the timeline file, they are numbered in the order of their inclusion, starting at zero.
-Each line of the timeline file that is not blank and which does not begin with a comment (`\verb+%+') specifies \emph{one} frame of the animation. There may be more transparencies than animation frames and vice-versa. A frame specification consists of three, colon (`\verb+:+') separated fields:
+Each line of the timeline file that is not blank and which does not begin with a comment (`\verb+%+') specifies \emph{one} frame of the animation. There may be more transparencies than animation frames and vice-versa. A frame specification consists of three, colon-(`\verb+:+')-separated fields:
\begin{verbatim}
[*]:[<frame rate>]:[<frame content>]
\end{verbatim}
While any field may be left blank, the colons are mandatory.
-An asterisk (`\verb+*+') in the leftmost field causes the animation to pause at that frame, very much like a \verb+\newframe*+ would do; a number in the second field changes the frame rate of the animation section that follows. (In connexion with the `\verb+timeline+' option the asterisk extension and the optional \verb+<frame rate>+ argument of \verb+\newframe+ cease to make sense and will be tacitly ignored, if present.) The third field \verb+<frame content>+ is a comma separated list of \emph{transparency specifications} that determines the content of the frame. A single transparency specification obeys the syntax
+An asterisk (`\verb+*+') in the leftmost field causes the animation to pause at that frame, very much like a \verb+\newframe*+ would do; a number in the second field changes the frame rate of the animation section that follows. (In connexion with the `\verb+timeline+' option the asterisk extension and the optional \verb+<frame rate>+ argument of \verb+\newframe+ cease to make sense and will be tacitly ignored, if present.) The third field \verb+<frame content>+ is a comma-separated list of \emph{transparency specifications} that determines the content of the frame. A single transparency specification obeys the syntax
\begin{verbatim}
<transparency ID>[x<number of frames>]
\end{verbatim}
where \verb+<transparency ID>+ is an integer number that identifies the transparency to be drawn into the current animation frame. As pointed out above, the transparencies are consecutively numbered in the order of their inclusion, starting at zero. The optional postfix `\verb+x<number of frames>+' specifies the number of consecutive frames the transparency is to appear within. If omitted, a postfix of `\verb+x1+' is assumed, which causes the transparency to be shown in the current frame only. Obviously, \verb+<number of frames>+ must be a non-negative integer number. The meaning of postfix `\verb+x0+' is special; it causes the transparency to be shown in all frames, starting with the current one, until the end of the animation.
-Note, that the order in which transparency specifications appear in the timeline file determines their depth level. The animation can be visualised as a pile of transparencies. Transparencies are always put on top of that pile, possibly overdrawing objects that are on previously deposited transparencies. Once on the pile, each transparency remains at its place for the specified number of frames and is removed afterwards. That is, for a transparency to appear always on top it must be put to the rightmost end of each line in the timeline file.
+Note, that the order in which transparency specifications appear in the timeline file determines their depth level. The animation may be thought of as a pile of transparencies. Transparencies are always put on top of that pile, possibly overdrawing objects that are on previously deposited transparencies. Once on the pile, each transparency remains at its place for the specified number of frames and is removed afterwards. That is, for a transparency to appear always on top it must be put to the rightmost end of each line in the timeline file.
Consider the two timelines
\begin{verbatim}
@@ -354,7 +368,7 @@ Contents of file `\verb+timeline.txt+':
\section{Bugs}\label{sect:bugs}
\begin{itemize}
- \item The command {\tt\string\multido} and its relatives from package `{\tt multido}' do not work if the loop body contains {\tt\string\newframe}. Use {\tt\string\whiledo} from package `{\tt ifthen}' instead. A counter must be declared to keep track of the number of iterations. Further variables that take fixed point decimals to be used within the loop body can be defined and incremented by means of the commands \verb+\FPset+ and \verb+\FPadd+ from package `{\tt fp}'. For example:
+ \item The command {\tt\string\multido} and its relatives from package `{\tt multido}' do not work if the loop body contains {\tt\string\newframe}. Use {\tt\string\whiledo} from package `{\tt ifthen}' instead. (There is no need to load `ifthen' explicitly; it has already been loaded by `animate'.) A counter must be declared to keep track of the number of iterations. Further variables that take fixed point decimals to be used within the loop body can be defined and incremented by means of the commands \verb+\FPset+ and \verb+\FPadd+ from package `{\tt fp}'. For example:
\small
\begin{verbatim}
% declare loop counter
@@ -389,13 +403,16 @@ Contents of file `\verb+timeline.txt+':
\end{verbatim}
\normalsize
- \item Currently, animations should not be placed on \emph{multilayered} slides created with the Beamer class. Although possible, the result might be disappointing. Put animations on flat slides only. (Of course, slides without animations may still have overlays.)
+ \item The \verb+dvips+ option `\verb+-Ppdf+' should be avoided entirely or followed by something like `\verb+-X 2400 -Y 2400+' on the command line in order to set a sensible DVI resolution. In times of Type-1 fonts, this does \emph{not} degrade the output quality! The configuration file `\verb+config.pdf+' loaded by option `\verb+-Ppdf+' specifies an excessively high DVI resolution that will be passed on to the final PDF. Eventually, Adobe Reader gets confused and will not display the frames within the animation widget.
- \item The \verb+dvips+ option `\verb+-Ppdf+' should be avoided entirely or followed by something like `\verb+-X 2400+ \verb+-Y 2400+' on the command line in order to set a sensible DVI resolution. In times of Type-1 fonts, this does \emph{not} degrade the output quality! The configuration file `\verb+config.pdf+' loaded by option `\verb+-Ppdf+' specifies an excessively high DVI resolution that will be passed on to the final PDF. Eventually, Adobe Reader gets confused and will not display the frames within the animation widget.
+ \item Animations do not work if the PDF has been produced with Ghostscript versions prior to 8.31. This applies to all versions of ESP Ghostscript that comes with many Linux distributions.
\item Animations with complex graphics and/or many frames may cause \LaTeX{} to fail with a `\verb+TeX capacity exceeded+' error. Enlarge \TeX{}'s memory with command line option `\verb+--mem-max=...+'.
\item Originally, package `\verb+animate+' was based on a method suggested by Jan Hole\v{c}ek and Petr Soika~\cite{hol04}, but was rewritten to use Optional Content Groups (OCG). OCG-based animations are fully supported in Adobe Reader 8, but have some performance issues. Playback is usually slower in Reader 8 than in older Reader versions, which is probably a bug. The non-OCG approach performs better in Adobe Reader 8, but package/command options `\verb+autoplay+', `\verb+autopause+' and `\verb+autoresume+' do not work. Moreover, the animation position and the play/pause' buttons are not properly reset on page change. This is due to usage restrictions that Adobe imposed on some important JavaScript methods in Reader 8. An old, non-OCG version of the package is still available as `\verb+animate-noocg.sty+'.
+
+ \item Currently, animations should not be placed on \emph{multilayered} slides created with the Beamer class. Although possible, the result might be disappointing. Put animations on flat slides only. (Of course, slides without animations may still have overlays.)
+
\end{itemize}
\section{Acknowledgements}
diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps b/Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps
new file mode 100644
index 00000000000..3a98bffda75
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps
@@ -0,0 +1,318 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (bye_0.eps)
+%%CreationDate: (Mon Aug 20 12:29:46 2007)
+%%BoundingBox: 0 0 26 18
+%%HiResBoundingBox: 0 0 26 18
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 26 18
+userdict begin
+DisplayImage
+0 0
+26 18
+12.000000
+26 18
+0
+0
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffEAEAE2A59A7D6A5312AC8E10DBB012EECA1AEECA1A
+C6AA12A680086A5312A59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffDAD5CB7262329A7A0EF1D21AFEDA1AFEDA1A
+FEDA1AFEDA1AF1D21AEECA1AE1BB13986D06726232DAD5CBffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffE2E2DA6A5312C6AA12FEDA1AFEE222
+FEE222FEE222FEE222FEE222FEE222FEDA1AF1D21AEEC20ABA8E0A6A5312E2E2DAffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffFEF2F2948A64AC8E10FEDA1A
+FEE222FEE222423212FEE222FEE222FEE222423212FEE222FEDA1AEECA1AE1BB139A7A0E
+948A64FEFEF2423212423212423212ffffffffffffffffffffffffffffffDAD5CB6A5312
+F1D21AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222FEE222F1D21A
+EEC20ADBB012423212423212BA8202EEC20ABA8202423212ffffffffffffffffffffffff
+A59A7DAC8E10FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1ADBB012423212FEE29ABA8202BA8202EEC20A423212ffffffffffff
+ffffffffffff7A623AE1BB13FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222
+423212FEE222FEE222FEDA1AEECA1AE1BB13423212423212FEE29ABA8202EEC20ABA8202
+423212ffffffffffffffffff654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222
+FEE222FEE222FEE222FEE222FEE222FEDA1AEECA1AE1BB13423212FEE29A423212FEE29A
+EEC20ABA8202423212ffffffffffffffffff654A0EEECA1AFEDA1AFEE222FEE222FEE222
+FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEDA1AEECA1ADBB012423212EEC20A
+FEE29AFEE29AEEC20ABA8202423212ffffffffffffffffff726232DBB012F1D21AFEE222
+FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222F1D21AEEC20ADBB012
+BA8E0A423212EEC20AEEC20ABA8202423212ffffffffffffffffffffffffA59A7DA68008
+EECA1AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEDA1A423212
+E1BB13D4A00A986D06A59A7D423212423212423212ffffffffffffffffffffffffffffff
+DAD5CB6A5312E1BB13F1D21AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEDA1A
+423212EEC20ADBB012D4A00A654A0EDAD5CBffffffffffffffffffffffffffffffffffff
+ffffffffffffFEF2F2948A64A68008EEC20AEECA1AF1D21A423212423212423212423212
+423212423212EEC20ADBB012D4A00A986D06948A64FEF2F2ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffE2E2DA6A5312BA8E0AE1BB13EEC20AEECA1AEECA1A
+EECA1AEECA1AEEC20AE1BB13DBB012D4A00AA680086A5312E2E2DAffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffDAD5CB726232986D06DBB012
+DBB012E1BB13E1BB13DBB012DBB012D4A00ACA9A0A8A6202726232DAD5CBffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffEAEAE2
+A59A7D654A0E986D06BA8E0AD4A00AD4A00ABA8E0A986D06654A0EA59A7DEAEAE2ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7DDAD5CBFEFEF2
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps b/Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps
new file mode 100644
index 00000000000..70b8a21d74b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps
@@ -0,0 +1,315 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (bye_1.eps)
+%%CreationDate: (Mon Aug 20 12:29:46 2007)
+%%BoundingBox: 0 0 26 18
+%%HiResBoundingBox: 0 0 26 18
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 26 18
+userdict begin
+DisplayImage
+0 0
+24 18
+12.000000
+24 18
+0
+0
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffEAEAE2A59A7D6A5312AC8E10DBB012EECA1AEECA1AC6AA12A68008
+6A5312A59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffDAD5CB7262329A7A0EF1D21AFEDA1AFEDA1AFEDA1AFEDA1AF1D21AEECA1A
+E1BB13986D06726232DAD5CBffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffE2E2DA6A5312C6AA12FEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEDA1A
+F1D21AEEC20ABA8E0A6A5312E2E2DAffffffffffffffffffffffffffffffffffffffffff
+FEF2F2948A64AC8E10FEDA1AFEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEDA1AEECA1AE1BB139A7A0E948A64FEFEF2ffffff423212423212423212ffffffffffff
+DAD5CB6A5312F1D21AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222F1D21AEEC20ADBB012654A0EDAD5CB423212FEE29ABA8202EEC20A423212423212
+A59A7DAC8E10FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1ADBB012986D06423212423212FEE29ABA8202EEC20ABA8202423212
+7A623AE1BB13FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1AE1BB13423212FEE29A423212FEE29ABA8202EEC20ABA8202423212
+654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222FEDA1AEECA1AE1BB13423212EEC20AFEE29A423212FEE29AFEE29ABA8202423212
+654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222FEDA1AEECA1ADBB012CA9A0A423212EEC20AFEE29AFEE29AEEC20ABA8202423212
+726232DBB012F1D21AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222F1D21AEEC20ADBB012BA8E0A7A6A3A423212EEC20AEEC20ABA8202423212ffffff
+A59A7DA68008EECA1AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEDA1A423212E1BB13D4A00A986D06A59A7Dffffff423212423212423212ffffffffffff
+DAD5CB6A5312E1BB13F1D21AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEDA1A
+423212EEC20ADBB012D4A00A654A0EDAD5CBffffffffffffffffffffffffffffffffffff
+FEF2F2948A64A68008EEC20AEECA1AF1D21A423212423212423212423212423212423212
+EEC20ADBB012D4A00A986D06948A64FEF2F2ffffffffffffffffffffffffffffffffffff
+ffffffE2E2DA6A5312BA8E0AE1BB13EEC20AEECA1AEECA1AEECA1AEECA1AEEC20AE1BB13
+DBB012D4A00AA680086A5312E2E2DAffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffDAD5CB726232986D06DBB012DBB012E1BB13E1BB13DBB012DBB012D4A00A
+CA9A0A8A6202726232DAD5CBffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffEAEAE2A59A7D654A0E986D06BA8E0AD4A00AD4A00ABA8E0A986D06
+654A0EA59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps b/Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps
new file mode 100644
index 00000000000..f9ac9dbeea7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps
@@ -0,0 +1,318 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (bye_2.eps)
+%%CreationDate: (Mon Aug 20 12:29:46 2007)
+%%BoundingBox: 0 0 26 18
+%%HiResBoundingBox: 0 0 26 18
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 26 18
+userdict begin
+DisplayImage
+0 0
+26 18
+12.000000
+26 18
+0
+0
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffEAEAE2A59A7D6A5312AC8E10DBB012EECA1AEECA1A
+C6AA12A680086A5312A59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffDAD5CB7262329A7A0EF1D21AFEDA1AFEDA1A
+FEDA1AFEDA1AF1D21AEECA1AE1BB13986D06726232DAD5CBffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffE2E2DA6A5312C6AA12FEDA1AFEE222
+FEE222FEE222FEE222FEE222FEE222FEDA1AF1D21AEEC20ABA8E0A6A5312E2E2DAffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffFEF2F2948A64AC8E10FEDA1A
+FEE222FEE222423212FEE222FEE222FEE222423212FEE222FEDA1AEECA1AE1BB139A7A0E
+948A64FEFEF2ffffffffffffffffff423212423212423212ffffffffffffDAD5CB6A5312
+F1D21AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222FEE222F1D21A
+EEC20ADBB012654A0EDAD5CBffffffffffffffffff423212FEE29ABA8202423212423212
+A59A7DAC8E10FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1ADBB012986D06A59A7D423212423212423212FEE29ABA8202EEC20A
+BA82024232127A623AE1BB13FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222
+423212FEE222FEE222FEDA1AEECA1AE1BB13BA8E0A7A6A3A423212FEE29A423212FEE29A
+BA8202EEC20ABA8202423212654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222
+FEE222FEE222FEE222FEE222FEE222FEDA1AEECA1AE1BB13CA9A0A6A5312423212FEE29A
+FEE29ABA8202EEC20ABA8202423212ffffff654A0EEECA1AFEDA1AFEE222FEE222FEE222
+FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEDA1AEECA1ADBB012CA9A0A6A5312
+423212EEC20AFEE29AFEE29AEEC20ABA8202423212ffffff726232DBB012F1D21AFEE222
+FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222F1D21AEEC20ADBB012
+BA8E0A7A6A3Affffff423212EEC20AEEC20ABA8202423212ffffffffffffA59A7DA68008
+EECA1AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEDA1A423212
+E1BB13D4A00A986D06A59A7Dffffffffffff423212423212423212ffffffffffffffffff
+DAD5CB6A5312E1BB13F1D21AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEDA1A
+423212EEC20ADBB012D4A00A654A0EDAD5CBffffffffffffffffffffffffffffffffffff
+ffffffffffffFEF2F2948A64A68008EEC20AEECA1AF1D21A423212423212423212423212
+423212423212EEC20ADBB012D4A00A986D06948A64FEF2F2ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffE2E2DA6A5312BA8E0AE1BB13EEC20AEECA1AEECA1A
+EECA1AEECA1AEEC20AE1BB13DBB012D4A00AA680086A5312E2E2DAffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffDAD5CB726232986D06DBB012
+DBB012E1BB13E1BB13DBB012DBB012D4A00ACA9A0A8A6202726232DAD5CBffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffEAEAE2
+A59A7D654A0E986D06BA8E0AD4A00AD4A00ABA8E0A986D06654A0EA59A7DEAEAE2ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7DDAD5CBFEFEF2
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps b/Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps
new file mode 100644
index 00000000000..126fcba3dbb
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps
@@ -0,0 +1,315 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (bye_3.eps)
+%%CreationDate: (Mon Aug 20 12:29:46 2007)
+%%BoundingBox: 0 0 26 18
+%%HiResBoundingBox: 0 0 26 18
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 26 18
+userdict begin
+DisplayImage
+0 0
+24 18
+12.000000
+24 18
+0
+0
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffEAEAE2A59A7D6A5312AC8E10DBB012EECA1AEECA1AC6AA12A68008
+6A5312A59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffDAD5CB7262329A7A0EF1D21AFEDA1AFEDA1AFEDA1AFEDA1AF1D21AEECA1A
+E1BB13986D06726232DAD5CBffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffE2E2DA6A5312C6AA12FEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEDA1A
+F1D21AEEC20ABA8E0A6A5312E2E2DAffffffffffffffffffffffffffffffffffffffffff
+FEF2F2948A64AC8E10FEDA1AFEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEDA1AEECA1AE1BB139A7A0E948A64FEFEF2ffffff423212423212423212ffffffffffff
+DAD5CB6A5312F1D21AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222F1D21AEEC20ADBB012654A0EDAD5CB423212FEE29ABA8202EEC20A423212423212
+A59A7DAC8E10FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1ADBB012986D06423212423212FEE29ABA8202EEC20ABA8202423212
+7A623AE1BB13FEDA1AFEE222FEE222FEE222423212FEE222FEE222FEE222423212FEE222
+FEE222FEDA1AEECA1AE1BB13423212FEE29A423212FEE29ABA8202EEC20ABA8202423212
+654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222FEDA1AEECA1AE1BB13423212EEC20AFEE29A423212FEE29AFEE29ABA8202423212
+654A0EEECA1AFEDA1AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222FEDA1AEECA1ADBB012CA9A0A423212EEC20AFEE29AFEE29AEEC20ABA8202423212
+726232DBB012F1D21AFEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEE222F1D21AEEC20ADBB012BA8E0A7A6A3A423212EEC20AEEC20ABA8202423212ffffff
+A59A7DA68008EECA1AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEE222FEE222
+FEDA1A423212E1BB13D4A00A986D06A59A7Dffffff423212423212423212ffffffffffff
+DAD5CB6A5312E1BB13F1D21AFEDA1A423212FEE222FEE222FEE222FEE222FEE222FEDA1A
+423212EEC20ADBB012D4A00A654A0EDAD5CBffffffffffffffffffffffffffffffffffff
+FEF2F2948A64A68008EEC20AEECA1AF1D21A423212423212423212423212423212423212
+EEC20ADBB012D4A00A986D06948A64FEF2F2ffffffffffffffffffffffffffffffffffff
+ffffffE2E2DA6A5312BA8E0AE1BB13EEC20AEECA1AEECA1AEECA1AEECA1AEEC20AE1BB13
+DBB012D4A00AA680086A5312E2E2DAffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffDAD5CB726232986D06DBB012DBB012E1BB13E1BB13DBB012DBB012D4A00A
+CA9A0A8A6202726232DAD5CBffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffEAEAE2A59A7D654A0E986D06BA8E0AD4A00AD4A00ABA8E0A986D06
+654A0EA59A7DEAEAE2ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffFEFEF2DAD5CBA59A7D7A6A3A654A0E654A0E7A6A3AA59A7D
+DAD5CBFEFEF2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty
index 6001e2f51aa..98bfe2d76bb 100644
--- a/Master/texmf-dist/tex/latex/animate/animate.sty
+++ b/Master/texmf-dist/tex/latex/animate/animate.sty
@@ -13,10 +13,11 @@
% Supports LaTeX->dvips->ps2pdf or pdfLaTeX workflows.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{animate}[2007/07/04]
+\ProvidesPackage{animate}[2007/08/23]
\RequirePackage{keyval}
\RequirePackage{ifthen}
\RequirePackage{ifpdf}
+\RequirePackage{ifdraft}
\RequirePackage{calc}
\DeclareOption*{}\ProcessOptions*\relax %allow anything as option
@@ -119,15 +120,13 @@
\fi
\newbox\@anim@box %stores animation frames
-\newdimen\@anim@tmpdima %length register for occasional use
+\newdimen\@anim@tmpdima %length registers for occasional use
+\newdimen\@anim@tmpdimb
%creates Form XObject from graphics file
\def\@anim@pt{pt}
\ifpdf
\def\@anim@ximage#1#2#3{%#1:@anim@num, #2:@anim@curframe@zb, #3:filename
- \IfFileExists{#3}{}{%
- \PackageError{animate}{File `#3' cannot be opened for embedding.}{}%
- }%
%store file in a box
\def\@anim@mps{.mps}%
\ifx\@anim@ext\@anim@mps%
@@ -135,15 +134,12 @@
\else%
\immediate\pdfximage{#3}%
\global\setbox\@anim@box=\hbox{\pdfrefximage\pdflastximage}%
- \fi
+ \fi%
%delegate Form XObject creation
\@anim@xinline{#1}{#2}{\@anim@box}%
}
\else
\def\@anim@ximage#1#2#3{%
- \IfFileExists{#3}{}{%
- \PackageError{animate}{File `#3' cannot be opened for embedding.}{}%
- }%
%store file in a box
\edef\@anim@curfile{{#3}}%
\global\setbox\@anim@box=\hbox{\expandafter\includegraphics\@anim@curfile}%
@@ -292,11 +288,7 @@
\setlength{\unitlength}{1pt}%
\global\setbox\@anim@box=\hbox{%
\pdfliteral{q}%
- \begin{picture}(%
- \@anim@animwidth,\@anim@animtotalheight%
- )(%
- 0,-\@anim@animdepth%
- )%
+ \begin{picture}(\@anim@animwidth,\@anim@animtotalheight)%
\end{picture}%
\pdfliteral{Q\@anim@content}%
}%
@@ -326,8 +318,8 @@
%create container XObjects for play & pause button faces;
\ifpdf
- \def\@anim@makeppcontainer#1#2{% #1: @anim@num, #2: Right or Left
- %OCGs
+ \def\@anim@makeppcontainer#1#2#3{% #1: @anim@num, #2: Right or Left,
+ %OCGs #3: index of existing button face colour combination
\immediate\pdfobj{<</Type/OCG /Name (#1.Play#2)>>}%
\edef\@anim@playocg{\the\pdflastobj\space 0 R}%
\immediate\pdfobj{<< /Type/OCG /Name (#1.Pause#2)>>}%
@@ -342,8 +334,8 @@
/Resources <<%
/Properties <</oc0 \@anim@playocg /oc1 \@anim@pauseocg>>%
/XObject <<%
- /im0 \@anim@getkeyval{btnPlay#2}
- /im1 \@anim@getkeyval{btnPause#2}%
+ /im0 \@anim@getkeyval{btnPlay#2:#3}
+ /im1 \@anim@getkeyval{btnPause#2:#3}%
>>%
>>%
}{%
@@ -352,7 +344,7 @@
\@anim@newkey{btn#1.PlayPause#2}{\the\pdflastobj\space 0 R}%
}
\else
- \def\@anim@makeppcontainer#1#2{%
+ \def\@anim@makeppcontainer#1#2#3{%
\special{ps:
%OCGs
mark /_objdef {#1.Play#2} /type/dict /OBJ pdfmark
@@ -379,8 +371,8 @@
/Resources <<%
/Properties <</oc0 {#1.Play#2} /oc1 {#1.Pause#2}>>%
/XObject <<%
- /im0 {btnPlay#2}
- /im1 {btnPause#2}%
+ /im0 {btnPlay#2:#3}
+ /im1 {btnPause#2:#3}%
>>%
>>%
>> /PUT pdfmark
@@ -392,10 +384,11 @@
\ifpdf
%stroking commands
\def\@anim@btnend{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
@@ -409,10 +402,11 @@
S
}
\def\@anim@btnstep{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
@@ -422,10 +416,11 @@
S
}
\def\@anim@btnplay{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
@@ -436,9 +431,10 @@
S
}
\def\@anim@btnpause{%
+ \@anim@bg\space
2.5 w
1 j
- 0 G
+ \@anim@fg\space
0 10 m
140 10 l
140 140 l
@@ -450,10 +446,11 @@
S
}
\def\@anim@btnminus{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
@@ -463,10 +460,11 @@
S
}
\def\@anim@btnplus{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
@@ -478,17 +476,18 @@
S
}
\def\@anim@btnreset{%
+ \@anim@bg\space
2.5 w
1 J
1 j
- 0 G
+ \@anim@fg\space
10 10 130 130 re
S
10 w
75 40 m
75 110 l
S
- 0 g
+ \@anim@@@fg\space
35 50 m
70 75 l
35 100 l
@@ -505,62 +504,63 @@
115 75 l
S
}
- \def\@anim@makebuttons{%
+ \def\@anim@makebuttons#1{%
\@anim@xbutton{EndLeft}{%
q -0.1 0 0 0.1 15 0 cm
\@anim@btnend\space Q%
- }%
+ }{#1}%
\@anim@xbutton{EndRight}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnend\space Q%
- }%
+ }{#1}%
\@anim@xbutton{Minus}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnminus\space Q%
- }%
+ }{#1}%
\@anim@xbutton{PauseLeft}{%
q -0.1 0 0 0.1 15 0 cm
\@anim@btnpause\space Q%
- }%
+ }{#1}%
\@anim@xbutton{PauseRight}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnpause\space Q%
- }%
+ }{#1}%
\@anim@xbutton{PlayLeft}{%
q -0.1 0 0 0.1 15 0 cm
\@anim@btnplay\space Q%
- }%
+ }{#1}%
\@anim@xbutton{PlayRight}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnplay\space Q%
- }%
+ }{#1}%
\@anim@xbutton{Plus}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnplus\space Q%
- }%
+ }{#1}%
\@anim@xbutton{Reset}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnreset\space Q%
- }%
+ }{#1}%
\@anim@xbutton{StepLeft}{%
q -0.1 0 0 0.1 15 0 cm
\@anim@btnstep\space Q%
- }%
+ }{#1}%
\@anim@xbutton{StepRight}{%
q 0.1 0 0 0.1 0 0 cm
\@anim@btnstep\space Q%
- }%
+ }{#1}%
}
%XObject creation
- \def\@anim@xbutton#1#2{% #1 name, #2 stroking commands
+ \def\@anim@xbutton#1#2#3{% #1 name, #2 stroking commands, #3 @anim@num
\immediate\pdfobj stream attr{%
/Type/XObject/Subtype/Form/BBox [0 0 15 15]%
}{#2}%
- \@anim@newkey{btn#1}{\the\pdflastobj\space 0 R}%
+ \@anim@newkey{btn#1:#3}{\the\pdflastobj\space 0 R}%
}
\else
\def\@anim@btnend{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -581,7 +581,8 @@
stroke
}
\def\@anim@btnstep{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -598,7 +599,8 @@
stroke
}
\def\@anim@btnplay{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -616,7 +618,8 @@
stroke
}
\def\@anim@btnpause{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
0 setlinecap
1 setlinejoin
@@ -631,7 +634,8 @@
stroke
}
\def\@anim@btnminus{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -648,7 +652,8 @@
stroke
}
\def\@anim@btnplus{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -667,7 +672,8 @@
stroke
}
\def\@anim@btnreset{%
- 0 setgray
+ \@anim@bg\space
+ \@anim@fg\space
0.25 setlinewidth
1 setlinecap
1 setlinejoin
@@ -700,50 +706,50 @@
11.5 7.5 lineto
stroke
}
- \def\@anim@makebuttons{%
+ \def\@anim@makebuttons#1{% #1: @anim@num
\@anim@xbutton{EndLeft}{%
[-1 0 0 1 15 0] concat
\@anim@btnend%
- }%
+ }{#1}%
\@anim@xbutton{EndRight}{%
\@anim@btnend%
- }%
+ }{#1}%
\@anim@xbutton{Minus}{%
\@anim@btnminus%
- }%
+ }{#1}%
\@anim@xbutton{PauseLeft}{%
[-1 0 0 1 15 0] concat
\@anim@btnpause%
- }%
+ }{#1}%
\@anim@xbutton{PauseRight}{%
\@anim@btnpause%
- }%
+ }{#1}%
\@anim@xbutton{PlayLeft}{%
[-1 0 0 1 15 0] concat
\@anim@btnplay%
- }%
+ }{#1}%
\@anim@xbutton{PlayRight}{%
\@anim@btnplay%
- }%
+ }{#1}%
\@anim@xbutton{Plus}{%
\@anim@btnplus%
- }%
+ }{#1}%
\@anim@xbutton{Reset}{%
\@anim@btnreset%
- }%
+ }{#1}%
\@anim@xbutton{StepLeft}{%
[-1 0 0 1 15 0] concat
\@anim@btnstep%
- }%
+ }{#1}%
\@anim@xbutton{StepRight}{%
\@anim@btnstep%
- }%
+ }{#1}%
}
- \def\@anim@xbutton#1#2{% #1: name; #2: stroking commands
+ \def\@anim@xbutton#1#2#3{% #1: name; #2: stroking commands, #3 @anim@num
\special{ps:
gsave
mark
- /_objdef {btn#1}
+ /_objdef {btn#1:#3}
/BBox [0 0 15 15]
/BP pdfmark { #2 } ?pdfmark mark /EP pdfmark
grestore
@@ -809,8 +815,98 @@
\newcount\@anim@curframe
\newcount\@anim@curframe@zb% zero based
-\newboolean{@anim@buttonsmade} %true if button faces have been made
-\setboolean{@anim@buttonsmade}{false}
+%draftbox from file
+\ifpdf
+ \def\@anim@filedraftbox#1{% #1: filename
+ %store file in a box
+ \def\@anim@mps{.mps}%
+ \ifx\@anim@ext\@anim@mps%
+ \global\setbox\@anim@box=\hbox{\convertMPtoPDF{#1}{1}{1}}%
+ \else%
+ \immediate\pdfximage{#1}%
+ \global\setbox\@anim@box=\hbox{\pdfrefximage\pdflastximage}%
+ \fi%
+ \@anim@draftbox{\@anim@box}% draw draft box with controls (if set)
+ }
+\else
+ \def\@anim@filedraftbox#1{%
+ \edef\@anim@curfile{{#1}}%
+ \global\setbox\@anim@box=\hbox{\expandafter\includegraphics\@anim@curfile}%
+ \@anim@draftbox{\@anim@box}%
+ }
+\fi
+
+%draftbox from savebox (lowlevel macro)
+\def\@anim@draftbox#1{% #1: box number
+ %get size
+ \xdef\@anim@animwidth{\strip@pt\wd#1}%
+ \xdef\@anim@animheight{\strip@pt\ht#1}%
+ \xdef\@anim@animdepth{\strip@pt\dp#1}%
+ \setlength{\@anim@tmpdima}{\ht#1}%
+ \addtolength{\@anim@tmpdima}{\dp#1}%
+ \xdef\@anim@animtotalheight{\strip@pt\@anim@tmpdima}%
+ \@anim@rescale% rescale box
+ \edef\@anim@oldunitlength{\the\unitlength}%
+ \setlength{\unitlength}{1pt}%
+ \vtop{% draw boxes
+ \offinterlineskip%
+ \hbox{%
+ \raisebox{-\@anim@animdepth\@anim@pt}{%
+ \begin{picture}(\@anim@animwidth,\@anim@animtotalheight)%
+ \put(0,0){\framebox(\@anim@animwidth,\@anim@animtotalheight){}}%
+ \end{picture}%
+ }%
+ }%
+ \if@anim@controls%
+ \setlength{\@anim@tmpdima}{\@anim@btnsize}%
+ \vskip 0.1\@anim@tmpdima%
+ \hbox to \@anim@animwidth\@anim@pt {%
+ \hss%
+ \setlength{\@anim@tmpdimb}{2\@anim@tmpdima}%
+ \begin{picture}(\strip@pt\@anim@tmpdimb,\strip@pt\@anim@tmpdima)%
+ \put(0,0){\line(1,0){\strip@pt\@anim@tmpdimb}}%
+ \put(0,\strip@pt\@anim@tmpdima){%
+ \line(1,0){\strip@pt\@anim@tmpdimb}%
+ }%
+ \put(0,0){\line(0,1){\strip@pt\@anim@tmpdima}}%
+ \end{picture}%
+ \if@anim@step\else%
+ \begin{picture}(\strip@pt\@anim@tmpdimb,\strip@pt\@anim@tmpdima)%
+ \put(0,0){\line(1,0){\strip@pt\@anim@tmpdimb}}%
+ \put(0,\strip@pt\@anim@tmpdima){%
+ \line(1,0){\strip@pt\@anim@tmpdimb}%
+ }%
+ \end{picture}%
+ \fi%
+ \begin{picture}(\strip@pt\@anim@tmpdimb,\strip@pt\@anim@tmpdima)%
+ \put(0,0){\line(1,0){\strip@pt\@anim@tmpdimb}}%
+ \put(0,\strip@pt\@anim@tmpdima){%
+ \line(1,0){\strip@pt\@anim@tmpdimb}%
+ }%
+ \put(\strip@pt\@anim@tmpdimb,0){%
+ \line(0,1){\strip@pt\@anim@tmpdima}%
+ }%
+ \end{picture}%
+ \if@anim@step\else%
+ \hskip 0.3\@anim@tmpdima%
+ \setlength{\@anim@tmpdimb}{3\@anim@tmpdima}%
+ \begin{picture}(\strip@pt\@anim@tmpdimb,\strip@pt\@anim@tmpdima)%
+ \put(0,0){\line(0,1){\strip@pt\@anim@tmpdima}}%
+ \put(0,0){\line(1,0){\strip@pt\@anim@tmpdimb}}%
+ \put(0,\strip@pt\@anim@tmpdima){%
+ \line(1,0){\strip@pt\@anim@tmpdimb}%
+ }%
+ \put(\strip@pt\@anim@tmpdimb,0){%
+ \line(0,1){\strip@pt\@anim@tmpdima}%
+ }%
+ \end{picture}%
+ \fi%
+ \hss%
+ }%
+ \fi%
+ \setlength{\unitlength}{\@anim@oldunitlength}%
+ }%
+}
%user command for embedding animation sequence
% #1: options
@@ -829,74 +925,86 @@
\def\@anim@first{#4}%
\def\@anim@last{#5}%
%
- \if@anim@controls%
- %create button faces if necessary
- \if@anim@buttonsmade\else%
- \@anim@makebuttons%
- \setboolean{@anim@buttonsmade}{true}%
- \fi%
- \if@anim@step\else%
- %combine Pause & Play button faces into one XObject
- \@anim@makeppcontainer{\the\@anim@num}{Right}%
- \@anim@makeppcontainer{\the\@anim@num}{Left}%
- \fi%
- \fi%
- \xdef\@anim@fps{#2}% current frame rate
- \xdef\@anim@nfps{#2}%
- \xdef\@anim@pauseat{}%
- \xdef\@anim@nfpsat{}%
- \xdef\@anim@pfpsat{}%
- %
- %read all frames of the sequence
\@anim@curframe=\@anim@first%
\@anim@curframe@zb=0%
- \loop\ifnum\@anim@curframe>\@anim@last\else%
- %get file name extension of current file
- \@anim@getext{%
- \@anim@base\@anim@pad{\@anim@first}{\the\@anim@curframe}%
- }%
- %embed graphics
- \@anim@ximage{\the\@anim@num}{\the\@anim@curframe@zb}{%
- \@anim@base\@anim@pad{\@anim@first}{\the\@anim@curframe}\@anim@ext%
- }%
- \advance\@anim@curframe by 1%
- \advance\@anim@curframe@zb by 1%
- \repeat%
- \xdef\@anim@frames{\the\@anim@curframe@zb}% total number
- %build timeline from optional timeline file
- \if@anim@timeline\@anim@buildtmln{\the\@anim@num}\fi%
- \@anim@makecontainer{\the\@anim@num}% create container XObject
- %insert animation widget & controls
- \@anim@insertwidgets{\the\@anim@num}%
+ \if@anim@draft%
+ %test for existence of all files of the sequence
+ \loop\ifnum\@anim@curframe>\@anim@last\else%
+ %get file name extension of current file (also tests for existence)
+ \@anim@getext{%
+ \@anim@base\@anim@pad{\@anim@first}{\the\@anim@curframe}%
+ }%
+ \advance\@anim@curframe by 1%
+ \advance\@anim@curframe@zb by 1%
+ \repeat%
+ %draw draftbox according to dimensions of the first frame
+ \@anim@filedraftbox{\@anim@base\@anim@first\@anim@ext}%
+ \else%
+ \if@anim@controls%
+ %create button faces only once in the current colour combination
+ \expandafter\ifx\csname
+ btncol:\@anim@bgcolour:\@anim@fgcolour\endcsname\relax%
+ \@anim@makebuttons{\the\@anim@num}%
+ \@anim@newkey{btncol:\@anim@bgcolour:\@anim@fgcolour}{\the\@anim@num}%
+ \fi%
+ \if@anim@step\else%
+ %combine Pause & Play button faces into one XObject
+ \@anim@makeppcontainer{\the\@anim@num}{Right}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \@anim@makeppcontainer{\the\@anim@num}{Left}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \fi%
+ \fi%
+ \xdef\@anim@fps{#2}% current frame rate
+ \xdef\@anim@nfps{#2}%
+ %
+ %read all frames of the sequence
+ \loop\ifnum\@anim@curframe>\@anim@last\else%
+ %get file name extension of current file
+ \@anim@getext{%
+ \@anim@base\@anim@pad{\@anim@first}{\the\@anim@curframe}%
+ }%
+ %embed graphics
+ \@anim@ximage{\the\@anim@num}{\the\@anim@curframe@zb}{%
+ \@anim@base\@anim@pad{\@anim@first}{\the\@anim@curframe}\@anim@ext%
+ }%
+ \advance\@anim@curframe by 1%
+ \advance\@anim@curframe@zb by 1%
+ \repeat%
+ \xdef\@anim@frames{\the\@anim@curframe@zb}% total number
+ %build timeline from optional timeline file
+ \if@anim@timeline\@anim@buildtmln{\the\@anim@num}\fi%
+ \@anim@makecontainer{\the\@anim@num}% create container XObject
+ %insert animation widget & controls
+ \@anim@insertwidgets{\the\@anim@num}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \fi%
\global\advance\@anim@num by 1%
}%
-%insert the animation and control button widgets
-\def\@anim@insertwidgets#1{%#1:@anim@num
+%inserts animation and control button widgets
+\def\@anim@insertwidgets#1#2{%#1:@anim@num, #2 existing btn colour combination
\vtop{%
\offinterlineskip%
\hbox{\@anim@animwidget{#1}}%
\if@anim@controls%
\setlength{\@anim@tmpdima}{\@anim@btnsize}%
- \setlength{\@anim@tmpdima}{0.1\@anim@tmpdima}%
- \vskip \@anim@tmpdima%
+ \vskip 0.1\@anim@tmpdima%
\hbox to \@anim@animwidth\@anim@pt {%
\hss%
- \@anim@buttonwidget{#1}{EndLeft}{EndLeft}%
- \@anim@buttonwidget{#1}{StepLeft}{StepLeft}%
+ \@anim@buttonwidget{#1}{EndLeft}{EndLeft:#2}%
+ \@anim@buttonwidget{#1}{StepLeft}{StepLeft:#2}%
\if@anim@step\else%
\@anim@buttonwidget{#1}{PlayPauseLeft}{#1.PlayPauseLeft}%
\@anim@buttonwidget{#1}{PlayPauseRight}{#1.PlayPauseRight}%
\fi%
- \@anim@buttonwidget{#1}{StepRight}{StepRight}%
- \@anim@buttonwidget{#1}{EndRight}{EndRight}%
+ \@anim@buttonwidget{#1}{StepRight}{StepRight:#2}%
+ \@anim@buttonwidget{#1}{EndRight}{EndRight:#2}%
\if@anim@step\else%
- \setlength{\@anim@tmpdima}{\@anim@btnsize}%
- \setlength{\@anim@tmpdima}{0.3\@anim@tmpdima}%
- \hskip \@anim@tmpdima%
- \@anim@buttonwidget{#1}{Minus}{Minus}%
- \@anim@buttonwidget{#1}{Reset}{Reset}%
- \@anim@buttonwidget{#1}{Plus}{Plus}%
+ \hskip 0.3\@anim@tmpdima%
+ \@anim@buttonwidget{#1}{Minus}{Minus:#2}%
+ \@anim@buttonwidget{#1}{Reset}{Reset:#2}%
+ \@anim@buttonwidget{#1}{Plus}{Plus:#2}%
\fi%
\hss%
}%
@@ -963,6 +1071,9 @@
\setlength{\@anim@tmpdima}{\@anim@animdepth\@anim@pt}%
\setlength{\@anim@tmpdima}{\@anim@boxscale\@anim@tmpdima}%
\xdef\@anim@animdepth{\strip@pt\@anim@tmpdima}%
+ \setlength{\@anim@tmpdima}{\@anim@animheight\@anim@pt}%
+ \addtolength{\@anim@tmpdima}{\@anim@animdepth\@anim@pt}%
+ \xdef\@anim@animtotalheight{\strip@pt\@anim@tmpdima}%
}
%creates animation widget
@@ -991,7 +1102,6 @@
/T (anm@#1)%
/MK <<%
/TP 1% icon, no caption
- /BG [\@anim@bg]%
/IF <</SW/A/S/A>>% scale icon freely within widget
>>%
/AA <<% bind JavaScripts to trigger events
@@ -1044,7 +1154,6 @@
/T (anm@#1)%
/MK <<%
/TP 1
- /BG [\@anim@bg]%
/IF <</SW/A/S/A>>%
>>%
/AA <<%
@@ -1081,7 +1190,6 @@
/T (btn@#1@#2)%
/MK <<%
/TP 1%
- /BG [\@anim@btnbg]%
/IF <</SW/A/S/A>>% scale button face icon freely within widget
>>%
/A <</S/JavaScript/JS (\@anim@upjscriptstring)>>%
@@ -1120,7 +1228,6 @@
/T (btn@#1@#2)%
/MK <<
/TP 1
- /BG [\@anim@btnbg]
/IF <</SW/A/S/A>>
>>%
/A <</S/JavaScript/JS (\@anim@upjscriptstring)>>%
@@ -1147,20 +1254,24 @@
\setboolean{@anim@inside}{true}%
\@anim@reset% to default settings
\setkeys{anim@user}{#1}%
- %create button faces if necessary
- \if@anim@controls%
- \if@anim@buttonsmade\else%
- \@anim@makebuttons%
- \setboolean{@anim@buttonsmade}{true}%
- \fi%
- \if@anim@step\else%
- %combine Pause & Play button faces into one XObject
- \@anim@makeppcontainer{\the\@anim@num}{Right}%
- \@anim@makeppcontainer{\the\@anim@num}{Left}%
+ \if@anim@draft\else%
+ %create button faces if necessary
+ \if@anim@controls%
+ \expandafter\ifx\csname
+ btncol:\@anim@bgcolour:\@anim@fgcolour\endcsname\relax%
+ \@anim@makebuttons{\the\@anim@num}%
+ \@anim@newkey{btncol:\@anim@bgcolour:\@anim@fgcolour}{\the\@anim@num}%
+ \fi%
+ \if@anim@step\else%
+ \@anim@makeppcontainer{\the\@anim@num}{Right}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \@anim@makeppcontainer{\the\@anim@num}{Left}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \fi%
\fi%
+ \xdef\@anim@fps{#2}%
+ \xdef\@anim@nfps{#2}% current frame rate (for use in \newframe)
\fi%
- \xdef\@anim@fps{#2}%
- \xdef\@anim@nfps{#2}% current frame rate (for use in \newframe)
\global\@anim@curframe@zb=0%
\@anim@beginframe%
\ignorespaces%
@@ -1168,12 +1279,15 @@
\unskip%
\@anim@endframe{\the\@anim@num}{\the\@anim@curframe@zb}%
\global\advance\@anim@curframe@zb by 1%
- \xdef\@anim@frames{\the\@anim@curframe@zb}% total number
- %build timeline from optional timeline file
- \if@anim@timeline\@anim@buildtmln{\the\@anim@num}\fi%
- \@anim@makecontainer{\the\@anim@num}% create container XObject
- %insert animation widget & controls
- \@anim@insertwidgets{\the\@anim@num}%
+ \if@anim@draft\else%
+ \xdef\@anim@frames{\the\@anim@curframe@zb}% total number
+ %build timeline from optional timeline file
+ \if@anim@timeline\@anim@buildtmln{\the\@anim@num}\fi%
+ \@anim@makecontainer{\the\@anim@num}% create container XObject
+ %insert animation widget & controls
+ \@anim@insertwidgets{\the\@anim@num}{%
+ \@anim@getkeyval{btncol:\@anim@bgcolour:\@anim@fgcolour}}%
+ \fi%
\global\advance\@anim@num by 1%
\setboolean{@anim@inside}{false}%
}
@@ -1191,33 +1305,30 @@
\@anim@endframe{\the\@anim@num}{\the\@anim@curframe@zb}%
\@ifstar\@anim@newframestar\@anim@newframe%
}
-\newcommand{\@anim@newframestar}[1][]{% starred variant to pause animation
- \if@anim@step\else% % #1: new frame rate
- \if@anim@timeline\else%
- %build JavaScript commands to fill the `pauseAt' array
- \xdef\@anim@pauseat{%
- \@anim@pauseat%
- 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%
- \ifnum\@anim@curframe@zb=0%
- \xdef\@anim@fps{#1}%
+\newcommand{\@anim@newframe}[1][]{% #1: new frame rate
+ \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%
+ \ifnum\@anim@curframe@zb=0%
+ \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%
- %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%
@@ -1225,27 +1336,36 @@
\@anim@beginframe%
\ignorespaces%
}
-\newcommand{\@anim@newframe}[1][]{% #1: new frame rate
- \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%
- \ifnum\@anim@curframe@zb=0%
- \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);%
+\newcommand{\@anim@newframestar}[1][]{% starred variant for pauseing animation
+ \if@anim@draft\else% #1: new frame rate
+ \if@anim@step\else%
+ \if@anim@timeline\else%
+ %build JavaScript commands to fill the `pauseAt' array
+ \xdef\@anim@pauseat{%
+ \@anim@pauseat%
+ a\the\@anim@num.pauseAt[\the\@anim@curframe@zb]=1;%
}%
- \setboolean{@anim@chfps}{true}% change fps
+ \setboolean{@anim@pauseframes}{true}%
+ \xdef\@anim@pfps{\@anim@nfps}%
+ \xdef\@anim@nfps{#1}%
+ \ifx\@anim@nfps\@empty%
+ \xdef\@anim@nfps{\@anim@pfps}%
+ \else%
+ \ifnum\@anim@curframe@zb=0%
+ \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%
@@ -1254,9 +1374,9 @@
\ignorespaces%
}
-%starts a new frame
+%starts new frame
\def\@anim@beginframe{%
- \begin{lrbox}{\@anim@box}% store the graphics in a box
+ \begin{lrbox}{\@anim@box}% store graphics in a box
\the\@anim@begin%
}
@@ -1264,7 +1384,7 @@
\def\@anim@endframe#1#2{%
\the\@anim@end%
\end{lrbox}%
- \message{< a#1, fr#2}%
+ \if@anim@draft\else\message{< a#1, fr#2}\fi%
%determine size of graphics
\ifnum #2=0%
\xdef\@anim@animwidth{\strip@pt\wd\@anim@box}%
@@ -1285,10 +1405,11 @@
}{}%
\fi%
\fi%
+ %draw draftbox according to dimensions of the first frame
+ \if@anim@draft\@anim@draftbox{\@anim@box}\fi%
\fi%
%now create Form XObject of box contents
- \@anim@xinline{#1}{#2}{\@anim@box}%
- \message{>}%
+ \if@anim@draft\else\@anim@xinline{#1}{#2}{\@anim@box}\message{>}\fi%
}
%prints zero padded integers
@@ -1325,7 +1446,7 @@
\edef\@anim@endlinechar{\the\endlinechar}%
\endlinechar=-1% suppress trailing space at input line end
\global\@anim@curframe@zb=0%
- %read timeline file a first time to get number lines (= number of frames)
+ %read timeline file a first time to get number of lines (= number of frames)
\openin\@anim@@tmlnfile=\@anim@tmlnfile%
\read\@anim@@tmlnfile to \@anim@inputline%
\edef\@anim@inputline{\@anim@inputline\space}%
@@ -1346,7 +1467,7 @@
\setboolean{@anim@eof}{false}\fi%
}%
\closein\@anim@@tmlnfile%
- \xdef\@anim@images{\@anim@frames}% total number of images
+ \xdef\@anim@transp{\@anim@frames}% total number of transp
\xdef\@anim@frames{\the\@anim@curframe@zb}% total number of anim positions
\global\@anim@curframe@zb=0%
%reopen timeline file and build timeline
@@ -1413,11 +1534,11 @@
\@anim@parsethird#3,:;%
}
-%parses 3rd column of timeline file (comma separated list of image specs)
+%parses 3rd column of timeline file (comma separated list of transp. specs)
\def\@anim@parsethird#1,#2;{%
\def\@anim@firstarg{#1}%
\ifx\@anim@firstarg\@empty\else%
- \@anim@process#1x:;% process one image spec
+ \@anim@process#1x:;% process one transparency spec
\fi%
\ifx #2:\else%
\@anim@parsethird#2;%
@@ -1425,9 +1546,10 @@
}
\newcount\@anim@tmpcnt %scratch counter for different uses
-%process image spec, such as 123 or 456x78 or 9x0
+
+%process transparency spec, such as 123 or 456x78 or 9x0
\def\@anim@process#1x#2;{%
- %determine number of repetitions of current image
+ %determine number of repetitions of current transparency
\ifx #2:%
\gdef\@anim@repeats{1}%
\else%
@@ -1444,9 +1566,9 @@
\edef\@anim@repeatuntil{\the\@anim@tmpcnt}%
\fi%
\fi%
- %build contents of animation frames according to image specifications
- \ifnum\@anim@images<#1\else% ignore image specifications which do not exist
- \ifnum\@anim@images=#1\else%
+ %build contents of animation frames according to transparency specifications
+ \ifnum\@anim@transp<#1\else% ignore non-existing transparencies
+ \ifnum\@anim@transp=#1\else%
\@anim@tmpcnt=\@anim@curframe@zb%
\loop\ifnum\@anim@repeatuntil>\@anim@tmpcnt%
\@anim@newkey{@anim@content@\the\@anim@tmpcnt}{%
@@ -1481,15 +1603,97 @@
\define@key{anim@user}{scale}{%
\gdef\@anim@boxscale{#1}%
}
-
-\define@key{anim@user}{screenbg}{%background colour
- \gdef\@anim@bg{#1}%
-}
\define@key{anim@user}{buttonsize}{%
\gdef\@anim@btnsize{#1}%
}
-\define@key{anim@user}{buttonbg}{%background of buttons
- \gdef\@anim@btnbg{#1}%
+\def\@anim@colours#1:#2;{% helper macro to get number of colour components and
+ \xdef\@anim@colour{\@anim@colour\space #1}% to replace : by ` ' in the arg
+ \ifx #2!\else%
+ \global\advance\@anim@tmpcnt by 1%
+ \@anim@colours#2;%
+ \fi%
+}
+\ifpdf %background frame of buttons
+ \def\@anim@@@bg{%
+ 0 j
+ 0 0 150 150 re
+ f%
+ }
+\else
+ \def\@anim@@@bg{%
+ 0 setlinejoin
+ 0 0 moveto
+ 15 0 lineto
+ 15 15 lineto
+ 0 15 lineto
+ closepath
+ fill%
+ }
+\fi
+\define@key{anim@user}{buttonbg}{%background colour of buttons
+ \global\@anim@tmpcnt=1%
+ \gdef\@anim@colour{}%
+ \@anim@colours#1:!;%
+ \xdef\@anim@bgcolour{\@anim@colour}%
+ \ifpdf%
+ \ifnum\@anim@tmpcnt=1
+ \xdef\@anim@bg{\@anim@colour\space g\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3
+ \xdef\@anim@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4
+ \xdef\@anim@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \ifnum\@anim@tmpcnt=1
+ \xdef\@anim@bg{\@anim@colour\space setgray\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3
+ \xdef\@anim@bg{\@anim@colour\space setrgbcolor\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4
+ \xdef\@anim@bg{\@anim@colour\space setcmykcolor\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}
+\define@key{anim@user}{buttonfg}{%stroking colour of buttons
+ \global\@anim@tmpcnt=1%
+ \gdef\@anim@colour{}%
+ \@anim@colours#1:!;%
+ \xdef\@anim@fgcolour{\@anim@colour}%
+ \ifpdf%
+ \ifthenelse{\the\@anim@tmpcnt=1}{%
+ \xdef\@anim@fg{\@anim@colour\space G}%
+ \xdef\@anim@@@fg{\@anim@colour\space g}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=3}{%
+ \xdef\@anim@fg{\@anim@colour\space RG}%
+ \xdef\@anim@@@fg{\@anim@colour\space rg}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=4}{%
+ \xdef\@anim@fg{\@anim@colour\space K}%
+ \xdef\@anim@@@fg{\@anim@colour\space k}%
+ }{}%
+ }%
+ }%
+ \else%
+ \ifthenelse{\the\@anim@tmpcnt=1}{%
+ \xdef\@anim@fg{\@anim@colour\space setgray}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=3}{%
+ \xdef\@anim@fg{\@anim@colour\space setrgbcolor}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=4}{%
+ \xdef\@anim@fg{\@anim@colour\space setcmykcolor}%
+ }{}%
+ }%
+ }%
+ \fi%
}
\newboolean{@anim@controls}
\setboolean{@anim@controls}{false}
@@ -1505,9 +1709,7 @@
\setboolean{@anim@autoplay}{false}
\define@key{anim@user}{autoplay}[true]{%
\setboolean{@anim@autoplay}{#1}%
- \if@anim@autoplay
- \setboolean{@anim@autoresume}{false}
- \fi%
+ \if@anim@autoplay\setboolean{@anim@autoresume}{false}\fi%
}
\newboolean{@anim@autoresume}
\setboolean{@anim@autoresume}{false}
@@ -1541,6 +1743,18 @@
\define@key{anim@user}{step}[true]{%
\setboolean{@anim@step}{#1}%
}
+\newboolean{@anim@draft}
+\setboolean{@anim@draft}{false}
+\define@key{anim@user}{draft}[true]{%
+ \setboolean{@anim@draft}{#1}%
+}
+\define@key{anim@user}{final}[true]{%
+ \ifthenelse{\equal{#1}{true}}{%
+ \setboolean{@anim@draft}{false}%
+ }{%
+ \setboolean{@anim@draft}{true}%
+ }%
+}
\define@key{anim@user}{timeline}{%
\IfFileExists{#1}{%
\gdef\@anim@tmlnfile{#1}%
@@ -1568,7 +1782,10 @@
\gdef\@anim@boxheight{}%
\gdef\@anim@boxwidth{}%
\xdef\@anim@bg{\@anim@@bg}%
- \xdef\@anim@btnbg{\@anim@@btnbg}%
+ \xdef\@anim@fg{\@anim@@fg}%
+ \ifpdf\xdef\@anim@@@fg{\@anim@@@@fg}\fi%
+ \xdef\@anim@bgcolour{\@anim@@bgcolour}% default button colours
+ \xdef\@anim@fgcolour{\@anim@@fgcolour}%
\xdef\@anim@btnsize{\@anim@@btnsize}%
\xdef\@anim@poster{\@anim@@poster}%
\let\if@anim@controls=\if@anim@@controls%
@@ -1578,6 +1795,7 @@
\let\if@anim@autopause=\if@anim@@autopause%
\let\if@anim@palindrome=\if@anim@@palindrome%
\let\if@anim@step=\if@anim@@step%
+ \let\if@anim@draft=\if@anim@@draft%
\gdef\@anim@posterocg{}%
\gdef\@anim@properties{}%
\gdef\@anim@xobject{}%
@@ -1594,18 +1812,79 @@
}
%package options
-\def\@anim@@bg{}%
-\define@key{anim@pkg}{screenbg}{%
- \gdef\@anim@@bg{#1}%
+\def\@anim@@bg{}
+\def\@anim@@bgcolour{}
+\define@key{anim@pkg}{buttonbg}{%background colour of buttons
+ \global\@anim@tmpcnt=1%
+ \gdef\@anim@colour{}%
+ \@anim@colours#1:!;%
+ \xdef\@anim@@bgcolour{\@anim@colour}%
+ \ifpdf%
+ \ifnum\@anim@tmpcnt=1
+ \xdef\@anim@@bg{\@anim@colour\space g\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3
+ \xdef\@anim@@bg{\@anim@colour\space rg\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4
+ \xdef\@anim@@bg{\@anim@colour\space k\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \ifnum\@anim@tmpcnt=1
+ \xdef\@anim@@bg{\@anim@colour\space setgray\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=3
+ \xdef\@anim@@bg{\@anim@colour\space setrgbcolor\space\@anim@@@bg}%
+ \else%
+ \ifnum\@anim@tmpcnt=4
+ \xdef\@anim@@bg{\@anim@colour\space setcmykcolor\space\@anim@@@bg}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}
+\ifpdf\def\@anim@@fg{0 G}\def\@anim@@@@fg{0 g}\else\def\@anim@@fg{0 setgray}\fi
+\def\@anim@@fgcolour{}
+\define@key{anim@pkg}{buttonfg}{%stroking colour of buttons
+ \global\@anim@tmpcnt=1%
+ \gdef\@anim@colour{}%
+ \@anim@colours#1:!;%
+ \xdef\@anim@@fgcolour{\@anim@colour}%
+ \ifpdf%
+ \ifthenelse{\the\@anim@tmpcnt=1}{%
+ \xdef\@anim@@fg{\@anim@colour\space G}%
+ \xdef\@anim@@@@fg{\@anim@colour\space g}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=3}{%
+ \xdef\@anim@@fg{\@anim@colour\space RG}%
+ \xdef\@anim@@@@fg{\@anim@colour\space rg}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=4}{%
+ \xdef\@anim@@fg{\@anim@colour\space K}%
+ \xdef\@anim@@@@fg{\@anim@colour\space k}%
+ }{}%
+ }%
+ }%
+ \else%
+ \ifthenelse{\the\@anim@tmpcnt=1}{%
+ \xdef\@anim@@fg{\@anim@colour\space setgray}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=3}{%
+ \xdef\@anim@@fg{\@anim@colour\space setrgbcolor}%
+ }{%
+ \ifthenelse{\the\@anim@tmpcnt=4}{%
+ \xdef\@anim@@fg{\@anim@colour\space setcmykcolor}%
+ }{}%
+ }%
+ }%
+ \fi%
}
\def\@anim@@btnsize{1.44em}%
\define@key{anim@pkg}{buttonsize}{%
\gdef\@anim@@btnsize{#1}%
}
-\def\@anim@@btnbg{}%
-\define@key{anim@pkg}{buttonbg}{%
- \gdef\@anim@@btnbg{#1}%
-}
\newboolean{@anim@@controls}
\setboolean{@anim@@controls}{false}%
\define@key{anim@pkg}{controls}[true]{%
@@ -1654,6 +1933,22 @@
\define@key{anim@pkg}{step}[true]{%
\setboolean{@anim@@step}{#1}%
}
+\newboolean{@anim@@draft}
+\ifdraft{%globally set by document class
+ \setboolean{@anim@@draft}{true}%
+}{%
+ \setboolean{@anim@@draft}{false}%
+}%
+\define@key{anim@pkg}{draft}[true]{%
+ \setboolean{@anim@@draft}{#1}%
+}
+\define@key{anim@pkg}{final}[true]{%
+ \ifthenelse{\equal{#1}{true}}{%
+ \setboolean{@anim@@draft}{false}%
+ }{%
+ \setboolean{@anim@@draft}{true}%
+ }%
+}
%process package options
\def\@anim@setpkgkeys#1{\setkeys{anim@pkg}{#1}}
@@ -1664,21 +1959,18 @@
%animation widget's PageOpen event
\ifpdf
\def\@anim@pojscript#1{%
- \gdef\@anim@posterlast{last}%
- \gdef\@anim@posternone{none}%
\immediate\pdfobj stream {\@anim@@pojscript{#1}}%
\xdef\@anim@pojscriptobj{\the\pdflastobj\space 0 R}%
}
\else
\def\@anim@pojscript#1{%
- \gdef\@anim@posterlast{last}%
- \gdef\@anim@posternone{none}%
\special{ps:
mark /_objdef {a#1@pojscript} /type/stream /OBJ pdfmark
mark {a#1@pojscript} (\@anim@@pojscript{#1}) /PUT pdfmark
}%
}
\fi
+\def\@anim@posterlast{last}% helper macro
\def\@anim@@pojscript#1{% #1: @anim@num
% console.show();%
% console.clear();%