From fa8296a6b6724e1cb73c5fa2832ddc824f794e5a Mon Sep 17 00:00:00 2001 From: Manuel Pégourié-Gonnard Date: Tue, 13 May 2008 18:53:06 +0000 Subject: animate v2008/05/09 git-svn-id: svn://tug.org/texlive/trunk@8111 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/animate/README | 35 +- Master/texmf-dist/doc/latex/animate/animate.pdf | Bin 0 -> 1339279 bytes Master/texmf-dist/doc/latex/animate/animate.tex | 624 +++++++ .../texmf-dist/doc/latex/animate/doc/animate.pdf | Bin 1319681 -> 0 bytes .../texmf-dist/doc/latex/animate/doc/animate.tex | 628 ------- .../doc/latex/animate/doc/files/bye_0.eps | 317 ---- .../doc/latex/animate/doc/files/bye_1.eps | 314 ---- .../doc/latex/animate/doc/files/bye_2.eps | 317 ---- .../doc/latex/animate/doc/files/bye_3.eps | 314 ---- .../texmf-dist/doc/latex/animate/doc/files/exp.mp | 108 -- .../doc/latex/animate/doc/files/mailto.eps | 587 ------- .../doc/latex/animate/doc/files/scarab.mp | 132 -- .../doc/latex/animate/doc/files/timeline.txt | 9 - .../texmf-dist/doc/latex/animate/files/bye_0.eps | 317 ++++ .../texmf-dist/doc/latex/animate/files/bye_1.eps | 314 ++++ .../texmf-dist/doc/latex/animate/files/bye_2.eps | 317 ++++ .../texmf-dist/doc/latex/animate/files/bye_3.eps | 314 ++++ Master/texmf-dist/doc/latex/animate/files/exp.mp | 108 ++ .../texmf-dist/doc/latex/animate/files/mailto.eps | 587 +++++++ .../texmf-dist/doc/latex/animate/files/scarab.mp | 132 ++ .../doc/latex/animate/files/timeline.txt | 9 + .../texmf-dist/tex/latex/animate/animate-noocg.sty | 1855 -------------------- Master/texmf-dist/tex/latex/animate/animate.sty | 193 +- 23 files changed, 2831 insertions(+), 4700 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/animate/animate.pdf create mode 100755 Master/texmf-dist/doc/latex/animate/animate.tex delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/animate.pdf delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/animate.tex delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/exp.mp delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/mailto.eps delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/scarab.mp delete mode 100644 Master/texmf-dist/doc/latex/animate/doc/files/timeline.txt create mode 100644 Master/texmf-dist/doc/latex/animate/files/bye_0.eps create mode 100644 Master/texmf-dist/doc/latex/animate/files/bye_1.eps create mode 100644 Master/texmf-dist/doc/latex/animate/files/bye_2.eps create mode 100644 Master/texmf-dist/doc/latex/animate/files/bye_3.eps create mode 100755 Master/texmf-dist/doc/latex/animate/files/exp.mp create mode 100644 Master/texmf-dist/doc/latex/animate/files/mailto.eps create mode 100644 Master/texmf-dist/doc/latex/animate/files/scarab.mp create mode 100644 Master/texmf-dist/doc/latex/animate/files/timeline.txt delete mode 100644 Master/texmf-dist/tex/latex/animate/animate-noocg.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/animate/README b/Master/texmf-dist/doc/latex/animate/README index 35347cef7b2..0593e6284db 100644 --- a/Master/texmf-dist/doc/latex/animate/README +++ b/Master/texmf-dist/doc/latex/animate/README @@ -14,41 +14,26 @@ Description: inline (vector) graphics, such as LaTeX-picture, PSTricks or pgf/TikZ generated pictures, or just from typeset text. + The `animate' package relies on Optional Content Groups (OCG), also known as + PDF layers, which is a feature provided by the PDF-1.5 specification. Each + frame of an animation is associated with an OCG that is hidden or made + visible in a dynamic fashion by means of Adobe Reader's built-in JavaScript + engine. + It supports the usual PDF making workflows, i. e. pdfLaTeX and LaTeX -> dvips -> ps2pdf (Ghostscript). The resulting PDF can be viewed in current Adobe Readers on all supported platforms. - The first release of `animate' was based on the work by Jan Holecek and Petr - Sojka: - - http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml - - Meanwhile, the package was rewritten to use Optional Content Groups (OCG), - aka PDF-Layers. OCG-based animations are fully supported by Adobe Reader 8, - but have some performance issues. Playback is usually slower in Reader 8 - than in previous versions, which is probably a bug. - - The old, non-OCG approach is still available if the package file - `animate-noocg.sty' is used instead of `animate.sty'. However, options - `autoplay', `autopause' and `autoresume' are not functional in Reader 8. - 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. - Note, this file only gives a summary of usage and available package and command options. Please refer to the documentation `animate.pdf' in the `doc/' directory for details and examples. Keywords: include portable PDF animated PDF animation animating - embed animated - graphics LaTeX pdfLaTeX PSTricks pgf TikZ MetaPost - LaTeX-picture - inline graphics vector graphics animated GIF LaTeX - dvips ps2pdf - JavaScript Adobe Reader - + embed animated graphics LaTeX pdfLaTeX PSTricks pgf TikZ MetaPost + LaTeX-picture inline graphics vector graphics animated GIF LaTeX + dvips ps2pdf JavaScript Adobe Reader Usage: @@ -86,7 +71,7 @@ Requirements: e-TeX pdfTeX, version >= 1.20 Ghostscript, version >= 8.31 or Adobe Distiller - Adobe Reader, version >= 6, but not 8 + Adobe Reader, version >= 6 Installation: diff --git a/Master/texmf-dist/doc/latex/animate/animate.pdf b/Master/texmf-dist/doc/latex/animate/animate.pdf new file mode 100644 index 00000000000..e28f5629c57 Binary files /dev/null and b/Master/texmf-dist/doc/latex/animate/animate.pdf differ diff --git a/Master/texmf-dist/doc/latex/animate/animate.tex b/Master/texmf-dist/doc/latex/animate/animate.tex new file mode 100755 index 00000000000..efee41993f9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/animate.tex @@ -0,0 +1,624 @@ +% Copyright 2007--2008 Alexander Grahn +% +% This material is subject to the LaTeX Project Public License. See +% http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +% for the details of that license. +% +\documentclass[a4paper]{article} +\frenchspacing +\usepackage[UKenglish]{babel} +\usepackage{pst-3dplot} +\usepackage{fp} +\usepackage{animate} +\usepackage{intcalc} +\usepackage{graphicx} +\usepackage{color} +\usepackage{hyperref} +\usepackage{textcomp} +\usepackage{lmodern} +\usepackage{mflogo} +\usepackage[T1]{fontenc} +\usepackage{microtype} +\usepackage{ifpdf} +\usepackage{parskip} +\clubpenalty=10000 +\widowpenalty=10000 +\displaywidowpenalty=10000 + +\makeatletter +\renewcommand{\fnum@figure}[1]{\figurename~\thefigure} +\newcommand\myparagraph{\@startsection{paragraph}{3}{\z@}% + {\parskip}% + {0.001\parskip}% + {\itshape\normalsize}} +\makeatother + +\ifpdf + \makeatletter + \@latex@error{Please use LaTeX to compile this documentation} + \makeatother +\fi + +\def\keywords{include portable PDF animation animated PDF animating embed animated graphics LaTeX pdfLaTeX PSTricks pgf TikZ LaTeX-picture MetaPost inline graphics vector graphics animated GIF LaTeX dvips ps2pdf JavaScript Adobe Reader} +\hypersetup{ + bookmarksnumbered,linktocpage,breaklinks, + pdftitle={The animate Package}, + pdfsubject={Documentation}, + pdfauthor={Alexander Grahn}, + pdfkeywords={\keywords}, + citebordercolor={0 0 1}, + filebordercolor={0 0 1}, + linkbordercolor={0 0 1}, + menubordercolor={0 0 1}, + pagebordercolor={0 0 1}, + urlbordercolor={0 0 1}, +% pdfpagelayout=SinglePage +} + +\begin{document} +\title{The {\sffamily animate} Package} +\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} +\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 + +\emph{Keywords}: \keywords +\end{abstract} + +\tableofcontents + +%\newpage +\section{Introduction} +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+/Distiller. + +The final PDF can be viewed in current Adobe Reader\textsuperscript{\scriptsize\textregistered}s on all supported platforms. + +The `animate' package relies on Optional Content Groups (OCG), also known as PDF layers, which is a feature provided by the PDF-1.5 specification. Each frame of an animation is associated with an OCG that is hidden or made visible in a dynamic fashion by means of Adobe Reader's built-in JavaScript engine. + +\section{Requirements} +\begin{trivlist} +\item $\varepsilon$-\TeX +\item pdf\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} + +\section{Installation} +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[]{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 +loop +palindrome +draft +final +controls +buttonsize= +buttonbg= +buttonfg= +step +poster[=first | none | last] +\end{verbatim} +The same options (among others) 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. Sometimes, if the same animation sequence made from graphics files is to be embedded multiple times into the document, more compact PDF output may be obtained by passing option `\verb+-dMaxInlineImageSize=0+' (Unix) or `\verb+-dMaxInlineImageSize#0+' (Win/DOS) to \verb+ps2pdf+. + +\section{The user interface} +Package `animate' provides the command +\begin{verbatim} +\animategraphics[]{}{}{}{} +\end{verbatim} +and the environment +\begin{verbatim} +\begin{animateinline}[]{} + ... typeset material ... +\newframe[] + ... typeset material ... +\newframe*[] + ... typeset material ... +\end{animateinline} +\end{verbatim} + +While \verb+\animategraphics+ can be used to assemble animations from sets of existing graphics files or from multipage PDF, the environment `\verb+animateinline+' is meant 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++ specifies the number of frames per second of the animation. + +By default, the animation is built 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 Section~\ref{sect:timeline}). + +The command \verb+\newframe+ terminates a frame and starts the next one. It can be used inside the `\verb+animateinline+' environment only. There is a starred variant, \verb+\newframe*+. If placed after a particular frame it causes the animation to pause at that frame. The animation continues normally after clicking it again. Both \verb+\newframe+ variants take an optional argument that allows to change the frame rate in the middle of an animation. + +\myparagraph*{Sets of graphics files} +All files of the sequence should exist and be consecutively numbered. (Exception to this rule is allowed in connexion with the `\verb+every+' option, see below.) {\tt } is the leftmost part of the file name that is common to all members of the sequence. \verb++ is the number of the first and \verb++ the number of the last file in the set. File names may be simply numbered, such as $0\dots99$. If there are leading zeros, make sure that all file numbers have the same number of digits, such as $0000\dots0099$. + +There is no file name extension to be specified as a parameter. The possible file formats depend on whether \LaTeX{} or pdf\LaTeX{} is used. In the case of \LaTeX{}, files with the extension `eps' are searched for at first, followed by `mps' (\MP-generated Postscript) and `ps'. With pdf\LaTeX{} the searching order is: (1)~`pdf', (2)~`mps', (3)~`png', (4)~`jpg', (5)~`jpeg', (6)~`jbig2', (7)~`jb2', (8)~`jp2'\footnotemark[1], (9)~`j2k'\footnotemark[1], (10)~`jpx'\footnotemark[1]\footnotetext[1]{JPEG2000 is not yet supported by pdf\TeX.}. That is, files capable to store vector graphics are found first. Make sure that all file names have \emph{lower case} extensions. + +For example, given the sequence `frame\_5.png' through `frame\_50.png' from a possibly larger set that shall be used to build an animation running at 12 frames per second. Then, the correct inclusion command reads +\begin{verbatim} + \animategraphics{12}{frame_}{5}{50} +\end{verbatim} + +\myparagraph*{Multipage PDF inclusion (pdf\LaTeX{} only)} +If the file `\verb++.pdf' exists (again, there is no file name extension to be specified), it is taken as a multipage document where each page represents one frame of the animation. In this case, the last two arguments, \verb++ \& \verb++, are interpreted differently from above; they specify a zero-based range of pages to be included in the animation. Either or both of them may be left empty, `\verb+{}+', in which case they default to $0$ and $n-1$, where $n$ is the total number of available pages. Arguments that fall outside this range are automatically corrected to the maximum allowed number, i.\,e. $n-1$. + +For example, the line +\begin{verbatim} + \animategraphics{12}{frames}{}{} +\end{verbatim} +would create an animation from all pages of the file `frames.pdf', running at 12 fps. + +\section{Command options} +The following options to \verb+\animategraphics+ and `\verb+animateinline+' have been provided: +\subsection{Basic options} +\begin{verbatim} +poster[=first | none | last] +\end{verbatim} +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} +every= +\end{verbatim} +Build animation from every \verb++\emph{th} frame only. Skipped frames are discarded and not embedded into the document. In the case of \verb+\animategraphics+, skipped input files may be missing. +\begin{verbatim} +autopause +\end{verbatim} +Pause animation when the page is closed, instead of stopping and rewinding it to the default frame. +\begin{verbatim} +autoplay +\end{verbatim} +Start animation after the page has opened. Also resumes playback of a previously paused animation. +\begin{verbatim} +autoresume +\end{verbatim} +Resume previously paused animation when the page is opened again. +\begin{verbatim} +loop +\end{verbatim} +The animation restarts immediately after reaching the end. +\begin{verbatim} +palindrome +\end{verbatim} +The animation continuously plays forward and backward. +\begin{verbatim} +step +\end{verbatim} +Step through the animation by one frame per mouse-click. +\begin{verbatim} +width= +height= +depth= +\end{verbatim} +Resize the animation widget. Any valid \TeX{} dimension is accepted as a 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 remaining, unspecified dimensions are scaled to keep the aspect ratio. +\begin{verbatim} +scale= +\end{verbatim} +Scales the animation widget by \verb++. +\begin{verbatim} +bb= +\end{verbatim} +(\verb+\animategraphics+ only, requires package `graphicx'.) The four, space separated arguments set the bounding box of the graphics files. Units can be omitted, in which case `bp' (Postscript points) is assumed. +\begin{verbatim} +viewport= +\end{verbatim} +(\verb+\animategraphics+ only, requires package `graphicx'.) This option takes four arguments, just like `\verb+bb+'. However, in this case the values are taken relative to the origin specified by the bounding box in the graphics files. +\begin{verbatim} +trim= +\end{verbatim} +(\verb+\animategraphics+ only, requires package `graphicx'.) Crops the graphics at the edges. The four lengths specify the amount to be removed from or, if negative values have been provided, to be added to each side of the graphics. +\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. +\begin{verbatim} +buttonsize= +\end{verbatim} +Changes the control button height to \verb++, 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} +buttonbg= +buttonfg= +\end{verbatim} +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++ 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} +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 a 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} +measure +\end{verbatim} +Measures the frame rate during one cycle of the animation. (For testing purposes.) +\begin{verbatim} +begin={} +end={} +\end{verbatim} +(`\verb+animateinline+' only.) \verb++ and \verb++ 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} + +\subsection{The `{\tt timeline}' option}\label{sect:timeline} +\begin{verbatim} +timeline= +\end{verbatim} +\verb++ 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 re-used 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. + +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} + [*]:[]:[] +\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 as 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++ argument of \verb+\newframe+ cease to make sense and will be tacitly ignored, if present.) The third field \verb++ is a comma-separated list of \emph{transparency specifications} that determines the content of the frame. A \emph{single} transparency specification obeys the syntax +\begin{verbatim} + [x] +\end{verbatim} +where \verb++ 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+' 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++ 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 \emph{depth} level. If a frame is composed of more than one transparency, transparency specifications on the left of the input line are closer to the background and will be overprinted by those on the right which are closer to the foreground. That is, the depth \emph{de}creases from left to right within \verb++. Also, if there are transparency specifications which span several frames (using postfix `\verb+x+'), they will be overprinted by transparency specifications that appear on subsequent lines in the timeline file. That is, the depth decreases in top-down direction within the timeline file. +%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 +\small +\begin{verbatim} + ::1,0 % zeroth transparency always in the foreground + ::2,0 + ::3,0 + ::4,0 + ... +\end{verbatim} +\normalsize +and +\small +\begin{verbatim} + ::0x0,1 % zeroth transparency put to the background + ::2 + ::3 + ::4 + ... +\end{verbatim} +\normalsize +In the first example, transparency No. 0 appears in the foreground throughout the animation; it will never be obscured by other transparencies' content. In the second example it is put to the background, because it is the first transparency specification in the file, and stays there for the rest of the animation. + +When designing the timeline, care should be taken not to include a transparency more than once into the \emph{same} animation frame. Besides the useless redundancy, this may slow down the animation speed in the Reader, because the graphical objects of a multiply included transparency have to be rendered unnecessarily often at the same time. `animate' is smart enough to detect multiple inclusion and issues a warning message along with the transparency ID and the frame number if it occurs. Also, `animate' finds and lists transparencies that have never been used in an animation timeline. This may help to avoid dead code in the final PDF. Here is an example of a poorly designed timeline: +\small +\begin{verbatim} + ::0 + ::1x0 + ::2 + ::3 + ::4,2 + ::5,1 % bad: transparency `1' included twice + ::6 + ... +\end{verbatim} +\normalsize + +\myparagraph*{Grouping objects into layers using `{\tt;}'} +The stack-like concept of animations, where transparencies are always put on top such that they overprint the content of previously deposited transparencies, can be inconvenient in certain situations. For example, it might be desirable to allow for changing the background image in the middle of an animation without affecting objects that are located in the foreground. For this purpose, transparency specifications can be grouped into \emph{layers} using the semicolon (\verb+;+) as a separator instead of the comma. This is best illustrated by an example: +\small +\begin{verbatim} + ::0x49;2x0,3x0 % first background image, transparency `0', used in + :: ;4x0,5x0 % the first 49 frames + :: ;6x0,7x0 + ... + :: ;98x0,99x0 + ::1x0;100x0,101x0 % new background image, transparency `1', until end + :: ;102x0,103x0 % of animation + :: ;104x0,105x0 + ... +\end{verbatim} +\normalsize +In this timeline, the transparencies are grouped into two layers. One is reserved for the background images, transparencies No. 0 \& 1, to be exchanged after 49 frames, and another one for the foreground objects that are successively added to the scene. As can be seen in this example, layers need not be explicitly populated; the leading semicolons just ensure the proper relationship between transparencies and animation layers. Note that \emph{without} setting up two layers, the foreground objects on transparencies 2 through 99 that have been added during the first 49 frames would be overprinted by the new background image, transparency 1, from frame 50 onward. + +See the second animation, Fig.~\ref{fig:scarab}, in Section~\ref{sect:examples} for a working example that makes use of the timeline and the layer concept. + +\section{Examples} +\subsection[Animations from sets of files, using `animategraphics' command]{Animations from sets of files, using {\tt \string\animategraphics} command}\label{sect:examples} +Animations in this section are made from graphics files that were prepared with \MP. Run `\verb+mpost --tex=latex+' on the files ending in `.mp' in the `doc/files' directory to generate the graphics files. Both examples make use of the `\verb+timeline+' option to reduce the resulting PDF file size. + +The first example, Fig.~\ref{fig:taylor}, originally written by Jan Hole\v{c}ek~\cite{hol}, shows the exponential function $y=e^x$ and its approximation by Taylor polynomials of different degree. + +\small +\begin{verbatim} +\documentclass{article} +\usepackage{animate} +\usepackage{graphics} + +\begin{document} + +\begin{center} + \animategraphics[ + controls, loop, + timeline=timeline.txt + ]{4}{exp_}{0}{8} +\end{center} + +\end{document} +\end{verbatim} +\normalsize +Contents of file `timeline.txt': +\small +\begin{verbatim} + ::0x0 % coordinate system & y=e^x, repeated until last frame + ::1 % one blue curve per frame + ::2 + ::3 + ::4 + ::5 + ::6 + ::7 + ::8 +\end{verbatim} +\normalsize + +\begin{figure} +\centering +\animategraphics[controls,loop,timeline=timeline.txt]{4}{exp_}{0}{8} +\caption{}\label{fig:taylor} +\end{figure} + +The second, somewhat more complex example, Fig.~\ref{fig:scarab}, animates the geometric construction of a scarabaeus. In addition to the use of a timeline, it introduces the layer concept. This example is adapted from Maxime Chupin's original \MP{} source file \cite{chupin}. The present version separates stationary from moving parts of the drawing and saves them into different files. A total of 254 files, scarab\_0.mps through scarab\_253.mps, is written out by running `\verb+mpost --tex=latex+' on the source file `scarab.mp'. Files 0 through 100 contain the red line segments that make up the growing scarabaeus. Files 101 through 201 contain the moving construction lines and files 202 through 252 contain the gray lines which represent intermediate stages of the construction. The last file, No. 253, contains the coordinate axes, two stationary construction lines and the labels which do not move. A timeline file is written on-the-fly during the \LaTeX{} run. It arranges the animation into three layers, forcing the gray lines into the background, the coordinate axes into the intermediate layer and the scarabaeus along with the moving construction lines into the foreground. The final animation consists of 101 individual frames. +\begin{figure}[t] +\centering +\newcounter{scarab} +\setcounter{scarab}{0} +\newcounter{blueline} +\setcounter{blueline}{101} +\newcounter{grayline} +\setcounter{grayline}{202} +% +\newwrite\TimeLineFile +\immediate\openout\TimeLineFile\jobname.tln +\whiledo{\thescarab<101}{ + \ifthenelse{\intcalcMod{\thescarab}{2}=0}{ + \immediate\write\TimeLineFile{::\thegrayline x0;253;\thescarab x0,\theblueline} + \stepcounter{grayline} + }{ + \immediate\write\TimeLineFile{::;253;\thescarab x0,\theblueline} + } + \stepcounter{scarab} + \stepcounter{blueline} +} +\immediate\closeout\TimeLineFile +% +\animategraphics[ + width=0.8\linewidth, + controls, + loop, + timeline=\jobname.tln +]{12}{scarab_}{0}{253} +% +\caption{}\label{fig:scarab} +\end{figure} + +\small +\begin{verbatim} +\documentclass{article} +\usepackage{intcalc} %defines \intcalcMod for Modulo computation +\usepackage{animate} +\usepackage{graphics} + +\newcounter{scarab} +\setcounter{scarab}{0} +\newcounter{blueline} +\setcounter{blueline}{101} +\newcounter{grayline} +\setcounter{grayline}{202} + +%write timeline file +\newwrite\TimeLineFile +\immediate\openout\TimeLineFile\jobname.tln +\whiledo{\thescarab<101}{ + \ifthenelse{\intcalcMod{\thescarab}{2}=0}{ + %a gray line is added to every 2nd frame + \immediate\write\TimeLineFile{% + ::\thegrayline x0;253;\thescarab x0,\theblueline} + \stepcounter{grayline} + }{ + \immediate\write\TimeLineFile{% + ::;253;\thescarab x0,\theblueline} + } + \stepcounter{scarab} + \stepcounter{blueline} +} +\immediate\closeout\TimeLineFile + +\begin{document} + +\begin{center} + \animategraphics[ + width=0.8\linewidth, + controls, loop, + timeline=\jobname.tln + ]{12}{scarab_}{0}{253} +\end{center} + +\end{document} +\end{verbatim} +\normalsize +\subsection[Animating PSTricks graphics, using `animateinline' environment]{Animating PSTricks graphics, using `{\tt animateinline}' environment} +Fig.~\ref{fig:torus} is an inline graphics example adapted from \cite{gilg05}. +\small +\begin{verbatim} +\documentclass{article} +\usepackage{pst-3dplot} +\usepackage{fp} +\usepackage{animate} + +%draws a torus sector +\newcommand{\torus}[1]{% #1: angle of the torus sector + \psset{Beta=20,Alpha=50,linewidth=0.1pt,origin={0,0,0},unit=0.35}% + \begin{pspicture}(-12.3,-6.3)(12.3,7)% + \parametricplotThreeD[xPlotpoints=100](80,#1)(0,360){% + t cos 2 mul 4 u sin 2 mul add mul + t sin 2 mul 4 u sin 2 mul add mul + u cos 4 mul + }% + \parametricplotThreeD[yPlotpoints=75](0,360)(80,#1){% + u cos 2 mul 4 t sin 2 mul add mul + u sin 2 mul 4 t sin 2 mul add mul + t cos 4 mul + }% + \FPupn\strokewidth{360 #1 sub 360 div 3 mul}% + \parametricplotThreeD[yPlotpoints=1,linewidth=\strokewidth pt](0,360)(#1,#1){% + u cos 2 mul 4 t sin 2 mul add mul + u sin 2 mul 4 t sin 2 mul add mul + t cos 4 mul + }% + \end{pspicture}% +} + +\begin{document} + +\begin{center} +\newcounter{torusangle} +\setcounter{torusangle}{80} + +\begin{animateinline}[poster=last,controls,palindrome]{10}% + \torus{\thetorusangle}% + \whiledo{\thetorusangle<360}{% + \newframe% + \addtocounter{torusangle}{10}% + \torus{\thetorusangle}% + } +\end{animateinline}% +\end{center} + +\end{document} +\end{verbatim} +\normalsize + +\begin{figure} +\centering +\newcommand{\torus}[1]{% #1: angle of the torus sector + \psset{Beta=20,Alpha=50,linewidth=0.1pt,origin={0,0,0},unit=0.35}% + \begin{pspicture}(-12.3,-6.3)(12.3,7)% + \parametricplotThreeD[xPlotpoints=100](80,#1)(0,360){% + t cos 2 mul 4 u sin 2 mul add mul + t sin 2 mul 4 u sin 2 mul add mul + u cos 4 mul + }% + \parametricplotThreeD[yPlotpoints=75](0,360)(80,#1){% + u cos 2 mul 4 t sin 2 mul add mul + u sin 2 mul 4 t sin 2 mul add mul + t cos 4 mul + }% + \FPupn\strokewidth{360 #1 sub 360 div 3 mul}% + \parametricplotThreeD[yPlotpoints=1,linewidth=\strokewidth pt](0,360)(#1,#1){% + u cos 2 mul 4 t sin 2 mul add mul + u sin 2 mul 4 t sin 2 mul add mul + t cos 4 mul + }% + \end{pspicture}% +} + +\newcounter{torusangle} +\setcounter{torusangle}{80} +\begin{animateinline}[poster=last,controls,palindrome]{10}% + \torus{\thetorusangle}% + \whiledo{\thetorusangle<360}{% + \newframe% + \addtocounter{torusangle}{10}% + \torus{\thetorusangle}% + } +\end{animateinline}% +\caption{}\label{fig:torus} +\end{figure} + +\section{Bugs}\label{sect:bugs} +\begin{itemize} + \item The maximum frame rate that can actually be achieved largely depends on the complexity of the graphics and on the available hardware. Starting with version 8, Adobe Reader appears to be somewhat slower. However, you might want to experiment with the graphical hardware acceleration feature that was introduced in Reader 8. Go to menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Page Display' $\rightarrow$ `Rendering' to see whether hardware acceleration is available. A 2D GPU acceleration check box will be visible if a supported video card has been detected. + + \item The Adobe Reader setting `Use page cache' (menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Startup') should be \emph{dis}abled for versions 6 \& 7, while remaining \emph{en}abled beginning with version 8 (menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Page Display' $\rightarrow$ `Rendering'). + + \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 `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 older than 8.31. This applies to all versions of ESP Ghostscript that comes with many Linux distributions. + + \item The command {\tt\string\multido} and its relatives from package `multido' do not work if the loop body contains {\tt\string\newframe}. Use {\tt\string\whiledo} from package `if\/then' instead. (There is no need to load `if\/then' 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+\FPeval+ from package `{\tt fp}'. For example: +\small +\begin{verbatim} +\newcounter{iter} % declare loop counter + +\FPset{nInit}{1.0}% initial value of variable `n' +\FPset{nIncr}{0.5}% increment of `n' + +\begin{animateinline}{12} + %initialize loop counter and `n' + \setcounter{iter}{0}% + \FPset{n}{nInit}% + ... + ... create first frame using `\n' (Mind the backslash!) + ... (\multido _can_ be used here!) + ... + \whiledo{\theiter<50}{% another 50 frames + %start new frame + \newframe% + %increment loop counter by 1 + \stepcounter{iter}% + %calculate new value of `n' + \FPeval{n}{nInit+nIncr*\theiter}% + ... + ... create frame using `\n' + ... (\multido _can_ be used here!) + ... + } +\end{animateinline} +\end{verbatim} +\normalsize + + \item Animations with complex graphics and/or many frames may cause \LaTeX{} to fail with a `\verb+TeX capacity exceeded+' error. The following steps should fix most of the memory related problems. + + MiK\TeX: + \begin{enumerate} + \item Open a command line window. + \item\label{item:firststep} At the DOS prompt, enter\\ + {\tt initexmf -{}-edit-config-file=latex} + \item Type\\ + {\tt main\_memory=10000000}\\ + into the editor window that opens, save the file and quit the editor. + \item\label{item:laststep} To rebuild the format, enter\\ + {\tt initexmf -{}-dump=latex} + \item Repeat steps \ref{item:firststep}--\ref{item:laststep} with config file `{\tt pdflatex}' + \end{enumerate} + + \TeX\ Live: + \begin{enumerate} + \item Find the configuration file `texmf.cnf' by means of\\ + {\tt kpsewhich texmf.cnf}\\ + at the shell prompt in a terminal. + \item As Root, open the file in your favourite text editor, scroll to the `{\tt main\_memory}' entry and change it to the value given above; save and quit. + \item Rebuild the formats by\\ + {\tt fmtutil-sys -{}-byfmt latex}\\ + {\tt fmtutil-sys -{}-byfmt pdflatex} + \end{enumerate} + + \item Animations should not be placed on \emph{multilayered} slides created with presentation making classes such as Beamer or Powerdot. 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} +I would like to thank Fran\c{c}ois Lafont who discovered quite a few bugs and made many suggestions that helped to improve the functionality of the package. + +\begin{thebibliography}{8} + \bibitem{chupin} Chupin, M.: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\tt http://melusine.eu.org/syracuse/metapost/animations/} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\tt chupin/?idsec=scara} + \bibitem{gilg05} Gilg, J.: PDF-Animationen. In: \emph{Die \TeX nische Kom\"odie}, Issue 4, 2005, pp.~30--37 + \bibitem{hol} Hole\v{c}ek, J.: \emph{Animations in a pdf\TeX-generated PDF}. URL: \href{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml}{\tt http://www.} \href{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml}{\tt fi.muni.cz/\textasciitilde xholecek/tex/pdfanim.xhtml} + \bibitem{hol04} Hole\v{c}ek, J. ; Sojka, P.: Animations in pdf\TeX-generated PDF. In: \emph{Lecture Notes in Computer Science}, Vol. 3130, 2004, pp.~179--191 + \bibitem{movie15} \emph{The Movie15 Package}. URL: \href{http://www.ctan.org/tex-archive/macros/latex/contrib/movie15/}{\tt http://www.ctan.org/tex-archive/macros/} \href{http://www.ctan.org/tex-archive/macros/latex/contrib/movie15/}{\tt latex/contrib/movie15} +\end{thebibliography} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/animate/doc/animate.pdf b/Master/texmf-dist/doc/latex/animate/doc/animate.pdf deleted file mode 100644 index 15598aabfc6..00000000000 Binary files a/Master/texmf-dist/doc/latex/animate/doc/animate.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/latex/animate/doc/animate.tex b/Master/texmf-dist/doc/latex/animate/doc/animate.tex deleted file mode 100644 index ebcf2b338d9..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/animate.tex +++ /dev/null @@ -1,628 +0,0 @@ -% Copyright 2007--2008 Alexander Grahn -% -% This material is subject to the LaTeX Project Public License. See -% http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html -% for the details of that license. -% -\documentclass[a4paper]{article} -\frenchspacing -\usepackage[UKenglish]{babel} -\usepackage{pst-3dplot} -\usepackage{fp} -\usepackage{animate} -\usepackage{intcalc} -\usepackage{graphicx} -\usepackage{color} -\usepackage{hyperref} -\usepackage{textcomp} -\usepackage{lmodern} -\usepackage{mflogo} -\usepackage[T1]{fontenc} -\usepackage{microtype} -\usepackage{ifpdf} -\usepackage{parskip} -\clubpenalty=10000 -\widowpenalty=10000 -\displaywidowpenalty=10000 - -\makeatletter -\renewcommand{\fnum@figure}[1]{\figurename~\thefigure} -\newcommand\myparagraph{\@startsection{paragraph}{3}{\z@}% - {\parskip}% - {0.001\parskip}% - {\itshape\normalsize}} -\makeatother - -\ifpdf - \makeatletter - \@latex@error{Please use LaTeX to compile this documentation} - \makeatother -\fi - -\def\keywords{include portable PDF animation animated PDF animating embed animated graphics LaTeX pdfLaTeX PSTricks pgf TikZ LaTeX-picture MetaPost inline graphics vector graphics animated GIF LaTeX dvips ps2pdf JavaScript Adobe Reader} -\hypersetup{ - bookmarksnumbered,linktocpage,breaklinks, - pdftitle={The animate Package}, - pdfsubject={Documentation}, - pdfauthor={Alexander Grahn}, - pdfkeywords={\keywords}, - citebordercolor={0 0 1}, - filebordercolor={0 0 1}, - linkbordercolor={0 0 1}, - menubordercolor={0 0 1}, - pagebordercolor={0 0 1}, - urlbordercolor={0 0 1}, -% pdfpagelayout=SinglePage -} - -\begin{document} -\title{The {\sffamily animate} Package} -\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} -\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 - -\emph{Keywords}: \keywords -\end{abstract} - -\tableofcontents - -%\newpage -\section{Introduction} -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+/Distiller. - -The final PDF can be viewed in current Adobe Reader\textsuperscript{\scriptsize\textregistered}s on all supported platforms. - -The `animate' package relies on Optional Content Groups (OCG), also known as PDF layers, which is a feature provided by the PDF-1.5 specification. Each frame of an animation is associated with an OCG that is hidden or made visible in a dynamic fashion by means of Adobe Reader's built-in JavaScript engine. - -\section{Requirements} -\begin{trivlist} -\item $\varepsilon$-\TeX -\item pdf\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$, but not $8$ -\end{trivlist} - -\section{Installation} -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[]{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 -loop -palindrome -draft -final -controls -buttonsize= -buttonbg= -buttonfg= -step -poster[=first | none | last] -\end{verbatim} -The same options (among others) 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. Sometimes, if the same animation sequence made from graphics files is to be embedded multiple times into the document, more compact PDF output may be obtained by passing option `\verb+-dMaxInlineImageSize=0+' (Unix) or `\verb+-dMaxInlineImageSize#0+' (Win/DOS) to \verb+ps2pdf+. - -\section{The user interface} -Package `animate' provides the command -\begin{verbatim} -\animategraphics[]{}{}{}{} -\end{verbatim} -and the environment -\begin{verbatim} -\begin{animateinline}[]{} - ... typeset material ... -\newframe[] - ... typeset material ... -\newframe*[] - ... typeset material ... -\end{animateinline} -\end{verbatim} - -While \verb+\animategraphics+ can be used to assemble animations from sets of existing graphics files or from multipage PDF, the environment `\verb+animateinline+' is meant 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++ specifies the number of frames per second of the animation. - -By default, the animation is built 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 Section~\ref{sect:timeline}). - -The command \verb+\newframe+ terminates a frame and starts the next one. It can be used inside the `\verb+animateinline+' environment only. There is a starred variant, \verb+\newframe*+. If placed after a particular frame it causes the animation to pause at that frame. The animation continues normally after clicking it again. Both \verb+\newframe+ variants take an optional argument that allows to change the frame rate in the middle of an animation. - -\myparagraph*{Sets of graphics files} -All files of the sequence should exist and be consecutively numbered. (Exception to this rule is allowed in connexion with the `\verb+every+' option, see below.) {\tt } is the leftmost part of the file name that is common to all members of the sequence. \verb++ is the number of the first and \verb++ the number of the last file in the set. File names may be simply numbered, such as $0\dots99$. If there are leading zeros, make sure that all file numbers have the same number of digits, such as $0000\dots0099$. - -There is no file name extension to be specified as a parameter. The possible file formats depend on whether \LaTeX{} or pdf\LaTeX{} is used. In the case of \LaTeX{}, files with the extension `eps' are searched for at first, followed by `mps' (\MP-generated Postscript) and `ps'. With pdf\LaTeX{} the searching order is: (1)~`pdf', (2)~`mps', (3)~`png', (4)~`jpg', (5)~`jpeg', (6)~`jbig2', (7)~`jb2', (8)~`jp2'\footnotemark[1], (9)~`j2k'\footnotemark[1], (10)~`jpx'\footnotemark[1]\footnotetext[1]{JPEG2000 is not yet supported by pdf\TeX.}. That is, files capable to store vector graphics are found first. Make sure that all file names have \emph{lower case} extensions. - -For example, given the sequence `frame\_5.png' through `frame\_50.png' from a possibly larger set that shall be used to build an animation running at 12 frames per second. Then, the correct inclusion command reads -\begin{verbatim} - \animategraphics{12}{frame_}{5}{50} -\end{verbatim} - -\myparagraph*{Multipage PDF inclusion (pdf\LaTeX{} only)} -If the file `\verb++.pdf' exists (again, there is no file name extension to be specified), it is taken as a multipage document where each page represents one frame of the animation. In this case, the last two arguments, \verb++ \& \verb++, are interpreted differently from above; they specify a zero-based range of pages to be included in the animation. Either or both of them may be left empty, `\verb+{}+', in which case they default to $0$ and $n-1$, where $n$ is the total number of available pages. Arguments that fall outside this range are automatically corrected to the maximum allowed number, i.\,e. $n-1$. - -For example, the line -\begin{verbatim} - \animategraphics{12}{frames}{}{} -\end{verbatim} -would create an animation from all pages of the file `frames.pdf', running at 12 fps. - -\section{Command options} -The following options to \verb+\animategraphics+ and `\verb+animateinline+' have been provided: -\subsection{Basic options} -\begin{verbatim} -poster[=first | none | last] -\end{verbatim} -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} -every= -\end{verbatim} -Build animation from every \verb++\emph{th} frame only. Skipped frames are discarded and not embedded into the document. In the case of \verb+\animategraphics+, skipped input files may be missing. -\begin{verbatim} -autopause -\end{verbatim} -Pause animation when the page is closed, instead of stopping and rewinding it to the default frame. -\begin{verbatim} -autoplay -\end{verbatim} -Start animation after the page has opened. Also resumes playback of a previously paused animation. -\begin{verbatim} -autoresume -\end{verbatim} -Resume previously paused animation when the page is opened again. -\begin{verbatim} -loop -\end{verbatim} -The animation restarts immediately after reaching the end. -\begin{verbatim} -palindrome -\end{verbatim} -The animation continuously plays forward and backward. -\begin{verbatim} -step -\end{verbatim} -Step through the animation by one frame per mouse-click. -\begin{verbatim} -width= -height= -depth= -\end{verbatim} -Resize the animation widget. Any valid \TeX{} dimension is accepted as a 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 remaining, unspecified dimensions are scaled to keep the aspect ratio. -\begin{verbatim} -scale= -\end{verbatim} -Scales the animation widget by \verb++. -\begin{verbatim} -bb= -\end{verbatim} -(\verb+\animategraphics+ only, requires package `graphicx'.) The four, space separated arguments set the bounding box of the graphics files. Units can be omitted, in which case `bp' (Postscript points) is assumed. -\begin{verbatim} -viewport= -\end{verbatim} -(\verb+\animategraphics+ only, requires package `graphicx'.) This option takes four arguments, just like `\verb+bb+'. However, in this case the values are taken relative to the origin specified by the bounding box in the graphics files. -\begin{verbatim} -trim= -\end{verbatim} -(\verb+\animategraphics+ only, requires package `graphicx'.) Crops the graphics at the edges. The four lengths specify the amount to be removed from or, if negative values have been provided, to be added to each side of the graphics. -\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. -\begin{verbatim} -buttonsize= -\end{verbatim} -Changes the control button height to \verb++, 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} -buttonbg= -buttonfg= -\end{verbatim} -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++ 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} -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 a 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} -measure -\end{verbatim} -Measures the frame rate during one cycle of the animation. (For testing purposes.) -\begin{verbatim} -begin={} -end={} -\end{verbatim} -(`\verb+animateinline+' only.) \verb++ and \verb++ 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} - -\subsection{The `{\tt timeline}' option}\label{sect:timeline} -\begin{verbatim} -timeline= -\end{verbatim} -\verb++ 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 re-used 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. - -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} - [*]:[]:[] -\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 as 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++ argument of \verb+\newframe+ cease to make sense and will be tacitly ignored, if present.) The third field \verb++ is a comma-separated list of \emph{transparency specifications} that determines the content of the frame. A \emph{single} transparency specification obeys the syntax -\begin{verbatim} - [x] -\end{verbatim} -where \verb++ 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+' 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++ 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 \emph{depth} level. If a frame is composed of more than one transparency, transparency specifications on the left of the input line are closer to the background and will be overprinted by those on the right which are closer to the foreground. That is, the depth \emph{de}creases from left to right within \verb++. Also, if there are transparency specifications which span several frames (using postfix `\verb+x+'), they will be overprinted by transparency specifications that appear on subsequent lines in the timeline file. That is, the depth decreases in top-down direction within the timeline file. -%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 -\small -\begin{verbatim} - ::1,0 % zeroth transparency always in the foreground - ::2,0 - ::3,0 - ::4,0 - ... -\end{verbatim} -\normalsize -and -\small -\begin{verbatim} - ::0x0,1 % zeroth transparency put to the background - ::2 - ::3 - ::4 - ... -\end{verbatim} -\normalsize -In the first example, transparency No. 0 appears in the foreground throughout the animation; it will never be obscured by other transparencies' content. In the second example it is put to the background, because it is the first transparency specification in the file, and stays there for the rest of the animation. - -When designing the timeline, care should be taken not to include a transparency more than once into the \emph{same} animation frame. Besides the useless redundancy, this may slow down the animation speed in the Reader, because the graphical objects of a multiply included transparency have to be rendered unnecessarily often at the same time. `animate' is smart enough to detect multiple inclusion and issues a warning message along with the transparency ID and the frame number if it occurs. Also, `animate' finds and lists transparencies that have never been used in an animation timeline. This may help to avoid dead code in the final PDF. Here is an example of a poorly designed timeline: -\small -\begin{verbatim} - ::0 - ::1x0 - ::2 - ::3 - ::4,2 - ::5,1 % bad: transparency `1' included twice - ::6 - ... -\end{verbatim} -\normalsize - -\myparagraph*{Grouping objects into layers using `{\tt;}'} -The stack-like concept of animations, where transparencies are always put on top such that they overprint the content of previously deposited transparencies, can be inconvenient in certain situations. For example, it might be desirable to allow for changing the background image in the middle of an animation without affecting objects that are located in the foreground. For this purpose, transparency specifications can be grouped into \emph{layers} using the semicolon (\verb+;+) as a separator instead of the comma. This is best illustrated by an example: -\small -\begin{verbatim} - ::0x49;2x0,3x0 % first background image, transparency `0', used in - :: ;4x0,5x0 % the first 49 frames - :: ;6x0,7x0 - ... - :: ;98x0,99x0 - ::1x0;100x0,101x0 % new background image, transparency `1', until end - :: ;102x0,103x0 % of animation - :: ;104x0,105x0 - ... -\end{verbatim} -\normalsize -In this timeline, the transparencies are grouped into two layers. One is reserved for the background images, transparencies No. 0 \& 1, to be exchanged after 49 frames, and another one for the foreground objects that are successively added to the scene. As can be seen in this example, layers need not be explicitly populated; the leading semicolons just ensure the proper relationship between transparencies and animation layers. Note that \emph{without} setting up two layers, the foreground objects on transparencies 2 through 99 that have been added during the first 49 frames would be overprinted by the new background image, transparency 1, from frame 50 onward. - -See the second animation, Fig.~\ref{fig:scarab}, in Section~\ref{sect:examples} for a working example that makes use of the timeline and the layer concept. - -\section{Examples} -{\Large\color{red}{\sc Note:} Examples do not run in Adobe Reader 8!} -\subsection[Animations from sets of files, using `animategraphics' command]{Animations from sets of files, using {\tt \string\animategraphics} command}\label{sect:examples} -Animations in this section are made from graphics files that were prepared with \MP. Run `\verb+mpost --tex=latex+' on the files ending in `.mp' in the `doc/files' directory to generate the graphics files. Both examples make use of the `\verb+timeline+' option to reduce the resulting PDF file size. - -The first example, Fig.~\ref{fig:taylor}, originally written by Jan Hole\v{c}ek~\cite{hol}, shows the exponential function $y=e^x$ and its approximation by Taylor polynomials of different degree. - -\small -\begin{verbatim} -\documentclass{article} -\usepackage{animate} -\usepackage{graphics} - -\begin{document} - -\begin{center} - \animategraphics[ - controls, loop, - timeline=timeline.txt - ]{4}{exp_}{0}{8} -\end{center} - -\end{document} -\end{verbatim} -\normalsize -Contents of file `timeline.txt': -\small -\begin{verbatim} - ::0x0 % coordinate system & y=e^x, repeated until last frame - ::1 % one blue curve per frame - ::2 - ::3 - ::4 - ::5 - ::6 - ::7 - ::8 -\end{verbatim} -\normalsize - -\begin{figure} -\centering -\animategraphics[controls,loop,timeline=timeline.txt]{4}{exp_}{0}{8} -\caption{}\label{fig:taylor} -\end{figure} - -The second, somewhat more complex example, Fig.~\ref{fig:scarab}, animates the geometric construction of a scarabaeus. In addition to the use of a timeline, it introduces the layer concept. This example is adapted from Maxime Chupin's original \MP{} source file \cite{chupin}. The present version separates stationary from moving parts of the drawing and saves them into different files. A total of 254 files, scarab\_0.mps through scarab\_253.mps, is written out by running `\verb+mpost --tex=latex+' on the source file `scarab.mp'. Files 0 through 100 contain the red line segments that make up the growing scarabaeus. Files 101 through 201 contain the moving construction lines and files 202 through 252 contain the gray lines which represent intermediate stages of the construction. The last file, No. 253, contains the coordinate axes, two stationary construction lines and the labels which do not move. A timeline file is written on-the-fly during the \LaTeX{} run. It arranges the animation into three layers, forcing the gray lines into the background, the coordinate axes into the intermediate layer and the scarabaeus along with the moving construction lines into the foreground. The final animation consists of 101 individual frames. -\begin{figure}[t] -\centering -\newcounter{scarab} -\setcounter{scarab}{0} -\newcounter{blueline} -\setcounter{blueline}{101} -\newcounter{grayline} -\setcounter{grayline}{202} -% -\newwrite\TimeLineFile -\immediate\openout\TimeLineFile\jobname.tln -\whiledo{\thescarab<101}{ - \ifthenelse{\intcalcMod{\thescarab}{2}=0}{ - \immediate\write\TimeLineFile{::\thegrayline x0;253;\thescarab x0,\theblueline} - \stepcounter{grayline} - }{ - \immediate\write\TimeLineFile{::;253;\thescarab x0,\theblueline} - } - \stepcounter{scarab} - \stepcounter{blueline} -} -\immediate\closeout\TimeLineFile -% -\animategraphics[ - width=0.8\linewidth, - controls, - loop, - timeline=\jobname.tln -]{12}{scarab_}{0}{253} -% -\caption{}\label{fig:scarab} -\end{figure} - -\small -\begin{verbatim} -\documentclass{article} -\usepackage{intcalc} %defines \intcalcMod for Modulo computation -\usepackage{animate} -\usepackage{graphics} - -\newcounter{scarab} -\setcounter{scarab}{0} -\newcounter{blueline} -\setcounter{blueline}{101} -\newcounter{grayline} -\setcounter{grayline}{202} - -%write timeline file -\newwrite\TimeLineFile -\immediate\openout\TimeLineFile\jobname.tln -\whiledo{\thescarab<101}{ - \ifthenelse{\intcalcMod{\thescarab}{2}=0}{ - %a gray line is added to every 2nd frame - \immediate\write\TimeLineFile{% - ::\thegrayline x0;253;\thescarab x0,\theblueline} - \stepcounter{grayline} - }{ - \immediate\write\TimeLineFile{% - ::;253;\thescarab x0,\theblueline} - } - \stepcounter{scarab} - \stepcounter{blueline} -} -\immediate\closeout\TimeLineFile - -\begin{document} - -\begin{center} - \animategraphics[ - width=0.8\linewidth, - controls, loop, - timeline=\jobname.tln - ]{12}{scarab_}{0}{253} -\end{center} - -\end{document} -\end{verbatim} -\normalsize -\subsection[Animating PSTricks graphics, using `animateinline' environment]{Animating PSTricks graphics, using `{\tt animateinline}' environment} -Fig.~\ref{fig:torus} is an inline graphics example adapted from \cite{gilg05}. -\small -\begin{verbatim} -\documentclass{article} -\usepackage{pst-3dplot} -\usepackage{fp} -\usepackage{animate} - -%draws a torus sector -\newcommand{\torus}[1]{% #1: angle of the torus sector - \psset{Beta=20,Alpha=50,linewidth=0.1pt,origin={0,0,0},unit=0.35}% - \begin{pspicture}(-12.3,-6.3)(12.3,7)% - \parametricplotThreeD[xPlotpoints=100](80,#1)(0,360){% - t cos 2 mul 4 u sin 2 mul add mul - t sin 2 mul 4 u sin 2 mul add mul - u cos 4 mul - }% - \parametricplotThreeD[yPlotpoints=75](0,360)(80,#1){% - u cos 2 mul 4 t sin 2 mul add mul - u sin 2 mul 4 t sin 2 mul add mul - t cos 4 mul - }% - \FPupn\strokewidth{360 #1 sub 360 div 3 mul}% - \parametricplotThreeD[yPlotpoints=1,linewidth=\strokewidth pt](0,360)(#1,#1){% - u cos 2 mul 4 t sin 2 mul add mul - u sin 2 mul 4 t sin 2 mul add mul - t cos 4 mul - }% - \end{pspicture}% -} - -\begin{document} - -\begin{center} -\newcounter{torusangle} -\setcounter{torusangle}{80} - -\begin{animateinline}[poster=last,controls,palindrome]{10}% - \torus{\thetorusangle}% - \whiledo{\thetorusangle<360}{% - \newframe% - \addtocounter{torusangle}{10}% - \torus{\thetorusangle}% - } -\end{animateinline}% -\end{center} - -\end{document} -\end{verbatim} -\normalsize - -\begin{figure} -\centering -\newcommand{\torus}[1]{% #1: angle of the torus sector - \psset{Beta=20,Alpha=50,linewidth=0.1pt,origin={0,0,0},unit=0.35}% - \begin{pspicture}(-12.3,-6.3)(12.3,7)% - \parametricplotThreeD[xPlotpoints=100](80,#1)(0,360){% - t cos 2 mul 4 u sin 2 mul add mul - t sin 2 mul 4 u sin 2 mul add mul - u cos 4 mul - }% - \parametricplotThreeD[yPlotpoints=75](0,360)(80,#1){% - u cos 2 mul 4 t sin 2 mul add mul - u sin 2 mul 4 t sin 2 mul add mul - t cos 4 mul - }% - \FPupn\strokewidth{360 #1 sub 360 div 3 mul}% - \parametricplotThreeD[yPlotpoints=1,linewidth=\strokewidth pt](0,360)(#1,#1){% - u cos 2 mul 4 t sin 2 mul add mul - u sin 2 mul 4 t sin 2 mul add mul - t cos 4 mul - }% - \end{pspicture}% -} - -\newcounter{torusangle} -\setcounter{torusangle}{80} -\begin{animateinline}[poster=last,controls,palindrome]{10}% - \torus{\thetorusangle}% - \whiledo{\thetorusangle<360}{% - \newframe% - \addtocounter{torusangle}{10}% - \torus{\thetorusangle}% - } -\end{animateinline}% -\caption{}\label{fig:torus} -\end{figure} - -\section{Bugs}\label{sect:bugs} -\begin{itemize} - \item The command {\tt\string\multido} and its relatives from package `multido' do not work if the loop body contains {\tt\string\newframe}. Use {\tt\string\whiledo} from package `if\/then' instead. (There is no need to load `if\/then' 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+\FPeval+ from package `{\tt fp}'. For example: -\small -\begin{verbatim} -\newcounter{iter} % declare loop counter - -\FPset{nInit}{1.0}% initial value of variable `n' -\FPset{nIncr}{0.5}% increment of `n' - -\begin{animateinline}{12} - %initialize loop counter and `n' - \setcounter{iter}{0}% - \FPset{n}{nInit}% - ... - ... create first frame using `\n' (Mind the backslash!) - ... (\multido _can_ be used here!) - ... - \whiledo{\theiter<50}{% another 50 frames - %start new frame - \newframe% - %increment loop counter by 1 - \stepcounter{iter}% - %calculate new value of `n' - \FPeval{n}{nInit+nIncr*\theiter}% - ... - ... create frame using `\n' - ... (\multido _can_ be used here!) - ... - } -\end{animateinline} -\end{verbatim} -\normalsize - - \item The maximum frame rate that can actually be achieved largely depends on the complexity of the graphics and on the available hardware. - - \item The Adobe Reader setting `Use page cache' (menu `Edit' $\rightarrow$ `Preferences' $\rightarrow$ `Startup') should be \emph{dis}abled. - - \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 `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 older than 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. The following steps should fix most of the memory related problems. - - MiK\TeX: - \begin{enumerate} - \item Open a command line window. - \item\label{item:firststep} At the DOS prompt, enter\\ - {\tt initexmf -{}-edit-config-file=latex} - \item Type\\ - {\tt main\_memory=10000000}\\ - into the editor window that opens, save the file and quit the editor. - \item\label{item:laststep} To rebuild the format, enter\\ - {\tt initexmf -{}-dump=latex} - \item Repeat steps \ref{item:firststep}--\ref{item:laststep} with config file `{\tt pdflatex}' - \end{enumerate} - - \TeX\ Live: - \begin{enumerate} - \item Find the configuration file `texmf.cnf' by means of\\ - {\tt kpsewhich texmf.cnf}\\ - at the shell prompt in a terminal. - \item As Root, open the file in your favourite text editor, scroll to the `{\tt main\_memory}' entry and change it to the value given above; save and quit. - \item Rebuild the formats by\\ - {\tt fmtutil-sys -{}-byfmt latex}\\ - {\tt fmtutil-sys -{}-byfmt pdflatex} - \end{enumerate} - - \item Animations should not be placed on \emph{multilayered} slides created with presentation making classes such as Beamer or Powerdot. Although possible, the result might be disappointing. Put animations on flat slides only. (Of course, slides without animations may still have overlays.) - - \item Originally, package `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 `animate-noocg.sty'. - -\end{itemize} - -\section{Acknowledgements} -I would like to thank Fran\c{c}ois Lafont who discovered quite a few bugs and made many suggestions that helped to improve the functionality of the package. - -\begin{thebibliography}{8} - \bibitem{chupin} Chupin, M.: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\tt http://melusine.eu.org/syracuse/metapost/animations/} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\tt chupin/?idsec=scara} - \bibitem{gilg05} Gilg, J.: PDF-Animationen. In: \emph{Die \TeX nische Kom\"odie}, Issue 4, 2005, pp.~30--37 - \bibitem{hol} Hole\v{c}ek, J.: \emph{Animations in a pdf\TeX-generated PDF}. URL: \href{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml}{\tt http://www.} \href{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml}{\tt fi.muni.cz/\textasciitilde xholecek/tex/pdfanim.xhtml} - \bibitem{hol04} Hole\v{c}ek, J. ; Sojka, P.: Animations in pdf\TeX-generated PDF. In: \emph{Lecture Notes in Computer Science}, Vol. 3130, 2004, pp.~179--191 - \bibitem{movie15} \emph{The Movie15 Package}. URL: \href{http://www.ctan.org/tex-archive/macros/latex/contrib/movie15/}{\tt http://www.ctan.org/tex-archive/macros/} \href{http://www.ctan.org/tex-archive/macros/latex/contrib/movie15/}{\tt latex/contrib/movie15} -\end{thebibliography} - -\end{document} 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 deleted file mode 100644 index 3bb488a0522..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/bye_0.eps +++ /dev/null @@ -1,317 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%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 deleted file mode 100644 index c04b8f5a3f0..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/bye_1.eps +++ /dev/null @@ -1,314 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%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 deleted file mode 100644 index d9d56f68940..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/bye_2.eps +++ /dev/null @@ -1,317 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%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 deleted file mode 100644 index c04b8f5a3f0..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/bye_3.eps +++ /dev/null @@ -1,314 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%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/exp.mp b/Master/texmf-dist/doc/latex/animate/doc/files/exp.mp deleted file mode 100644 index f719391fecf..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/exp.mp +++ /dev/null @@ -1,108 +0,0 @@ -% Jan Holecek, Alexander Grahn -% 2008/01/03 - -filenametemplate "%j_%c.mps"; - -e := 2.718282; -N=8; -size := 5cm; -bars := 0.5mm; -diff := 0.05; -xmin := -2; -xmax := 2; -xo := -2; -ymin := 0; -ymax := e**xmax; -xcoe := size / (xmax - xmin); -ycoe := size / (ymax - ymin); - - -pair xaxis[], yaxis[], npnt; -xaxis[1] = (xmin * xcoe, 0); xaxis[2] = (xmax * xcoe, 0); -yaxis[1] = (0, ymin * ycoe); yaxis[2] = (0, ymax * ycoe); -npnt = (xmin * xcoe, ymax * ycoe); - -picture xlabel, ylabel, elabel, nlabel[]; -xlabel = btex $x$ etex; -ylabel = btex $y$ etex; -elabel = btex $y = e^x$ etex; -nlabel[1] = btex $n = 1$ etex; -nlabel[2] = btex $n = 2$ etex; -nlabel[3] = btex $n = 3$ etex; -nlabel[4] = btex $n = 4$ etex; -nlabel[5] = btex $n = 5$ etex; -nlabel[6] = btex $n = 6$ etex; -nlabel[7] = btex $n = 7$ etex; -nlabel[8] = btex $n = 8$ etex; - - -def pnt (expr x,y)= - ( x * xcoe, y * ycoe ) -enddef; - -def exp (expr x)= - pnt (x , e**x) -enddef; - -def taylor (expr s,x)= - begingroup - save i,v,w; - v = 1; - w = 1; - for i := 1 upto s: - w := (w * (x-xo)) / i; - v := v + w; - endfor; - pnt (x , v * (e**xo)) - endgroup -enddef; - -path pexp,ptaylor[]; - -pexp = exp(xmin) -for i:=xmin+diff step diff until xmax: - .. exp(i) -endfor; - -for j:=1 upto N: - ptaylor[j] := taylor (j,xmin) - for i:=xmin+diff step diff until xmax: - .. taylor(j,i) - endfor; -endfor; - -def axis= - drawarrow xaxis[1]--xaxis[2]; - drawarrow yaxis[1]--yaxis[2]; - for k:=-1,1: - draw (k * xcoe, -bars) -- (k * xcoe, bars); - endfor; - for k:=1 upto 6: - draw (-bars, k * ycoe) -- (bars, k * ycoe); - endfor; - draw pexp withcolor red; - label.lrt (xlabel, xaxis[2]); - label.ulft (ylabel, yaxis[2]); - label.top (elabel, point (length (pexp)) of pexp); -enddef; - -path bounds; -beginfig(0); - pickup pencircle scaled 0.4mm; - axis; - bounds:=bbox currentpicture; - setbounds currentpicture to bounds; - clip currentpicture to bounds; -endfig; - -for i:=1 upto N: - beginfig(i); - pickup pencircle scaled 0.4mm; - draw ptaylor[i] withcolor blue; - label.lrt ( nlabel[i], npnt); - setbounds currentpicture to bounds; - clip currentpicture to bounds; - endfig; -endfor; - -end. diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/mailto.eps b/Master/texmf-dist/doc/latex/animate/doc/files/mailto.eps deleted file mode 100644 index 313b755df16..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/mailto.eps +++ /dev/null @@ -1,587 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (/home/grahn/animate.work/doc/files/mailto.eps) -%%CreationDate: (Thu Mar 15 15:47:37 2007) -%%BoundingBox: 0 0 92 11 -%%HiResBoundingBox: 0 0 91.5916 11 -%%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 92 11 -userdict begin -DisplayImage -0 0 -91.5916 11.2232 -12.000000 -291 38 -1 -1 -1 -8 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0000000055FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA00000055FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550055FFFFAA0055FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF55000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000AAFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550055FFFFFFFF -AA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFF -FFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AA -FFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -5500AAFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA -55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF55AAFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFF0000000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA000000000000FFFFFF00000000FFFFFFFFFF0000 -0000AAFFFFFF5500000000AAFFFFFFFFFFFFFFFF550000000055FFFFFFFFFFFFFFFFFFFF -FFFFAA55FFFFFF00000000FFFFFFFFFFFFFFFFFFFF000000FFFFFF55000000AAFFFFFFFF -FFFFFFFFFFFF55AAFFFFFFFFFFFFAA000055FFFFFFFFFFFFAA0000000055FFFFFFFFFFFF -FF0000000000FFFFFFFFFFFFFFFF000000000000AAFFFFFFFFFFFFFFFFFFFF55AAFFFFAA -000000000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF000000000000AAFFFF55AAFFFFFFFFFFFFFFFFFF55000000000055FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF000000AAFFFF550000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA000000FFFFFFFF000000FF00FFFFFFFFFFFFFF -FFFFFFFF55AAFF550000AAFFFF5500AAFFFFFFFFFF55000055FFFFAA000055FFFFFFFFFF -FFFFFFFFFFAA55AA000000FFFF000000FFFFFFFFFFFFFFFFFFFF00FF000000AAFF550000 -AAFFFFFFFFFFFFFFFF55AAFFFFFFFFAA000055AA55FFFFFFFFFFFFFFAA0055FFFFFFFFFF -FFFFFFFFFFFF0000FFFFFFFFFFFFFF000000AAFFFFFF550000AAFFFFFFFFFFFFFFFF55AA -55000055FFFFFFAA000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF000000AAFFFFFF550000AA55AAFFFFFFFFFFFFFF55000055FFFFFFAA000055FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFF00FF00FFFFFFFF -FFFFFFFFFFFFFF55AA5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFFFFAA55AA00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF00FF00AAFFFFFF -FFFF55AAFFFFFFFFFFFFFFFF55AAFFFFFFAA0055FFFFAA55FFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFF -FF55AA55AAFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF0000FFFFFFFFFFFFFFFF55AA55AAFFFFFFFFFFFF5500AAFFFFFFFFFFFFFF -AA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFF0000FF -FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA -0055FFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0000FFFF -FFFFFFFFFF5500AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFFFFFFFFFFFFAA -55FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF55AAFFFFFF -FFFFFFFF5500AAFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFF55AAFFFFFFFFFF -FFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFF -0000FFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFAA55FFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00 -00FFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFFFFFFFF -FFFFAA55FFFFFFFF000000FFFFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF5500 -AAFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFF5500AAFFFF -FFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF -FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF -FFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFF -FFFFFFFFFFAA55FFFFFFFF00FF00FFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF -FFFF55AAFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFF55AA -FFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 -00AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF -FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FF55000000000000000055FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFF -FFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA0055FFFFAA55 -FFFFFFFFFFFFFFFFAA0055FFFFFF00FF00FFFFFF0000FFFFFFFFFFFF0000000000000000 -000000000000AAFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFF -FF550000000000000000000000000055FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF -FFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFF -FFFF550000AAFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FF -FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFFFAA0055 -FFAA55FFFFFFFFFFFFFFFFFFAA55FFFF0000FF0000FFFF00FFFFFFFFFFFFFF00FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFF -FFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAAAFF -FFFFFFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA -55FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFF -FFFFFFFF8E1D72AAE3FFFFFFFFFFE37255FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF -FF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFFF -E3721D55391D8EFFFFFFFFFFFFFFFFAA55FFFF00AAFFAA00FFFF00FFFFFFFFFFFFFF00FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF -55AAFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00AA -FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFAA1D8EFFFFFFFFFFFFFFFFFFFF5500FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFF -FFFFFFFFFFFFFF5572E3FFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF -FFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFF -FFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFFAA55FFFF00FFFFFF00FFFF00FFFFFFFFFFFF -FF0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFC739 -55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0055FFFFFFFFFFFFFFFF -FFFF8E1DAAFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FF00FFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFC755558EFFFFFFFFFF -FFFFFFFFFFE37255FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFF -FFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFF -FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF -5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55C75500FFFFFF0055FF00FFFFFF -FFFFFFFFAA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFF -FFAA39C7FFFFFFFFFFFFFFFFFFFFFF555555FFFFFFFFFFFFFFFFFFFFFFAA00FFFFFFFFFF -FFFFFFFFFF5500AAFFFFFFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF00FFFFFFFFFFFFFFFFFF8E1DAAFFFFFFFFFFFFFFFFFFFFFFFF8E3900001D8EFF -FFFFFFFFFFFFFFFFFFAA1D8EFFFFFFFFFFFFFFFF55AA00FFFFFFFFFFFFFFFFFFFFFF55AA -FFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFC73955FFFFFFFFFFFFFFFFFFAA -55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFF -FFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA1D3900AAFFFFFFAA005500 -FFFFFFFFFFFFFFFF0055FFFFFFFFFFFFFFFFFF8E55C7FFFFFFFFFFFF557272C7FFFFFFFF -FFFFFFC73955FFFFFFFFFFFFFFFFFFFFC75500000055FFFFFFFFFFFFFFFFFFFFFF0055FF -FFFFFFFFFFFFFF8E8E39AAFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFC7558EFFFFFFFFFF -FFFFFFFFFFFFFF0055FFFFFFFFFFFF8E551D00AAFFFFFFFFFFFFFFFFFFFFFFFF55000000 -0055FFFFFFFFFFFFFFFFFFFFE3721D5555FFFFFFFF555500FF00FFFFFFFFFFFFFFFFFFFF -FF55AAFFFFFFFFFFFFFFFFFFFFFFFFFF5539C7FFFFFFFFFFC755390055FFFFFFFFFFFFFF -FFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFF -FFFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE37239AAFFFFFFFFFF -AA00AAFFFFFFFFFFFFFFFFAA005555C7FFFFFFFF8E551D72E3FFFFFFFFFFFF55AA553955 -8EFFFFFFC7553939C7FFFFFFFFFFFFFFFFFFFFAA0000000000FFFFFFFFFFFFFFFFFFFFFF -AA005555C7FFFFFF8E551DAA55AAFFFFFFFFFFFFC73939558EFFFFFFFFC7553939C7FFFF -FFFFFFFFFFFFFFFFFFFFAA005555555555551D72AA39395555C7FFFFFFFFFFFFFFFFFFC7 -72000039C7FFFFFFFFFFFFFFFFFFFFFFE3AA72005555555500AAAAFF00FFFFFFFFFFFFFF -555555551D39555555555555C7FFFFFFFFFFFFC7393955555555553939AA721D55558EFF -FFFFFFC755391D5555FFFFFFFFFF5555005555FFFFFFFFFF5555005555C7FFFFFFFF8E55 -1D3955C7FFFFFFFFFFFFC739398EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFF -FFFFFFFF00FFFFFFFFFFFFFFFFFFFFAAAA0039555555551D72AAE3FFFFFFFF8E55551DAA -C7AA721D5555553939AAC7FFFFFFFFFFFFFFFFFFFFFFE3AA000000AAFFFFFFFFFFFFFFFF -FFFFFFFFAAAA00395555551D72AAE355395555C7FFFFFFFFC7AA391D555555553939AAC7 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAE3FFC7AAAAAAE3FFFFFFFFFFFFFF -FFFFFFE3AAAAC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAAAAAFFFFFF00FFFFFFFF -FFFFFFAAAAAAAAAAAAAAAAAAAAAAAAE3FFFFFFFFFFFFFFC7AAAAAAAAAAAAAAC7FFE3AAAA -AAC7FFFFFFFFE3AAAAAAAAAAFFFFFFFFFFAAAAAAAAAAFFFFFFFFFFAAAAAAAAAAE3FFFFFF -FFC7AAAAAAAAE3FFFFFFFFFFFFFFC7391D8EFFFFC755558EFFFFFFFFFFFFFFFFFFFFE3C7 -FFFFFFFFFFFFFFAAFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAE3FFFFFFFFFFFFC7AA -AAAAE3FFFFE3AAAAAAAAAAC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFAAAAAAAAAAAAE3FFFFC7AAAAAAE3FFFFFFFFFFFFC7AAAAAAAAAAAA -C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7721D55553939AAC7FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -5500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF00AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF555500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -C755555555555500AAAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFend -%%PageTrailer -%%Trailer -%%EOF diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/scarab.mp b/Master/texmf-dist/doc/latex/animate/doc/files/scarab.mp deleted file mode 100644 index bef95226e24..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/scarab.mp +++ /dev/null @@ -1,132 +0,0 @@ -% Maxime Chupin, Alexander Grahn -% 2008/01/03 - -filenametemplate "%j_%c.mps"; - -verbatimtex -\documentclass{article} -\usepackage[latin1]{inputenc} -\usepackage{amsmath} -\begin{document} -etex - -u:=4cm; - -vardef proj(expr P,M,N)= - save H; - pair H; - H=whatever [M,N]; - H-P=whatever * (M - N) rotated 90; - H -enddef; - -path dr,cercle,drb,scara; -pair A,B,C,D,Q,T,O',P,O,M; -O:=(0,0); -O':=(-u/3,0); -A:=(u/sqrt(2),u/sqrt(2)) shifted O'; -B:=(u/sqrt(2),-u/sqrt(2)) shifted O'; -C:=(-u/sqrt(2),-u/sqrt(2))shifted O'; -D:=(-u/sqrt(2),u/sqrt(2)) shifted O'; -dr:=A--C; -drb:=B--D; - -%scarabaeus construction -for i:=0 upto 100: - if i=0: - P:=A; - Q:=O'; - M:=proj(O,P,Q); - scara:=M; - else: - scara:=M; - for j:=1 upto 4: - k:=4*(i-1)+j; - if (k<200) or (k=200): - P:=point (k*0.005) of dr; - cercle:=halfcircle - scaled 2u rotated 45 shifted P; - if k=0: - Q:=O'; - fi; - if (k<>0) and (k<>200): - Q:=cercle intersectionpoint drb; - fi; - if k=200: - Q:=O'; - fi; - else: - P:= point (2-k*0.005) of dr; - cercle:=halfcircle - scaled 2u rotated (-135) shifted P; - if k<400: - Q:=cercle intersectionpoint drb; - fi; - if k=400: - Q:=O'; - fi; - fi; - M:=proj(O,P,Q); - scara:=scara--M; - endfor; - fi; - beginfig(i) %red scarabaeus segments - setbounds currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - pickup pencircle scaled 1pt; - draw scara withcolor red; - clip currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - endfig; - beginfig(i+101) %moving construction lines and labels - setbounds currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - draw 12[P,Q]--12[Q,P] dashed evenly; - draw O--M dashed evenly; - pickup pencircle scaled 1.4pt; - draw P--Q withcolor blue; - label.rt(btex $2l$ etex, 0.5[P,Q]); - dotlabel.urt(btex $P$ etex, P); - dotlabel.llft(btex $Q$ etex,Q); - dotlabel.top(btex $M$ etex,M); - clip currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - endfig; - if (i/2.-floor(i/2.))=0: %gray lines every second image - beginfig(i/2+202) - setbounds currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - draw P--Q withcolor 0.8 white; - clip currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - endfig; - fi; -endfor; - -%coordinate axes and stationary stuff -beginfig(253); - setbounds currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; - path ida,mida; - drawarrow(-1.5u,0)--(1u,0); - drawarrow(0,-1.2u)--(0,1.2u); - ida:=12[A,C]--12[C,A]; - mida:=(12[D,B]--12[B,D]); - draw ida dashed evenly; - draw mida dashed evenly; - label.top(btex $a$ etex, 0.5[O,O']); - label.top(btex $x$ etex, (0.8u,0)); - label.rt(btex $y$ etex, (0,u)); - label.bot(btex\itshape{\underline{scarabaeus}} etex,(-1.1u,1.1u)); - label.bot(btex $r=l\cos 2t-a\cos t$ etex, (-u/2,1.1u)); - dotlabel.urt(btex $O'$ etex, O'); - dotlabel.urt(btex $O$ etex, O); - dotlabel.rt(btex $A$ etex,A); - dotlabel.rt(btex $B$ etex,B); - dotlabel.lft(btex $C$ etex,C); - dotlabel.lft(btex $D$ etex,D); - clip currentpicture to - (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; -endfig; - -end. diff --git a/Master/texmf-dist/doc/latex/animate/doc/files/timeline.txt b/Master/texmf-dist/doc/latex/animate/doc/files/timeline.txt deleted file mode 100644 index c0945a66a6b..00000000000 --- a/Master/texmf-dist/doc/latex/animate/doc/files/timeline.txt +++ /dev/null @@ -1,9 +0,0 @@ -::0x0 % coordinate system & y=e^x, repeated until last frame -::1 % one blue curve per frame -::2 -::3 -::4 -::5 -::6 -::7 -::8 diff --git a/Master/texmf-dist/doc/latex/animate/files/bye_0.eps b/Master/texmf-dist/doc/latex/animate/files/bye_0.eps new file mode 100644 index 00000000000..3bb488a0522 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/bye_0.eps @@ -0,0 +1,317 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%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/files/bye_1.eps b/Master/texmf-dist/doc/latex/animate/files/bye_1.eps new file mode 100644 index 00000000000..c04b8f5a3f0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/bye_1.eps @@ -0,0 +1,314 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%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/files/bye_2.eps b/Master/texmf-dist/doc/latex/animate/files/bye_2.eps new file mode 100644 index 00000000000..d9d56f68940 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/bye_2.eps @@ -0,0 +1,317 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%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/files/bye_3.eps b/Master/texmf-dist/doc/latex/animate/files/bye_3.eps new file mode 100644 index 00000000000..c04b8f5a3f0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/bye_3.eps @@ -0,0 +1,314 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%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/files/exp.mp b/Master/texmf-dist/doc/latex/animate/files/exp.mp new file mode 100755 index 00000000000..f719391fecf --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/exp.mp @@ -0,0 +1,108 @@ +% Jan Holecek, Alexander Grahn +% 2008/01/03 + +filenametemplate "%j_%c.mps"; + +e := 2.718282; +N=8; +size := 5cm; +bars := 0.5mm; +diff := 0.05; +xmin := -2; +xmax := 2; +xo := -2; +ymin := 0; +ymax := e**xmax; +xcoe := size / (xmax - xmin); +ycoe := size / (ymax - ymin); + + +pair xaxis[], yaxis[], npnt; +xaxis[1] = (xmin * xcoe, 0); xaxis[2] = (xmax * xcoe, 0); +yaxis[1] = (0, ymin * ycoe); yaxis[2] = (0, ymax * ycoe); +npnt = (xmin * xcoe, ymax * ycoe); + +picture xlabel, ylabel, elabel, nlabel[]; +xlabel = btex $x$ etex; +ylabel = btex $y$ etex; +elabel = btex $y = e^x$ etex; +nlabel[1] = btex $n = 1$ etex; +nlabel[2] = btex $n = 2$ etex; +nlabel[3] = btex $n = 3$ etex; +nlabel[4] = btex $n = 4$ etex; +nlabel[5] = btex $n = 5$ etex; +nlabel[6] = btex $n = 6$ etex; +nlabel[7] = btex $n = 7$ etex; +nlabel[8] = btex $n = 8$ etex; + + +def pnt (expr x,y)= + ( x * xcoe, y * ycoe ) +enddef; + +def exp (expr x)= + pnt (x , e**x) +enddef; + +def taylor (expr s,x)= + begingroup + save i,v,w; + v = 1; + w = 1; + for i := 1 upto s: + w := (w * (x-xo)) / i; + v := v + w; + endfor; + pnt (x , v * (e**xo)) + endgroup +enddef; + +path pexp,ptaylor[]; + +pexp = exp(xmin) +for i:=xmin+diff step diff until xmax: + .. exp(i) +endfor; + +for j:=1 upto N: + ptaylor[j] := taylor (j,xmin) + for i:=xmin+diff step diff until xmax: + .. taylor(j,i) + endfor; +endfor; + +def axis= + drawarrow xaxis[1]--xaxis[2]; + drawarrow yaxis[1]--yaxis[2]; + for k:=-1,1: + draw (k * xcoe, -bars) -- (k * xcoe, bars); + endfor; + for k:=1 upto 6: + draw (-bars, k * ycoe) -- (bars, k * ycoe); + endfor; + draw pexp withcolor red; + label.lrt (xlabel, xaxis[2]); + label.ulft (ylabel, yaxis[2]); + label.top (elabel, point (length (pexp)) of pexp); +enddef; + +path bounds; +beginfig(0); + pickup pencircle scaled 0.4mm; + axis; + bounds:=bbox currentpicture; + setbounds currentpicture to bounds; + clip currentpicture to bounds; +endfig; + +for i:=1 upto N: + beginfig(i); + pickup pencircle scaled 0.4mm; + draw ptaylor[i] withcolor blue; + label.lrt ( nlabel[i], npnt); + setbounds currentpicture to bounds; + clip currentpicture to bounds; + endfig; +endfor; + +end. diff --git a/Master/texmf-dist/doc/latex/animate/files/mailto.eps b/Master/texmf-dist/doc/latex/animate/files/mailto.eps new file mode 100644 index 00000000000..313b755df16 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/mailto.eps @@ -0,0 +1,587 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (/home/grahn/animate.work/doc/files/mailto.eps) +%%CreationDate: (Thu Mar 15 15:47:37 2007) +%%BoundingBox: 0 0 92 11 +%%HiResBoundingBox: 0 0 91.5916 11 +%%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 92 11 +userdict begin +DisplayImage +0 0 +91.5916 11.2232 +12.000000 +291 38 +1 +1 +1 +8 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0000000055FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA00000055FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550055FFFFAA0055FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF55000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000AAFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550055FFFFFFFF +AA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFF +FFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AA +FFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +5500AAFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF55AAFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFF0000000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA000000000000FFFFFF00000000FFFFFFFFFF0000 +0000AAFFFFFF5500000000AAFFFFFFFFFFFFFFFF550000000055FFFFFFFFFFFFFFFFFFFF +FFFFAA55FFFFFF00000000FFFFFFFFFFFFFFFFFFFF000000FFFFFF55000000AAFFFFFFFF +FFFFFFFFFFFF55AAFFFFFFFFFFFFAA000055FFFFFFFFFFFFAA0000000055FFFFFFFFFFFF +FF0000000000FFFFFFFFFFFFFFFF000000000000AAFFFFFFFFFFFFFFFFFFFF55AAFFFFAA +000000000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000AAFFFF55AAFFFFFFFFFFFFFFFFFF55000000000055FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000AAFFFF550000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA000000FFFFFFFF000000FF00FFFFFFFFFFFFFF +FFFFFFFF55AAFF550000AAFFFF5500AAFFFFFFFFFF55000055FFFFAA000055FFFFFFFFFF +FFFFFFFFFFAA55AA000000FFFF000000FFFFFFFFFFFFFFFFFFFF00FF000000AAFF550000 +AAFFFFFFFFFFFFFFFF55AAFFFFFFFFAA000055AA55FFFFFFFFFFFFFFAA0055FFFFFFFFFF +FFFFFFFFFFFF0000FFFFFFFFFFFFFF000000AAFFFFFF550000AAFFFFFFFFFFFFFFFF55AA +55000055FFFFFFAA000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF000000AAFFFFFF550000AA55AAFFFFFFFFFFFFFF55000055FFFFFFAA000055FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFF00FF00FFFFFFFF +FFFFFFFFFFFFFF55AA5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFFFFAA55AA00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF00FF00AAFFFFFF +FFFF55AAFFFFFFFFFFFFFFFF55AAFFFFFFAA0055FFFFAA55FFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFF +FF55AA55AAFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0000FFFFFFFFFFFFFFFF55AA55AAFFFFFFFFFFFF5500AAFFFFFFFFFFFFFF +AA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFF0000FF +FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +0055FFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0000FFFF +FFFFFFFFFF5500AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFFFFFFFFFFFFAA +55FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF55AAFFFFFF +FFFFFFFF5500AAFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFF55AAFFFFFFFFFF +FFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFF +0000FFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFAA55FFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00 +00FFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFFFFFFFF +FFFFAA55FFFFFFFF000000FFFFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF5500 +AAFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFF5500AAFFFF +FFFFFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF +FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF +FFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA55FFFFFFAA55FFFFFF +FFFFFFFFFFAA55FFFFFFFF00FF00FFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF +FFFF55AAFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFF55AA +FFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 +00AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF +FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF55000000000000000055FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFF +FFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFAA0055FFFFAA55 +FFFFFFFFFFFFFFFFAA0055FFFFFF00FF00FFFFFF0000FFFFFFFFFFFF0000000000000000 +000000000000AAFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFF +FF550000000000000000000000000055FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF +FFFF5500AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFF +FFFF550000AAFFFFFFFFFFAA0055FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFF00FF +FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFFFAA0055 +FFAA55FFFFFFFFFFFFFFFFFFAA55FFFF0000FF0000FFFF00FFFFFFFFFFFFFF00FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF55AAFF +FFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAAAFF +FFFFFFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +55FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFF +FFFFFFFF8E1D72AAE3FFFFFFFFFFE37255FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFF +FF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFFFFFFFF +E3721D55391D8EFFFFFFFFFFFFFFFFAA55FFFF00AAFFAA00FFFF00FFFFFFFFFFFFFF00FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF +55AAFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00AA +FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFAA1D8EFFFFFFFFFFFFFFFFFFFF5500FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFF +FFFFFFFFFFFFFF5572E3FFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFFFFFFFF +FFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF55AAFF +FFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFFAA55FFFF00FFFFFF00FFFF00FFFFFFFFFFFF +FF0055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFC739 +55FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0055FFFFFFFFFFFFFFFF +FFFF8E1DAAFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF00FFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFFFFFFFFFC755558EFFFFFFFFFF +FFFFFFFFFFE37255FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF55AAFFFFFF +FFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFFFAA55FFFFFFFFFFFFFFFFFFAA55FFFF +FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFF +5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55C75500FFFFFF0055FF00FFFFFF +FFFFFFFFAA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500AAFFFFFFFFFFFFFFFF +FFAA39C7FFFFFFFFFFFFFFFFFFFFFF555555FFFFFFFFFFFFFFFFFFFFFFAA00FFFFFFFFFF +FFFFFFFFFF5500AAFFFFFFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF00FFFFFFFFFFFFFFFFFF8E1DAAFFFFFFFFFFFFFFFFFFFFFFFF8E3900001D8EFF +FFFFFFFFFFFFFFFFFFAA1D8EFFFFFFFFFFFFFFFF55AA00FFFFFFFFFFFFFFFFFFFFFF55AA +FFFFFFFFFFFFFFFFFFFFFFFFFF55AAFFFFFFFFFFFFFFFFC73955FFFFFFFFFFFFFFFFFFAA +55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFFFFFFFF +FFFFFFC739AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA1D3900AAFFFFFFAA005500 +FFFFFFFFFFFFFFFF0055FFFFFFFFFFFFFFFFFF8E55C7FFFFFFFFFFFF557272C7FFFFFFFF +FFFFFFC73955FFFFFFFFFFFFFFFFFFFFC75500000055FFFFFFFFFFFFFFFFFFFFFF0055FF +FFFFFFFFFFFFFF8E8E39AAFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFC7558EFFFFFFFFFF +FFFFFFFFFFFFFF0055FFFFFFFFFFFF8E551D00AAFFFFFFFFFFFFFFFFFFFFFFFF55000000 +0055FFFFFFFFFFFFFFFFFFFFE3721D5555FFFFFFFF555500FF00FFFFFFFFFFFFFFFFFFFF +FF55AAFFFFFFFFFFFFFFFFFFFFFFFFFF5539C7FFFFFFFFFFC755390055FFFFFFFFFFFFFF +FFFFAA55FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF55AAFF +FFFFFFFFFFFFFF5539C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE37239AAFFFFFFFFFF +AA00AAFFFFFFFFFFFFFFFFAA005555C7FFFFFFFF8E551D72E3FFFFFFFFFFFF55AA553955 +8EFFFFFFC7553939C7FFFFFFFFFFFFFFFFFFFFAA0000000000FFFFFFFFFFFFFFFFFFFFFF +AA005555C7FFFFFF8E551DAA55AAFFFFFFFFFFFFC73939558EFFFFFFFFC7553939C7FFFF +FFFFFFFFFFFFFFFFFFFFAA005555555555551D72AA39395555C7FFFFFFFFFFFFFFFFFFC7 +72000039C7FFFFFFFFFFFFFFFFFFFFFFE3AA72005555555500AAAAFF00FFFFFFFFFFFFFF +555555551D39555555555555C7FFFFFFFFFFFFC7393955555555553939AA721D55558EFF +FFFFFFC755391D5555FFFFFFFFFF5555005555FFFFFFFFFF5555005555C7FFFFFFFF8E55 +1D3955C7FFFFFFFFFFFFC739398EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA55FFFFFF +FFFFFFFF00FFFFFFFFFFFFFFFFFFFFAAAA0039555555551D72AAE3FFFFFFFF8E55551DAA +C7AA721D5555553939AAC7FFFFFFFFFFFFFFFFFFFFFFE3AA000000AAFFFFFFFFFFFFFFFF +FFFFFFFFAAAA00395555551D72AAE355395555C7FFFFFFFFC7AA391D555555553939AAC7 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAE3FFC7AAAAAAE3FFFFFFFFFFFFFF +FFFFFFE3AAAAC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAAAAAFFFFFF00FFFFFFFF +FFFFFFAAAAAAAAAAAAAAAAAAAAAAAAE3FFFFFFFFFFFFFFC7AAAAAAAAAAAAAAC7FFE3AAAA +AAC7FFFFFFFFE3AAAAAAAAAAFFFFFFFFFFAAAAAAAAAAFFFFFFFFFFAAAAAAAAAAE3FFFFFF +FFC7AAAAAAAAE3FFFFFFFFFFFFFFC7391D8EFFFFC755558EFFFFFFFFFFFFFFFFFFFFE3C7 +FFFFFFFFFFFFFFAAFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAE3FFFFFFFFFFFFC7AA +AAAAE3FFFFE3AAAAAAAAAAC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFAAAAAAAAAAAAE3FFFFC7AAAAAAE3FFFFFFFFFFFFC7AAAAAAAAAAAA +C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7721D55553939AAC7FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +5500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AAAAAAAAC7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF00AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF555500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C755555555555500AAAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFend +%%PageTrailer +%%Trailer +%%EOF diff --git a/Master/texmf-dist/doc/latex/animate/files/scarab.mp b/Master/texmf-dist/doc/latex/animate/files/scarab.mp new file mode 100644 index 00000000000..bef95226e24 --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/scarab.mp @@ -0,0 +1,132 @@ +% Maxime Chupin, Alexander Grahn +% 2008/01/03 + +filenametemplate "%j_%c.mps"; + +verbatimtex +\documentclass{article} +\usepackage[latin1]{inputenc} +\usepackage{amsmath} +\begin{document} +etex + +u:=4cm; + +vardef proj(expr P,M,N)= + save H; + pair H; + H=whatever [M,N]; + H-P=whatever * (M - N) rotated 90; + H +enddef; + +path dr,cercle,drb,scara; +pair A,B,C,D,Q,T,O',P,O,M; +O:=(0,0); +O':=(-u/3,0); +A:=(u/sqrt(2),u/sqrt(2)) shifted O'; +B:=(u/sqrt(2),-u/sqrt(2)) shifted O'; +C:=(-u/sqrt(2),-u/sqrt(2))shifted O'; +D:=(-u/sqrt(2),u/sqrt(2)) shifted O'; +dr:=A--C; +drb:=B--D; + +%scarabaeus construction +for i:=0 upto 100: + if i=0: + P:=A; + Q:=O'; + M:=proj(O,P,Q); + scara:=M; + else: + scara:=M; + for j:=1 upto 4: + k:=4*(i-1)+j; + if (k<200) or (k=200): + P:=point (k*0.005) of dr; + cercle:=halfcircle + scaled 2u rotated 45 shifted P; + if k=0: + Q:=O'; + fi; + if (k<>0) and (k<>200): + Q:=cercle intersectionpoint drb; + fi; + if k=200: + Q:=O'; + fi; + else: + P:= point (2-k*0.005) of dr; + cercle:=halfcircle + scaled 2u rotated (-135) shifted P; + if k<400: + Q:=cercle intersectionpoint drb; + fi; + if k=400: + Q:=O'; + fi; + fi; + M:=proj(O,P,Q); + scara:=scara--M; + endfor; + fi; + beginfig(i) %red scarabaeus segments + setbounds currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + pickup pencircle scaled 1pt; + draw scara withcolor red; + clip currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + endfig; + beginfig(i+101) %moving construction lines and labels + setbounds currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + draw 12[P,Q]--12[Q,P] dashed evenly; + draw O--M dashed evenly; + pickup pencircle scaled 1.4pt; + draw P--Q withcolor blue; + label.rt(btex $2l$ etex, 0.5[P,Q]); + dotlabel.urt(btex $P$ etex, P); + dotlabel.llft(btex $Q$ etex,Q); + dotlabel.top(btex $M$ etex,M); + clip currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + endfig; + if (i/2.-floor(i/2.))=0: %gray lines every second image + beginfig(i/2+202) + setbounds currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + draw P--Q withcolor 0.8 white; + clip currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + endfig; + fi; +endfor; + +%coordinate axes and stationary stuff +beginfig(253); + setbounds currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; + path ida,mida; + drawarrow(-1.5u,0)--(1u,0); + drawarrow(0,-1.2u)--(0,1.2u); + ida:=12[A,C]--12[C,A]; + mida:=(12[D,B]--12[B,D]); + draw ida dashed evenly; + draw mida dashed evenly; + label.top(btex $a$ etex, 0.5[O,O']); + label.top(btex $x$ etex, (0.8u,0)); + label.rt(btex $y$ etex, (0,u)); + label.bot(btex\itshape{\underline{scarabaeus}} etex,(-1.1u,1.1u)); + label.bot(btex $r=l\cos 2t-a\cos t$ etex, (-u/2,1.1u)); + dotlabel.urt(btex $O'$ etex, O'); + dotlabel.urt(btex $O$ etex, O); + dotlabel.rt(btex $A$ etex,A); + dotlabel.rt(btex $B$ etex,B); + dotlabel.lft(btex $C$ etex,C); + dotlabel.lft(btex $D$ etex,D); + clip currentpicture to + (u,1.2u)--(u,-1.2u)--(-1.5u,-1.2u)--(-1.5u,1.2u)--cycle; +endfig; + +end. diff --git a/Master/texmf-dist/doc/latex/animate/files/timeline.txt b/Master/texmf-dist/doc/latex/animate/files/timeline.txt new file mode 100644 index 00000000000..c0945a66a6b --- /dev/null +++ b/Master/texmf-dist/doc/latex/animate/files/timeline.txt @@ -0,0 +1,9 @@ +::0x0 % coordinate system & y=e^x, repeated until last frame +::1 % one blue curve per frame +::2 +::3 +::4 +::5 +::6 +::7 +::8 diff --git a/Master/texmf-dist/tex/latex/animate/animate-noocg.sty b/Master/texmf-dist/tex/latex/animate/animate-noocg.sty deleted file mode 100644 index 75068023b31..00000000000 --- a/Master/texmf-dist/tex/latex/animate/animate-noocg.sty +++ /dev/null @@ -1,1855 +0,0 @@ -% Copyright 2007 Alexander Grahn - -% This material is subject to the LaTeX Project Public License. See -% http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html -% for the details of that license. - -% Package for creating portable, JavaScript driven animations from sets of -% graphics files or inline graphics (e. g. latex-picture, pstricks, -% pgf/TikZ, ...) - -% Supports LaTeX->dvips->ps2pdf or pdfLaTeX workflows. - -% Non-OCG version, based on the work by Jan Holecek and Petr Sojka. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{animate-noocg}[2007/05/05] -\RequirePackage{keyval} -\RequirePackage{ifthen} -\RequirePackage{ifpdf} -\RequirePackage{calc} - -\DeclareOption*{}\ProcessOptions*\relax %allow anything as option -%(package options will be processed near end of this file) - -\ifpdf - %load MP to PDF converter - \ifx\convertMPtoPDF\@undefined% - \InputIfFileExists{supp-pdf}{}{}% - \ifx\convertMPtoPDF\@undefined% - \PackageWarningNoLine{animate-noocg}{% - File `supp-pdf.tex', which is part of ConTeXt, is not available.% - \MessageBreak% - Therefore, MetaPost generated PS files cannot be embedded.% - }% - \fi% - \fi% -\else - %define `?pdfmark' operator; taken from the PDFmark Reference - \AtBeginDocument{% - \ifthenelse{\isundefined{\pdfmark}}{% (hyperref provides its own - \special{ps: % definition) - /pdfmark where - { pop globaldict /?pdfmark /exec load put } - { - globaldict - begin - /?pdfmark /pop load def - /pdfmark /cleartomark load def - end - } - ifelse - }% - }{}% - } -\fi% - -%testing for correct TeX version, pdfmdfivesum is needed for both, -%pdf _and_ dvi output -\ifx\@undefined\pdfmdfivesum - \PackageError{animate-noocg}{% - pdfeTeX, version >= 1.30, required - }{% - Install a more recent version! - }% -\fi - -%creating and using global definitions -\def\@anim@newkey#1#2{{\expandafter\xdef\csname#1\endcsname{#2}}} -\def\@anim@getkeyval#1{% - \expandafter\ifx\csname#1\endcsname\relax% - undefined% - \else% - \csname#1\endcsname% - \fi% -}% - -%missing package error message -\def\@anim@missing#1{% - \PackageError{animate-noocg}{% - Package `#1' has not been loaded yet% - }{% - Put the line\MessageBreak% - `\protect\usepackage{#1}'\MessageBreak% - to the preamble of your document! - }% -} - -%add AP (appearances name tree) root node to the Names dict of the PDF Catalog -\def\@anim@buttontree{} -\ifpdf - \newcount\@anim@aproot - \pdfobj reserveobjnum - \@anim@aproot=\pdflastobj - \pdfnames{/AP \the\pdflastobj\space 0 R} - \AtEndDocument{% - \immediate\pdfobj useobjnum \@anim@aproot {% - <>% - }% - }% -\else - \special{ps: - mark {Catalog} <>>>>> /PUT pdfmark - } -\fi - -%create name tree object from XObject hash & add a reference to it to the -%name tree list -\def\@anim@apkids{} -\ifpdf - \def\@anim@addtree#1{% #1 @anim@num - \immediate\pdfobj {<<% - /Names [\@anim@getkeyval{a#1.hash}] - /Limits [(\@anim@getkeyval{a#1.ffirst}) (\@anim@getkeyval{a#1.flast})]% - >>}% - \xdef\@anim@apkids{\@anim@apkids\the\pdflastobj\space 0 R\space}% - } -\else - \special{ps: mark /_objdef {@anim@apkids} /type/array /OBJ pdfmark } - \def\@anim@addtree#1{% - \xdef\@anim@apkids{\@anim@apkids {tree@#1}\space}% - \special{ps: - mark - /_objdef {tree@#1} - /type/dict - /OBJ pdfmark - mark - {tree@#1} << - /Names [\@anim@getkeyval{a#1.hash}] - /Limits [(\@anim@getkeyval{a#1.ffirst}) (\@anim@getkeyval{a#1.flast})] - >> - /PUT pdfmark - %mark {@anim@apkids} {tree@#1} /APPEND pdfmark - mark {@anim@apkids} 0 [\@anim@apkids\@anim@buttontree] /PUTINTERVAL pdfmark - }% - } -\fi - -\newbox\@anim@box %used for storing graphics -\newdimen\@anim@tmpdima %length registers for occasional use -\newdimen\@anim@tmpdimb - -%creates Form XObject from graphics file & appends a reference to it to the -%XObject hash (XObject name <-> XObject reference) of the current animation; -%also determines natural size of the graphics file -\def\@anim@pt{pt} -\ifpdf - \def\@anim@ximage#1#2#3{%#1:zero padded anim num, #2:@anim@curframe@zb, - \edef\@anim@curfr@zb@form{\@anim@pad{123456}{#2}}% #3:filename - \IfFileExists{#3}{% - %embed the same graphics file only once (reference doesn't exist yet) - \ifthenelse{% - \equal{\@anim@getkeyval{\pdfmdfivesum file {#3}.r}}{undefined}% - }{% - \def\@anim@mps{.mps}% - \ifx\@anim@ext\@anim@mps% - \global\setbox\@anim@box=\hbox{\convertMPtoPDF{#3}{1}{1}}% - \ifnum#2=0% size (measuring the first frame only) - % store name of first frame XObject - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.wd}{\the\wd\@anim@box}% - \@anim@newkey{a#1.ht}{\the\ht\@anim@box}% - \@anim@newkey{a#1.dp}{0pt}% - \fi% - \immediate\pdfxform\@anim@box% - \@anim@newkey{\pdfmdfivesum file {#3}.r}{\the\pdflastxform}% - \else% - \immediate\pdfximage{#3}% - \@anim@newkey{\pdfmdfivesum file {#3}.r}{\the\pdflastximage}% - \ifnum#2=0% size (measuring the first frame only) - % store name of first frame XObject - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \global\setbox\@anim@box=\hbox{\pdfrefximage\pdflastximage}% - \@anim@newkey{a#1.wd}{\the\wd\@anim@box}% - \@anim@newkey{a#1.ht}{\the\ht\@anim@box}% - \@anim@newkey{a#1.dp}{0pt}% - \fi% - \fi% - \@anim@newkey{\pdfmdfivesum file {#3}.a}{#1}% file is part of animation #1 - }{% - \ifnum#2=0% - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - %retrieve previously determined size and make it the current - \@anim@newkey{a#1.wd}{% - \@anim@getkeyval{a\@anim@getkeyval{\pdfmdfivesum file {#3}.a}.wd}% - }% - \@anim@newkey{a#1.ht}{% - \@anim@getkeyval{a\@anim@getkeyval{\pdfmdfivesum file {#3}.a}.ht}% - }% - \@anim@newkey{a#1.dp}{0pt}% - \fi% - }% - % store name of last frame XObject - \@anim@newkey{a#1.flast}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.hash}{% append reference - \@anim@getkeyval{a#1.hash}(a#1f\@anim@curfr@zb@form) - \@anim@getkeyval{\pdfmdfivesum file {#3}.r}\space 0 R\space% - }% - %reference to poster frame - \ifnum#2=0% - \def\@anim@posterframe{first}% - \else% - \def\@anim@posterframe{last}% - \fi% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{% - \@anim@getkeyval{\pdfmdfivesum file {#3}.r}\space 0 R% - }% - \fi% - }{% - \PackageError{animate-noocg}{File `#3' cannot be opened for embedding.}{}% - }% - } -\else - \def\@anim@ximage#1#2#3{% - \edef\@anim@curfr@zb@form{\@anim@pad{123456}{#2}}% - \IfFileExists{#3}{% - \ifthenelse{% - \equal{\@anim@getkeyval{\pdfmdfivesum file {#3}.r}}{undefined}% - }{% - \edef\@anim@curfile{{#3}}% - \global\setbox\@anim@box=\hbox{\expandafter\includegraphics\@anim@curfile}% - \ifnum#2=0% size (measuring the first frame only) - % store name of first frame XObject - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.wd}{\the\wd\@anim@box}% - \@anim@newkey{a#1.ht}{\the\ht\@anim@box}% - \@anim@newkey{a#1.dp}{0pt}% - \fi% - \def\@anim@oldunitlength{\the\unitlength}% make backup - \setlength{\unitlength}{1pt}% - %mark BBox of the graphics - \begin{picture}(0,0)% - \put(0,0){% - \special{ps: - currentpoint /frame@lly exch def /frame@llx exch def - }% - }% - \put(\strip@pt\wd\@anim@box,\strip@pt\ht\@anim@box){% - \special{ps: - currentpoint /frame@ury exch def /frame@urx exch def - }% - }% - \special{ps: - gsave - mark - /_objdef {a#1f\@anim@curfr@zb@form} - /BBox [frame@llx frame@lly frame@urx frame@ury] - /BP pdfmark - %flip around horizontal axis - { [1 0 0 -1 0 frame@lly frame@ury add ] concat } ?pdfmark - }% - \put(0,0){\box\@anim@box}% - \special{ps: - mark /EP pdfmark - grestore - }% - \end{picture}% - \setlength{\unitlength}{\@anim@oldunitlength}% restore previous unitlen - \@anim@newkey{\pdfmdfivesum file {#3}.r}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{\pdfmdfivesum file {#3}.a}{#1}% - }{% - \ifnum#2=0% - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.wd}{% - \@anim@getkeyval{a\@anim@getkeyval{\pdfmdfivesum file {#3}.a}.wd}% - }% - \@anim@newkey{a#1.ht}{% - \@anim@getkeyval{a\@anim@getkeyval{\pdfmdfivesum file {#3}.a}.ht}% - }% - \@anim@newkey{a#1.dp}{0pt}% - \fi% - }% - \@anim@newkey{a#1.flast}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.hash}{% append reference - \@anim@getkeyval{a#1.hash}(a#1f\@anim@curfr@zb@form) - {\@anim@getkeyval{\pdfmdfivesum file {#3}.r}}\space% - }% - \ifnum#2=0% - \def\@anim@posterframe{first}% - \else% - \def\@anim@posterframe{last}% - \fi% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{% - \@anim@getkeyval{\pdfmdfivesum file {#3}.r}% - }% - \fi% - }{% - \PackageError{animate-noocg}{File `#3' cannot be opened for embedding.}{}% - }% - } -\fi - -%creates Form XObject from box contents & appends a reference to it to the -%XObject hash (XObject name <-> XObject reference) of the current animation -\ifpdf - \def\@anim@xinline#1#2#3{%#1:zero padded anim num, #2:@anim@curframe@zb, - \immediate\pdfxform#3% #3:box number - \edef\@anim@curfr@zb@form{\@anim@pad{123456}{#2}}% - \ifnum#2=0% - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \fi% - % store name of last frame of sequence - \@anim@newkey{a#1.flast}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.hash}{% append reference - \@anim@getkeyval{a#1.hash}% - (a#1f\@anim@curfr@zb@form)\space\the\pdflastxform\space 0 R\space% - }% - %reference to poster frame - \ifnum#2=0% - \def\@anim@posterframe{first}% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{\the\pdflastxform\space 0 R}% - \fi% - \else% - \def\@anim@posterframe{last}% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{\the\pdflastxform\space 0 R}% - \fi% - \fi% - } -\else - \def\@anim@xinline#1#2#3{% - \def\@anim@oldunitlength{\the\unitlength}% make backup - \setlength{\unitlength}{1pt}% - %mark BBox of the graphics - \begin{picture}(0,0)% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.dp}}% - \put(0,-\strip@pt\@anim@tmpdima){% - \special{ps: - currentpoint /frame@lly exch def /frame@llx exch def - }% - }% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.wd}}% - \setlength{\@anim@tmpdimb}{\@anim@getkeyval{a#1.ht}}% - \put(\strip@pt\@anim@tmpdima,\strip@pt\@anim@tmpdimb){% - \special{ps: - currentpoint /frame@ury exch def /frame@urx exch def - }% - }% - \end{picture}% - \edef\@anim@curfr@zb@form{\@anim@pad{123456}{#2}}% cur frame num formatted - \setlength{\unitlength}{\@anim@oldunitlength}% restore previous unitlength - \special{ps: - gsave - mark - /_objdef {a#1f\@anim@curfr@zb@form} - /BBox [frame@llx frame@lly frame@urx frame@ury] - /BP pdfmark - %flip around horizontal axis - { [1 0 0 -1 0 frame@lly frame@ury add ] concat } ?pdfmark - }% - \begin{picture}(0,0)% - \put(0,0){\box#3}% - \end{picture}% - \special{ps: - mark /EP pdfmark - grestore - }% - \ifnum#2=0% - \@anim@newkey{a#1.ffirst}{a#1f\@anim@curfr@zb@form}% - \fi% - \@anim@newkey{a#1.flast}{a#1f\@anim@curfr@zb@form}% - \@anim@newkey{a#1.hash}{% - \@anim@getkeyval{a#1.hash}% - (a#1f\@anim@curfr@zb@form)\space {a#1f\@anim@curfr@zb@form}\space% - }% - \ifnum#2=0% - \def\@anim@posterframe{first}% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{a#1f\@anim@curfr@zb@form}% - \fi% - \else% - \def\@anim@posterframe{last}% - \ifx\@anim@poster\@anim@posterframe% - \@anim@newkey{a#1.poster}{a#1f\@anim@curfr@zb@form}% - \fi% - \fi% - } -\fi - -%control button faces -\def\@anim@buttonhash{}% -\ifpdf - \def\@anim@xbutton#1#2{% #1 name, #2 stroking commands - \immediate\pdfobj stream attr{% - /Type/XObject/Subtype/Form/BBox [0 0 15 15]% - /Resources <>% - }{#2}% - \xdef\@anim@buttonhash{% - \@anim@buttonhash(btn#1)\space\the\pdflastobj\space 0 R\space% - }% - \@anim@newkey{btn#1}{\the\pdflastobj\space 0 R}% - } - \def\@anim@btnend{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 45 40 m - 95 75 l - 45 110 l - S - 0 j - 105 44 m - 105 106 l - S - } - \def\@anim@btnstep{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 50 40 m - 100 75 l - 50 110 l - S - } - \def\@anim@btnplay{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 50 40 m - 50 110 l - 100 75 l - h - S - } - \def\@anim@btnpause{% - 2.5 w - 1 j - 0 G - 0 10 m - 140 10 l - 140 140 l - 0 140 l - S - 20 w - 22 40 m - 22 110 l - S - } - \def\@anim@btnminus{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 0 J - 40 75 m - 110 75 l - S - } - \def\@anim@btnplus{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 0 J - 40 75 m - 110 75 l - 75 40 m - 75 110 l - S - } - \def\@anim@btnreset{% - 2.5 w - 1 J - 1 j - 0 G - 10 10 130 130 re - S - 10 w - 75 40 m - 75 110 l - S - 0 g - 35 50 m - 70 75 l - 35 100 l - f - 115 50 m - 80 75 l - 115 100 l - f - 2 J - 0 j - 30 75 m - 35 75 l - 120 75 m - 115 75 l - S - } - \def\@anim@makebuttons{% - \@anim@xbutton{EndLeft}{% - -0.1 0 0 0.1 15 0 cm - \@anim@btnend% - }% - \@anim@xbutton{EndRight}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnend% - }% - \@anim@xbutton{Minus}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnminus% - }% - \@anim@xbutton{PauseLeft}{% - -0.1 0 0 0.1 15 0 cm - \@anim@btnpause% - }% - \@anim@xbutton{PauseRight}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnpause% - }% - \@anim@xbutton{PlayLeft}{% - -0.1 0 0 0.1 15 0 cm - \@anim@btnplay% - }% - \@anim@xbutton{PlayRight}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnplay% - }% - \@anim@xbutton{Plus}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnplus% - }% - \@anim@xbutton{Reset}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnreset% - }% - \@anim@xbutton{StepLeft}{% - -0.1 0 0 0.1 15 0 cm - \@anim@btnstep% - }% - \@anim@xbutton{StepRight}{% - 0.1 0 0 0.1 0 0 cm - \@anim@btnstep% - }% - \immediate\pdfobj {<<% - /Names [\@anim@buttonhash] - /Limits [(btnEndLeft) (btnStepRight)]% - >>}% - \xdef\@anim@buttontree{\the\pdflastobj\space 0 R\space}% - } -\else - \def\@anim@xbutton#1#2{% #1: name; #2: stroking commands - \special{ps: - gsave - mark - /_objdef {btn#1} - /BBox [0 0 15 15] - /BP pdfmark { #2 } ?pdfmark mark /EP pdfmark - grestore - }% - \xdef\@anim@buttonhash{% - \@anim@buttonhash(btn#1)\space {btn#1}\space% - }% - } - \def\@anim@btnend{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1 setlinewidth - 4.5 4 moveto - 9.5 7.5 lineto - 4.5 11 lineto - stroke - 0 setlinejoin - 10.5 4.4 moveto - 10.5 10.6 lineto - stroke - } - \def\@anim@btnstep{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1 setlinewidth - 5 4 moveto - 10 7.5 lineto - 5 11 lineto - stroke - } - \def\@anim@btnplay{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1 setlinewidth - 5 4 moveto - 5 11 lineto - 10 7.5 lineto - closepath - stroke - } - \def\@anim@btnpause{% - 0 setgray - 0.25 setlinewidth - 0 setlinecap - 1 setlinejoin - 0 1 moveto - 14 1 lineto - 14 14 lineto - 0 14 lineto - stroke - 2 setlinewidth - 2.2 4 moveto - 2.2 11 lineto - stroke - } - \def\@anim@btnminus{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1.0 setlinewidth - 0 setlinecap - 4 7.5 moveto - 11 7.5 lineto - stroke - } - \def\@anim@btnplus{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1.0 setlinewidth - 0 setlinecap - 4 7.5 moveto - 11 7.5 lineto - 7.5 4 moveto - 7.5 11 lineto - stroke - } - \def\@anim@btnreset{% - 0 setgray - 0.25 setlinewidth - 1 setlinecap - 1 setlinejoin - 1 1 moveto - 14 1 lineto - 14 14 lineto - 1 14 lineto - closepath - stroke - 1 setlinewidth - 7.5 4 moveto - 7.5 11 lineto - stroke - 0 setlinejoin - 3.5 5 moveto - 7 7.5 lineto - 3.5 10 lineto - closepath - fill - 11.5 5 moveto - 8 7.5 lineto - 11.5 10 lineto - closepath - fill - 1 setlinewidth - 2 setlinecap - 3 7.5 moveto - 3.5 7.5 lineto - 12 7.5 moveto - 11.5 7.5 lineto - stroke - } - \def\@anim@makebuttons{% - \@anim@xbutton{EndLeft}{% - [-1 0 0 1 15 0] concat - \@anim@btnend% - }% - \@anim@xbutton{EndRight}{% - \@anim@btnend% - }% - \@anim@xbutton{Minus}{% - \@anim@btnminus% - }% - \@anim@xbutton{PauseLeft}{% - [-1 0 0 1 15 0] concat - \@anim@btnpause% - }% - \@anim@xbutton{PauseRight}{% - \@anim@btnpause% - }% - \@anim@xbutton{PlayLeft}{% - [-1 0 0 1 15 0] concat - \@anim@btnplay% - }% - \@anim@xbutton{PlayRight}{% - \@anim@btnplay% - }% - \@anim@xbutton{Plus}{% - \@anim@btnplus% - }% - \@anim@xbutton{Reset}{% - \@anim@btnreset% - }% - \@anim@xbutton{StepLeft}{% - [-1 0 0 1 15 0] concat - \@anim@btnstep% - }% - \@anim@xbutton{StepRight}{% - \@anim@btnstep% - }% - \special{ps: - mark /_objdef {tree@button} /type/dict /OBJ pdfmark - mark - {tree@button} <<% - /Names [\@anim@buttonhash] - /Limits [(btnEndLeft) (btnStepRight)] - >> /PUT - pdfmark - }% - \xdef\@anim@buttontree{{tree@button}}% - } -\fi - -%determines file type of the sequence -\ifpdf - \def\@anim@getext#1{% - \gdef\@anim@ext{.pdf}% we start with `pdf' - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.mps}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.png}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.jpg}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.jpeg}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.jbig2}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.jb2}% - \IfFileExists{#1\@anim@ext}{}{% - \PackageError{animate-noocg}{% - Neither of the files\MessageBreak% - `#1.pdf',\MessageBreak% - `#1.mps',\MessageBreak% - `#1.png',\MessageBreak% - `#1.jpg',\MessageBreak% - `#1.jpeg',\MessageBreak% - `#1.jbig2' or\MessageBreak% - `#1.jb2',\MessageBreak% - could be found.\MessageBreak% - Wrong file type? Mis-spelled file name? - }{}% - }}}}}}}% - }% -\else - \def\@anim@getext#1{% - \gdef\@anim@ext{.eps}% we start with `eps' - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.mps}% - \IfFileExists{#1\@anim@ext}{}{% - \gdef\@anim@ext{.ps}% - \IfFileExists{#1\@anim@ext}{}{% - \PackageError{animate-noocg}{% - Neither of the files\MessageBreak% - `#1.eps',\MessageBreak% - `#1.mps' or\MessageBreak% - `#1.ps'\MessageBreak% - could be found.\MessageBreak% - Wrong file type? Mis-spelled file name? - }{}% - }}}% - }% -\fi - -%counts embedded animations -\newcount\@anim@num\@anim@num=0 - -%current frame -\newcount\@anim@curframe -\newcount\@anim@curframe@zb% zero based - -\newboolean{@anim@buttonsmade} %true if button faces have been made -\setboolean{@anim@buttonsmade}{false} - -%user command for embedding animation sequence -% #1: options -% #2: frame rate (fps) -% #3: basename of graphics file sequence (without frame number and extension) -% #4: first frame (zero padded integer of same width as #5) -% #5: last frame (zero padded integer of same width as #4) -\newcommand{\animategraphics}[5][]{% - \leavevmode% - \ifpdf\else% - \ifthenelse{\isundefined{\includegraphics}}{\@anim@missing{graphics}}{}% - \fi% - \@anim@reset% to default settings - \setkeys{anim@user}{#1}% - \def\@anim@base{#3}% - \def\@anim@first{#4}% - \def\@anim@last{#5}% - % - %create button faces if necessary - \if@anim@controls% - \if@anim@buttonsmade\else% - \@anim@makebuttons% - \setboolean{@anim@buttonsmade}{true}% - \fi% - \fi% - %formatted (zero padded) animation no. - \edef\@anim@numform{\@anim@pad{1234}{\the\@anim@num}}% - \@anim@newkey{a\@anim@numform.hash}{}% empty XObject hash - \@anim@newkey{a\@anim@numform.fps}{#2}% - \@anim@newkey{a\@anim@numform.pauseat}{}% - % - %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@last}{\the\@anim@curframe}% - }% - %embed graphics - \@anim@ximage{\@anim@numform}{\the\@anim@curframe@zb}{% - \@anim@base\@anim@pad{\@anim@last}{\the\@anim@curframe}\@anim@ext% - }% - \advance\@anim@curframe by 1% - \advance\@anim@curframe@zb by 1% - \@anim@newkey{a\@anim@numform.frames}{\the\@anim@curframe@zb}% total number - \repeat% - \@anim@addtree{\@anim@numform}% create name tree - %insert animation widget & controls - \vtop{% - \offinterlineskip% - \hbox{\@anim@animwidget{\@anim@numform}}% - \if@anim@controls% - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \setlength{\@anim@tmpdima}{0.1\@anim@tmpdima}% - \vskip \@anim@tmpdima% - \hbox to \@anim@getkeyval{a\@anim@numform.wd} {% - \hss% - \@anim@buttonwidget{\@anim@numform}{EndLeft}{EndLeft}% - \@anim@buttonwidget{\@anim@numform}{StepLeft}{StepLeft}% - \if@anim@step\else% - \@anim@buttonwidget{\@anim@numform}{PlayPauseLeft}{PlayLeft}% - \@anim@buttonwidget{\@anim@numform}{PlayPauseRight}{PlayRight}% - \fi% - \@anim@buttonwidget{\@anim@numform}{StepRight}{StepRight}% - \@anim@buttonwidget{\@anim@numform}{EndRight}{EndRight}% - \if@anim@step\else% - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \setlength{\@anim@tmpdima}{0.3\@anim@tmpdima}% - \hskip \@anim@tmpdima% - \@anim@buttonwidget{\@anim@numform}{Minus}{Minus}% - \@anim@buttonwidget{\@anim@numform}{Reset}{Reset}% - \@anim@buttonwidget{\@anim@numform}{Plus}{Plus}% - \fi% - \hss% - }% - \fi% - }% - \global\advance\@anim@num by 1% -}% - -%calculates widget dimensions from natural ones, taking resizing options -%into account -\def\@anim@rescale#1{% #1:formatted anim number - %original totalheight - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.ht}}% - \addtolength{\@anim@tmpdima}{\@anim@getkeyval{a#1.dp}}% - \edef\@anim@th{\the\@anim@tmpdima}% - %rescale height & depth - \ifthenelse{% - \NOT\equal{\@anim@boxheight}{}\AND% - \NOT\equal{\@anim@boxdepth}{}% - }{% - \@anim@newkey{a#1.ht}{\@anim@boxheight}% - \@anim@newkey{a#1.dp}{\@anim@boxdepth}% - }{% - \ifthenelse{\NOT\equal{\@anim@boxheight}{}}{% - \@anim@newkey{a#1.ht}{\@anim@boxheight}% - }{% - \ifthenelse{\NOT\equal{\@anim@boxdepth}{}}{% - \@anim@newkey{a#1.dp}{\@anim@boxdepth}% - }{%if neither height nor depth are given but width is, rescale - %ht & dp to keep aspect ratio - \ifthenelse{\NOT\equal{\@anim@boxwidth}{}}{% - \setlength{\@anim@tmpdima}{% - \@anim@getkeyval{a#1.ht}% - *\ratio{\@anim@boxwidth}{\@anim@getkeyval{a#1.wd}}% - }\@anim@newkey{a#1.ht}{\the\@anim@tmpdima}% - \setlength{\@anim@tmpdima}{% - \@anim@getkeyval{a#1.dp}% - *\ratio{\@anim@boxwidth}{\@anim@getkeyval{a#1.wd}}% - }\@anim@newkey{a#1.dp}{\the\@anim@tmpdima}% - }{}% - }% - }% - }% - \ifthenelse{\NOT\equal{\@anim@boxwidth}{}}{%rescale width - \@anim@newkey{a#1.wd}{\@anim@boxwidth}% - }{% - %if width is not given, but either height or depth are, scale - %width to keep aspect ratio - \ifthenelse{% - \NOT\equal{\@anim@boxheight}{}\OR% - \NOT\equal{\@anim@boxdepth}{}% - }{% - \setlength{\@anim@tmpdima}{% - \@anim@getkeyval{a#1.wd}% - *\ratio{% - \@anim@getkeyval{a#1.ht}+\@anim@getkeyval{a#1.dp}% - }{\@anim@th}% - }% - \@anim@newkey{a#1.wd}{\the\@anim@tmpdima}% - }{}% - }% - %apply scaling by a factor - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.wd}}% - \setlength{\@anim@tmpdima}{\@anim@boxscale\@anim@tmpdima}% - \@anim@newkey{a#1.wd}{\the\@anim@tmpdima}% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.ht}}% - \setlength{\@anim@tmpdima}{\@anim@boxscale\@anim@tmpdima}% - \@anim@newkey{a#1.ht}{\the\@anim@tmpdima}% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.dp}}% - \setlength{\@anim@tmpdima}{\@anim@boxscale\@anim@tmpdima}% - \@anim@newkey{a#1.dp}{\the\@anim@tmpdima}% -} - -%creates animation widget -\ifpdf - \def\@anim@animwidget#1{% - \@anim@rescale{#1}% - %create JavaScript objects - \@anim@pojscript{#1}% to be executed on PO event - \@anim@otherjscript{#1}% on other events in the AA dict - %default appearance - \def\@anim@posterframe{none}% - \ifx\@anim@poster\@anim@posterframe% - \def\@anim@defaultap{}% - \else% - \edef\@anim@defaultap{% - /AP <>% - }% - \fi - \pdfannot - width \@anim@getkeyval{a#1.wd} - height \@anim@getkeyval{a#1.ht} - depth \@anim@getkeyval{a#1.dp} - {% - /Subtype/Widget% - /F 4% allow printing - /FT/Btn/Ff 65536% push button - /T (anm@#1)% - /BS <>% - /H/N% - \@anim@defaultap% - /MK <<% - /TP 1% icon, no caption - /BG [\@anim@bg]% - /IF <>% scale icon freely within widget - >>% - /AA <<% bind JavaScripts to trigger events - /PO <>% - \@anim@getkeyval{a#1.otherjscript}% - >>% - }% - \hbox to \@anim@getkeyval{a#1.wd} {% - \vrule width 0pt height \@anim@getkeyval{a#1.ht} - depth \@anim@getkeyval{a#1.dp}% - \hss% - }% - }% -\else - \def\@anim@animwidget#1{% - \@anim@rescale{#1}% - \def\@anim@oldunitlength{\the\unitlength}% - \setlength{\unitlength}{1pt}% - %mark annotation rectangle - \begin{picture}(0,0)% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.dp}}% - \put(0,-\strip@pt\@anim@tmpdima){% - \special{ps: - currentpoint /wid@lly exch def /wid@llx exch def - }% - }% - \setlength{\@anim@tmpdima}{\@anim@getkeyval{a#1.wd}}% - \setlength{\@anim@tmpdimb}{\@anim@getkeyval{a#1.ht}}% - \put(\strip@pt\@anim@tmpdima,\strip@pt\@anim@tmpdimb){% - \special{ps: - currentpoint /wid@ury exch def /wid@urx exch def - }% - }% - \end{picture}% - \setlength{\unitlength}{\@anim@oldunitlength}% - \@anim@pojscript{#1}% - \@anim@otherjscript{#1}% - \def\@anim@posterframe{none}% - \ifx\@anim@poster\@anim@posterframe% - \def\@anim@defaultap{}% - \else% - \edef\@anim@defaultap{% - /AP <>% - }% - \fi - \special{ps: - mark - /Rect [wid@llx wid@lly wid@urx wid@ury]% - /Subtype/Widget% - /F 4% - /FT/Btn/Ff 65536% - /T (anm@#1)% - /BS <>% - /H/N% - \@anim@defaultap% - /MK <<% - /TP 1 - /BG [\@anim@bg]% - /IF <>% - >>% - /AA <<% - /PO <>% - \@anim@getkeyval{a#1.otherjscript}% - >>% - /ANN pdfmark - }% - \hbox to \@anim@getkeyval{a#1.wd} {% - \vrule width 0pt height \@anim@getkeyval{a#1.ht} - depth \@anim@getkeyval{a#1.dp}% - \hss% - }% - } -\fi - -%creates control button widget -\ifpdf - \def\@anim@buttonwidget#1#2#3{% #1: zero padded anim num, #2: action, #3: icon - \@anim@upjscript{#1}{#2}% JavaScript actions for ButtonUp events - %button size corresponds to current font size - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \hbox to \@anim@tmpdima {% - \pdfannot - width \@anim@tmpdima - height \@anim@tmpdima - depth 0pt - {% - /Subtype/Widget% - /FT/Btn/Ff 65536% push button - /T (btn@#1@#2)% - /BS <>% - /H/I% - /AP <>% - /MK <<% - /TP 1% - /BG [\@anim@btnbg]% - /IF <>% scale button face icon freely within widget - >>% - /A <>% - }% - \vrule width 0pt height \@anim@tmpdima depth 0pt% - \hss% - }% - }% -\else - \def\@anim@buttonwidget#1#2#3{% - \@anim@upjscript{#1}{#2}% - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \def\@anim@oldunitlength{\the\unitlength}% - \setlength{\unitlength}{1pt}% - \begin{picture}(0,0)% - \put(0,0){% - \special{ps: - currentpoint /wid@lly exch def /wid@llx exch def - }% - }% - \put(\strip@pt\@anim@tmpdima,\strip@pt\@anim@tmpdima){% - \special{ps: - currentpoint /wid@ury exch def /wid@urx exch def - }% - }% - \end{picture}% - \setlength{\unitlength}{\@anim@oldunitlength}% - \special{ps: - mark - /Rect [wid@llx wid@lly wid@urx wid@ury] - /Subtype/Widget - /FT/Btn/Ff 65536 - /T (btn@#1@#2) - /BS <> - /H/I - /AP <>% - /MK << - /TP 1 - /BG [\@anim@btnbg] - /IF <> - >>% - /A <>% - /ANN pdfmark - }% - \hbox to \the\@anim@tmpdima {% - \vrule width 0pt height \the\@anim@tmpdima\space depth 0pt% - \hss% - }% - } -\fi - -\newboolean{@anim@inside} % for checking whether we are inside the -\setboolean{@anim@inside}{false} % `animateinline' environment -\newboolean{@anim@pauseframes} % true when \newframe* is being used - -%user environment for animating inline graphics -% #1: options -% #2: frame rate (fps) -\newenvironment{animateinline}[2][]{% - \leavevmode% - \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% - \fi% - %formatted (zero padded animation number) - \edef\@anim@numform{\@anim@pad{1234}{\the\@anim@num}}% - \@anim@newkey{a\@anim@numform.hash}{}% empty XObject hash - \@anim@newkey{a\@anim@numform.fps}{#2}% - \@anim@newkey{a\@anim@numform.pauseat}{}% - \global\@anim@curframe@zb=0% - \@anim@beginframe% - \ignorespaces% -}{% - \unskip% - %formatted (zero padded) animation number & current zero based frame no. - \edef\@anim@numform{\@anim@pad{1234}{\the\@anim@num}}% - \@anim@endframe{\@anim@numform}{\the\@anim@curframe@zb}% - \global\advance\@anim@curframe@zb by 1% - \@anim@newkey{a\@anim@numform.frames}{\the\@anim@curframe@zb}% total number - \@anim@addtree{\@anim@numform}% create name tree - %insert animation widget & controls - \vtop{% - \offinterlineskip% - \hbox{\@anim@animwidget{\@anim@numform}}% - \if@anim@controls% - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \setlength{\@anim@tmpdima}{0.1\@anim@tmpdima}% - \vskip \@anim@tmpdima% - \hbox to \@anim@getkeyval{a\@anim@numform.wd} {% - \hss% - \@anim@buttonwidget{\@anim@numform}{EndLeft}{EndLeft}% - \@anim@buttonwidget{\@anim@numform}{StepLeft}{StepLeft}% - \if@anim@step\else% - \@anim@buttonwidget{\@anim@numform}{PlayPauseLeft}{PlayLeft}% - \@anim@buttonwidget{\@anim@numform}{PlayPauseRight}{PlayRight}% - \fi% - \@anim@buttonwidget{\@anim@numform}{StepRight}{StepRight}% - \@anim@buttonwidget{\@anim@numform}{EndRight}{EndRight}% - \if@anim@step\else% - \setlength{\@anim@tmpdima}{\@anim@btnsize}% - \setlength{\@anim@tmpdima}{0.3\@anim@tmpdima}% - \hskip \@anim@tmpdima% - \@anim@buttonwidget{\@anim@numform}{Minus}{Minus}% - \@anim@buttonwidget{\@anim@numform}{Reset}{Reset}% - \@anim@buttonwidget{\@anim@numform}{Plus}{Plus}% - \fi% - \hss% - }% - \fi% - }% - \global\advance\@anim@num by 1% - \setboolean{@anim@inside}{false}% -} - -%usercommand for use within `animateinline' environment; -%terminates the current frame and starts a new one -\def\newframe{% - \unskip% - \if@anim@inside\else% - \PackageError{animate-noocg}{% - \protect\newframe\space cannot be used outside\MessageBreak% - `animateinline' environment - }{}% - \fi% - \edef\@anim@numform{\@anim@pad{1234}{\the\@anim@num}}% - \@anim@endframe{\@anim@numform}{\the\@anim@curframe@zb}% - \@ifstar{% - \if@anim@step\else% - %build JavaScript commands to fill the `pauseAt' array - \@anim@newkey{a\@anim@numform.pauseat}{% - \@anim@getkeyval{a\@anim@numform.pauseat} - a\@anim@numform.pauseAt[\the\@anim@curframe@zb]=1;% - }% - \setboolean{@anim@pauseframes}{true}% - \fi% - \global\advance\@anim@curframe@zb by 1% - \@anim@beginframe% - \ignorespaces% - }{% - \global\advance\@anim@curframe@zb by 1% - \@anim@beginframe% - \ignorespaces% - }% -}% - -%starts a new frame -\def\@anim@beginframe{% - \begin{lrbox}{\@anim@box}% store the graphics in a box -} - -%terminates current frame -\def\@anim@endframe#1#2{% - \end{lrbox}% - \message{< a\the\@anim@num, fr#2}% - %determine size of graphics - \ifnum #2=0% - \@anim@newkey{a#1.wd}{\the\wd\@anim@box}% - \ifdim\wd\@anim@box=0pt% - \PackageError{animate-noocg}{% - The first frame must not have zero width% - }{% - Possible reason: \protect\begin{animateinline} - immediately followed by \protect\newframe.% - }% - \fi% - \@anim@newkey{a#1.ht}{\the\ht\@anim@box}% - \@anim@newkey{a#1.dp}{\the\dp\@anim@box}% - \ifdim\ht\@anim@box=0pt% - \ifdim\dp\@anim@box=0pt% - \PackageError{animate-noocg}{% - The first frame must not have zero height% - }{}% - \fi% - \fi% - \fi% - %now create Form XObject of box contents - \@anim@xinline{#1}{#2}{\@anim@box}% - \message{>}% -} - -%prints zero padded integers -% #1: arbitrary, non-zero integer number as template specifying the -% width, e. g. `987654' for a width of 6 digits -% #2: the number to be formatted (zero padded) -\def\@anim@pad#1#2{% - \@anim@@pad{\@anim@template{0}{#1}}{#2}% -} -%low level macros used by \@anim@pad -\def\@anim@@pad#1#2{% #1: string of zeros specifying width, #2 number - \ifnum1#2<1#1 - \@anim@@pad{#1}{0#2}% - \else% - #2% - \fi% -}% -\def\@anim@template#1#2{% create template (stringed zeros) from given num - \ifnum10#1<1#2 - \@anim@template{0#1}{#2}% - \else% - #1% - \fi% -}% - -%command options -%setting the widget size -\define@key{anim@user}{width}{% - \setlength{\@anim@tmpdima}{#1}% - \xdef\@anim@boxwidth{\the\@anim@tmpdima}% -} -\define@key{anim@user}{height}{% - \setlength{\@anim@tmpdima}{#1}% - \xdef\@anim@boxheight{\the\@anim@tmpdima}% -} -\define@key{anim@user}{depth}{% - \setlength{\@anim@tmpdima}{#1}% - \xdef\@anim@boxdepth{\the\@anim@tmpdima}% -} -\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}% -} -\newboolean{@anim@controls} -\setboolean{@anim@controls}{false} -\define@key{anim@user}{controls}[true]{% - \setboolean{@anim@controls}{#1}% -} -\newboolean{@anim@loop} -\setboolean{@anim@loop}{false} -\define@key{anim@user}{loop}[true]{% - \setboolean{@anim@loop}{#1}% -} -\newboolean{@anim@autoplay} %doen't work anymore in AR8 -\setboolean{@anim@autoplay}{false} -\define@key{anim@user}{autoplay}[true]{% - \setboolean{@anim@autoplay}{#1}% - \if@anim@autoplay - \setboolean{@anim@autoresume}{false} - \fi% -} -\newboolean{@anim@autoresume} -\setboolean{@anim@autoresume}{false} -\define@key{anim@user}{autoresume}[true]{% - \setboolean{@anim@autoresume}{#1}% - \if@anim@autoresume\setboolean{@anim@autoplay}{false}\fi% -} -\newboolean{@anim@autopause} -\setboolean{@anim@autopause}{false} -\define@key{anim@user}{autopause}[true]{% - \setboolean{@anim@autopause}{#1}% -} -\newboolean{@anim@palindrome} -\setboolean{@anim@palindrome}{false} -\define@key{anim@user}{palindrome}[true]{% - \setboolean{@anim@palindrome}{#1}% -} -%default frame to be shown if animation is not activated -\define@key{anim@user}{poster}[first]{% | none | last - \ifthenelse{% correct wrong input to `none' - \equal{#1}{first}\OR% - \equal{#1}{last}% - }{% - \gdef\@anim@poster{#1}% - }{% - \gdef\@anim@poster{none}% - }% -} -\newboolean{@anim@step} -\setboolean{@anim@step}{false} -\define@key{anim@user}{step}[true]{% - \setboolean{@anim@step}{#1}% -} - -%macro to reset macros and booleans -\def\@anim@reset{% - \gdef\@anim@boxscale{1.0}% - \gdef\@anim@boxdepth{}% - \gdef\@anim@boxheight{}% - \gdef\@anim@boxwidth{}% - \xdef\@anim@bg{\@anim@@bg}% - \xdef\@anim@btnbg{\@anim@@btnbg}% - \xdef\@anim@btnsize{\@anim@@btnsize}% - \xdef\@anim@poster{\@anim@@poster}% - \let\if@anim@controls=\if@anim@@controls% - \let\if@anim@loop=\if@anim@@loop% - \let\if@anim@autoplay=\if@anim@@autoplay% - \let\if@anim@autoresume=\if@anim@@autoresume% - \let\if@anim@autopause=\if@anim@@autopause% - \let\if@anim@palindrome=\if@anim@@palindrome% - \let\if@anim@step=\if@anim@@step% - \setboolean{@anim@pauseframes}{false}% -} - -%package options -\def\@anim@@bg{}% -\define@key{anim@pkg}{screenbg}{% - \gdef\@anim@@bg{#1}% -} -\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]{% - \setboolean{@anim@@controls}{#1}% -} -\newboolean{@anim@@loop} -\setboolean{@anim@@loop}{false}% -\define@key{anim@pkg}{loop}[true]{% - \setboolean{@anim@@loop}{#1}% -} -\newboolean{@anim@@autoplay} -\setboolean{@anim@@autoplay}{false} -\define@key{anim@pkg}{autoplay}[true]{% - \setboolean{@anim@@autoplay}{#1}% - \if@anim@@autoplay\setboolean{@anim@@autoresume}{false}\fi% -} -\newboolean{@anim@@autoresume} -\setboolean{@anim@@autoresume}{false} -\define@key{anim@pkg}{autoresume}[true]{% - \setboolean{@anim@@autoresume}{#1}% - \if@anim@@autoresume\setboolean{@anim@@autoplay}{false}\fi% -} -\newboolean{@anim@@autopause} -\setboolean{@anim@@autopause}{false} -\define@key{anim@pkg}{autopause}[true]{% - \setboolean{@anim@@autopause}{#1}% -} -\newboolean{@anim@@palindrome} -\setboolean{@anim@@palindrome}{false} -\define@key{anim@pkg}{palindrome}[true]{% - \setboolean{@anim@@palindrome}{#1}% -} -\gdef\@anim@@poster{first}% -\define@key{anim@pkg}{poster}[first]{% - \ifthenelse{% - \equal{#1}{first}\OR% - \equal{#1}{last}% - }{% - \gdef\@anim@@poster{#1}% - }{% - \gdef\@anim@@poster{none}% - }% -} -\newboolean{@anim@@step} -\setboolean{@anim@@step}{false} -\define@key{anim@pkg}{step}[true]{% - \setboolean{@anim@@step}{#1}% -} - -%process package options -\def\@anim@setpkgkeys#1{\setkeys{anim@pkg}{#1}} -\edef\@anim@pkgopts{{\@ptionlist{\@currname.\@currext}}} -\expandafter\@anim@setpkgkeys\@anim@pkgopts - -%JavaScript objects -%animation widget's PageOpen event -\ifpdf - \def\@anim@pojscript#1{% - \gdef\@anim@posterlast{last}% - \gdef\@anim@posternone{none}% - \immediate\pdfobj stream {\@anim@@pojscript{#1}}% - \@anim@newkey{a#1.pojscript}{\the\pdflastobj}% - } -\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@@pojscript#1{% #1: formatted (zero padded) animation number -% console.show(); -% console.clear(); - \if@anim@controls - \if@anim@step\else - %get references to button face icons `Play' & `Pause' - if (typeof(icn)=='undefined') { - var icn = new Object(); - icn.playLeft = this.getIcon('btnPlayLeft'); - icn.pauseLeft = this.getIcon('btnPauseLeft'); - icn.pauseRight = this.getIcon('btnPauseRight'); - icn.playRight = this.getIcon('btnPlayRight'); - } - \fi - \fi - %create animation object - if (typeof(a#1)=='undefined') { - var a#1 = new Object(); - a#1.wid = this.getField('anm@#1'); %reference to animation widget - \if@anim@step\else - a#1.dtDefault=1000/(1e-6+Math.abs(\@anim@getkeyval{a#1.fps}));% - a#1.dt = a#1.dtDefault; - \fi - %get references to all animation frames - a#1.frame = new Array(); - for (i=0; i<\@anim@getkeyval{a#1.frames}; i++){ - a#1.frame[i] = this.getIcon('a#1f' + util.printf('\%06d', i)); - } - %set default frame - \ifx\@anim@poster\@anim@posterlast - %holds index of the frame to be displayed - a#1.cntr = \@anim@getkeyval{a#1.frames} -1; - \else % first & none - a#1.cntr = 0; - \fi - \if@anim@controls %references to button widgets - a#1.endLeft = this.getField('btn@#1@EndLeft'); - a#1.stepLeft = this.getField('btn@#1@StepLeft'); - \if@anim@step\else - a#1.playPauseLeft = this.getField('btn@#1@PlayPauseLeft'); - a#1.playPauseRight = this.getField('btn@#1@PlayPauseRight'); - a#1.minus = this.getField('btn@#1@Minus'); - a#1.plus = this.getField('btn@#1@Plus'); - a#1.reset = this.getField('btn@#1@Reset'); - \fi - a#1.stepRight = this.getField('btn@#1@StepRight'); - a#1.endRight = this.getField('btn@#1@EndRight'); - \fi - %playing state and direction - \if@anim@step - \if@anim@palindrome - a#1.playsRight=true; - \fi - \else - a#1.isPlaying = false; - a#1.playsRight=true; - a#1.isPaused = false; - \fi - \if@anim@pauseframes - %this array takes the frame numbers at which to pause playback - a#1.pauseAt = new Array(); - \@anim@getkeyval{a#1.pauseat} - \fi - %actions - a#1.actnEndLeft = function () { - \if@anim@step\else - try{app.clearInterval(a#1_int);}catch(e){} - a#1.isPlaying = false; - a#1.isPaused = false; %because it has been explicitely stopped - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.playLeft); - a#1.playPauseRight.buttonSetIcon(icn.playRight); - \fi - \fi - a#1.cntr = 0; - a#1.wid.buttonSetIcon(a#1.frame[0]); - }; - a#1.actnEndRight = function () { - \if@anim@step\else - try{app.clearInterval(a#1_int);}catch(e){} - a#1.isPlaying = false; - a#1.isPaused = false; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.playLeft); - a#1.playPauseRight.buttonSetIcon(icn.playRight); - \fi - \fi - a#1.cntr = \@anim@getkeyval{a#1.frames} - 1; - a#1.wid.buttonSetIcon(a#1.frame[a#1.cntr]); - }; - \if@anim@palindrome - a#1.actnNext = function () { - \if@anim@step\else - \if@anim@pauseframes - if(a#1.isPlaying && a#1.pauseAt[a#1.cntr+1]){a#1.actnPause();} - \fi - \fi - if(a#1.cntr == \@anim@getkeyval{a#1.frames} - 1){ - \if@anim@step - a#1.playsRight=false; - \else - if(a#1.isPlaying){a#1.isPaused = true; a#1.actnPlayLeft();} - \fi - }else{ - a#1.cntr++; - a#1.wid.buttonSetIcon(a#1.frame[a#1.cntr]); - } - }; - a#1.actnPrev = function () { - \if@anim@step\else - \if@anim@pauseframes - if(a#1.isPlaying && a#1.pauseAt[a#1.cntr-1]){a#1.actnPause();} - \fi - \fi - if(a#1.cntr == 0){ - \if@anim@step - a#1.playsRight=true; - \else - if(a#1.isPlaying){a#1.isPaused = true; a#1.actnPlayRight();} - \fi - }else{ - a#1.cntr--; - a#1.wid.buttonSetIcon(a#1.frame[a#1.cntr]); - } - }; - \else - a#1.actnNext = function () { - \if@anim@step\else - \if@anim@pauseframes - if(a#1.isPlaying && a#1.pauseAt[a#1.cntr+1]){a#1.actnPause();} - \fi - \fi - if(a#1.cntr == \@anim@getkeyval{a#1.frames} - 1){ - \if@anim@step\else - \if@anim@loop - if(a#1.isPlaying){a#1.cntr = 0;} - \else - try{app.clearInterval(a#1_int);}catch(e){} - a#1.isPlaying = false; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.playLeft); - a#1.playPauseRight.buttonSetIcon(icn.playRight); - \fi - \fi - \fi - }else{a#1.cntr++;} - a#1.wid.buttonSetIcon(a#1.frame[a#1.cntr]); - }; - a#1.actnPrev = function () { - \if@anim@step\else - \if@anim@pauseframes - if(a#1.isPlaying && a#1.pauseAt[a#1.cntr-1]){a#1.actnPause();} - \fi - \fi - if(a#1.cntr == 0){ - \if@anim@step\else - \if@anim@loop - if(a#1.isPlaying){a#1.cntr = \@anim@getkeyval{a#1.frames} - 1;} - \else - try{app.clearInterval(a#1_int);}catch(e){} - a#1.isPlaying = false; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.playLeft); - a#1.playPauseRight.buttonSetIcon(icn.playRight); - \fi - \fi - \fi - }else{a#1.cntr--;} - a#1.wid.buttonSetIcon(a#1.frame[a#1.cntr]); - }; - \fi - \if@anim@step\else - a#1.actnPause = function () { - try{app.clearInterval(a#1_int);}catch(e){} - a#1.isPlaying = false; - a#1.isPaused = true; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.playLeft); - a#1.playPauseRight.buttonSetIcon(icn.playRight); - \fi - }; - a#1.actnPlayRight = function () { - try{app.clearInterval(a#1_int);}catch(e){} - if(!a#1.isPaused){a#1.actnEndLeft();} - a#1.playsRight = true; - a#1.isPlaying = true; - a#1.isPaused = false; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.pauseLeft); - a#1.playPauseRight.buttonSetIcon(icn.pauseRight); - \fi - a#1_int = app.setInterval('a#1.actnNext()', a#1.dt); - }; - a#1.actnPlayLeft = function () { - try{app.clearInterval(a#1_int);}catch(e){} - if(!a#1.isPaused){a#1.actnEndRight();} - a#1.playsRight = false; - a#1.isPlaying = true; - a#1.isPaused = false; - \if@anim@controls - a#1.playPauseLeft.buttonSetIcon(icn.pauseLeft); - a#1.playPauseRight.buttonSetIcon(icn.pauseRight); - \fi - a#1_int = app.setInterval('a#1.actnPrev()', a#1.dt); - }; - \if@anim@controls - a#1.actnIncr = function () { % speed up animation - try{app.clearInterval(a#1_int);}catch(e){} - a#1.dt /= 1.2; - if (a#1.isPlaying) { - if (a#1.playsRight) { - a#1_int = app.setInterval('a#1.actnNext()', a#1.dt); - }else{ - a#1_int = app.setInterval('a#1.actnPrev()', a#1.dt); - } - } - }; - a#1.actnDecr = function () { % slow down animation - a#1.dt *= 1.2; - try{app.clearInterval(a#1_int);}catch(e){} - if (a#1.isPlaying) { - if (a#1.playsRight) { - a#1_int = app.setInterval('a#1.actnNext()', a#1.dt); - }else{ - a#1_int = app.setInterval('a#1.actnPrev()', a#1.dt); - } - } - }; - a#1.actnReset = function () { % reset to default speed - a#1.dt = a#1.dtDefault; - try{app.clearInterval(a#1_int);}catch(e){} - if (a#1.isPlaying) { - if (a#1.playsRight) { - a#1_int = app.setInterval('a#1.actnNext()', a#1.dt); - }else{ - a#1_int = app.setInterval('a#1.actnPrev()', a#1.dt); - } - } - }; - \fi - \fi - } - \if@anim@step\else - \if@anim@autoplay - if (a#1.playsRight){ - a#1.actnPlayRight(); - }else{ - a#1.actnPlayLeft(); - } - \fi - \if@anim@autoresume - if(a#1.isPaused){ - if(a#1.playsRight){a#1.actnPlayRight();}else{a#1.actnPlayLeft();} - } - \fi - \fi -} -%other trigger events in the anim widget's AA dictionary -\def\@anim@otherjscript#1{% - \def\@anim@posterframe{last}% - \@anim@newkey{a#1.otherjscript}{% - /PC <>% - \if@anim@step\else% - /D <>% - \fi% - /U <>% - }% -} -%actions for control buttons -\def\@anim@upjscript#1#2{% - \def\@anim@action{#2}% - \def\@anim@EndLeft{EndLeft}% - \def\@anim@StepLeft{StepLeft}% - \def\@anim@PlayPauseLeft{PlayPauseLeft}% - \def\@anim@PlayPauseRight{PlayPauseRight}% - \def\@anim@StepRight{StepRight}% - \def\@anim@EndRight{EndRight}% - \def\@anim@Minus{Minus}% - \def\@anim@Reset{Reset}% - \def\@anim@Plus{Plus}% - \@anim@newkey{a#1.upjscript}{% - app.focusRect = false;% - \ifx\@anim@action\@anim@EndLeft - a#1.actnEndLeft();% - \else% - \ifx\@anim@action\@anim@StepLeft - \if@anim@step - a#1.actnPrev();% - \else - if(!a#1.isPlaying){a#1.isPaused = true; a#1.actnPrev();}% - \fi - \else% - \ifx\@anim@action\@anim@PlayPauseLeft - if(a#1.isPlaying) {a#1.actnPause();}% - else{a#1.actnPlayLeft();}% - \else% - \ifx\@anim@action\@anim@PlayPauseRight - if(a#1.isPlaying) {a#1.actnPause();}% - else{a#1.actnPlayRight();}% - \else% - \ifx\@anim@action\@anim@StepRight - \if@anim@step - a#1.actnNext();% - \else - if(!a#1.isPlaying){a#1.isPaused = true; a#1.actnNext();}% - \fi - \else% - \ifx\@anim@action\@anim@EndRight - a#1.actnEndRight();% - \else% - \ifx\@anim@action\@anim@Minus - a#1.actnDecr();% - \else% - \ifx\@anim@action\@anim@Reset - a#1.actnReset();% - \else% - \ifx\@anim@action\@anim@Plus - a#1.actnIncr();% - \fi\fi\fi\fi\fi\fi\fi\fi\fi% - }% -} diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty index 8b774b6a056..d2884911ab7 100644 --- a/Master/texmf-dist/tex/latex/animate/animate.sty +++ b/Master/texmf-dist/tex/latex/animate/animate.sty @@ -13,7 +13,7 @@ % Supports LaTeX->dvips->ps2pdf or pdfLaTeX workflows. \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{animate}[2008/04/01] +\ProvidesPackage{animate}[2008/05/09] %test for e-TeX \ifx\eTeXversion\@undefined% @@ -123,7 +123,7 @@ /OCGs \the\@anim@@ocgs\space 0 R /D << /BaseState/OFF /ON \the\@anim@@posterocgs\space 0 R - /Order \the\@anim@@ocgs\space 0 R +% /Order \the\@anim@@ocgs\space 0 R >> >> } @@ -157,7 +157,10 @@ >> /OCProperties << /OCGs {@anim@ocgs} - /D <> + /D << + /BaseState/OFF /ON {@anim@posterocgs} +% /Order {@anim@ocgs} + >> >> >> /PUT pdfmark } @@ -212,16 +215,20 @@ %#4: page number of multipage pdf \ifthenelse{\equal{\@anim@fileknown{#3}{#4}}{!}}{% new file to be embedded \@anim@filebox{#3}{#4}% store file in a box + \@anim@getsize{\@anim@box}% + \ifnum#2=0 + \@anim@scale% scale animation widget + \fi% \@anim@xinline{#1}{#2}{\@anim@box}{!}% delegate Form XObject creation \ifx\@anim@gropts\@empty\if@anim@multipdf\message{<#4>}\fi\fi% \@anim@makefileknown{#3}{#4}{\@anim@lastxform}% keep form xobject number }{% file known, re-use existing form xobject \ifnum#2=0 \@anim@filebox{#3}{#4}% for size determination of first frame - \@anim@xinline{#1}{#2}{\@anim@box}{\@anim@fileknown{#3}{#4}}% - \else% - \@anim@xinline{#1}{#2}{}{\@anim@fileknown{#3}{#4}}% + \@anim@getsize{\@anim@box}% + \@anim@scale% \fi% + \@anim@xinline{#1}{#2}{}{\@anim@fileknown{#3}{#4}}% }% } }{ @@ -229,15 +236,19 @@ %#4: not used \ifthenelse{\equal{\@anim@fileknown{#3}{#1}}{!}}{%file is new to current \@anim@filebox{#3}{}% store file in a box animation + \@anim@getsize{\@anim@box}% + \ifnum#2=0 + \@anim@scale% + \fi% \@anim@xinline{#1}{#2}{\@anim@box}{!}% delegate Form XObject creation \@anim@makefileknown{#3}{#1}{\@anim@lastxform}% keep form xobject ref }{%file already used in the current animation, re-use existing form xobject \ifnum#2=0 \@anim@filebox{#3}{}% for size determination of first frame - \@anim@xinline{#1}{#2}{\@anim@box}{\@anim@fileknown{#3}{#1}}% - \else% - \@anim@xinline{#1}{#2}{}{\@anim@fileknown{#3}{#1}}% + \@anim@getsize{\@anim@box}% + \@anim@scale% \fi% + \@anim@xinline{#1}{#2}{}{\@anim@fileknown{#3}{#1}}% }% } } @@ -249,18 +260,10 @@ %#1: @anim@num, #2:@anim@curframe@zb, #3: empty (`') or box number, %#4: `!' or form xobj identifier \def\@anim@xinline#1#2#3#4{% - \ifnum#2=0 %measuring the size of the box (first frame only) - \xdef\@anim@animwidth{\strip@pt\wd#3}% - \xdef\@anim@animheight{\strip@pt\ht#3}% - \xdef\@anim@animdepth{\strip@pt\dp#3}% - \setlength{\@anim@tmpdima}{\ht#3}% - \addtolength{\@anim@tmpdima}{\dp#3}% - \xdef\@anim@animtotalheight{\strip@pt\@anim@tmpdima}% - \fi% \ifthenelse{\equal{#4}{!}}{% %put graphics into XObject \global\setbox\@anim@box=\hbox{% - \raisebox{-\dp#3}[\@anim@animheight\p@][\@anim@animdepth\p@]{\box#3}% + \raisebox{-\dp#3}[\@anim@frameheight\p@][\@anim@framedepth\p@]{\box#3}% }% \immediate\pdfxform\@anim@box% \xdef\@anim@lastxform{\the\pdflastxform}% @@ -277,25 +280,17 @@ } \else \def\@anim@xinline#1#2#3#4{% - \ifnum#2=0 - \xdef\@anim@animwidth{\strip@pt\wd#3}% - \xdef\@anim@animheight{\strip@pt\ht#3}% - \xdef\@anim@animdepth{\strip@pt\dp#3}% - \setlength{\@anim@tmpdima}{\ht#3}% - \addtolength{\@anim@tmpdima}{\dp#3}% - \xdef\@anim@animtotalheight{\strip@pt\@anim@tmpdima}% - \fi% \ifthenelse{\equal{#4}{!}}{% \begingroup% \setlength{\unitlength}{1pt}% %mark BBox of the graphics \begin{picture}(0,0)% - \put(0,-\@anim@animdepth){% + \put(0,-\@anim@framedepth){% \special{ps: currentpoint /frame@lly exch def /frame@llx exch def }% }% - \put(\@anim@animwidth,\@anim@animheight){% + \put(\@anim@framewidth,\@anim@frameheight){% \special{ps: currentpoint /frame@ury exch def /frame@urx exch def }% @@ -387,54 +382,39 @@ } \fi -%create XObject which contains all frames of the sequence -\ifpdf - \def\@anim@makecontainer#1{% #1:@anim@num - \setlength{\unitlength}{1pt}% - \global\setbox\@anim@box=\hbox{% - \pdfliteral{q}% - \begin{picture}(\@anim@animwidth,\@anim@animtotalheight)% - \end{picture}% - \pdfliteral{Q\@anim@content}% - }% - \immediate\pdfxform resources {/XObject <<\@anim@xobject>>}\@anim@box% - \xdef\@anim@container{\the\pdflastxform\space 0 R}% - } -\else - \def\@anim@makecontainer#1{% - \special{ps: - mark /_objdef {@anim@xobj#1} /type/stream /OBJ pdfmark - mark {@anim@xobj#1} (\@anim@content) /PUT pdfmark - mark {@anim@xobj#1} << - /Type/XObject/Subtype/Form/FormType 1 - /BBox [frame@llx frame@lly frame@urx frame@ury] - /Resources <>>> - >> /PUT pdfmark - }% - } -\fi - -%intermediate container XObject, which represents one animation frame -%containing all the transparencies that compose the frame +%non-interactive Widget annotation, representing one frame of the animation \ifpdf \def\@anim@makeframe#1#2{% #1:@anim@num, #2:@anim@curframe@zb - \@anim@newocg{#1}{#2}% + %container XObject for all transparencies that compose the frame \setlength{\unitlength}{1pt}% \global\setbox\@anim@box=\hbox{% \pdfliteral{q}% - \begin{picture}(\@anim@animwidth,\@anim@animtotalheight)% + \begin{picture}(\@anim@framewidth,\@anim@frametotalheight)% \end{picture}% \pdfliteral{Q\@anim@getkeyval{frmcontent@#2}}% }% - \immediate\pdfxform attr {/OC\space\@anim@curocg} resources {% + \immediate\pdfxform resources {% /XObject <<\@anim@getkeyval{frmxobject@#2}>>}\@anim@box% - \xdef\@anim@xobject{\@anim@xobject\space /fr#2\space% - \the\pdflastxform\space 0 R}% - \xdef\@anim@content{\@anim@content\space q /fr#2\space Do Q}% + % + %frame widget, using the container XObject as its Appearance, + %associated with the just created OCG + \@anim@newocg{#1}{#2}% create new opt. content group (OCG) + \pdfannot + width \@anim@animwidth\p@ height \@anim@animheight\p@ + depth \@anim@animdepth\p@ + {% + /Subtype/Widget% + /OC \@anim@curocg + /F 4 % allow printing + /FT/Btn/Ff 65537% non-interactive push button + /BS <>% + /AP <>% + /T (anm#1fr#2)% + }% } \else \def\@anim@makeframe#1#2{% - \@anim@newocg{#1}{#2}% + %container XObject \special{ps: mark /_objdef {@anim@anmfrm@#1@#2} /type/stream /OBJ pdfmark mark {@anim@anmfrm@#1@#2} (\@anim@getkeyval{frmcontent@#2}) /PUT @@ -442,12 +422,39 @@ mark {@anim@anmfrm@#1@#2} << /Type/XObject/Subtype/Form/FormType 1 /BBox [frame@llx frame@lly frame@urx frame@ury] - /OC {@anim@ocg@#1@#2} /Resources <>>> >> /PUT pdfmark }% - \xdef\@anim@xobject{\@anim@xobject\space /fr#2\space {@anim@anmfrm@#1@#2}}% - \xdef\@anim@content{\@anim@content\space q /fr#2\space Do Q}% + % + %frame widget + \setlength{\unitlength}{1pt}% + \begin{picture}(0,0)% mark annotation rectangle + \put(0,-\@anim@animdepth){% + \special{ps: + currentpoint /wid@lly exch def /wid@llx exch def + }% + }% + \put(\@anim@animwidth,\@anim@animheight){% + \special{ps: + currentpoint /wid@ury exch def /wid@urx exch def + }% + }% + \end{picture}% + \@anim@newocg{#1}{#2}% + \special{ps: + mark + /_objdef {annot@\the\@anim@fieldnum}% + /Rect [wid@llx wid@lly wid@urx wid@ury]% + /Subtype/Widget% + /OC {@anim@ocg@#1@#2} + /F 4 + /FT/Btn/Ff 65537 + /BS <>% + /AP <>% + /T (anm#1fr#2)% + /ANN pdfmark + }% + \global\advance\@anim@fieldnum by \@ne% } \fi @@ -970,13 +977,6 @@ %draftbox from savebox \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 \setlength{\unitlength}{1pt}% \vtop{% draw boxes \offinterlineskip% @@ -1153,7 +1153,6 @@ \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}}% @@ -1192,9 +1191,24 @@ }% } +%measures natural dimensions of its box argument +\def\@anim@getsize#1{% + \xdef\@anim@framewidth{\strip@pt\wd#1}% + \xdef\@anim@frameheight{\strip@pt\ht#1}% + \xdef\@anim@framedepth{\strip@pt\dp#1}% + \setlength{\@anim@tmpdima}{\ht#1}% + \addtolength{\@anim@tmpdima}{\dp#1}% + \xdef\@anim@frametotalheight{\strip@pt\@anim@tmpdima}% +} + %calculates widget dimensions from natural ones, taking resizing options %into account -\def\@anim@rescale{% +\def\@anim@scale{% + %initial widget dimensions + \xdef\@anim@animwidth{\@anim@framewidth}% + \xdef\@anim@animheight{\@anim@frameheight}% + \xdef\@anim@animdepth{\@anim@framedepth}% + \xdef\@anim@animtotalheight{\@anim@frametotalheight}% %rescale height & depth \ifthenelse{% \NOT\equal{\@anim@boxheight}{}\AND% @@ -1278,10 +1292,10 @@ \xdef\@anim@animtotalheight{\strip@pt\@anim@tmpdima}% } -%creates animation widget +%interactive Widget annotation that is overlayed on the non-interactive +%frame Windgets \ifpdf \def\@anim@animwidget#1{% - \@anim@rescale% %create JavaScript objects \@anim@pojscript{#1}% to be executed on PO event \@anim@otherjscript{#1}% on other events in the AA dict @@ -1295,17 +1309,16 @@ depth \@anim@animdepth\p@ {% /Subtype/Widget% - /F 4% allow printing - /FT/Btn/Ff 65536% push button + /FT/Btn/Ff 65536% interactive push button /BS <>% /H/N% - /AP <>% - /T (anm@#1)% + /T (anm#1)% /AA <<% bind JavaScripts to trigger events /PO <>% \@anim@otherjscriptkey% >>% }% + %append widget reference to Fields array of the AcroForm dict \xdef\@anim@fields{\@anim@fields\space\the\pdflastannot\space 0 R}% \hbox to \@anim@animwidth\p@ {% \vrule width 0pt height \@anim@animheight\p@ depth \@anim@animdepth\p@% @@ -1314,7 +1327,6 @@ }% \else \def\@anim@animwidget#1{% - \@anim@rescale% \setlength{\unitlength}{1pt}% %mark annotation rectangle \begin{picture}(0,0)% @@ -1342,12 +1354,10 @@ /_objdef {annot@\the\@anim@fieldnum}% /Rect [wid@llx wid@lly wid@urx wid@ury]% /Subtype/Widget% - /F 4% /FT/Btn/Ff 65536% /BS <>% /H/N% - /AP <>% - /T (anm@#1)% + /T (anm#1)% /AA <<% /PO <>% \@anim@otherjscriptkey% @@ -1473,7 +1483,6 @@ \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}}% @@ -1580,9 +1589,8 @@ \the\@anim@end% \end{lrbox}% \ifnum\@anim@skipfram=0 - %determine size of graphics + \@anim@getsize{\@anim@box}%determine size of graphics \ifnum #2=0 - \xdef\@anim@animwidth{\strip@pt\wd\@anim@box}% \ifdim\wd\@anim@box=0pt% \PackageError{animate}{% Contents of first frame must not have zero width% @@ -1591,8 +1599,6 @@ immediately followed by \protect\newframe% }% \fi% - \xdef\@anim@animheight{\strip@pt\ht\@anim@box}% - \xdef\@anim@animdepth{\strip@pt\dp\@anim@box}% \ifdim\ht\@anim@box=0pt% \ifdim\dp\@anim@box=0pt% \PackageError{animate}{% @@ -1600,6 +1606,7 @@ }{}% \fi% \fi% + \@anim@scale% %draw draftbox according to dimensions of the first frame \if@anim@draft\@anim@draftbox{\@anim@box}\fi% \fi% @@ -1705,7 +1712,7 @@ \edef\@anim@trlst{% \the\@anim@curframe@zb.\@anim@getkeyval{trlst@\the\@anim@curframe@zb}}% \expandafter\@anim@findmult\@anim@trlst,:\@nil% - %build frame xobject + %insert frame Widget \@anim@makeframe{#1}{\the\@anim@curframe@zb}% %clean-up \expandafter\@anim@resetmult\@anim@trlst,:\@nil% @@ -2146,8 +2153,6 @@ \global\let\if@anim@draft=\if@anim@@draft% \gdef\@anim@posterocg{}% \gdef\@anim@properties{}% - \gdef\@anim@xobject{}% - \gdef\@anim@content{}% \setboolean{@anim@pauseframes}{false}% \gdef\@anim@pauseat{}% \setboolean{@anim@chfps}{false}% -- cgit v1.2.3