From 6bab4699285d78934a890262fa2a7a3db32b82bd Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 12 Jul 2017 23:20:07 +0900 Subject: add acroflex --- texmf-dist/doc/latex/acroflex/README.md | 30 + texmf-dist/doc/latex/acroflex/acroflex_man.pdf | Bin 0 -> 115222 bytes .../doc/latex/acroflex/examples/afcustom.def | 87 + texmf-dist/doc/latex/acroflex/examples/afgraph.pdf | Bin 0 -> 465359 bytes texmf-dist/doc/latex/acroflex/examples/afgraph.tex | 412 + .../doc/latex/acroflex/examples/afgraph_shaded.tex | 107 + texmf-dist/doc/latex/acroflex/examples/aflogo.eps | 8375 ++++++++++++++++++++ texmf-dist/doc/latex/acroflex/examples/aflogo.tex | 42 + .../doc/latex/acroflex/examples/transf_grphs.pdf | Bin 0 -> 448762 bytes .../doc/latex/acroflex/examples/transf_grphs.tex | 296 + texmf-dist/source/latex/acroflex/acroflex.dtx | 1951 +++++ texmf-dist/source/latex/acroflex/acroflex.ins | 60 + .../source/latex/acroflex/doc/acroflex_man.tex | 1073 +++ texmf-dist/source/latex/acroflex/swf/AcroFleX.swf | Bin 0 -> 267347 bytes texmf-dist/tex/latex/acroflex/acroflex.cfg | 10 + texmf-dist/tex/latex/acroflex/acroflex.sty | 1109 +++ texmf-dist/tex/latex/acroflex/afcustom_de.def | 79 + texmf-dist/tex/latex/acroflex/afcustom_us.def | 87 + tlpkg/tlpsrc/acroflex.tlpsrc | 0 19 files changed, 13718 insertions(+) create mode 100644 texmf-dist/doc/latex/acroflex/README.md create mode 100644 texmf-dist/doc/latex/acroflex/acroflex_man.pdf create mode 100644 texmf-dist/doc/latex/acroflex/examples/afcustom.def create mode 100644 texmf-dist/doc/latex/acroflex/examples/afgraph.pdf create mode 100644 texmf-dist/doc/latex/acroflex/examples/afgraph.tex create mode 100644 texmf-dist/doc/latex/acroflex/examples/afgraph_shaded.tex create mode 100644 texmf-dist/doc/latex/acroflex/examples/aflogo.eps create mode 100644 texmf-dist/doc/latex/acroflex/examples/aflogo.tex create mode 100644 texmf-dist/doc/latex/acroflex/examples/transf_grphs.pdf create mode 100644 texmf-dist/doc/latex/acroflex/examples/transf_grphs.tex create mode 100644 texmf-dist/source/latex/acroflex/acroflex.dtx create mode 100644 texmf-dist/source/latex/acroflex/acroflex.ins create mode 100644 texmf-dist/source/latex/acroflex/doc/acroflex_man.tex create mode 100644 texmf-dist/source/latex/acroflex/swf/AcroFleX.swf create mode 100644 texmf-dist/tex/latex/acroflex/acroflex.cfg create mode 100644 texmf-dist/tex/latex/acroflex/acroflex.sty create mode 100644 texmf-dist/tex/latex/acroflex/afcustom_de.def create mode 100644 texmf-dist/tex/latex/acroflex/afcustom_us.def create mode 100644 tlpkg/tlpsrc/acroflex.tlpsrc diff --git a/texmf-dist/doc/latex/acroflex/README.md b/texmf-dist/doc/latex/acroflex/README.md new file mode 100644 index 00000000..0d5e7f52 --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/README.md @@ -0,0 +1,30 @@ +The AcroFleX Package +Author: D. P. Story +Dated: 2016/08/29 + +The acroflex package is part of the AeB Pro family of packages. +It is a package that creates a graphing screen using the +rmannot package. The user can type in functions and graph them. +A graphing screen can be populated with pre-packaged functions for +the user the scrutinize and interact with. The package can graph +functions of a single variable x, a pair of parametric equations that +are functions of t, and a polar function of t. + +The graphing screen is a rich media annotation what uses a specially +developed SWF file, called the AcroFLeX Graphing widget. This package +takes advantage of rich media annotations, which is a version 9 feature +of Acrobat. This package requires Acrobat Pro and Distiller version 9. +The user needs to use Adobe Reader 9.0 in order to obtain the graphing +functionality. + +Further description and examples may be found at the acroflex home page at +http://www.math.uakron.edu/~dpstory/acroflex.html + +Let me know if there are problems or suggested features. e-mail +me at dpstory@uakron.edu or dpstory@acrotex.net + +Now, I simply must get back to my retirement. + +D. P. Story +dpstory@uakron.edu +2016/01/30 diff --git a/texmf-dist/doc/latex/acroflex/acroflex_man.pdf b/texmf-dist/doc/latex/acroflex/acroflex_man.pdf new file mode 100644 index 00000000..7edb5a4c Binary files /dev/null and b/texmf-dist/doc/latex/acroflex/acroflex_man.pdf differ diff --git a/texmf-dist/doc/latex/acroflex/examples/afcustom.def b/texmf-dist/doc/latex/acroflex/examples/afcustom.def new file mode 100644 index 00000000..b45ed17c --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/afcustom.def @@ -0,0 +1,87 @@ +% +% AcroFleX (language) customization definition file +% Dr. D. P. Story +% http://www.acrotex.net +% +% Remove the \endinput command below, and redefine each as desired. For languages +% that require special accented characters, the unicode option of hyperref is needed +% for the tooltips. See the AcroFleX manual for more details. +% +\endinput +% +% ------------------------------------------------------------------; +% These text commands are tooltip messages for the various controls ; +% ------------------------------------------------------------------; +% +% For special accented characters, try entering them directly from your keyboard; +% if that fails, use the unicode option of web (which is just passed to hyperrerf), +% then enter the accented characters using latex commands, like \"{u} for u-umlaut. +% +\tticonFloatGraphScreen{Click to view graphing screen, + click again to hide graphing screen.} +% +% This message attempts to format the tooltip as an enumerated list. +% +\ttfuncInputField{Enter any of the following for expressions:\r + \space\space1. A function of x of the form f(x);\r + \space\space2. A polar function of t of the form f(t);\r + \space\space3. A set of parametric functions of t of the form f(t);g(t)\r + \space\space\space\space\space(separated by a semi-colon);\r + \space\space4. A list of points, (a1,b1);(a2,b2);...;(an,bn)\r + \space\space\space\space\space(separated by semi-colons).} +\ttgraphBtn{Press to graph the function} +\ttgraphClrBtn{Click to clear graph, shift-click to deactivate the + graphing screen} +% +\ttfunctionSelect{Enter a function on \afcurvei1--\afcurvei4, or + a list of points on \afploti1--\afploti4.} +\ttsavedelSelBtn{Click to save current function to list, shift-click + to delete the current function from list} +% +\ttdomMin{Enter the minimum value for the variable x} +\ttdomMax{Enter the maximum value for the variable x} +\ttrngMin{Enter the minimum value for the variable y} +\ttrngMax{Enter the maximum value for the variable y} +\ttdomMinP{Enter the minimum value for the variable t} +\ttdomMaxP{Enter the maximum value for the variable t} +% +\ttnumPoints{Enter the number of points to plot} +\ttamtShift{Enter the amount to shift, horizontally or vertically} +\ttzoomInOut{Click to zoom out, shift-click to zoom in} +% +% ------------------------------------------------------------------; +% Below are some text macros used in creating error messages. They ; +% may be redefined into better English, or another language. ; +% ------------------------------------------------------------------; +% +% \defineJSStr is a new command (defined in eforms) that enables you +% to enter unicode, for example, \u00FC is \"{u}. Also within the +% argument string, you can use \r and \t to format your lines as +% needed. Double back slash \\ is converted into single backslash \, +% so for example, \\defineJSStr appears in the dialog box as +% \defineJSStr. The string argument is immediately expanded, so a +% command like \af@defaultNumPoints (in \af@zeroNumberMsg below) gets +% expanded at definition time. Use \protect to delay the expansion +% until the tex compiler finally expands the JS command string. +% +\defineJSStr{\af@badNumberMsg}{% + The value input does not appear to be a number, please enter a + number, or an expression that evaluates to a number.} +\defineJSStr{\af@negNumberMsg}{% + The number of points is a positive integer, changing to a + positive integer.} +\defineJSStr{\af@zeroNumberMsg}{% + The number of points is a positive integer, changing to the + default value of \af@defaultNumPoints.} +\defineJSStr{\af@negShiftMsg}{% + The amount of shift is a positive number, changing to a positive + number.} +\defineJSStr{\af@zeroShiftMsg}{% + The amount of shift is a positive number, changing to the + default value of 1.} +\defineJSStr{\af@saveDelSelAlerti}{% + There is nothing in the function input text field.} +\defineJSStr{\af@saveDelSelAlertii}{% + You have not defined any points to plot} +\defineJSStr{\af@graphBtnAlerti}{Undefined graph types} +\endinput diff --git a/texmf-dist/doc/latex/acroflex/examples/afgraph.pdf b/texmf-dist/doc/latex/acroflex/examples/afgraph.pdf new file mode 100644 index 00000000..73d7eb2b Binary files /dev/null and b/texmf-dist/doc/latex/acroflex/examples/afgraph.pdf differ diff --git a/texmf-dist/doc/latex/acroflex/examples/afgraph.tex b/texmf-dist/doc/latex/acroflex/examples/afgraph.tex new file mode 100644 index 00000000..62d8be72 --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/afgraph.tex @@ -0,0 +1,412 @@ +\documentclass{article} +\usepackage{amsmath} +\usepackage[% + web={pro,tight,usesf}, + eforms,exerquiz,dljslib={ImplMulti}, + graphicxsp={showembeds} +]{aeb_pro} +\usepackage{acroflex} +\usepackage{wrapfig} + +\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom +\screensize{5in}{5.5in} % height, width dimensions + + +\DeclareDocInfo +{ + title=\texorpdfstring{{\AcroFLeX}}{AcroFleX} Graphing System, + author=D. P. Story, + university=Acro\negthinspace\TeX.Net, + email=dpstory@acrotex.net, + subject=Demo of the acroflex and the rmannot package, + keywords={Adobe Acrobat, JavaScript, Adobe FLEX 3, ActionScript}, + talksite=\url{http://www.acrotex.net}, + talkdate={July 2008}, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL=http://www.acrotex.net +} +\talkdateLabel{Published:} + +\setWindowOptions{showtitle} + +\requiredVersionMsg{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiredVersionMsgRedirect{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiresVersion[warnonly]{9} + +\def\AcroTeX{Acro\!\TeX} +\def\myURL{http://www.math.uakron.edu/\string~dpstory} +% +% The following definitions are for the rmannot package. +% The \saveNamedPath associates the name AcroAd with the +% path to a Flash animation, Acro_Advertiser.swf. +% The two \makePoster definitions are for the posters of the +% rich media annotations. The first for the animation on page 1 +% and the second for all the AcroFlex graphing screens. +\newcommand{\myRMFiles}{C:/Users/Public/Documents/My TeX Files/% + tex/latex/aeb/aebpro/rmannot/RMfiles} +\saveNamedPath{AcroAd}{\myRMFiles/Acro_Advertiser.swf} +% +% See the rmannot documentation. You can create your own +% poster graphic and declare it in the preamble. +% +\makePoster[hiresbb]{aflogo}{aflogo} +\makePoster[hiresbb]{AcroAd_poster}{AcroAd_poster} + +\parindent=0pt +\pagestyle{empty} %\previewtrue +\def\graphAndControls{\kern0pt\noindent + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\\[1ex] + \makebox[\hScreenGraph][l]{% + \savedelSelBtn[\textSize{7}\CA{S}]{9bp}{11bp}\kern1bp + \functionSelect{50bp}{11bp}\hfill + \funcInputField{\hScreenGraph-50bp-6bp-9bp}{11bp}% + }\\[1ex] + \makebox[\hScreenGraph][c]{\scriptsize + \graphBtn[\textSize{7}]{}{9bp}\kern1pt + \graphClrBtn[\textSize{7}]{}{9bp}\hfill + \hShiftL{\raisebox{1bp}{\reflectbox{\ding{220}}}}\,% + \vShiftU{\raisebox{1bp}{\rotatebox{90}{\ding{220}}}}\,\,% + \amtShift[\textSize{7}]{12bp}{9bp}\,\,% + \vShiftD{\raisebox{1bp}{\rotatebox[origin=c]{-90}{\ding{220}}}} + \hShiftR{\raisebox{1bp}{\ding{220}}}\enspace + \hfill\zoomInOut[\textSize{7}]{}{9bp}% + }\\[1pt]% + \makebox[\hScreenGraph][l]{\scriptsize + $x = $ \strut\domMin[\textSize{7}]{36bp}{9bp}\ldots + \domMax[\textSize{7}]{36bp}{9bp}\hfill + $n = $\numPoints[\textSize{7}]{16bp}{9bp} + }\\[1pt]% + \makebox[\hScreenGraph][l]{\scriptsize + $y = $ \rngMin[\textSize{7}]{36bp}{9bp}\ldots + \rngMax[\textSize{7}]{36bp}{9bp}% + }\\[1pt]%% + \makebox[\hScreenGraph][l]{\scriptsize + $t = $ \strut\domMinP[\textSize{7}]{36bp}{9bp}\ldots + \domMaxP[\textSize{7}]{36bp}{9bp}% + } +\par +} +% +% Display an advertisement on the opening page through the +% \optionalPageMatter command. +% +\optionalPageMatter{% +\begin{center} +\begin{minipage}{.7\linewidth} + \resizebox{\linewidth}{!}{% + \rmAnnot[poster=AcroAd_poster,enabled=pageopen]{612bp}{265bp}{AcroAd}}% +\end{minipage} +\end{center} +} + +\begin{document} + +\maketitle + +\parskip6pt +\begin{center} + \large\bfseries\color{blue} What is {\AcroFLeX}? +\end{center} + +The word \textbf{\AcroFLeX} is meant to convey a merging of two computer technologies: + \begin{itemize} + \item \textbf{Acro}: connotes both \textbf{Adobe Acrobat} (\textbf{Adobe Reader}) + and \textbf{{Acro\negthinspace\TeX}} (as in the + \textbf{{Acro\negthinspace\TeX} eDucation Bundle} or, just \textbf{AeB}). + \item \textbf{F\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@}: connotes + \textbf{Adobe FLEX 3}. FLEX 3 is used to create SWF files to interact with the user. + In the case of graphing, plotting information is passed from Acrobat, via JavaScript, + to the Flash widget. ActionScript takes the data, plots the points provided, and + connects them with a smooth curve. + \end{itemize} + +\textbf{\textcolor{blue}{{\AcroFLeX} by Acro\!\TeX:}} This graphing +system and this demonstration file were developed by D.~P. Story +using the \href{http://www.ctan.org/pkg/acrotex}{{Acro\!\TeX} eDucation +Bundle}, \href{http://www.adobe.com/products/acrobat/} +{$\text{Adobe}^{\text{\tiny\circledR}}$ +$\text{Acrobat}^{\text{\tiny\circledR}}$~9 Pro}, and +\href{http://www.adobe.com/products/flex/}{$\text{Adobe}^{\text{\tiny\circledR}}$ +$\text{FLEX}^{\text{\tiny TM}}$~3}. + +Acrobat 9 Pro introduces the rich media annotation that plays FLV +movies and SWF files natively. Acrobat also provides a scripting +bridge between JavaScript for Acrobat, and ActionScript, the +scripting language of Flash player. This bridge enables the PDF and +the Flash widget, embedded in the rich media annotation, to +communicate. The scripting bridge opens up wonderful opportunities +for application to the education sector. The graphing of {\AcroFLeX} +is one such application of the new PDF-Flash connection to +education. + +\textbf{{\AcroFLeX}} uses the commercial product Adobe FLEX +Builder~3 and FLEX~3 SDK to produce Flash widgets, and the AeB to +create PDF documents with appropriate JavaScript to communicate with +the Flash widget. FLEX Builder~3 is currently free for students and +educators, the FLEX 3 SDK is free to all. + +\newpage +\parskip0pt + +% Basic parameters. These are the graphing screen dimensions you wish +% for the AcroFleX graphing widget, and the \graphName is the base name used by +% all the supporting components to the graphing screen. + +\dimScreenGraph{186bp}{186bp*3/4} +\graphName{graph1} + +\begin{center}\bfseries\Large\color{blue} + {\AcroFLeX} by {\AcroTeX} +\end{center} + +\medskip +The first goal in {\AcroFLeX} development was to build an interactive graphing +screen educators could use in their PDFs. +\medskip + +\begin{minipage}[t]{\hScreenGraph + 10bp} +% +% Insert the \graphScreen with all possible controls. Plot data entered by the +% user is interactive mode. +\graphAndControls +\medskip +% +% Pass plot data to this graphing screen, and allow user to interact with it. +% +\makebox[\linewidth][c]{\textbf{Populate Mode}} +Parametric Equations: \sgraphLink{xInterval={[-1,1]},yInterval={[-1,1]},tInterval={[0,2*pi]}, + points=40,populate=true}{cos(t);sin(t)}{$x=\cos(t)$; $y=\sin(t)$}\\[1ex] +Polar Function: \sgraphLink{type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2]},tInterval={[0,2*pi]}, + points=60,populate=true}{1+sin(t)}{$r = 1 + \sin(\theta)$ } +\end{minipage}\hfill +\begin{minipage}[t]{\linewidth - \hScreenGraph - 10bp}\small\par +\textbf{\textcolor{red}{Instructions:}} This graphing system can graph +a function of $x$, a pair of parametric functions of $t$, +or a polar function of $t$. +\begin{questions} + \item For a function of $x$, enter an algebraic expression to be graphed, e.g., + \verb!3x^2-1!, \verb!4sin(2x)!, \verb!ln(x)!, + \verb!e^(x+1)!. For parametric equations, two functions of + $t$ separated by a semicolon (;) e.g., + \texttt{cos(t);sin(t)}. For a polar function, enter a single + expression that is a function of $t$, e.g., + \texttt{1+sin(t)}. + \item Set the graph viewing window: The range of the horizontal + axis ($x$-axis) and range of the vertical axis ($y$-axis). + For parametric plotting, set the range of the $t$ variable. + \item Enter the number of points, $n$, to plot. + \item Click the \textsf{Graph It!} button. + \item Shift the viewing window horizontally or vertical; + or zoom in or out. + \item Click \texttt{Clear} to clear the plot; use + \textsf{shift-click} to deactivate the graphing screen. +\end{questions} +\end{minipage} + +\def\DomX{[0,2pi]}\def\DomY{[-1,1+.2]} + +%\end{document} + +\newpage +\graphName{graph2} +\begin{center} + {\large\textbf{\textcolor{blue}{Graphing Predefined Functions}}}\\[3ex] + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip + \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}} +\end{center} + +\begin{center} + \rule{.67\linewidth}{.4pt} +\end{center} +The document author, that's you, can prepare some functions for the student to view: +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$}, +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$}, +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, and +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}. +All functions are graphed over the interval +$[\,0, 2\pi\,]$. Let's view a graph with a vertical asymptote, shall we? +Try \sgraphLink{xInterval={[.5,1.5]},yInterval={[-20,20]},points=200}{1/(x-1)}{$y = 1/(x-1)$} +and \sgraphLink{xInterval={[0,2]},yInterval={[0,20]},points=200}{1/(x-1)^2}{$y = 1/(x-1)^2$}. + +\smallskip +\begin{center} + \rule{.67\linewidth}{.4pt} +\end{center} +\begin{shortquiz} +What type of symmetry does the \sgraphLink{xInterval={[-pi,pi]},yInterval={[-1,1]}, +points=40}{sin(x)}{function}, graphed above, have? +\begin{answers}{3} +\Ans0 $x$-axis symmetry & \Ans0 $y$-axis symmetry & \Ans1 origin symmetry +\end{answers} +\end{shortquiz} + +\newpage +\graphName{graph3} + +\begin{center} + {\large\textbf{\textcolor{blue}{Multiple Curves and Plots}}}\\[3ex] + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip + \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}} +\end{center} + +\smallskip +\begin{center} + \rule{.67\linewidth}{.4pt} +\end{center} + +Plot multiple curves using predefined functions: +\begin{itemize} + \item \sgraphLink{graph=c1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$}, + \sgraphLink{graph=c2,xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$}, + \sgraphLink{graph=c3,xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, + \sgraphLink{graph=c4,xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}. +\end{itemize} + +Let's plot some points: +\begin{itemize} + +\item Points on \sgraphLink{graph=p1,xInterval={\DomX},yInterval={\DomY}}{(0,sin(0));(pi/2,sin(pi/2));(pi,sin(pi));(3pi/2,sin(3pi/2));(2pi,sin(2pi))}{$\sin(x)$} +(clear the graphing screen, click on this \sgraphLink{graph=c1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$} +link, then click on the plotted points link) + + +\item Plot \sgraphLink{graph=p2,xInterval={\DomX},yInterval={\DomY}}{(1,1);(2,-1);(4,1/3);(3,-1/2)} + {$(1,1); (2,-1); (4,1/3); (3,-1/2)$} + +\item Plot \sgraphLink{graph=c2,connectwith=segment,xInterval={\DomX},yInterval={\DomY}}{(2,0);(1,-1);(3,.5);(4,1);(6,0)} + {$(2,0);(1,-1);(3,.5);(4,1);(6,0)$} + +\end{itemize} + +\newpage + +\graphName{graph4} + +\begin{center} + {\large\textbf{\textcolor{blue}{Graphing in a Floating Window}}} +\end{center} + +\begin{wrapfigure}[3]{l}{40bp}% +\vspace{-\baselineskip} +\iconFloatGraphScreen[poster=aflogo]{40bp}{!} +\end{wrapfigure}% +On this page, we take a different approach, by graphing functions +in a \textsl{floating window}. This might be appropriate for graphing +preset functions. Now let's copy and paste some of the previous text +here: The document author, that's you, can prepare some functions +for the student to view: +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$}, +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$}, +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, and +\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}. +All functions are graphed over the interval +$[\,0, 2\pi\,]$. Let's view a graph with a vertical asymptote, shall we? +Try \sgraphLink{xInterval={[.5,1.5]},yInterval={[-20,20]},points=200}{1/(x-1)}{$y = 1/(x-1)$} +and \sgraphLink{xInterval={[0,2]},yInterval={[0,20]},points=200}{1/(x-1)^2}{$y = 1/(x-1)^2$}. + + +\makebox[\linewidth][c]{\rule{.67\linewidth}{.4pt}} + +\parskip6pt + +\paragraph*{Controlling the Floating Window.} Clicking a graphing +link will open the floating window and graph the defined function. +Clicking the {\AcroFLeX} icon closes the window. The window itself +has controls. The clicking the upper-right corner closes the window. +Use the lower-left corner to resize the graph window (click and drag +the lower-left corner). Click and drag anywhere else on the boundary +will move the window. + +\makebox[\linewidth][c]{\rule{.67\linewidth}{.4pt}} + +The following quiz integrates the quiz/shortquiz environment with +the {\AcroFLeX} Graphing routines, and uses \texttt{\string\defineGraphJS} +to graph the input of the user. + +\begin{oQuestion}{afGraphQuiz} +\defineGraphJS{graph=c3,xInterval={[-1,3]},yInterval={[-1,9]}, + noquotes,points=40}{event.value}{\myGraph}% +\textbf{\textcolor{red}{Question}} Find the equation of the line +tangent to the \sgraphLink{xInterval={[-1,3]}, +yInterval={[-1,9]},points=40}{2x^2}{graph of $f(x) = 2x^2 $} at the +\sgraphLink{graph=p1,xInterval={[-1,3]},yInterval={[-1,9]}}{(1,2)} + {point $ (1,2) $}. \RespBoxMath[% + \AddAAKeystroke{if (retn != null){\r\myGraph}}] + {4x-2}{4}{.0001}{[-1,3]}\hfill\CorrAnsButton{4x-2}\kern1bp\sqClearButton + +\end{oQuestion} + +\defineGraphJS{graph=c1,wait,xInterval={\DomX},yInterval={\DomY}, + points=40}{sin(x)}{\mySineCurve} +\defineGraphJS{graph=p1,wait,xInterval={\DomX},yInterval={\DomY}} + {(0,sin(0));(pi/2,sin(pi/2));(pi,sin(pi));(3pi/2,sin(3pi/2)); + (2pi,sin(2pi))}{\mySinePoints} + +Below is another example of the use of +\texttt{\string\defineGraphJS}. A link is created with two calls to +the graphing routines, one to plot a sine curve, the other to plot +points on that curve. +\setLinkText[\A{\JS{% + \clearGraphJS\r + \mySineCurve\r + \mySinePoints +}}]{Consider the sine function, and indicated points}% + + +\newpage + +\graphName{graph5} + +\begin{center} + {\large\textbf{\textcolor{blue}{Curves with filled area}}}\\[3ex] + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip + \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}} +\end{center} + +Plot multiple curves using predefined functions:\\ +\begin{minipage}[t]{.5\linewidth-10pt}\kern0pt +\begin{itemize} + \item \sgraphLink{graph=a1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$}, + \sgraphLink{graph=a2,xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$}, + \sgraphLink{graph=a3,xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, + \sgraphLink{graph=a4,xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}. + \item Parametric Equations + \begin{itemize} + \item \sgraphLink{graph=a1,xInterval={[-1,1]},yInterval={[-1,1]},tInterval={[0,2*pi]}, + points=40}{cos(t);sin(t)}{$x=\cos(t)$; $y=\sin(t)$} + \item \sgraphLink{graph=a3,xInterval={[0,4]},yInterval={[-2,2]},tInterval={[-2,2]}, + points=40}{t^2;t}{$x=t^2$; $y=t$} + \end{itemize} +\end{itemize} +\end{minipage}\hfill\begin{minipage}[t]{.5\linewidth-10pt}\kern0pt +\begin{itemize} + \item Polar Functions + \begin{itemize} + \item \sgraphLink{graph=a2,type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2.3]},tInterval={[0,2pi]}, + points=60}{1+sin(t)}{$ r = 1 + \sin(\theta) $ } + \item \sgraphLink{graph=a4,type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2.3]},tInterval={[0,2pi]}, + points=60}{1+1.25sin(t)}{$r = 1 + 1.25\sin(\theta)$ } + \end{itemize} +\end{itemize} +\end{minipage} + +\begin{oQuestion}{afAreaQuiz} +\textbf{\textcolor{red}{Question}} Find the area of the region +\emph{below} the graph of \sgraphLink{graph=a1,xInterval={[0,pi/2]}, +yInterval={[0,1.1]}, points=40}{cos(x)}{$ f(x) = \cos(x) $} and +\emph{above} the graph of \sgraphLink{graph=a2, +xInterval={[0,pi/2]}, yInterval={[0,1.1]}, points=40}{sin(x)}{$ g(x) += \sin(x) $}, +as shown in the graph screen above.\\[1ex] +\RespBoxMath{sqrt(2)-1}{1}{.0001}{[0,1]}\hfill\CorrAnsButton{sqrt(2)-1}\kern1bp\sqClearButton +\end{oQuestion} + + +\end{document} diff --git a/texmf-dist/doc/latex/acroflex/examples/afgraph_shaded.tex b/texmf-dist/doc/latex/acroflex/examples/afgraph_shaded.tex new file mode 100644 index 00000000..c2ca0f29 --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/afgraph_shaded.tex @@ -0,0 +1,107 @@ +\documentclass{article} +\usepackage{amsmath} +\usepackage[% +% driver=dvips, + web={pro,tight,usesf}, + eforms,exerquiz,dljslib={ImplMulti}, + graphicxsp={showembeds} +]{aeb_pro} +\usepackage{rmannot} +\usepackage{acroflex} + +\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom +\screensize{5in}{5.5in} % height, width dimensions + +\DeclareDocInfo +{ + title=\texorpdfstring{{\AcroFLeX}}{AcroFleX} Graphing System + \texorpdfstring{\\[1ex]}{: }Graphing a Subinterval, + author=D. P. Story, + university=Acro\negthinspace\TeX.Net, + email=dpstory@acrotex.net, + subject=Demo of the acroflex and the rmannot package, + keywords={Adobe Acrobat, JavaScript, Adobe FLEX 3, ActionScript}, + talksite=\url{http://www.acrotex.net}, + talkdate={July 2008}, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL=http://www.acrotex.net +} +\talkdateLabel{Published:} + +\setWindowOptions{showtitle} + +\requiredVersionMsg{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiredVersionMsgRedirect{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiresVersion[warnonly]{9} + +\def\AcroTeX{Acro\!\TeX} +\def\myURL{http://www.math.uakron.edu/\string~dpstory} +% +% The following definitions are for the rmannot package. +% The \saveNamedPath associates the name AcroAd with the +% path to a Flash animation, Acro_Advertiser.swf. +% The two \makePoster definitions are for the posters of the +% rich media annotations. The first for the animation on page 1 +% and the second for all the AcroFlex graphing screens. +\newcommand{\myRMFiles}{C:/Users/Public/Documents/My TeX Files/% + tex/latex/aeb/aebpro/rmannot/RMfiles} +%\newcommand{\myRMFiles}{C:/AcroTeX/acrotex/aebpro/rmannot/RMfiles} +\saveNamedPath{AcroAd}{\myRMFiles/Acro_Advertiser.swf} +%\saveNamedPath{AcroAd}{Acro_Advertiser.swf} +% +% See the rmannot documentation. You can create your own +% poster graphic and declare it in the preamble. +% +\makePoster[hiresbb]{aflogo}{aflogo} + +\parindent=0pt +\pagestyle{empty} + +\optionalPageMatter{% +\begin{center} +\begin{minipage}{.7\linewidth} + \resizebox{\linewidth}{!}{% + \rmAnnot[poster=AcroAd_poster,enabled=pageopen]{612bp}{265bp}{AcroAd}}% +\end{minipage} +\end{center} +} + + + +\begin{document} + +\maketitle + +\dimScreenGraph{186bp}{186bp*3/4} +\graphName{graph1} + +\begin{center} + {\large\textbf{\textcolor{blue}{Curves with filled area}}}\\[3ex] + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip + \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}} +\end{center} + + +% I've added a new parameter xPlot, the value is an interval of numbers over which +% the graph is to be plotted. See the documentation in acroflex.dtx for a little more +% detail. xInterval={[-1.6,1.6]}, +\defineGraphJS{graph=c1,wait,xInterval={[-1.6,1.6]},yInterval={[-.5,2]},points=40}{x^2}{\myParabola} +\defineGraphJS{graph=a1,wait,xPlot={[-1,0]},xInterval={[-1.6,1.6]},yInterval={[-.5,2]},points=40}{x^2}{\myShadedParabola} +\defineGraphJS{graph=a2,wait,xPlot={[-1,0]},xInterval={[-1.6,1.6]},yInterval={[-.5,2]},points=4}{1}{\myHLine} + +View a shaded curve, and be +\setLinkText[\A{\JS{% + \clearGraphJS\r + \myShadedParabola\r + \myHLine\r + \myParabola\r +}}]{amazed!}% + +\end{document} diff --git a/texmf-dist/doc/latex/acroflex/examples/aflogo.eps b/texmf-dist/doc/latex/acroflex/examples/aflogo.eps new file mode 100644 index 00000000..789100d9 --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/aflogo.eps @@ -0,0 +1,8375 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: Windows Roman +%%Title: aflogo.pdf +%%Creator: Adobe Acrobat 9.0.0 +%%For: Donald Story +%%CreationDate: 06/09/2008, 10:48:11 AM +%%BoundingBox: 0 0 186 150 +%%HiResBoundingBox: 0 0 186 150 +%%CropBox: 0 0 186 150 +%%LanguageLevel: 2 +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentNeededFeatures: (atend) +%%DocumentSuppliedFeatures: (atend) +%%DocumentData: Clean7Bit +%%Pages: (atend) +%%DocumentCustomColors: (atend) +%%EndComments +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 75 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/ReadBypdfmark_5_string +{ + 2 dict begin + /makerString exch def string/tmpString exch def + { + currentfile tmpString readline not{pop exit}if + makerString anchorsearch + { + pop pop cleartomark exit + }{ + 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5 + }ifelse + }loop + end +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/lmt{ + dup 2 index le{exch}if pop dup 2 index ge{exch}if pop +}bdf +/int{ + dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + product(HP Color LaserJet 2605)anchorsearch{ + pop pop pop + }{ + pop + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/capture_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put + }if + }if +}def +/restore_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup known{ + Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put + Adobe_AGM_Core/save_mysetup undef + }if + }if + }if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 +%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. +%%Version: 2.31 0 +10 dict begin +/Adobe_CoolType_Passthru currentdict def +/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def +Adobe_CoolType_Core_Defined + {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} +if +userdict/Adobe_CoolType_Core 70 dict dup begin put +/Adobe_CoolType_Version 2.31 def +/Level2? + systemdict/languagelevel known dup + {pop systemdict/languagelevel get 2 ge} + if def +Level2? not + { + /currentglobal false def + /setglobal/pop load def + /gcheck{pop false}bind def + /currentpacking false def + /setpacking/pop load def + /SharedFontDirectory 0 dict def + } +if +currentpacking +true setpacking +currentglobal false setglobal +userdict/Adobe_CoolType_Data 2 copy known not + {2 copy 10 dict put} +if +get + begin + /@opStackCountByLevel 32 dict def + /@opStackLevel 0 def + /@dictStackCountByLevel 32 dict def + /@dictStackLevel 0 def + end +setglobal +currentglobal true setglobal +userdict/Adobe_CoolType_GVMFonts known not + {userdict/Adobe_CoolType_GVMFonts 10 dict put} +if +setglobal +currentglobal false setglobal +userdict/Adobe_CoolType_LVMFonts known not + {userdict/Adobe_CoolType_LVMFonts 10 dict put} +if +setglobal +/ct_VMDictPut + { + dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse + 3 1 roll put + }bind def +/ct_VMDictUndef + { + dup Adobe_CoolType_GVMFonts exch known + {Adobe_CoolType_GVMFonts exch undef} + { + dup Adobe_CoolType_LVMFonts exch known + {Adobe_CoolType_LVMFonts exch undef} + {pop} + ifelse + }ifelse + }bind def +/ct_str1 1 string def +/ct_xshow +{ + /_ct_na exch def + /_ct_i 0 def + currentpoint + /_ct_y exch def + /_ct_x exch def + { + pop pop + ct_str1 exch 0 exch put + ct_str1 show + {_ct_na _ct_i get}stopped + {pop pop} + { + _ct_x _ct_y moveto + 0 + rmoveto + } + ifelse + /_ct_i _ct_i 1 add def + currentpoint + /_ct_y exch def + /_ct_x exch def + } + exch + @cshow +}bind def +/ct_yshow +{ + /_ct_na exch def + /_ct_i 0 def + currentpoint + /_ct_y exch def + /_ct_x exch def + { + pop pop + ct_str1 exch 0 exch put + ct_str1 show + {_ct_na _ct_i get}stopped + {pop pop} + { + _ct_x _ct_y moveto + 0 exch + rmoveto + } + ifelse + /_ct_i _ct_i 1 add def + currentpoint + /_ct_y exch def + /_ct_x exch def + } + exch + @cshow +}bind def +/ct_xyshow +{ + /_ct_na exch def + /_ct_i 0 def + currentpoint + /_ct_y exch def + /_ct_x exch def + { + pop pop + ct_str1 exch 0 exch put + ct_str1 show + {_ct_na _ct_i get}stopped + {pop pop} + { + {_ct_na _ct_i 1 add get}stopped + {pop pop pop} + { + _ct_x _ct_y moveto + rmoveto + } + ifelse + } + ifelse + /_ct_i _ct_i 2 add def + currentpoint + /_ct_y exch def + /_ct_x exch def + } + exch + @cshow +}bind def +/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def +/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def +/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def +currentglobal true setglobal +/ct_T3Defs +{ +/BuildChar +{ + 1 index/Encoding get exch get + 1 index/BuildGlyph get exec +}bind def +/BuildGlyph +{ + exch begin + GlyphProcs exch get exec + end +}bind def +}bind def +setglobal +/@_SaveStackLevels + { + Adobe_CoolType_Data + begin + /@vmState currentglobal def false setglobal + @opStackCountByLevel + @opStackLevel + 2 copy known not + { + 2 copy + 3 dict dup/args + 7 index + 5 add array put + put get + } + { + get dup/args get dup length 3 index lt + { + dup length 5 add array exch + 1 index exch 0 exch putinterval + 1 index exch/args exch put + } + {pop} + ifelse + } + ifelse + begin + count 1 sub + 1 index lt + {pop count} + if + dup/argCount exch def + dup 0 gt + { + args exch 0 exch getinterval + astore pop + } + {pop} + ifelse + count + /restCount exch def + end + /@opStackLevel @opStackLevel 1 add def + countdictstack 1 sub + @dictStackCountByLevel exch @dictStackLevel exch put + /@dictStackLevel @dictStackLevel 1 add def + @vmState setglobal + end + }bind def +/@_RestoreStackLevels + { + Adobe_CoolType_Data + begin + /@opStackLevel @opStackLevel 1 sub def + @opStackCountByLevel @opStackLevel get + begin + count restCount sub dup 0 gt + {{pop}repeat} + {pop} + ifelse + args 0 argCount getinterval{}forall + end + /@dictStackLevel @dictStackLevel 1 sub def + @dictStackCountByLevel @dictStackLevel get + end + countdictstack exch sub dup 0 gt + {{end}repeat} + {pop} + ifelse + }bind def +/@_PopStackLevels + { + Adobe_CoolType_Data + begin + /@opStackLevel @opStackLevel 1 sub def + /@dictStackLevel @dictStackLevel 1 sub def + end + }bind def +/@Raise + { + exch cvx exch errordict exch get exec + stop + }bind def +/@ReRaise + { + cvx $error/errorname get errordict exch get exec + stop + }bind def +/@Stopped + { + 0 @#Stopped + }bind def +/@#Stopped + { + @_SaveStackLevels + stopped + {@_RestoreStackLevels true} + {@_PopStackLevels false} + ifelse + }bind def +/@Arg + { + Adobe_CoolType_Data + begin + @opStackCountByLevel @opStackLevel 1 sub get + begin + args exch + argCount 1 sub exch sub get + end + end + }bind def +currentglobal true setglobal +/CTHasResourceForAllBug + Level2? + { + 1 dict dup + /@shouldNotDisappearDictValue true def + Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put + begin + count @_SaveStackLevels + {(*){pop stop}128 string/Category resourceforall} + stopped pop + @_RestoreStackLevels + currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll + { + /@shouldNotDisappearDictValue known + { + { + end + currentdict 1 index eq + {pop exit} + if + } + loop + } + if + } + { + pop + end + } + ifelse + } + {false} + ifelse + def +true setglobal +/CTHasResourceStatusBug + Level2? + { + mark + {/steveamerige/Category resourcestatus} + stopped + {cleartomark true} + {cleartomark currentglobal not} + ifelse + } + {false} + ifelse + def +setglobal +/CTResourceStatus + { + mark 3 1 roll + /Category findresource + begin + ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec + {cleartomark false} + {{3 2 roll pop true}{cleartomark false}ifelse} + ifelse + end + }bind def +/CTWorkAroundBugs + { + Level2? + { + /cid_PreLoad/ProcSet resourcestatus + { + pop pop + currentglobal + mark + { + (*) + { + dup/CMap CTHasResourceStatusBug + {CTResourceStatus} + {resourcestatus} + ifelse + { + pop dup 0 eq exch 1 eq or + { + dup/CMap findresource gcheck setglobal + /CMap undefineresource + } + { + pop CTHasResourceForAllBug + {exit} + {stop} + ifelse + } + ifelse + } + {pop} + ifelse + } + 128 string/CMap resourceforall + } + stopped + {cleartomark} + stopped pop + setglobal + } + if + } + if + }bind def +/ds + { + Adobe_CoolType_Core + begin + CTWorkAroundBugs + /mo/moveto load def + /nf/newencodedfont load def + /msf{makefont setfont}bind def + /uf{dup undefinefont ct_VMDictUndef}bind def + /ur/undefineresource load def + /chp/charpath load def + /awsh/awidthshow load def + /wsh/widthshow load def + /ash/ashow load def + /@xshow/xshow load def + /@yshow/yshow load def + /@xyshow/xyshow load def + /@cshow/cshow load def + /sh/show load def + /rp/repeat load def + /.n/.notdef def + end + currentglobal false setglobal + userdict/Adobe_CoolType_Data 2 copy known not + {2 copy 10 dict put} + if + get + begin + /AddWidths? false def + /CC 0 def + /charcode 2 string def + /@opStackCountByLevel 32 dict def + /@opStackLevel 0 def + /@dictStackCountByLevel 32 dict def + /@dictStackLevel 0 def + /InVMFontsByCMap 10 dict def + /InVMDeepCopiedFonts 10 dict def + end + setglobal + }bind def +/dt + { + currentdict Adobe_CoolType_Core eq + {end} + if + }bind def +/ps + { + Adobe_CoolType_Core begin + Adobe_CoolType_GVMFonts begin + Adobe_CoolType_LVMFonts begin + SharedFontDirectory begin + }bind def +/pt + { + end + end + end + end + }bind def +/unload + { + systemdict/languagelevel known + { + systemdict/languagelevel get 2 ge + { + userdict/Adobe_CoolType_Core 2 copy known + {undef} + {pop pop} + ifelse + } + if + } + if + }bind def +/ndf + { + 1 index where + {pop pop pop} + {dup xcheck{bind}if def} + ifelse + }def +/findfont systemdict + begin + userdict + begin + /globaldict where{/globaldict get begin}if + dup where pop exch get + /globaldict where{pop end}if + end + end +Adobe_CoolType_Core_Defined + {/systemfindfont exch def} + { + /findfont 1 index def + /systemfindfont exch def + } +ifelse +/undefinefont + {pop}ndf +/copyfont + { + currentglobal 3 1 roll + 1 index gcheck setglobal + dup null eq{0}{dup length}ifelse + 2 index length add 1 add dict + begin + exch + { + 1 index/FID eq + {pop pop} + {def} + ifelse + } + forall + dup null eq + {pop} + {{def}forall} + ifelse + currentdict + end + exch setglobal + }bind def +/copyarray + { + currentglobal exch + dup gcheck setglobal + dup length array copy + exch setglobal + }bind def +/newencodedfont + { + currentglobal + { + SharedFontDirectory 3 index known + {SharedFontDirectory 3 index get/FontReferenced known} + {false} + ifelse + } + { + FontDirectory 3 index known + {FontDirectory 3 index get/FontReferenced known} + { + SharedFontDirectory 3 index known + {SharedFontDirectory 3 index get/FontReferenced known} + {false} + ifelse + } + ifelse + } + ifelse + dup + { + 3 index findfont/FontReferenced get + 2 index dup type/nametype eq + {findfont} + if ne + {pop false} + if + } + if + dup + { + 1 index dup type/nametype eq + {findfont} + if + dup/CharStrings known + { + /CharStrings get length + 4 index findfont/CharStrings get length + ne + { + pop false + } + if + } + {pop} + ifelse + } + if + { + pop + 1 index findfont + /Encoding get exch + 0 1 255 + {2 copy get 3 index 3 1 roll put} + for + pop pop pop + } + { + currentglobal + 4 1 roll + dup type/nametype eq + {findfont} + if + dup gcheck setglobal + dup dup maxlength 2 add dict + begin + exch + { + 1 index/FID ne + 2 index/Encoding ne and + {def} + {pop pop} + ifelse + } + forall + /FontReferenced exch def + /Encoding exch dup length array copy def + /FontName 1 index dup type/stringtype eq{cvn}if def dup + currentdict + end + definefont ct_VMDictPut + setglobal + } + ifelse + }bind def +/SetSubstituteStrategy + { + $SubstituteFont + begin + dup type/dicttype ne + {0 dict} + if + currentdict/$Strategies known + { + exch $Strategies exch + 2 copy known + { + get + 2 copy maxlength exch maxlength add dict + begin + {def}forall + {def}forall + currentdict + dup/$Init known + {dup/$Init get exec} + if + end + /$Strategy exch def + } + {pop pop pop} + ifelse + } + {pop pop} + ifelse + end + }bind def +/scff + { + $SubstituteFont + begin + dup type/stringtype eq + {dup length exch} + {null} + ifelse + /$sname exch def + /$slen exch def + /$inVMIndex + $sname null eq + { + 1 index $str cvs + dup length $slen sub $slen getinterval cvn + } + {$sname} + ifelse def + end + {findfont} + @Stopped + { + dup length 8 add string exch + 1 index 0(BadFont:)putinterval + 1 index exch 8 exch dup length string cvs putinterval cvn + {findfont} + @Stopped + {pop/Courier findfont} + if + } + if + $SubstituteFont + begin + /$sname null def + /$slen 0 def + /$inVMIndex null def + end + }bind def +/isWidthsOnlyFont + { + dup/WidthsOnly known + {pop pop true} + { + dup/FDepVector known + {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} + { + dup/FDArray known + {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} + {pop} + ifelse + } + ifelse + } + ifelse + }bind def +/ct_StyleDicts 4 dict dup begin + /Adobe-Japan1 4 dict dup begin + Level2? + { + /Serif + /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus + {pop pop/HeiseiMin-W3} + { + /CIDFont/Category resourcestatus + { + pop pop + /HeiseiMin-W3/CIDFont resourcestatus + {pop pop/HeiseiMin-W3} + {/Ryumin-Light} + ifelse + } + {/Ryumin-Light} + ifelse + } + ifelse + def + /SansSerif + /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus + {pop pop/HeiseiKakuGo-W5} + { + /CIDFont/Category resourcestatus + { + pop pop + /HeiseiKakuGo-W5/CIDFont resourcestatus + {pop pop/HeiseiKakuGo-W5} + {/GothicBBB-Medium} + ifelse + } + {/GothicBBB-Medium} + ifelse + } + ifelse + def + /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus + {pop pop/HeiseiMaruGo-W4} + { + /CIDFont/Category resourcestatus + { + pop pop + /HeiseiMaruGo-W4/CIDFont resourcestatus + {pop pop/HeiseiMaruGo-W4} + { + /Jun101-Light-RKSJ-H/Font resourcestatus + {pop pop/Jun101-Light} + {SansSerif} + ifelse + } + ifelse + } + { + /Jun101-Light-RKSJ-H/Font resourcestatus + {pop pop/Jun101-Light} + {SansSerif} + ifelse + } + ifelse + } + ifelse + /RoundSansSerif exch def + /Default Serif def + } + { + /Serif/Ryumin-Light def + /SansSerif/GothicBBB-Medium def + { + (fonts/Jun101-Light-83pv-RKSJ-H)status + }stopped + {pop}{ + {pop pop pop pop/Jun101-Light} + {SansSerif} + ifelse + /RoundSansSerif exch def + }ifelse + /Default Serif def + } + ifelse + end + def + /Adobe-Korea1 4 dict dup begin + /Serif/HYSMyeongJo-Medium def + /SansSerif/HYGoThic-Medium def + /RoundSansSerif SansSerif def + /Default Serif def + end + def + /Adobe-GB1 4 dict dup begin + /Serif/STSong-Light def + /SansSerif/STHeiti-Regular def + /RoundSansSerif SansSerif def + /Default Serif def + end + def + /Adobe-CNS1 4 dict dup begin + /Serif/MKai-Medium def + /SansSerif/MHei-Medium def + /RoundSansSerif SansSerif def + /Default Serif def + end + def +end +def +Level2?{currentglobal true setglobal}if +/ct_BoldRomanWidthProc + { + stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth + 0 0 + }bind def +/ct_Type0WidthProc + { + dup stringwidth 0 0 moveto + 2 index true charpath pathbbox + 0 -1 + 7 index 2 div .88 + setcachedevice2 + pop + 0 0 + }bind def +/ct_Type0WMode1WidthProc + { + dup stringwidth + pop 2 div neg -0.88 + 2 copy + moveto + 0 -1 + 5 -1 roll true charpath pathbbox + setcachedevice + }bind def +/cHexEncoding +[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 +/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 +/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 +/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B +/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E +/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 +/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 +/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 +/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA +/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD +/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 +/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 +/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 +/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def +/ct_BoldBaseFont + 11 dict begin + /FontType 3 def + /FontMatrix[1 0 0 1 0 0]def + /FontBBox[0 0 1 1]def + /Encoding cHexEncoding def + /_setwidthProc/ct_BoldRomanWidthProc load def + /_bcstr1 1 string def + /BuildChar + { + exch begin + _basefont setfont + _bcstr1 dup 0 4 -1 roll put + dup + _setwidthProc + 3 copy + moveto + show + _basefonto setfont + moveto + show + end + }bind def + currentdict + end +def +systemdict/composefont known +{ +/ct_DefineIdentity-H +{ + /Identity-H/CMap resourcestatus + { + pop pop + } + { + /CIDInit/ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo 3 dict dup begin + /Registry(Adobe)def + /Ordering(Identity)def + /Supplement 0 def + end def + /CMapName/Identity-H def + /CMapVersion 1.000 def + /CMapType 1 def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000>0 + endcidrange + endcmap + CMapName currentdict/CMap defineresource pop + end + end + } + ifelse +} +def +/ct_BoldBaseCIDFont + 11 dict begin + /CIDFontType 1 def + /CIDFontName/ct_BoldBaseCIDFont def + /FontMatrix[1 0 0 1 0 0]def + /FontBBox[0 0 1 1]def + /_setwidthProc/ct_Type0WidthProc load def + /_bcstr2 2 string def + /BuildGlyph + { + exch begin + _basefont setfont + _bcstr2 1 2 index 256 mod put + _bcstr2 0 3 -1 roll 256 idiv put + _bcstr2 dup _setwidthProc + 3 copy + moveto + show + _basefonto setfont + moveto + show + end + }bind def + currentdict + end +def +}if +Level2?{setglobal}if +/ct_CopyFont{ + { + 1 index/FID ne 2 index/UniqueID ne and + {def}{pop pop}ifelse + }forall +}bind def +/ct_Type0CopyFont +{ + exch + dup length dict + begin + ct_CopyFont + [ + exch + FDepVector + { + dup/FontType get 0 eq + { + 1 index ct_Type0CopyFont + /_ctType0 exch definefont + } + { + /_ctBaseFont exch + 2 index exec + } + ifelse + exch + } + forall + pop + ] + /FDepVector exch def + currentdict + end +}bind def +/ct_MakeBoldFont +{ + dup/ct_SyntheticBold known + { + dup length 3 add dict begin + ct_CopyFont + /ct_StrokeWidth .03 0 FontMatrix idtransform pop def + /ct_SyntheticBold true def + currentdict + end + definefont + } + { + dup dup length 3 add dict + begin + ct_CopyFont + /PaintType 2 def + /StrokeWidth .03 0 FontMatrix idtransform pop def + /dummybold currentdict + end + definefont + dup/FontType get dup 9 ge exch 11 le and + { + ct_BoldBaseCIDFont + dup length 3 add dict copy begin + dup/CIDSystemInfo get/CIDSystemInfo exch def + ct_DefineIdentity-H + /_Type0Identity/Identity-H 3 -1 roll[exch]composefont + /_basefont exch def + /_Type0Identity/Identity-H 3 -1 roll[exch]composefont + /_basefonto exch def + currentdict + end + /CIDFont defineresource + } + { + ct_BoldBaseFont + dup length 3 add dict copy begin + /_basefont exch def + /_basefonto exch def + currentdict + end + definefont + } + ifelse + } + ifelse +}bind def +/ct_MakeBold{ + 1 index + 1 index + findfont + currentglobal 5 1 roll + dup gcheck setglobal + dup + /FontType get 0 eq + { + dup/WMode known{dup/WMode get 1 eq}{false}ifelse + version length 4 ge + and + {version 0 4 getinterval cvi 2015 ge} + {true} + ifelse + {/ct_Type0WidthProc} + {/ct_Type0WMode1WidthProc} + ifelse + ct_BoldBaseFont/_setwidthProc 3 -1 roll load put + {ct_MakeBoldFont}ct_Type0CopyFont definefont + } + { + dup/_fauxfont known not 1 index/SubstMaster known not and + { + ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put + ct_MakeBoldFont + } + { + 2 index 2 index eq + {exch pop } + { + dup length dict begin + ct_CopyFont + currentdict + end + definefont + } + ifelse + } + ifelse + } + ifelse + pop pop pop + setglobal +}bind def +/?str1 256 string def +/?set + { + $SubstituteFont + begin + /$substituteFound false def + /$fontname 1 index def + /$doSmartSub false def + end + dup + findfont + $SubstituteFont + begin + $substituteFound + {false} + { + dup/FontName known + { + dup/FontName get $fontname eq + 1 index/DistillerFauxFont known not and + /currentdistillerparams where + {pop false 2 index isWidthsOnlyFont not and} + if + } + {false} + ifelse + } + ifelse + exch pop + /$doSmartSub true def + end + { + 5 1 roll pop pop pop pop + findfont + } + { + 1 index + findfont + dup/FontType get 3 eq + { + 6 1 roll pop pop pop pop pop false + } + {pop true} + ifelse + { + $SubstituteFont + begin + pop pop + /$styleArray 1 index def + /$regOrdering 2 index def + pop pop + 0 1 $styleArray length 1 sub + { + $styleArray exch get + ct_StyleDicts $regOrdering + 2 copy known + { + get + exch 2 copy known not + {pop/Default} + if + get + dup type/nametype eq + { + ?str1 cvs length dup 1 add exch + ?str1 exch(-)putinterval + exch dup length exch ?str1 exch 3 index exch putinterval + add ?str1 exch 0 exch getinterval cvn + } + { + pop pop/Unknown + } + ifelse + } + { + pop pop pop pop/Unknown + } + ifelse + } + for + end + findfont + }if + } + ifelse + currentglobal false setglobal 3 1 roll + null copyfont definefont pop + setglobal + }bind def +setpacking +userdict/$SubstituteFont 25 dict put +1 dict + begin + /SubstituteFont + dup $error exch 2 copy known + {get} + {pop pop{pop/Courier}bind} + ifelse def + /currentdistillerparams where dup + { + pop pop + currentdistillerparams/CannotEmbedFontPolicy 2 copy known + {get/Error eq} + {pop pop false} + ifelse + } + if not + { + countdictstack array dictstack 0 get + begin + userdict + begin + $SubstituteFont + begin + /$str 128 string def + /$fontpat 128 string def + /$slen 0 def + /$sname null def + /$match false def + /$fontname null def + /$substituteFound false def + /$inVMIndex null def + /$doSmartSub true def + /$depth 0 def + /$fontname null def + /$italicangle 26.5 def + /$dstack null def + /$Strategies 10 dict dup + begin + /$Type3Underprint + { + currentglobal exch false setglobal + 11 dict + begin + /UseFont exch + $WMode 0 ne + { + dup length dict copy + dup/WMode $WMode put + /UseFont exch definefont + } + if def + /FontName $fontname dup type/stringtype eq{cvn}if def + /FontType 3 def + /FontMatrix[.001 0 0 .001 0 0]def + /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def + /FontBBox[0 0 0 0]def + /CCInfo 7 dict dup + begin + /cc null def + /x 0 def + /y 0 def + end def + /BuildChar + { + exch + begin + CCInfo + begin + 1 string dup 0 3 index put exch pop + /cc exch def + UseFont 1000 scalefont setfont + cc stringwidth/y exch def/x exch def + x y setcharwidth + $SubstituteFont/$Strategy get/$Underprint get exec + 0 0 moveto cc show + x y moveto + end + end + }bind def + currentdict + end + exch setglobal + }bind def + /$GetaTint + 2 dict dup + begin + /$BuildFont + { + dup/WMode known + {dup/WMode get} + {0} + ifelse + /$WMode exch def + $fontname exch + dup/FontName known + { + dup/FontName get + dup type/stringtype eq{cvn}if + } + {/unnamedfont} + ifelse + exch + Adobe_CoolType_Data/InVMDeepCopiedFonts get + 1 index/FontName get known + { + pop + Adobe_CoolType_Data/InVMDeepCopiedFonts get + 1 index get + null copyfont + } + {$deepcopyfont} + ifelse + exch 1 index exch/FontBasedOn exch put + dup/FontName $fontname dup type/stringtype eq{cvn}if put + definefont + Adobe_CoolType_Data/InVMDeepCopiedFonts get + begin + dup/FontBasedOn get 1 index def + end + }bind def + /$Underprint + { + gsave + x abs y abs gt + {/y 1000 def} + {/x -1000 def 500 120 translate} + ifelse + Level2? + { + [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] + setcolorspace + } + {0 setgray} + ifelse + 10 setlinewidth + x .8 mul + [7 3] + { + y mul 8 div 120 sub x 10 div exch moveto + 0 y 4 div neg rlineto + dup 0 rlineto + 0 y 4 div rlineto + closepath + gsave + Level2? + {.2 setcolor} + {.8 setgray} + ifelse + fill grestore + stroke + } + forall + pop + grestore + }bind def + end def + /$Oblique + 1 dict dup + begin + /$BuildFont + { + currentglobal exch dup gcheck setglobal + null copyfont + begin + /FontBasedOn + currentdict/FontName known + { + FontName + dup type/stringtype eq{cvn}if + } + {/unnamedfont} + ifelse + def + /FontName $fontname dup type/stringtype eq{cvn}if def + /currentdistillerparams where + {pop} + { + /FontInfo currentdict/FontInfo known + {FontInfo null copyfont} + {2 dict} + ifelse + dup + begin + /ItalicAngle $italicangle def + /FontMatrix FontMatrix + [1 0 ItalicAngle dup sin exch cos div 1 0 0] + matrix concatmatrix readonly + end + 4 2 roll def + def + } + ifelse + FontName currentdict + end + definefont + exch setglobal + }bind def + end def + /$None + 1 dict dup + begin + /$BuildFont{}bind def + end def + end def + /$Oblique SetSubstituteStrategy + /$findfontByEnum + { + dup type/stringtype eq{cvn}if + dup/$fontname exch def + $sname null eq + {$str cvs dup length $slen sub $slen getinterval} + {pop $sname} + ifelse + $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval + /$match false def + $SubstituteFont/$dstack countdictstack array dictstack put + mark + { + $fontpat 0 $slen 7 add getinterval + {/$match exch def exit} + $str filenameforall + } + stopped + { + cleardictstack + currentdict + true + $SubstituteFont/$dstack get + { + exch + { + 1 index eq + {pop false} + {true} + ifelse + } + {begin false} + ifelse + } + forall + pop + } + if + cleartomark + /$slen 0 def + $match false ne + {$match(fonts/)anchorsearch pop pop cvn} + {/Courier} + ifelse + }bind def + /$ROS 1 dict dup + begin + /Adobe 4 dict dup + begin + /Japan1 [/Ryumin-Light/HeiseiMin-W3 + /GothicBBB-Medium/HeiseiKakuGo-W5 + /HeiseiMaruGo-W4/Jun101-Light]def + /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def + /GB1 [/STSong-Light/STHeiti-Regular]def + /CNS1 [/MKai-Medium/MHei-Medium]def + end def + end def + /$cmapname null def + /$deepcopyfont + { + dup/FontType get 0 eq + { + 1 dict dup/FontName/copied put copyfont + begin + /FDepVector FDepVector copyarray + 0 1 2 index length 1 sub + { + 2 copy get $deepcopyfont + dup/FontName/copied put + /copied exch definefont + 3 copy put pop pop + } + for + def + currentdict + end + } + {$Strategies/$Type3Underprint get exec} + ifelse + }bind def + /$buildfontname + { + dup/CIDFont findresource/CIDSystemInfo get + begin + Registry length Ordering length Supplement 8 string cvs + 3 copy length 2 add add add string + dup 5 1 roll dup 0 Registry putinterval + dup 4 index(-)putinterval + dup 4 index 1 add Ordering putinterval + 4 2 roll add 1 add 2 copy(-)putinterval + end + 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch + anchorsearch + {pop pop 3 2 roll putinterval cvn/$cmapname exch def} + {pop pop pop pop pop} + ifelse + length + $str 1 index(-)putinterval 1 add + $str 1 index $cmapname $fontpat cvs putinterval + $cmapname length add + $str exch 0 exch getinterval cvn + }bind def + /$findfontByROS + { + /$fontname exch def + $ROS Registry 2 copy known + { + get Ordering 2 copy known + {get} + {pop pop[]} + ifelse + } + {pop pop[]} + ifelse + false exch + { + dup/CIDFont resourcestatus + { + pop pop + save + 1 index/CIDFont findresource + dup/WidthsOnly known + {dup/WidthsOnly get} + {false} + ifelse + exch pop + exch restore + {pop} + {exch pop true exit} + ifelse + } + {pop} + ifelse + } + forall + {$str cvs $buildfontname} + { + false(*) + { + save exch + dup/CIDFont findresource + dup/WidthsOnly known + {dup/WidthsOnly get not} + {true} + ifelse + exch/CIDSystemInfo get + dup/Registry get Registry eq + exch/Ordering get Ordering eq and and + {exch restore exch pop true exit} + {pop restore} + ifelse + } + $str/CIDFont resourceforall + {$buildfontname} + {$fontname $findfontByEnum} + ifelse + } + ifelse + }bind def + end + end + currentdict/$error known currentdict/languagelevel known and dup + {pop $error/SubstituteFont known} + if + dup + {$error} + {Adobe_CoolType_Core} + ifelse + begin + { + /SubstituteFont + /CMap/Category resourcestatus + { + pop pop + { + $SubstituteFont + begin + /$substituteFound true def + dup length $slen gt + $sname null ne or + $slen 0 gt and + { + $sname null eq + {dup $str cvs dup length $slen sub $slen getinterval cvn} + {$sname} + ifelse + Adobe_CoolType_Data/InVMFontsByCMap get + 1 index 2 copy known + { + get + false exch + { + pop + currentglobal + { + GlobalFontDirectory 1 index known + {exch pop true exit} + {pop} + ifelse + } + { + FontDirectory 1 index known + {exch pop true exit} + { + GlobalFontDirectory 1 index known + {exch pop true exit} + {pop} + ifelse + } + ifelse + } + ifelse + } + forall + } + {pop pop false} + ifelse + { + exch pop exch pop + } + { + dup/CMap resourcestatus + { + pop pop + dup/$cmapname exch def + /CMap findresource/CIDSystemInfo get{def}forall + $findfontByROS + } + { + 128 string cvs + dup(-)search + { + 3 1 roll search + { + 3 1 roll pop + {dup cvi} + stopped + {pop pop pop pop pop $findfontByEnum} + { + 4 2 roll pop pop + exch length + exch + 2 index length + 2 index + sub + exch 1 sub -1 0 + { + $str cvs dup length + 4 index + 0 + 4 index + 4 3 roll add + getinterval + exch 1 index exch 3 index exch + putinterval + dup/CMap resourcestatus + { + pop pop + 4 1 roll pop pop pop + dup/$cmapname exch def + /CMap findresource/CIDSystemInfo get{def}forall + $findfontByROS + true exit + } + {pop} + ifelse + } + for + dup type/booleantype eq + {pop} + {pop pop pop $findfontByEnum} + ifelse + } + ifelse + } + {pop pop pop $findfontByEnum} + ifelse + } + {pop pop $findfontByEnum} + ifelse + } + ifelse + } + ifelse + } + {//SubstituteFont exec} + ifelse + /$slen 0 def + end + } + } + { + { + $SubstituteFont + begin + /$substituteFound true def + dup length $slen gt + $sname null ne or + $slen 0 gt and + {$findfontByEnum} + {//SubstituteFont exec} + ifelse + end + } + } + ifelse + bind readonly def + Adobe_CoolType_Core/scfindfont/systemfindfont load put + } + { + /scfindfont + { + $SubstituteFont + begin + dup systemfindfont + dup/FontName known + {dup/FontName get dup 3 index ne} + {/noname true} + ifelse + dup + { + /$origfontnamefound 2 index def + /$origfontname 4 index def/$substituteFound true def + } + if + exch pop + { + $slen 0 gt + $sname null ne + 3 index length $slen gt or and + { + pop dup $findfontByEnum findfont + dup maxlength 1 add dict + begin + {1 index/FID eq{pop pop}{def}ifelse} + forall + currentdict + end + definefont + dup/FontName known{dup/FontName get}{null}ifelse + $origfontnamefound ne + { + $origfontname $str cvs print + ( substitution revised, using )print + dup/FontName known + {dup/FontName get}{(unspecified font)} + ifelse + $str cvs print(.\n)print + } + if + } + {exch pop} + ifelse + } + {exch pop} + ifelse + end + }bind def + } + ifelse + end + end + Adobe_CoolType_Core_Defined not + { + Adobe_CoolType_Core/findfont + { + $SubstituteFont + begin + $depth 0 eq + { + /$fontname 1 index dup type/stringtype ne{$str cvs}if def + /$substituteFound false def + } + if + /$depth $depth 1 add def + end + scfindfont + $SubstituteFont + begin + /$depth $depth 1 sub def + $substituteFound $depth 0 eq and + { + $inVMIndex null ne + {dup $inVMIndex $AddInVMFont} + if + $doSmartSub + { + currentdict/$Strategy known + {$Strategy/$BuildFont get exec} + if + } + if + } + if + end + }bind put + } + if + } + if + end +/$AddInVMFont + { + exch/FontName 2 copy known + { + get + 1 dict dup begin exch 1 index gcheck def end exch + Adobe_CoolType_Data/InVMFontsByCMap get exch + $DictAdd + } + {pop pop pop} + ifelse + }bind def +/$DictAdd + { + 2 copy known not + {2 copy 4 index length dict put} + if + Level2? not + { + 2 copy get dup maxlength exch length 4 index length add lt + 2 copy get dup length 4 index length add exch maxlength 1 index lt + { + 2 mul dict + begin + 2 copy get{forall}def + 2 copy currentdict put + end + } + {pop} + ifelse + } + if + get + begin + {def} + forall + end + }bind def +end +end +%%EndResource +currentglobal true setglobal +%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. +%%Version: 1.23 0 +systemdict/languagelevel known dup + {currentglobal false setglobal} + {false} +ifelse +exch +userdict/Adobe_CoolType_Utility 2 copy known + {2 copy get dup maxlength 27 add dict copy} + {27 dict} +ifelse put +Adobe_CoolType_Utility + begin + /@eexecStartData + def + /@recognizeCIDFont null def + /ct_Level2? exch def + /ct_Clone? 1183615869 internaldict dup + /CCRun known not + exch/eCCRun known not + ct_Level2? and or def +ct_Level2? + {globaldict begin currentglobal true setglobal} +if + /ct_AddStdCIDMap + ct_Level2? + {{ + mark + Adobe_CoolType_Utility/@recognizeCIDFont currentdict put + { + ((Hex)57 StartData + 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 + 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 + d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 + cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec + } + stopped + { + cleartomark + Adobe_CoolType_Utility/@recognizeCIDFont get + countdictstack dup array dictstack + exch 1 sub -1 0 + { + 2 copy get 3 index eq + {1 index length exch sub 1 sub{end}repeat exit} + {pop} + ifelse + } + for + pop pop + Adobe_CoolType_Utility/@eexecStartData get eexec + } + {cleartomark} + ifelse + }} + {{ + Adobe_CoolType_Utility/@eexecStartData get eexec + }} + ifelse bind def +userdict/cid_extensions known +dup{cid_extensions/cid_UpdateDB known and}if + { + cid_extensions + begin + /cid_GetCIDSystemInfo + { + 1 index type/stringtype eq + {exch cvn exch} + if + cid_extensions + begin + dup load 2 index known + { + 2 copy + cid_GetStatusInfo + dup null ne + { + 1 index load + 3 index get + dup null eq + {pop pop cid_UpdateDB} + { + exch + 1 index/Created get eq + {exch pop exch pop} + {pop cid_UpdateDB} + ifelse + } + ifelse + } + {pop cid_UpdateDB} + ifelse + } + {cid_UpdateDB} + ifelse + end + }bind def + end + } +if +ct_Level2? + {end setglobal} +if + /ct_UseNativeCapability? systemdict/composefont known def + /ct_MakeOCF 35 dict def + /ct_Vars 25 dict def + /ct_GlyphDirProcs 6 dict def + /ct_BuildCharDict 15 dict dup + begin + /charcode 2 string def + /dst_string 1500 string def + /nullstring()def + /usewidths? true def + end def + ct_Level2?{setglobal}{pop}ifelse + ct_GlyphDirProcs + begin + /GetGlyphDirectory + { + systemdict/languagelevel known + {pop/CIDFont findresource/GlyphDirectory get} + { + 1 index/CIDFont findresource/GlyphDirectory + get dup type/dicttype eq + { + dup dup maxlength exch length sub 2 index lt + { + dup length 2 index add dict copy 2 index + /CIDFont findresource/GlyphDirectory 2 index put + } + if + } + if + exch pop exch pop + } + ifelse + + + }def + /+ + { + systemdict/languagelevel known + { + currentglobal false setglobal + 3 dict begin + /vm exch def + } + {1 dict begin} + ifelse + /$ exch def + systemdict/languagelevel known + { + vm setglobal + /gvm currentglobal def + $ gcheck setglobal + } + if + ?{$ begin}if + }def + /?{$ type/dicttype eq}def + /|{ + userdict/Adobe_CoolType_Data known + { + Adobe_CoolType_Data/AddWidths? known + { + currentdict Adobe_CoolType_Data + begin + begin + AddWidths? + { + Adobe_CoolType_Data/CC 3 index put + ?{def}{$ 3 1 roll put}ifelse + CC charcode exch 1 index 0 2 index 256 idiv put + 1 index exch 1 exch 256 mod put + stringwidth 2 array astore + currentfont/Widths get exch CC exch put + } + {?{def}{$ 3 1 roll put}ifelse} + ifelse + end + end + } + {?{def}{$ 3 1 roll put}ifelse} ifelse + } + {?{def}{$ 3 1 roll put}ifelse} + ifelse + }def + /! + { + ?{end}if + systemdict/languagelevel known + {gvm setglobal} + if + end + }def + /:{string currentfile exch readstring pop}executeonly def + end + ct_MakeOCF + begin + /ct_cHexEncoding + [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 + /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 + /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 + /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B + /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E + /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 + /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 + /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 + /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA + /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD + /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 + /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 + /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 + /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def + /ct_CID_STR_SIZE 8000 def + /ct_mkocfStr100 100 string def + /ct_defaultFontMtx[.001 0 0 .001 0 0]def + /ct_1000Mtx[1000 0 0 1000 0 0]def + /ct_raise{exch cvx exch errordict exch get exec stop}bind def + /ct_reraise + {cvx $error/errorname get(Error: )print dup( )cvs print + errordict exch get exec stop + }bind def + /ct_cvnsi + { + 1 index add 1 sub 1 exch 0 4 1 roll + { + 2 index exch get + exch 8 bitshift + add + } + for + exch pop + }bind def + /ct_GetInterval + { + Adobe_CoolType_Utility/ct_BuildCharDict get + begin + /dst_index 0 def + dup dst_string length gt + {dup string/dst_string exch def} + if + 1 index ct_CID_STR_SIZE idiv + /arrayIndex exch def + 2 index arrayIndex get + 2 index + arrayIndex ct_CID_STR_SIZE mul + sub + { + dup 3 index add 2 index length le + { + 2 index getinterval + dst_string dst_index 2 index putinterval + length dst_index add/dst_index exch def + exit + } + { + 1 index length 1 index sub + dup 4 1 roll + getinterval + dst_string dst_index 2 index putinterval + pop dup dst_index add/dst_index exch def + sub + /arrayIndex arrayIndex 1 add def + 2 index dup length arrayIndex gt + {arrayIndex get} + { + pop + exit + } + ifelse + 0 + } + ifelse + } + loop + pop pop pop + dst_string 0 dst_index getinterval + end + }bind def + ct_Level2? + { + /ct_resourcestatus + currentglobal mark true setglobal + {/unknowninstancename/Category resourcestatus} + stopped + {cleartomark setglobal true} + {cleartomark currentglobal not exch setglobal} + ifelse + { + { + mark 3 1 roll/Category findresource + begin + ct_Vars/vm currentglobal put + ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec + {cleartomark false} + {{3 2 roll pop true}{cleartomark false}ifelse} + ifelse + ct_Vars/vm get setglobal + end + } + } + {{resourcestatus}} + ifelse bind def + /CIDFont/Category ct_resourcestatus + {pop pop} + { + currentglobal true setglobal + /Generic/Category findresource + dup length dict copy + dup/InstanceType/dicttype put + /CIDFont exch/Category defineresource pop + setglobal + } + ifelse + ct_UseNativeCapability? + { + /CIDInit/ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo 3 dict dup begin + /Registry(Adobe)def + /Ordering(Identity)def + /Supplement 0 def + end def + /CMapName/Identity-H def + /CMapVersion 1.000 def + /CMapType 1 def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000>0 + endcidrange + endcmap + CMapName currentdict/CMap defineresource pop + end + end + } + if + } + { + /ct_Category 2 dict begin + /CIDFont 10 dict def + /ProcSet 2 dict def + currentdict + end + def + /defineresource + { + ct_Category 1 index 2 copy known + { + get + dup dup maxlength exch length eq + { + dup length 10 add dict copy + ct_Category 2 index 2 index put + } + if + 3 index 3 index put + pop exch pop + } + {pop pop/defineresource/undefined ct_raise} + ifelse + }bind def + /findresource + { + ct_Category 1 index 2 copy known + { + get + 2 index 2 copy known + {get 3 1 roll pop pop} + {pop pop/findresource/undefinedresource ct_raise} + ifelse + } + {pop pop/findresource/undefined ct_raise} + ifelse + }bind def + /resourcestatus + { + ct_Category 1 index 2 copy known + { + get + 2 index known + exch pop exch pop + { + 0 -1 true + } + { + false + } + ifelse + } + {pop pop/findresource/undefined ct_raise} + ifelse + }bind def + /ct_resourcestatus/resourcestatus load def + } + ifelse + /ct_CIDInit 2 dict + begin + /ct_cidfont_stream_init + { + { + dup(Binary)eq + { + pop + null + currentfile + ct_Level2? + { + {cid_BYTE_COUNT()/SubFileDecode filter} + stopped + {pop pop pop} + if + } + if + /readstring load + exit + } + if + dup(Hex)eq + { + pop + currentfile + ct_Level2? + { + {null exch/ASCIIHexDecode filter/readstring} + stopped + {pop exch pop(>)exch/readhexstring} + if + } + {(>)exch/readhexstring} + ifelse + load + exit + } + if + /StartData/typecheck ct_raise + } + loop + cid_BYTE_COUNT ct_CID_STR_SIZE le + { + 2 copy cid_BYTE_COUNT string exch exec + pop + 1 array dup + 3 -1 roll + 0 exch put + } + { + cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi + dup array exch 2 sub 0 exch 1 exch + { + 2 copy + 5 index + ct_CID_STR_SIZE + string + 6 index exec + pop + put + pop + } + for + 2 index + cid_BYTE_COUNT ct_CID_STR_SIZE mod string + 3 index exec + pop + 1 index exch + 1 index length 1 sub + exch put + } + ifelse + cid_CIDFONT exch/GlyphData exch put + 2 index null eq + { + pop pop pop + } + { + pop/readstring load + 1 string exch + { + 3 copy exec + pop + dup length 0 eq + { + pop pop pop pop pop + true exit + } + if + 4 index + eq + { + pop pop pop pop + false exit + } + if + } + loop + pop + } + ifelse + }bind def + /StartData + { + mark + { + currentdict + dup/FDArray get 0 get/FontMatrix get + 0 get 0.001 eq + { + dup/CDevProc known not + { + /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known + {get} + { + pop pop + {pop pop pop pop pop 0 -1000 7 index 2 div 880} + } + ifelse + def + } + if + } + { + /CDevProc + { + pop pop pop pop pop + 0 + 1 cid_temp/cid_CIDFONT get + /FDArray get 0 get + /FontMatrix get 0 get div + 7 index 2 div + 1 index 0.88 mul + }def + } + ifelse + /cid_temp 15 dict def + cid_temp + begin + /cid_CIDFONT exch def + 3 copy pop + dup/cid_BYTE_COUNT exch def 0 gt + { + ct_cidfont_stream_init + FDArray + { + /Private get + dup/SubrMapOffset known + { + begin + /Subrs SubrCount array def + Subrs + SubrMapOffset + SubrCount + SDBytes + ct_Level2? + { + currentdict dup/SubrMapOffset undef + dup/SubrCount undef + /SDBytes undef + } + if + end + /cid_SD_BYTES exch def + /cid_SUBR_COUNT exch def + /cid_SUBR_MAP_OFFSET exch def + /cid_SUBRS exch def + cid_SUBR_COUNT 0 gt + { + GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval + 0 cid_SD_BYTES ct_cvnsi + 0 1 cid_SUBR_COUNT 1 sub + { + exch 1 index + 1 add + cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add + GlyphData exch cid_SD_BYTES ct_GetInterval + 0 cid_SD_BYTES ct_cvnsi + cid_SUBRS 4 2 roll + GlyphData exch + 4 index + 1 index + sub + ct_GetInterval + dup length string copy put + } + for + pop + } + if + } + {pop} + ifelse + } + forall + } + if + cleartomark pop pop + end + CIDFontName currentdict/CIDFont defineresource pop + end end + } + stopped + {cleartomark/StartData ct_reraise} + if + }bind def + currentdict + end def + /ct_saveCIDInit + { + /CIDInit/ProcSet ct_resourcestatus + {true} + {/CIDInitC/ProcSet ct_resourcestatus} + ifelse + { + pop pop + /CIDInit/ProcSet findresource + ct_UseNativeCapability? + {pop null} + {/CIDInit ct_CIDInit/ProcSet defineresource pop} + ifelse + } + {/CIDInit ct_CIDInit/ProcSet defineresource pop null} + ifelse + ct_Vars exch/ct_oldCIDInit exch put + }bind def + /ct_restoreCIDInit + { + ct_Vars/ct_oldCIDInit get dup null ne + {/CIDInit exch/ProcSet defineresource pop} + {pop} + ifelse + }bind def + /ct_BuildCharSetUp + { + 1 index + begin + CIDFont + begin + Adobe_CoolType_Utility/ct_BuildCharDict get + begin + /ct_dfCharCode exch def + /ct_dfDict exch def + CIDFirstByte ct_dfCharCode add + dup CIDCount ge + {pop 0} + if + /cid exch def + { + GlyphDirectory cid 2 copy known + {get} + {pop pop nullstring} + ifelse + dup length FDBytes sub 0 gt + { + dup + FDBytes 0 ne + {0 FDBytes ct_cvnsi} + {pop 0} + ifelse + /fdIndex exch def + dup length FDBytes sub FDBytes exch getinterval + /charstring exch def + exit + } + { + pop + cid 0 eq + {/charstring nullstring def exit} + if + /cid 0 def + } + ifelse + } + loop + }def + /ct_SetCacheDevice + { + 0 0 moveto + dup stringwidth + 3 -1 roll + true charpath + pathbbox + 0 -1000 + 7 index 2 div 880 + setcachedevice2 + 0 0 moveto + }def + /ct_CloneSetCacheProc + { + 1 eq + { + stringwidth + pop -2 div -880 + 0 -1000 setcharwidth + moveto + } + { + usewidths? + { + currentfont/Widths get cid + 2 copy known + {get exch pop aload pop} + {pop pop stringwidth} + ifelse + } + {stringwidth} + ifelse + setcharwidth + 0 0 moveto + } + ifelse + }def + /ct_Type3ShowCharString + { + ct_FDDict fdIndex 2 copy known + {get} + { + currentglobal 3 1 roll + 1 index gcheck setglobal + ct_Type1FontTemplate dup maxlength dict copy + begin + FDArray fdIndex get + dup/FontMatrix 2 copy known + {get} + {pop pop ct_defaultFontMtx} + ifelse + /FontMatrix exch dup length array copy def + /Private get + /Private exch def + /Widths rootfont/Widths get def + /CharStrings 1 dict dup/.notdef + dup length string copy put def + currentdict + end + /ct_Type1Font exch definefont + dup 5 1 roll put + setglobal + } + ifelse + dup/CharStrings get 1 index/Encoding get + ct_dfCharCode get charstring put + rootfont/WMode 2 copy known + {get} + {pop pop 0} + ifelse + exch + 1000 scalefont setfont + ct_str1 0 ct_dfCharCode put + ct_str1 exch ct_dfSetCacheProc + ct_SyntheticBold + { + currentpoint + ct_str1 show + newpath + moveto + ct_str1 true charpath + ct_StrokeWidth setlinewidth + stroke + } + {ct_str1 show} + ifelse + }def + /ct_Type4ShowCharString + { + ct_dfDict ct_dfCharCode charstring + FDArray fdIndex get + dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not + {ct_1000Mtx matrix concatmatrix concat} + {pop} + ifelse + /Private get + Adobe_CoolType_Utility/ct_Level2? get not + { + ct_dfDict/Private + 3 -1 roll + {put} + 1183615869 internaldict/superexec get exec + } + if + 1183615869 internaldict + Adobe_CoolType_Utility/ct_Level2? get + {1 index} + {3 index/Private get mark 6 1 roll} + ifelse + dup/RunInt known + {/RunInt get} + {pop/CCRun} + ifelse + get exec + Adobe_CoolType_Utility/ct_Level2? get not + {cleartomark} + if + }bind def + /ct_BuildCharIncremental + { + { + Adobe_CoolType_Utility/ct_MakeOCF get begin + ct_BuildCharSetUp + ct_ShowCharString + } + stopped + {stop} + if + end + end + end + end + }bind def + /BaseFontNameStr(BF00)def + /ct_Type1FontTemplate 14 dict + begin + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0]def + /FontBBox [-250 -250 1250 1250]def + /Encoding ct_cHexEncoding def + /PaintType 0 def + currentdict + end def + /BaseFontTemplate 11 dict + begin + /FontMatrix [0.001 0 0 0.001 0 0]def + /FontBBox [-250 -250 1250 1250]def + /Encoding ct_cHexEncoding def + /BuildChar/ct_BuildCharIncremental load def + ct_Clone? + { + /FontType 3 def + /ct_ShowCharString/ct_Type3ShowCharString load def + /ct_dfSetCacheProc/ct_CloneSetCacheProc load def + /ct_SyntheticBold false def + /ct_StrokeWidth 1 def + } + { + /FontType 4 def + /Private 1 dict dup/lenIV 4 put def + /CharStrings 1 dict dup/.notdefput def + /PaintType 0 def + /ct_ShowCharString/ct_Type4ShowCharString load def + } + ifelse + /ct_str1 1 string def + currentdict + end def + /BaseFontDictSize BaseFontTemplate length 5 add def + /ct_matrixeq + { + true 0 1 5 + { + dup 4 index exch get exch 3 index exch get eq and + dup not + {exit} + if + } + for + exch pop exch pop + }bind def + /ct_makeocf + { + 15 dict + begin + exch/WMode exch def + exch/FontName exch def + /FontType 0 def + /FMapType 2 def + dup/FontMatrix known + {dup/FontMatrix get/FontMatrix exch def} + {/FontMatrix matrix def} + ifelse + /bfCount 1 index/CIDCount get 256 idiv 1 add + dup 256 gt{pop 256}if def + /Encoding + 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for + bfCount 1 255{2 copy bfCount put pop}for + def + /FDepVector bfCount dup 256 lt{1 add}if array def + BaseFontTemplate BaseFontDictSize dict copy + begin + /CIDFont exch def + CIDFont/FontBBox known + {CIDFont/FontBBox get/FontBBox exch def} + if + CIDFont/CDevProc known + {CIDFont/CDevProc get/CDevProc exch def} + if + currentdict + end + BaseFontNameStr 3(0)putinterval + 0 1 bfCount dup 256 eq{1 sub}if + { + FDepVector exch + 2 index BaseFontDictSize dict copy + begin + dup/CIDFirstByte exch 256 mul def + FontType 3 eq + {/ct_FDDict 2 dict def} + if + currentdict + end + 1 index 16 + BaseFontNameStr 2 2 getinterval cvrs pop + BaseFontNameStr exch definefont + put + } + for + ct_Clone? + {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} + if + FontName + currentdict + end + definefont + ct_Clone? + { + gsave + dup 1000 scalefont setfont + ct_BuildCharDict + begin + /usewidths? false def + currentfont/Widths get + begin + exch/CIDFont get/GlyphDirectory get + { + pop + dup charcode exch 1 index 0 2 index 256 idiv put + 1 index exch 1 exch 256 mod put + stringwidth 2 array astore def + } + forall + end + /usewidths? true def + end + grestore + } + {exch pop} + ifelse + }bind def + currentglobal true setglobal + /ct_ComposeFont + { + ct_UseNativeCapability? + { + 2 index/CMap ct_resourcestatus + {pop pop exch pop} + { + /CIDInit/ProcSet findresource + begin + 12 dict + begin + begincmap + /CMapName 3 index def + /CMapVersion 1.000 def + /CMapType 1 def + exch/WMode exch def + /CIDSystemInfo 3 dict dup + begin + /Registry(Adobe)def + /Ordering + CMapName ct_mkocfStr100 cvs + (Adobe-)search + { + pop pop + (-)search + { + dup length string copy + exch pop exch pop + } + {pop(Identity)} + ifelse + } + {pop (Identity)} + ifelse + def + /Supplement 0 def + end def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000>0 + endcidrange + endcmap + CMapName currentdict/CMap defineresource pop + end + end + } + ifelse + composefont + } + { + 3 2 roll pop + 0 get/CIDFont findresource + ct_makeocf + } + ifelse + }bind def + setglobal + /ct_MakeIdentity + { + ct_UseNativeCapability? + { + 1 index/CMap ct_resourcestatus + {pop pop} + { + /CIDInit/ProcSet findresource begin + 12 dict begin + begincmap + /CMapName 2 index def + /CMapVersion 1.000 def + /CMapType 1 def + /CIDSystemInfo 3 dict dup + begin + /Registry(Adobe)def + /Ordering + CMapName ct_mkocfStr100 cvs + (Adobe-)search + { + pop pop + (-)search + {dup length string copy exch pop exch pop} + {pop(Identity)} + ifelse + } + {pop(Identity)} + ifelse + def + /Supplement 0 def + end def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000>0 + endcidrange + endcmap + CMapName currentdict/CMap defineresource pop + end + end + } + ifelse + composefont + } + { + exch pop + 0 get/CIDFont findresource + ct_makeocf + } + ifelse + }bind def + currentdict readonly pop + end + end +%%EndResource +setglobal +%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 +%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. +%%Version: 1.0 0 +userdict/ct_T42Dict 15 dict put +ct_T42Dict begin +/Is2015? +{ + version + cvi + 2015 + ge +}bind def +/AllocGlyphStorage +{ + Is2015? + { + pop + } + { + {string}forall + }ifelse +}bind def +/Type42DictBegin +{ +25 dict begin + /FontName exch def + /CharStrings 256 dict +begin + /.notdef 0 def + currentdict +end def + /Encoding exch def + /PaintType 0 def + /FontType 42 def + /FontMatrix[1 0 0 1 0 0]def + 4 array astore cvx/FontBBox exch def + /sfnts +}bind def +/Type42DictEnd +{ + currentdict dup/FontName get exch definefont end +ct_T42Dict exch +dup/FontName get exch put +}bind def +/RD{string currentfile exch readstring pop}executeonly def +/PrepFor2015 +{ +Is2015? +{ + /GlyphDirectory + 16 + dict def + sfnts 0 get + dup + 2 index + (glyx) + putinterval + 2 index + (locx) + putinterval + pop + pop +} +{ + pop + pop +}ifelse +}bind def +/AddT42Char +{ +Is2015? +{ + /GlyphDirectory get + begin + def + end + pop + pop +} +{ + /sfnts get + 4 index + get + 3 index + 2 index + putinterval + pop + pop + pop + pop +}ifelse +}bind def +/T0AddT42Mtx2 +{ +/CIDFont findresource/Metrics2 get begin def end +}bind def +end +%%EndResource +currentglobal true setglobal +%%BeginFile: MMFauxFont.prc +%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. +%%All Rights Reserved. +userdict /ct_EuroDict 10 dict put +ct_EuroDict begin +/ct_CopyFont +{ + { 1 index /FID ne {def} {pop pop} ifelse} forall +} def +/ct_GetGlyphOutline +{ + gsave + initmatrix newpath + exch findfont dup + length 1 add dict + begin + ct_CopyFont + /Encoding Encoding dup length array copy + dup + 4 -1 roll + 0 exch put + def + currentdict + end + /ct_EuroFont exch definefont + 1000 scalefont setfont + 0 0 moveto + [ + <00> stringwidth + <00> false charpath + pathbbox + [ + {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall + grestore + counttomark 8 add +} +def +/ct_MakeGlyphProc +{ + ] cvx + /ct_PSBuildGlyph cvx + ] cvx +} def +/ct_PSBuildGlyph +{ + gsave + 8 -1 roll pop + 7 1 roll + 6 -2 roll ct_FontMatrix transform 6 2 roll + 4 -2 roll ct_FontMatrix transform 4 2 roll + ct_FontMatrix transform + currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse + dup 9 1 roll + { + currentdict /StrokeWidth 2 copy known + { + get 2 div + 0 ct_FontMatrix dtransform pop + 5 1 roll + 4 -1 roll 4 index sub + 4 1 roll + 3 -1 roll 4 index sub + 3 1 roll + exch 4 index add exch + 4 index add + 5 -1 roll pop + } + { + pop pop + } + ifelse + } + if + setcachedevice + ct_FontMatrix concat + ct_PSPathOps begin + exec + end + { + currentdict /StrokeWidth 2 copy known + { get } + { pop pop 0 } + ifelse + setlinewidth stroke + } + { + fill + } + ifelse + grestore +} def +/ct_PSPathOps 4 dict dup begin + /m {moveto} def + /l {lineto} def + /c {curveto} def + /cp {closepath} def +end +def +/ct_matrix1000 [1000 0 0 1000 0 0] def +/ct_AddGlyphProc +{ + 2 index findfont dup length 4 add dict + begin + ct_CopyFont + /CharStrings CharStrings dup length 1 add dict copy + begin + 3 1 roll def + currentdict + end + def + /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def + /ct_PSBuildGlyph /ct_PSBuildGlyph load def + /ct_PSPathOps /ct_PSPathOps load def + currentdict + end + definefont pop +} +def +systemdict /languagelevel known +{ + /ct_AddGlyphToPrinterFont { + 2 copy + ct_GetGlyphOutline 3 add -1 roll restore + ct_MakeGlyphProc + ct_AddGlyphProc + } def +} +{ + /ct_AddGlyphToPrinterFont { + pop pop restore + Adobe_CTFauxDict /$$$FONTNAME get + /Euro + Adobe_CTFauxDict /$$$SUBSTITUTEBASE get + ct_EuroDict exch get + ct_AddGlyphProc + } def +} ifelse +/AdobeSansMM +{ +556 0 24 -19 541 703 + { + 541 628 m + 510 669 442 703 354 703 c + 201 703 117 607 101 444 c + 50 444 l + 25 372 l + 97 372 l + 97 301 l + 49 301 l + 24 229 l + 103 229 l + 124 67 209 -19 350 -19 c + 435 -19 501 25 509 32 c + 509 131 l + 492 105 417 60 343 60 c + 267 60 204 127 197 229 c + 406 229 l + 430 301 l + 191 301 l + 191 372 l + 455 372 l + 479 444 l + 194 444 l + 201 531 245 624 348 624 c + 433 624 484 583 509 534 c + cp + 556 0 m + } +ct_PSBuildGlyph +} def +/AdobeSerifMM +{ +500 0 10 -12 484 692 + { + 347 298 m + 171 298 l + 170 310 170 322 170 335 c + 170 362 l + 362 362 l + 374 403 l + 172 403 l + 184 580 244 642 308 642 c + 380 642 434 574 457 457 c + 481 462 l + 474 691 l + 449 691 l + 433 670 429 657 410 657 c + 394 657 360 692 299 692 c + 204 692 94 604 73 403 c + 22 403 l + 10 362 l + 70 362 l + 69 352 69 341 69 330 c + 69 319 69 308 70 298 c + 22 298 l + 10 257 l + 73 257 l + 97 57 216 -12 295 -12 c + 364 -12 427 25 484 123 c + 458 142 l + 425 101 384 37 316 37 c + 256 37 189 84 173 257 c + 335 257 l + cp + 500 0 m + } +ct_PSBuildGlyph +} def +end +%%EndFile +setglobal +Adobe_CoolType_Core begin /$None SetSubstituteStrategy end +%%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec +Adobe_AGM_Image/ds gx +[/NamespacePush pdfmark_5 +[/_objdef {Doc_Metadata} /type /stream /OBJ pdfmark_5 +[{Doc_Metadata} 1012 (% &end XMP packet& %) ReadBypdfmark_5_string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +% &end XMP packet& % + +[{Doc_Metadata} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark_5 +[/Document 1 dict begin /Metadata {Doc_Metadata} def currentdict end /BDC pdfmark_5 +[/NamespacePop pdfmark_5 +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: 1 1 +%%EndPageComments +%%BeginPageSetup +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Core/capture_mysetup gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec +Adobe_AGM_Image/ps gx +Adobe_AGM_Core/ps gx +gsave +/0 +[/DeviceRGB] /CSA add_res +grestore +Adobe_AGM_Core/pt gx +%%EndPageSetup +1 -1 scale 0 -150 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 150 li +186 150 li +186 0 li +cp +clp +[1 0 0 1 0 0 ]ct +150 lw +0 lc +0 lj +10 ml +[] 0 dsh +false sadj +8e-6 75 mo +186 75 li +false sop +.98039 .92157 .72941 rgb +@ +1 0 0 rgb +%ADOBeginSubsetFont: PBAAAA+AGaramond-Bold Initial +%ADOt1write: (1.0.24) +13 dict dup begin +/FontType 1 def +/FontName /PBAAAA+AGaramond-Bold def +/FontInfo 8 dict dup begin +/Notice (Copyright (c) 1989, 1992, 1996 Adobe Systems Incorporated. All Rights Reserved.Adobe Garamond is a trademark of Adobe Systems Incorporated.) def +/Weight (Bold) def +/ItalicAngle 0 def +/BaseFontName (AGaramond-Bold) def +/WasEmbedded true def +end def +/PaintType 0 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 65 /A put +dup 70 /F put +dup 76 /L put +dup 88 /X put +dup 99 /c put +dup 101 /e put +dup 111 /o put +dup 114 /r put +def +/UniqueID 42792 def +/FontBBox {-158 -269 1147 862} def +end +systemdict begin +dup /Private +14 dict dup begin +/|- {def} def +/| {put} def +/BlueValues [-16 -0 660 676 400 414 626 640 715 715] def +/OtherBlues [240 247 -269 -255] def +/FamilyBlues [-16 -0 660 676 394 408 626 640 715 715] def +/BlueScale 0.0479583 def +/StdHW [53] def +/StdVW [130] def +/StemSnapV [130 143] def +/ForceBold true def +/password 5839 def +/MinFeature {16 16} def +/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869 +systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup +/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def +/Subrs 5 array +dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> | +dup 1 <1C60D8A8C9C3D06D9E> | +dup 2 <1C60D8A8C9C202D79A> | +dup 3 <1C60D8A849> | +dup 4 <1C60D8A8CC3674F41144B13B77> | +def +put +dup /CharStrings +9 dict dup begin +/A <1C60D8A8C9B6655377F55DD3C734EE632665B298A6B78FF364EB5A19E433 +08A23641367E58C1ED142CFAD28A8B24C3FAB860388EDF4D1D6AA7F74C5DE3A0 +888018D277BEE8A9EAD59CCC84A313F61EE84C049058C0D0F23B177D09CEF16E +2A16C69D2AEE1C70629AA291E2EC488825097BC72246693EC07CBD9F7A8783A6 +AF25AC6C6E2921803B133E26A26243B799379830A32B100FCB9B5974B13646B5 +223309EF30719C34A914EE7088D846FBE557000602D14CEF3692F404D0A66FA7 +7C0960553B99E6D4F074C95163875A3E9EAEB4EC0B93A0AA9A1BBE8F75A5EC6A +A1B7BE29A1D0131F9572A486F2E0939334510D5917C43E07017DBB869F097AB9 +0104AE623A1D6E8448698F4EB22B491858147D69FD3BEF97B03A51EBAE37211D +A62412616035DF21CA79F13C4F> |- +/F <1C60D8A8C9B797473FFA53E477313E10F50BF5C3C426109D60C5D22BFCA0 +ADB3C03621BF16F9E9A29D0239303826711D714004B6199870489FDB427E0D83 +7236F0A56326E282E7B1D1CCBD3C42F22897732FDD9815B0BC928BA939A27D8F +BF1E0253A392153CF0CCC8BB041962F4A1BD240195F6BD361C80FC0C124DA8F2 +86A8E1DCB07AEE55F24FBA9B324059B5B881377C2B6694302FA20973D5937A66 +DFDD6E3BCFBEA4D5ED84EB1864C3127E6CCDDDD68C5D2315E194A295ED025924 +665B35C18EF62C2579B7D922AE132C0B4128970BF2EB5FEE17F56B61B26F2D4B +1F56405E62039168B080E46D08E4D2EABA47B0FA27355DF4E7A8AA90B18BA910 +8067968CC9938ADED760EBFBB723671936E386D2FDEB13953E3865B3B90BF5CA +56702261BAB3900C600B409B243373F41F345BDFFE69AECE6EBA47BD8E4EC3EE +9A755F5F0FC51201C65AABAA3D623F249FD1F8EADC055CA7B42C23328BE5B8C8 +A9AA0399AF01CD5B07D54F368924D957CB87A8FD23BC71A7CCDAC9AE23CE9DCE +1D5B72F1D6D5D24A12D5C9E696F45414297D417FBFA7936B09F695594EBBD608 +E08A9CBAE08D0370> |- +/L <1C60D8A8C9B7F2A78FB91FEC0AB1E70F60008564059437FB5A80C4C3A1A6 +72D1EED6F19B026C02D2F4590422303378E71150D7C9E5427C28F992D7C27A32 +FA389DCD93B2FD99D81EC2ABF2BD0AC60EC421184679098DCEC5A4AD222EA8ED +D3607F288DD9A618B7BE19074A2D520A9A5C3ACBCC2FA7B86F916B00201EEBB1 +7911DD5181EFE2A0F81BB72AAB67717D530BD33A2B93A28944C46A376663CC44 +1E8DA79233950D8594FA48667A3AC379766FE39AD438D3FDC9858B678E609AE5 +A41BF446FD80E08BAF7B233E9527E5F4218FAF091146C1F0D8FC3A30A5EFFC4C +75740C6487C2FF5E66AB94B7530CEA> |- +/X <1C60D8A8C9B64C38AD99E8223C0B9A93D821D7A7EC037F50529290949BF1 +D40520646BE75AC36DDDE2799793545853190D8B3CF8A886D21E673C29585216 +9853B08D7DE38F77E554BDC1C115E7A7A28A2C3B73B2896283F45F29E54C1936 +8EF2B5153DEC202D0D7A1B3AA0FCC9368FAE5F6340D642623C05DBA81CF96F21 +0350D7AE6976B7B259661BA3224C12E1E041B17E91DBEF6061165FB76A0EF910 +BCAA01839CF96B4DAA0537B3139F3DCC4E27292979BD393F4AEAD0E87C134175 +95AEB8D77580D2EB9734C1545E3777802E2DD604B644333DFF5E3E45C0E9699A +28456803232177C4AD32CD74A7C3ED88AF964528A6481A29D747C0A1F0AEF7BD +6224B61D4998C59B1DAF6CE2F7B0CC11CCAA2CB3F0CBD5C4BDF2C6A7757C32C1 +5ED58490B81133E29403BA1D1A4143E54E1DBB070424226C887811BF763F3029 +0A171F9EC3CC19FF8C726DBED83C8D9F47F876D9609E47DB89F2AC7075F4F452 +E5151235DC29F8C4EFD41C0DF74854AD15FDF0EA46A58AD037FD4DEA6CB0932A +82E552EEF87777D36C300401D8708F690FB8D413B3BE48D62B94AB90372F367A +30EBCB47B813314E64E5D0730724DDCA08C83BDD1D7993A1669A5212035C> |- +/c <1C60D8A8C9B71B403A818C3DF4826E1F45CF4EECE6D7D5AFE3BA0007DE7F +590734D8CA8997F38C8376C5732929B352E785C51A99B8BA68412FAF281BAB53 +2A18189AEC120AC2F0D76432FB4DA510C10CA9BC537342C3EFED625E4A8313F4 +5AB64917206116EB275D6F> |- +/e <1C60D8A8C9B7171E0E8A38F06EFB5650A378BD33F88451C83C722AF24588 +2E39BB877C5ED5AAB96BB4371C80A25530DA3017C22D46EE85E79EC4D12711A4 +31A95533FFCA59766087C1ABD510709349A5E354AFC1CB8AF80B14E0953EC9C7 +DAD2D34949C1A71787B530C6EA79398AD4C7C76CB7A2FA6ACA7207AC89> |- +/o <1C60D8A8C9B7B71AC6E947C0F92A6892BA71854D190FDE2F840A4F9C319C +61A64E30AEAFF817D1D81C7E802E4C28E67A00727F4B13EFC195011A8A709D78 +5C15ACAB3938932F09CF329C9A687AC2902EB3B126C2C4E27EEA> |- +/r <1C60D8A8C9B728C5DB8274F71B9523FEA7BE2412DC50C4BC77147040DF6F +18B5387CC9A3C04A0DC1E33CA81D41BDF8CA9E85570DA0B8D95099E92636EEF5 +F33A867301F8B8627F52D835EA1A457BF5C9E5C19BBE664ECCA543EA5805A1FD +2368F67B106CF0B2AE65AF7DDB69A845EE8812A9760CFDF2EEF319FE4E1BCCD1 +0337EBEC0AD8229B09BC80D059F20B7E3CC9404B13C454CCC7618F6EF3F49242 +220284FD980A9D77A79D6354D07FD59B656047389F371C1B68C3FC4BE3D172D3 +FD90B9577E2F7241B00EE02DA2CEDDE6D69701377D75CBEF> |- +/.notdef <1C60D8A8C9B8666C32> |- +end put +end +dup /FontName get exch definefont pop +end +%ADOEndSubsetFont +/DYMKXI+AGaramond-Bold /PBAAAA+AGaramond-Bold findfont ct_VMDictPut +/DYMKXI+AGaramond-Bold*1 +[65{/.notdef}rp /A 4{/.notdef}rp /F 5{/.notdef}rp /L 11{/.notdef}rp /X +10{/.notdef}rp /c /.notdef /e 9{/.notdef}rp /o 2{/.notdef}rp /r +141{/.notdef}rp] +DYMKXI+AGaramond-Bold nf +DYMKXI+AGaramond-Bold*1 [20 0 0 -20 0 0 ]msf +57.5871 51.7676 mo +(AcroF) +[12.3599 8.32001 7.30004 10.3201 0 ]xsh +103.515 55.7976 mo +(L)sh +109.215 51.7676 mo +(eX) +[5.89996 0 ]xsh +0 0 1 rgb +%ADOBeginSubsetFont: PBAAAA+AGaramond-Bold AddGlyphs +%ADOt1write: (1.0.24) +systemdict begin +DYMKXI+AGaramond-Bold dup +/Private get dup rcheck +{begin true}{pop false}ifelse exch +/CharStrings get begin +systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if +/G <1C60D8A8C9B61332955D57ADE2128E92F5BA25BFC66B9671A7D0C0989F22 +390CE3FA08216182862A271EF35B49C0826C266DFD0A355DB6BA449076E3ED4F +E3A09EC27F8497792F5495DC538E61CC60B0A728A04839904FD9B14D6EA75300 +829BD12F41BC5B50D0C4311F448AC4B09C112FA931BB71D66CA388BCE25EF7A7 +C285A2B8B9482B55F7BAB7D6E5FAF75724D60DA09342C7C407DC82054FDCC2FE +749A66E0C44EDC290FCCBE802E9A274AB56738638810DB485ACA35298DB8D3C7 +90B4ED8A551BE76A52F230E00E8C4D5CE50B4B2914F8C2C0ED58437F518D2009 +D74E69A2B99871C1094D9A41C46525B19F783469C54D1AA446A8DA5218734B06 +0CD3D7F9B1656047BABA870A2F40EB61D8AA56DCB64422352EF4E93464063E18 +F56E8B8925DF9B38C3269D34BF> |- +/a <1C60D8A8C9B760FD31B88B3EBC39647A0287B9946E5CC772F4B9508E6831 +A77E239C1A2AF45082C758F785406B498A09CE1CD8208C090F0EA4503B257559 +B34AADF5AF462A87ED8D65E015C7874CB097222BB9CC725188346AE56253BFAC +9D02A85A0174872D2D8153D09A0141B285B311E4FFAFC20663C575A094842AC4 +3AB7F5A91489ABDDE684A2A25852100B9E8E36AB428D5A00CBF1DB10026234D8 +5271E1A5E1E0C781A8B64323CFE9BD55A97544DB630E14B25328573EDFEED2C7 +E077E2B97BD60516D5C15496D181D876DECF9673EA8D88E873C17AC415021A27 +8B893A1359134B41669BF6BC4392459E27815A86239C99F4E98AF386187A75E5 +D537DE82780A7095373A2279FF3659> |- +/g <1C60D8A8C9B75CBB5010E213CE6CB9D65A0E04CF79C5CFCDDD48F782BE1F +E3612A82BB63E540E6FF8663326AF45B46067A9468D20C0116514D54E954A7C2 +449589D732D47DD8082FDF0C03584C30CF444D32ACF58F0F552EB0C341AB4D97 +1B421587C767F52D9F0C187121AD3506AFEB7D876492DB0E7334E313313AE243 +A3F816555EF4E486F63B272D0BA54070920663B4DEFC06CC175F60309D710433 +FD125D89FAE80DEC6F628BD513112FCF4B3728FB82CEB32EADB9820E3980C814 +035E5D3A8B35ADF35C010D51342985B52B400387E962FBBA082CA5E94663738C +938EF976EA32A044CB6CCE498ABB3553D77BB7F634811502930492104BD8C874 +3635935631DC93A2F3D2097D77A4DCD4A8271670B3B0E500AD72583E4A7BEFC5 +701BE253B235348F606D75ACD43E79DD437FFC084D0E087CE74703D363E27C44 +686E2B1567732D9B98B6A4D0894F8E184EA5CDD92550669CBC8C4F050100053B +1D10D8755DC7DEDAABEEDDC26AB3A3D119D77D27> |- +/h <1C60D8A8C9B79815885BCF3A1C586BB8D743FF3D8932B19A53E73B274B8B +AEE3D8DC6DB5ADE289A21ECD9A00EDC30540DF7E5804E50C841D1F1882535A32 +DD609E70F2817CE3FC9CBEF669E0CD62BBCD235A3080E381D8301CF26296C871 +C24EBC5AB59D43748CA1E5C465277271F41466DA67AC7F996A48C219680E7F02 +2F4ED846D7A75B94FBA1D98C2E8E600DC37825CA500AC5F48CB35151E5BF236A +229CF1BFD85EA1E2A67EFA9268574275F1BB989C2FF8F09BA10E642BFAF13AC7 +E264A521BB0A7786A4106BF3D4AE3572601F27CE6D8CC8296145808A97A29A56 +BF440B51F1407CF75E85BCF488FF80A8C013EC4F9642F91DE82C16B53B4DCBF5 +D868776E1C8EF06C93C370B4E71B1AEE6781EA11081FB5FE9624DEBDEDE8FC78 +72689D539483DE41266646C339270B7337BA571BE0DB164011E9F39296> |- +/i <1C60D8A8C9B84C670D1B82727EF32637044703D1099AB39E10C336B4FB6B +AE6E6C86CFA77FEA15789E8ABE1323397171E81B9AFE910942F8BEC5B9AD77C2 +B4F4AC6E6D5E59A5E71BAC69620C645C28351A65D4626FF9CF83007A77192826 +7D04A528F682478B3394442D67F1FB0F4BD4D8A10DF45D96156A19EC352A7EFF +0C127890596C94B718F54D67B3C2527EE581F606C8A974A1338F97880BBF3456 +087F6DD698DE01FB2899732F09AB79370618C9E9A4431028FA8012F1ACB4ECFD +68FD09947B97730C8862E65C2E9F2B796E16FF6F112A180855EFD698164A45BF +F6> |- +/n <1C60D8A8C9B795A0CE292F17261D112E0E3D715AD602AFC3F68C4B4501DD +082CC52463961AFB980C0BF581166729BCF61B90905F566F01025BC78C18C806 +14B967CE96AD7C11F4CD97FC2B4357B9BE6374DA7B7ADA7B13E8014295BE856A +39DBBC85EFBCF83D3547F5C415D75143813E0471BC15C0644B762EEC68C30B7C +1A3BB5659EA4E022D94E7CEDA28F5AEA3CBD9065D2112ACE68B7312F3DC40C20 +D906290820BF61B880491D204189A1E7E7561FA2361D538C87E20229AA34C2D2 +786000774B1707398BAB32C26EB53452669A37751331547B82079B604134B168 +AB731B13D6BD22E212896D8CC3771F67E604361988F51E7723EE04F8F47964C3 +B801192B838D73CF0C5E34E97DB6A49E2B14CE0ECF00B0B2275B5AE4597BE6F2 +408F2C5B12D81DEFE986CA593C66BA61A482> |- +/p <1C60D8A8C9B79C5FED6C0F0DDDA6319F1AAF52DAF53F728156D3EC8CAF36 +1A29D17ECC16ADC2E6AB315E1FDCB815C360844596AE1D41E27CBB3A25D8BB57 +FE09DEC308863553A977413877330B42637E4E528556009AE15CDDDB67C6F877 +519D4919BA009EC3C64D54E07E78270FA9536F54709A76E963E287A2CFE9595A +8793E3EB17B9583E37D6402AECBC25F03BBB365E3CE3D68BE6429BC7301F6B5B +B8EAA7E989068D4C9F66124F22CD4012A5A342E3CA82C820766E68899FF2BB02 +B7BDAFACB1254F308965DE871249B70A2925900D31854421D9B5160BB9851F1F +3C02B9DCA502919799BD9CC1E5496A05374B1465AFE67EABA621BD7CD3499784 +67179D3001F4BDFEC6855A3338543EF96BEC6FAC319096657E953B81ED6A76CC +37CD307C352A9860852D6B51F7B9AA9E> |- +systemdict /gcheck known {setglobal} if end {end} if +end +DYMKXI+AGaramond-Bold /Encoding get +dup 71 /G put +dup 97 /a put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 110 /n put +dup 112 /p put +pop +%ADOEndSubsetFont +/DYMKXI+AGaramond-Bold*1 +[65{/.notdef}rp /A 4{/.notdef}rp /F /G 4{/.notdef}rp /L 11{/.notdef}rp +/X 8{/.notdef}rp /a /.notdef /c /.notdef /e /.notdef +/g /h /i 4{/.notdef}rp /n /o /p /.notdef +/r 141{/.notdef}rp] +DYMKXI+AGaramond-Bold nf +DYMKXI+AGaramond-Bold*1 [20 0 0 -20 0 0 ]msf +53.7111 83.0496 mo +(Graphing) +[14.1999 7.42004 8.85986 10.86 10.9399 5.71991 11.0001 0 ]xsh +.137422 .122799 .126081 rgb +%ADOBeginSubsetFont: PBAAAA+AGaramond-Bold AddGlyphs +%ADOt1write: (1.0.24) +systemdict begin +DYMKXI+AGaramond-Bold dup +/Private get dup rcheck +{begin true}{pop false}ifelse exch +/CharStrings get begin +systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if +/period <1C60D8A8C9B8666C4126EF39EAAD870163BC6E0A685D8DFB65EC8E1 +4751696A1FA1256DD2B28A8D4B11B> |- +/D <1C60D8A8C9B6CC61ECFA600FD7EAC88B684706E11436B4F56500C772BF7D +B6E5DA7D261672C80EC451495133D15DB5ED65DB077EF24A257F68C944D48E62 +05CDF6A4EBB3CC0BFB661CC960477F5973544BB9DA066EAA4703C8060D715472 +1F19CB93FF81726E1E797FC341ECD27E70BADF10A8E3E1D161091C04C08FCDA3 +D4C0FB7789D6BC4743587ED10033C808B48148707A6366E2B903557C92042E80 +E78C3550ECA75896A49868F19B4D244695974AA8D7D4CFBAEEAE973276A3F939 +6C908F34376C3FD2A2A0C8BC5083A7DDEE9CA69251C65636F1FA399348432945 +EE0431DBAE748D505732207F2A2995AE193606F03ACC829B7E56BD51E00F62> |- +/P <1C60D8A8C9B7C2FB443727177F0B040011071E8BE2EF927647B2219C190D +5C19CACC673C693F4C41C347BFC1CEC04647E5B5731BF15EE115DB8B58185D77 +EC501ABE71C0952ABB68B5604C3AAA01BEDD3421ABDC547FD8F7D633A0DDE399 +5AA04D999D01E52045ADE3FE7415F39D784308A23F6BFB1A2709584C8C15943D +B8B7FB4305694C2B50A54C1C794DD0F2294BF454B4A0AB2F5CCC517DF5D75D76 +CBDAE949D802C0B204D2FBAF538B31E8CCC2B915817D01206A1BA9476FD0F72E> |- +/S <1C60D8A8C9B7A157DDD65E2D6E12EC4D29CCC558B9108AFEF527FF151C11 +542D754791DEC089770797EA43AA0A17389D01F94E62265ED32A176828C3AD24 +39C25706F52598126A3BC30823B311DF27B862E870829EF46A3FFB0ABA414799 +0D10096650D3EA773866ECD8F321BD1427A8CD97D24C672F5F92AD13BAEAAD86 +68326C737AFBBFE93FA770F72DA1BC158949F9BB71F78143> |- +/t <1C60D8A8C9B8293CC14C0716D97838C5907536CD72965E4133CE6BF69240 +E0F97FC614D5C145665C1B21D826CD95C7C948414B9413D983721B772AEA451C +8BA24085FF9D67767DF832359F8123BCC3FC2B63A4D7673B9897192027F472C7 +901F495435D5885A25B1D31CA436A82DA6A13540D8F86D370E344C160A3005EC> |- +/y <1C60D8A8C9B746F4A78DF719F6FD142DD510DF52F278FDB6983C74AA48BF +E99EE4434D535143C45FAAB4EEFDD7BAECF96E2CDA41D185914A27256BE3F0AE +4DE4A18F4F8151460AB6DC22A8D90020EA0D7097F7A95AF9AFCD371CD60808C1 +D91F2B06DF675B1D19ECAEE31DADBA173CFDECD6F13866DF108E9E5962DC0453 +1E7FB0C3A161BBDE108FCCAD1E593EAAEC4132E478657B076732A872E7F674ED +99109BA6EBEB2532EAF21584084662AA3C0921F21C49F28D10808B0B5D4197A9 +DF6AC2AA5AD7AC1A4EB1F9464D0C631411725A8CC820156C222C2446757EA1B8 +7D3C5A647BA188F49DFC46B9ECB8242AA458AC0397DBA766A5F50F9EB24CB02A +74A22A692DC5F4FD13B6DD8B4F91DF0836178BBA902268E33800DF340844607A +ECAF7B78237118> |- +systemdict /gcheck known {setglobal} if end {end} if +end +DYMKXI+AGaramond-Bold /Encoding get +dup 46 /period put +dup 68 /D put +dup 80 /P put +dup 83 /S put +dup 116 /t put +dup 121 /y put +pop +%ADOEndSubsetFont +/DYMKXI+AGaramond-Bold*1 +[46{/.notdef}rp /period 18{/.notdef}rp /A 2{/.notdef}rp /D /.notdef /F +/G 4{/.notdef}rp /L 3{/.notdef}rp /P 2{/.notdef}rp /S 4{/.notdef}rp +/X 8{/.notdef}rp /a /.notdef /c /.notdef /e /.notdef +/g /h /i 4{/.notdef}rp /n /o /p /.notdef +/r /.notdef /t 4{/.notdef}rp /y 134{/.notdef}rp] +DYMKXI+AGaramond-Bold nf +DYMKXI+AGaramond-Bold*1 [9.9626 0 0 -9.9626 0 0 ]msf +70.9179 135.534 mo +(D.P.Story) +[7.90034 5.1805 4.19423 5.1805 4.80194 3.2179 5.14077 3.87547 0 ]xsh +grestore +grestore +pgrs +%%PageTrailer +[ +[/CSA [/0 ]] +] del_res +/DYMKXI+AGaramond-Bold*1 uf +/DYMKXI+AGaramond-Bold uf +/PBAAAA+AGaramond-Bold uf +Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec +Adobe_AGM_Core/restore_mysetup gx +Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Utils begin +[/EMC pdfmark_5 +currentdict Adobe_AGM_Utils eq {end} if +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec +Adobe_AGM_Core/dt get exec +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EOF diff --git a/texmf-dist/doc/latex/acroflex/examples/aflogo.tex b/texmf-dist/doc/latex/acroflex/examples/aflogo.tex new file mode 100644 index 00000000..3adf52c4 --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/aflogo.tex @@ -0,0 +1,42 @@ +\documentclass{article} +\usepackage[usetemplates]{web} +\usepackage{anyfontsize} + +% +% This is a simple attempt at creating a poster for +% movies. +% +% After creating a PDF document of this source file, bring +% it up into Acrobat, and do a Save As an EPS file. +% +% I don't remember why I chose these dimensions. The +% aspect ration of this file should approximately match +% that of the movie, so the text will not get distorted +% too badly. +% + +\margins{0bp}{0bp}{0bp}{0bp} % left,right,top, bottom +\screensize{150bp}{186bp} % height, width + +\parindent0pt\parskip0pt + +\def\fifteenpt{\fontsize{15}{15}\selectfont} +\def\twentypt{\fontsize{20}{20}\selectfont} + +\pagestyle{empty} + +\textBgColor{webyellow} +\def\AcroFLeX{AcroF\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@} + +\begin{document} + +\null\vspace{-\baselineskip}\vfill +\centering{\bfseries\color{red}\twentypt\AcroFLeX\par\medskip} +\par\medskip +{\bfseries\color{blue}\twentypt Graphing} +\par\vfill +{\bfseries\fifteenpt\color{black}D. P. Story} + +\bigskip + +\end{document} diff --git a/texmf-dist/doc/latex/acroflex/examples/transf_grphs.pdf b/texmf-dist/doc/latex/acroflex/examples/transf_grphs.pdf new file mode 100644 index 00000000..c6212a84 Binary files /dev/null and b/texmf-dist/doc/latex/acroflex/examples/transf_grphs.pdf differ diff --git a/texmf-dist/doc/latex/acroflex/examples/transf_grphs.tex b/texmf-dist/doc/latex/acroflex/examples/transf_grphs.tex new file mode 100644 index 00000000..74dad7db --- /dev/null +++ b/texmf-dist/doc/latex/acroflex/examples/transf_grphs.tex @@ -0,0 +1,296 @@ +\documentclass{article} +\usepackage{amsmath} +\usepackage[% + web={pro,tight,usesf}, + eforms,exerquiz,dljslib={ImplMulti}, + graphicxsp={showembeds} +]{aeb_pro} +\usepackage{acroflex} + +\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom +\screensize{6.8in}{5.5in} % height, width dimensions + +\DeclareDocInfo +{ + title=Exploring Graphical Transformations, + author=D. P. Story, + university=Northwest Florida State College, + email=storyd@owc.edu, + subject=Demo of the acroflex and the rmannot package, + keywords={Adobe Acrobat, JavaScript, Adobe FLEX 3, ActionScript}, + talksite=\url{http://faculty.owc.edu/math/storyd}, + talkdate={\today}, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL=http://www.acrotex.net +} +\talkdateLabel{Published:} + +\setWindowOptions{showtitle} + +\requiredVersionMsg{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiredVersionMsgRedirect{% + Version 9 required: This document may be viewed, but version 9 + of Acrobat/Adobe Reader is required to view the rich media + annotations present in this document.} +\requiresVersion[warnonly]{9} + +\def\AcroTeX{Acro\!\TeX} +\def\myURL{http://www.math.uakron.edu/\string~dpstory} +% +% The following definitions are for the rmannot package. +% The \saveNamedPath associates the name AcroAd with the +% path to a Flash animation, Acro_Advertiser.swf. +% The two \makePoster definitions are for the posters of the +% rich media annotations. The first for the animation on page 1 +% and the second for all the AcroFlex graphing screens. +\newcommand{\myRMFiles}{C:/Users/Public/Documents/My TeX Files/% + tex/latex/aeb/aebpro/rmannot/RMfiles} +\saveNamedPath{AcroAd}{\myRMFiles/Acro_Advertiser.swf} +% +% See the rmannot documentation. You can create your own +% poster graphic and declare it in the preamble. +% +\makePoster[hiresbb]{aflogo}{aflogo1} +\makePoster[hiresbb]{AcroAd_poster}{AcroAd_poster} + +\parindent=0pt +\pagestyle{empty} %\previewtrue +\def\graphAndControls{\kern0pt\noindent + \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\\[1ex] + \makebox[\hScreenGraph][l]{% + \savedelSelBtn[\textSize{7}\CA{S}]{9bp}{11bp}\kern1bp + \functionSelect{50bp}{11bp}\hfill + \funcInputField{\hScreenGraph-50bp-6bp-9bp}{11bp}% + }\\[1ex] + \makebox[\hScreenGraph][c]{\scriptsize + \graphBtn[\textSize{7}]{}{9bp}\kern1pt + \graphClrBtn[\textSize{7}]{}{9bp}\hfill + \hShiftL{\raisebox{1bp}{\reflectbox{\ding{220}}}}\,% + \vShiftU{\raisebox{1bp}{\rotatebox{90}{\ding{220}}}}\,\,% + \amtShift[\textSize{7}]{12bp}{9bp}\,\,% + \vShiftD{\raisebox{1bp}{\rotatebox[origin=c]{-90}{\ding{220}}}} + \hShiftR{\raisebox{1bp}{\ding{220}}}\enspace + \hfill\zoomInOut[\textSize{7}]{}{9bp}% + }\\[1pt]% + \makebox[\hScreenGraph][l]{\scriptsize + $x = $ \strut\domMin[\textSize{7}]{36bp}{9bp}\ldots + \domMax[\textSize{7}]{36bp}{9bp}\hfill + $n = $\numPoints[\textSize{7}]{16bp}{9bp} + }\\[1pt]% + \makebox[\hScreenGraph][l]{\scriptsize + $y = $ \rngMin[\textSize{7}]{36bp}{9bp}\ldots + \rngMax[\textSize{7}]{36bp}{9bp}% + }%\\[1pt]%% +% \makebox[\hScreenGraph][l]{\scriptsize +% $t = $ \strut\domMinP[\textSize{7}]{36bp}{9bp}\ldots +% \domMaxP[\textSize{7}]{36bp}{9bp}% +% } +\par +} + +% +% Display an advertisement on the opening page through the +% \optionalPageMatter command. +% +\optionalPageMatter{% +\begin{center} +\begin{minipage}{.7\linewidth} + \resizebox{\linewidth}{!}{% + \rmAnnot[poster=AcroAd_poster,enabled=pageopen]{612bp}{265bp}{AcroAd}}% +\end{minipage} +\end{center} +} + +\begin{document} + +\maketitle + + + +% Basic parameters. These are the graphing screen dimensions you wish +% for the AcroFleX graphing widget, and the \graphName is the base name used by +% all the supporting components to the graphing screen. + +\dimScreenGraph{160bp}{160bp} +%\dimScreenGraph{186bp}{186bp*3/4} +\graphName{graph1} + +\begin{center}\bfseries\Large\color{blue} + Transforming Graphs +\end{center} + +\medskip +This is a demo of graphical transformations, and is based on my recent work over the summer, 2008, +on creating a interactive graphing system using a Flash application, written by myself, for PDF. +Adobe Reader 9.0 or later is required to use this system. +\medskip + +\begin{minipage}[t]{\hScreenGraph + 10bp} +% +% Insert the \graphScreen with all possible controls. Plot data entered by the +% user is interactive mode. +\graphAndControls +\end{minipage}\hfill +\begin{minipage}[t]{\linewidth - \hScreenGraph - 10bp}\small\par +\textbf{\textcolor{red}{Instructions:}} This graphing system can graph +a function of $x$. +\begin{questions} + \item For a function of $x$, enter an algebraic expression to be graphed, e.g., + \verb!x^2!, \verb!x^3!, \verb!3x^2-1!, \verb!|x|!, \verb!sqrt(x)! + \item Set the graph viewing window: The range of the horizontal + axis ($x$-axis) and range of the vertical axis ($y$-axis). + For parametric plotting, set the range of the $t$ variable. + \item Enter the number of points, $n$, to plot. + \item Click the \textsf{Graph It!} button. + \item Shift the viewing window horizontally or vertical; + or zoom in or out. + \item Click \texttt{Clear} to clear the plot; use + \textsf{shift-click} to deactivate the graphing screen. +\end{questions} +\end{minipage} + +\medskip + +\noindent\makebox[\linewidth][c]{\rule{.67\linewidth}{.4pt}} + +\medskip + +\parskip3pt + +\defineGraphJS{graph=c2,xInterval={[d_min,d_max]},yInterval={[r_min,r_max]}, + noquotes,points=n_Pts}{newFunc}{\verticalShift} +\defineGraphJS{graph=c2,xInterval={[d_min,d_max]},yInterval={[r_min,r_max]}, + noquotes,points=n_Pts}{newFunc}{\horizontalShift} +\defineGraphJS{graph=c2,xInterval={[d_min,d_max]},yInterval={[r_min,r_max]}, + noquotes,points=n_Pts}{newFunc}{\verticalShrink} +\defineGraphJS{graph=c2,xInterval={[d_min,d_max]},yInterval={[r_min,r_max]}, + noquotes,points=n_Pts}{newFunc}{\horizontalShrink} +\def\gatherGraphingData{% + var f = this.getField("graph1theFunction").value;\r\t + var d_min = this.getField("graph1theDom.min").value;\r\t + var d_max = this.getField("graph1theDom.max").value;\r\t + var r_min = this.getField("graph1theRng.min").value;\r\t + var r_max = this.getField("graph1theRng.max").value;\r\t + var n_Pts = this.getField("graph1numNodes").value;\r\t +} + +Explore graphical transformations by entering numbers into the fields below. Put your mouse +over the fields for additional instructions. Click on the green links to populate the +graphing screen with suggested examples, then manipulate these examples using the controls below. + +\smallskip + +\begin{center} +\begin{tabular}{lll} +\textbf{Description} & \textbf{Input} & \textbf{Suggested Examples}\\ + +Vertical Shift & \textField[\textSize{7}\TU{Enter a number (positive +or negative) to shift the graph vertically up or down.} + \AA{\AAKeystroke{% + if (event.willCommit) {\r\t + \gatherGraphingData + var _C = event.value;\r\t + if ( isFinite(_C) ) {\r\t\t + var newFunc = f+"+"+(_C);\r\t\t + \verticalShift\r\t + }\r + } +}}]{vShift}{20bp}{9bp}& +\sgraphLink{populate,xInterval={[-2,2]},yInterval={[-3,3]},points=40}{x}{$x$}, +\sgraphLink{populate,xInterval={[-2,2]},yInterval={[-2,4]},points=40}{x^2}{$x^2$}, +\sgraphLink{populate,xInterval={[-2,2]},yInterval={[-4,4]},points=40}{x^3}{$x^3$}, +\sgraphLink{populate,xInterval={[-2,3]},yInterval={[-3,6]},points=40}{(x-1)^2+1}{$(x-1)^2+1$}\\ +% +% +Horizontal Shift & \textField[\textSize{7}\TU{Enter a number +(positive or negative) to shift the graph horizontally right or +left.} + \AA{\AAKeystroke{% + if (event.willCommit) {\r\t + \gatherGraphingData + var _C = event.value;\r\t + if ( isFinite(_C) ) {\r\t\t + newFunc = f.replace(/x/g, "(x-("+_C+"))");\r\t\t + \horizontalShift\r\t + }\r + } +}}]{hShift}{20bp}{9bp}& +\sgraphLink{populate,xInterval={[-2,4]},yInterval={[-2,2]},points=60}{sqrt(x)}{$\sqrt{x}$}, +\sgraphLink{populate,xInterval={[-3,3]},yInterval={[-3,3]},points=60}{x^{1/3}}{$\sqrt[3]{x}$}, +\sgraphLink{populate,xInterval={[-2,4]},yInterval={[-2,3]},points=60}{sqrt(x-1)+1}{$\sqrt{x-1}+1$}\\ +% +% +Vertical Stretch/Shrink& \textField[\textSize{7}\TU{Enter a positive number +to stretch or shrink the graph vertically.} + \AA{\AAKeystroke{% + if (event.willCommit) {\r\t + var f = this.getField("graph1theFunction").value;\r\t + var d_min = this.getField("graph1theDom.min").value;\r\t + var d_max = this.getField("graph1theDom.max").value;\r\t + var r_min = this.getField("graph1theRng.min").value;\r\t + var r_max = this.getField("graph1theRng.max").value;\r\t + var n_Pts = this.getField("graph1numNodes").value;\r\t + var _C = event.value;\r\t + if ( isFinite(_C) && (Number(_C) > 0) ) {\r\t\t + newFunc = String("(_C)*("+f+")")\r\t\t + \verticalShrink\r\t + }\r + } +}}]{vShrink}{20bp}{9bp}& +\sgraphLink{populate,xInterval={[-2,2]},yInterval={[-2,4]},points=40}{|x-1|}{$|x|$}, +\sgraphLink{populate,xInterval={[-2,3]},yInterval={[-2,2]},points=40}{|x-1|}{$|x-1|$}\\ +% +% +Horizontal Stretch/Shrink& \textField[\textSize{7}\TU{Enter a positive number +to stretch or shrink the graph horizontally.} + \AA{\AAKeystroke{% + if (event.willCommit) {\r\t + var f = this.getField("graph1theFunction").value;\r\t + var d_min = this.getField("graph1theDom.min").value;\r\t + var d_max = this.getField("graph1theDom.max").value;\r\t + var r_min = this.getField("graph1theRng.min").value;\r\t + var r_max = this.getField("graph1theRng.max").value;\r\t + var n_Pts = this.getField("graph1numNodes").value;\r\t + var _C = event.value;\r\t + if ( isFinite(_C) && (Number(_C) > 0) ) {\r\t\t + newFunc=f.replace(/x/g, "(("+_C+")*x)");\r\t\t + \horizontalShrink\r\t + }\r + } +}}]{hShrink}{20bp}{9bp}&\\ +% +% +Reflect w/resp $y$-axis & \pushButton[\textSize{7}\CA{y-Axis} + \TU{Press to reflect current graph with respect to the y-axis.} + \A{\JS{% + var f = this.getField("graph1theFunction").value;\r\t + var d_min = this.getField("graph1theDom.min").value;\r\t + var d_max = this.getField("graph1theDom.max").value;\r\t + var r_min = this.getField("graph1theRng.min").value;\r\t + var r_max = this.getField("graph1theRng.max").value;\r\t + var n_Pts = this.getField("graph1numNodes").value;\r\t + newFunc=f.replace(/x/g, "((-1)*x)");\r\t\t + \horizontalShrink\r\t +}}]{y_reflect}{}{9bp}& +Click \graphClrBtn[\textSize{7}]{}{9bp} before clicking on green links\\ +% +% +Reflect w/resp $x$-axis & \pushButton[\textSize{7}\CA{x-Axis} + \TU{Press to reflect current graph with respect to the x-axis.} + \A{\JS{% + var f = this.getField("graph1theFunction").value;\r\t + var d_min = this.getField("graph1theDom.min").value;\r\t + var d_max = this.getField("graph1theDom.max").value;\r\t + var r_min = this.getField("graph1theRng.min").value;\r\t + var r_max = this.getField("graph1theRng.max").value;\r\t + var n_Pts = this.getField("graph1numNodes").value;\r\t + newFunc = String("(-1)*("+f+")")\r\t\t + \verticalShrink\r\t +}}]{x_reflect}{}{9bp}& +\end{tabular} +\end{center} +\end{document} diff --git a/texmf-dist/source/latex/acroflex/acroflex.dtx b/texmf-dist/source/latex/acroflex/acroflex.dtx new file mode 100644 index 00000000..b2c35005 --- /dev/null +++ b/texmf-dist/source/latex/acroflex/acroflex.dtx @@ -0,0 +1,1951 @@ +%\iffalse +%<*copyright> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Acroflex.sty package, %% +%% Copyright (C) 2008 -- 2016 D. P. Story %% +%% dpstory@acrotex.net %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%\NeedsTeXFormat{LaTeX2e}[1997/12/01] +%\ProvidesPackage{acroflex} +% [2016/08/29 v1.6c AcroFLeX: AcroTeX and Adobe Flex (dps)] +%<*driver> +\documentclass{ltxdoc} +\usepackage[colorlinks,hyperindex]{hyperref} +\begin{document} +\def\AcroFLeX{AcroF\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@} + \GetFileInfo{acroflex.sty} + \title{% + \texorpdfstring + {\AcroFLeX: Merging {Acro\negthinspace\TeX} and FLEX} + {AcroFLeX: Merging AcroTeX and FLEX}} + \author{D. P. Story\\ + Email: \texttt{dpstory@acrotex.net}} + \date{processed \today} + \maketitle + \tableofcontents + \let\Email\texttt + \DocInput{acroflex.dtx} + \PrintIndex +\end{document} +% +% \fi +% \MakeShortVerb{|} +% \StopEventually{} +% +% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let} +% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi} +% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup} +% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand} +% \DoNotIndex{\space,\@empty,\special} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \section{Introduction} +% +% The word \textbf{\AcroFLeX} is meant to convey a merging of two computer technologies: +% \begin{itemize} +% \item \textbf{Acro}: connotes both \textbf{Adobe Acrobat} (\textbf{Adobe Reader}) +% and \textbf{{Acro\negthinspace\TeX}} (as in the +% \textbf{{Acro\negthinspace\TeX} eDucation Bundle} or, just \textbf{AeB}). +% \item \textbf{F\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@}: connotes +% \textbf{Adobe FLEX 3}. FLEX 3 is used to create SWF files to interact with the user. +% In the case of graphing, plotting information is passed from Acrobat, via JavaScript, +% to the Flash widget. ActionScript receives the data, plots the points, and +% connects them with a smooth curve or a straight line segment. +% \end{itemize} +% Acrobat 9 Pro introduces the rich media annotation which plays FLV movies +% and SWF files natively. Acrobat also provides a scripting bridge +% between JavaScript for Acrobat, and ActionScript, the scripting +% language of Flash player. This bridge enables the PDF and the +% Flash widget, embedded in the rich media annotation, to communicate. The scripting bridge +% opens up wonderful opportunities for application to the education +% sector. The graphing of {\AcroFLeX} is one such application of the new +% PDF-Flash connection to education. +% +% \textbf{{\AcroFLeX}} uses the commercial product Adobe FLEX Builder~3 and +% FLEX~3 SDK to produce Flash widgets, and the AeB +% to create PDF documents with appropriate JavaScript to communicate +% with the Flash widget. FLEX Builder~3 is currently free for students +% and educators, the FLEX 3 SDK is free to all. +% +% This style file defines some basic controls for +% \textbf{{\AcroFLeX} Graphing} for controlling graphical SWF files +% for graphing. +% +% These commands are general {\LaTeX} commands, that require no special driver, so +% they can be used by, for example, pdftex; however, we use SWF files to produce +% the graphing screen with the built-in ActionScript to communicate with the PDF. +% For this, you will need Acrobat 9 Pro. In that case, you might as well use the +% Acrobat Distiller to produce your PDF, but it is not necessary. +% +% \medskip\noindent +% Let's begin with a declaration of the {\AcroFLeX} logo. +% \begin{macrocode} +\RequirePackage{rmannot}[2016/02/01] +% \end{macrocode} +%\changes{v1.6}{2015/10/13}{Save catcodes of subscript and superscript, both +% of these are used in ordinary characters in the file.} +% Change catcodes of subscript and superscript to other. +% \begin{macrocode} +\edef\af@subscriptCat{\the\catcode`\_} +\edef\af@superscriptCat{\the\catcode`\^} +\def\af@restoreCats{% + \catcode`\_=\af@subscriptCat + \catcode`\^=\af@superscriptCat +} +\catcode`\_=12\relax \catcode`\^=12\relax +\def\AcroFLeX{% + AcroF\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@} +% \end{macrocode} +% \begin{macro}{\pathToAcroFlex} +% Set the path to {\AcroFLeX} widget, \texttt{AcroFlex.swf}, that actually does the +% graphing. +% \begin{macrocode} +\newcommand{\pathToAcroFlex}[1]{\def\af@pathToAcroFlex{#1}% + \ifx\af@pathToAcroFlex\@empty + \PackageError{acroflex}{% + You must specify a full path to AcroFlex.swf}{}\else + \saveNamedPath{acroflexWidget}{\af@pathToAcroFlex/AcroFlex.swf}\fi +} +\def\af@pathToAcroFlex{} +\@onlypreamble{\pathToAcroFlex} +% \end{macrocode} +% \end{macro} +% \paragraph*{Define package options.} +% \begin{macro}{lang} +% We offer up a single package option, \texttt{lang}. The only languages supported +% at this time are \texttt{english} and \texttt{german}. Additional languages may be supported in the +% future. +% \begin{macrocode} +\define@choicekey*+{acroflex.sty}{lang}[\val\nr]{english,german} +{% + \ifcase\nr\relax + \def\af@lang@type{afcustom_us.def} + \or + \def\af@lang@type{afcustom_de.def} + \else + \def\af@lang@type{afcustom.def} + \fi +}{\PackageWarning{acroflex}{Bad choice for lang, permissible values +are english and german. No lang key is equivalent to english. Try again}} +\def\af@lang@type{afcustom.def} +% \end{macrocode} +% \end{macro} +% \paragraph*{Process the options.} +% We process our meager number of options here. +% \begin{macrocode} +\ProcessOptionsX +% \end{macrocode} +% \paragraph*{Input Configuration File.} At this point, we input the configuration file. The +% major entry, and probably the only entry in this file is the \cs{pathToAcroFlex}. The file +% should contain a line of code like this one: +%\begin{verbatim} +% \pathToAcroFlex{c:/acrotex/aebpro/acroflex/swf} +%\end{verbatim} +% \begin{macrocode} +\InputIfFileExists{acroflex.cfg}{}{} +% \end{macrocode} +% +% \section{Graphing a Single Function} +% +% This section describes the graphing screen and its controls. +% +% \subsection{Some Initial Parameters} +% +% Should you wish to use an {\AcroFLeX} graphic in your PDF, you will need to declare +% several parameters for each graphic: \cs{dimScreenGraph} and \cs{graphName}, +% these are the rich media annotation dimensions, the rich media annot number of this annot +% on this page, and a unique name (unique to the document) for the graph. +% +% You also need to declare a default function, if different from the one set by this package, +% the default domain/range of $x$ and $y$ (the graph view window), and the default domain +% of parameter equations (this last is options if no parametric equations are to be used). +% +% \paragraph{Setting the Dimensions of the Annotation} +% +% \begin{macro}{\dimScreenGraph} +% This is a convenience command for storing the dimensions of the Flash widget. It assumes +% you do not resize using \cs{resizebox} or \cs{scalebox}. The command defines two +% commands available to the document author, these are \cs{hScreenGraph} and +% \cs{vScreenGraph}, for the width and height respectively. +% \begin{macrocode} +\newcommand{\dimScreenGraph}[2]{{% + \setlength{\dimen@}{#1}\xdef\hScreenGraph{\the\dimen@}% + \setlength{\dimen@}{#2}\xdef\vScreenGraph{\the\dimen@}% +}} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Setting the Name of the Graph} +% +% \begin{macro}{\graphName} +% Each graphing screen must have a unique (base)name, the name is specified +% using the command \cs{graphName}; for example \verb!\graphName{mygraph}! +% specifies the base name for the next graphing screen. This name is use +% in creating the control for the graphing screen (a Flash widget). +% +% \begin{macrocode} +\newcommand{\graphName}[1]{\def\afgraphName{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\defaultFunction} +% Declare the default function to appear in the \cs{fileInputField} on startup +% or on reset. The function takes two arguments, the first is a display version of +% the function, the second is a proper JavaScript form of the function. The default +% is \verb!\defaultFunction{x^2}! +% \begin{macrocode} +\newcommand{\defaultFunction}[1]{\def\af@DefaultFunction{#1}} +\defaultFunction{x^2} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Setting the View Screen Dimensions: Range/Domain} +% +% \begin{macro}{\defaultDomRng} +% \begin{macro}{\defaultDomP} +% Set the default domain and range of the default function. These values will appear +% on start-up, and when the graph is cleared. +% \begin{macrocode} +\def\defaultDomRng#1#2#3#4{% + \def\af@DefaultDomMin{#1}\def\af@DefaultDomMax{#2}% + \def\af@DefaultRngMin{#3}\def\af@DefaultRngMax{#4}% +} +\def\defaultDomP#1#2{% + \def\af@DefaultDomMint{#1}\def\af@DefaultDomMaxt{#2}% +} +% \end{macrocode} +% We set the default domain and range to correspond with the +% default function. +% \begin{macrocode} +\defaultDomRng{-2}{2}{0}{4} +\defaultDomP{0}{2*PI} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{The Graphing Screen and its Controls} +% +% Here, we describe the graphing screen and its controls. The graphing screens and +% its controls may be arranged on the page in any way the document author wishes. +% +% \subsubsection{The Graphing Screen} +% +% The graphing screen is the centerpiece of the {\AcroFLeX} graphing system. +% +% \begin{macro}{\graphScreen} +% +% The \cs{graphScreen} command is just the \cs{rmAnnot} command with the +% fourth argument set to the \texttt{acroflexWidget}. The command takes +% three parameters, each just passed to \cs{rmAnnot}: The first is optional +% that sets the key-value pairs, an important one is \texttt{poster=afposter} +% to get the famous \AcroFLeX{} logo inserted as the opster; the second +% is the width; the third is the height. The widget resizes itself, so the choice +% of the dimensions is up to the document author. +% +% If \cs{dimSreenGraph} is used then you can simply use the dimensions declared there; +% for example, +%\begin{verbatim} +% \dimScreenGraph{186bp}{186bp*3/4} +% ... +% \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph} +%\end{verbatim} +% Note the use of calculated height, three-fourths of the width. \cs{graphScreen} can be, +% in turn, be resized using \cs{resizebox} or \cs{scalebox}. +% +% \begin{macrocode} +\newcommand{\graphScreen}[3][]{\rmAnnot[#1,% + name=afRM\afgraphName]{#2}{#3}{acroflexWidget}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\iconFloatGraphScreen} +% Should you wish to create a graphing screen in a floating window, use the +% \cs{iconFloatGraphScreen}. It takes three arguments, the first one is optional +% and is passed to the first argument the underlying \cs{graphScreen}. A typical +% first argument is a poster key value: \texttt{poster=aflogo}. The second two are +% dimensions (width and height). We use \cs{resizebox} from the graphicx package. +% The \cs{resizebox} can take an exclamation point (!) as its arguments, in this +% case, the object will be resized to keep its aspect ratio. See the documentation +% of \cs{resizebox} for more details. Below is an example, +%\begin{verbatim} +% \iconFloatGraphScreen[poster=aflogo]{40bp}{!} +%\end{verbatim} +% The rich media annotation has a transparent button on top of it. The poster of the annotation +% can be see through the button. Pressing on the button activates, or deactivates the annotation. +% +% The default is not to allow the user to close the window or go into full screen mode, however +% by executing\DescribeMacro{\allowFSFloatGS} \cs{allowFSFloatGS} before the +% \cs{iconFloatGraphScreen} command, we allow for full screen, while +% \DescribeMacro{\defaultFloatGS} \cs{defaultFloatGS} returns to the default state. +% \begin{macrocode} +\newcommand{\allowFSFloatGS}{\def\af@passcontext{\@gobble}} +\newcommand{\defaultFloatGS}{\def\af@passcontext{passcontext}} +% \end{macrocode} +% We set the default value, we do no allow full screen. +% \begin{macrocode} +\defaultFloatGS +% \end{macrocode} +% Now for the \cs{iconFloatGraphScreen} command +% \begin{macrocode} +\newcommand{\iconFloatGraphScreen}[3][]{% + \makebox[0pt][l]{% + \resizebox{#2}{#3}{% +% \end{macrocode} +% Here is the graphing screen +% \begin{macrocode} + \graphScreen[#1,windowed,\af@passcontext,deactivated=pageclose + ]{\hScreenGraph}{\vScreenGraph}}}% + \resizebox{#2}{#3}{% +% \end{macrocode} +% And the button that overlays it +% \begin{macrocode} + \pushButton[\S{S}\H{N}\autoCenter{n}\W0\BG{}\BC{} + \TU{\tt@iconFloatGraphScreen}\A{\JS{% + var rm = this.getAnnotRichMedia(% + this.pageNum, "afRM\afgraphName");\r + rm.activated=!rm.activated; + }}]{float\afgraphName Btn-\therm@Cnt}{\hScreenGraph} + {\vScreenGraph}}% +} +\newcommand{\tticonFloatGraphScreen}[1]{% + \def\tt@iconFloatGraphScreen{#1}} +\tticonFloatGraphScreen{Click to view graphing screen, + click again to hide graphing screen.} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Various Controls} +% +% The graphing screen, obviously, graphs functions of the form $ y = f(x) $. The user +% must have a way of entering the functional part, the $f(x)$. \cs{fileInputField} +% is used for this purpose. The \cs{graphBtn} is used to graph the function, while +% \cs{graphClrBtn} is used to clear the graph and deactivate the Flash widget. +% +% The domain of the variable $x$ is specified though the commands +% \cs{domMin} and \cs{domMax}; while the range of values on +% the $y$ axis is specified by \cs{rngMin} and \cs{rngMax}. The number of points +% that are plotted can be specified through \cs{numPoints}. +% +% \paragraph{The Input Function.} +% \begin{macro}{\funcInputField} +% The parameters for all the above mentioned functions, with the exception of +% \cs{afDefaultFunction}, take three parameters generally described below: +% +% \begin{enumerate} +% \item[\texttt{[\#1]}:] optional arguments to modify appearance of the form field +% \item[\texttt{\#2}:] the width of the form field +% \item[\texttt{\#3}:] the height of the form field +% \end{enumerate} +% The definitions below use two new keys, \cs{nuDV} and \cs{nuV}, to avoid the use +% of unicode when the unicode option of hyperref has been invoked. The initial and +% default values of the function input field may contain symbols like \texttt{\string^} +% that hyperref does not like and strips out. These two keys are also used in +% \cs{functionSelect} below, for the same reason. +% \begin{macrocode} +\newcommand{\funcInputField}[3][]{\makebox[0pt][l]{% + \textField[% + \nuDV{\af@DefaultFunction}\nuV{\af@DefaultFunction} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenFunction}{1bp}{1bp}}% + \textField[% + \BC{0 0 0}\nuDV{\af@DefaultFunction}\nuV{\af@DefaultFunction} + \TU{\tt@funcInputField}#1\AA{\AAFormat{% + \formatFunctionInput{"\afgraphName theHiddenFunction"}} + \AAKeystroke{\keystrokeFunctionInput} + }% + ]{\afgraphName theFunction}{#2}{#3}% +} +\newcommand{\ttfuncInputField}[1]{% + \def\tt@funcInputField{#1}} +\ttfuncInputField{Enter any of the following for expressions:\r +\space\space1. A function of x of the form f(x);\r +\space\space2. A polar function of t of the form f(t);\r +\space\space3. A set of parametric functions of t of the form f(t);g(t) +\r\space\space\space\space\space(separated by a semi-colon);\r +\space\space4. A list of points, (a1,b1);(a2,b2);...;(an,bn)\r +\space\space\space\space\space(separated by semi-colons). +} +% \end{macrocode} +% I originally named the previous macro definition \cs{fileInputField}. My bad! +% In case there is someone out there that uses this package, I'll let +% \cs{fileInputField} to \cs{funcInputField}. +% \begin{macrocode} +\let\fileInputField\funcInputField +% \end{macrocode} +% \end{macro} +% \begin{macro}{\formatFunctionInput} +% \cs{formatFunctionInput} supplies format event for the +% \cs{funcInputField}. Then the user enters a new function, the JavaScript function +% \texttt{formatFunctionInput} executes \texttt{ParseInput} (from \textsf{exerquiz}), and places it +% in the hidden function field. +% \begin{macrocode} +\def\formatFunctionInput#1{% + try{ formatFunctionInput(#1) } catch(e){}; +} +\def\keystrokeFunctionInput{% + try{ keystrokeFunctionInput() } catch(e){}; +} +% \end{macrocode} +% \end{macro} +% \paragraph{The Curve Select Combo Box.} +% \begin{macro}{\functionSelect} +% \begin{macro}{\initFuncSelect} +% \begin{macro}{\savedelSelBtn} +% This is an optional combo box for selecting curves and points to graph. +% Note, this drop down list should not overlay the graphing widget, the widget +% is on top, and the list cannot be seen. +% \begin{macrocode} +\newcommand{\afCurve}[1]{\def\afcurve{#1 }\def\afcurvei{#1}} +\afCurve{Curve} +\newcommand{\afPoint}[1]{\def\afpoint{#1 }\def\afploti{#1}} +\afPoint{Point} +\newcommand{\afUnused}[1]{\def\afunused{#1}} +\afUnused{--unused} +% \end{macrocode} +% Any re-definitions should take place in the preamble only! +% \begin{macrocode} +\@onlypreamble\afCurve +\@onlypreamble\afPoint +\@onlypreamble\afUnused +% \end{macrocode} +% The listing of the drop-down menu. To begin with, there are eight +% menu items: four for curves, and four for plotted points. +% \begin{macrocode} +\newcommand{\initFuncSelect}[1]{\def\af@initializeFuncSelect{#1}} +\initFuncSelect{% + [(\af@DefaultFunction)(\afcurve1)]% + [(<\afcurve2\afunused>)(\afcurve2)]% + [(<\afcurve3\afunused>)(\afcurve3)]% + [(<\afcurve4\afunused>)(\afcurve4)]% + [(<\afpoint1\afunused>)(\afpoint1)]% + [(<\afpoint2\afunused>)(\afpoint2)]% + [(<\afpoint3\afunused>)(\afpoint3)]% + [(<\afpoint4\afunused>)(\afpoint4)]} +% \end{macrocode} +% The combo box that displays the above items. On selection, +% we populate the \texttt{theFunction} field. +% \begin{macrocode} +\newcommand{\functionSelect}[3][]{% + \comboBox[\TU{\tt@functionSelect}#1\Ff{\FfCommitOnSelChange} + \nuDV{\af@DefaultFunction}\nuV{\af@DefaultFunction} + \AA{\AAKeystroke{% + if (!event.willCommit) {\r\t + this.getField( + "\afgraphName theFunction").value=event.changeEx;\r + }}}]{\afgraphName ComboSelect}{#2}{#3}{\af@initializeFuncSelect}% +} +\newcommand{\ttfunctionSelect}[1]{% + \def\tt@functionSelect{#1}} +\ttfunctionSelect{Enter a function on \afcurvei1--\afcurvei4, or + a list of points on \afploti1--\afploti4.} +% \end{macrocode} +% Saves the current function to the list, shift-click deletes +% the current list item, and returns it to its default. +% \begin{macrocode} +\newcommand{\savedelSelBtn}[3][]{% + \pushButton[\TU{\tt@savedelSelBtn}#1 + \A{\JS{saveDelSelAction("\afgraphName"); + }}]{\afgraphName savedelSelectBtn}{#2}{#3}% +} +\newcommand{\ttsavedelSelBtn}[1]{\def\tt@savedelSelBtn{#1}} +\ttsavedelSelBtn{Click to save current function to list, shift-click + to delete the current function from list} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \paragraph{The Graphing Button.} +% \begin{macro}{\graphBtn} +% Clicking on this button when the +% rich media annot is not activated will activate it. Clicking on +% this button when the rich media annot is activate will cause the +% function in the \cs{fileInputField} to be graphed. +% \begin{macrocode} +\newcommand{\graphBtn}[3][]{% + \pushButton + [\BC{0 0 0}\CA{Graph It!}\TU{\tt@graphBtn}#1 + \A{\JS{graphBtnAction("\afgraphName",this.pageNum); + }}]{\afgraphName graphIt}{#2}{#3}% +} +\newcommand{\ttgraphBtn}[1]{\def\tt@graphBtn{#1}} +\ttgraphBtn{Press to graph the function} +% \end{macrocode} +% \end{macro} +% \paragraph{The Clear Screen Button.} +% +% \begin{macro}{\graphClrBtn} +% \begin{macro}{\clearGraphJS} +% Click on this button and all fields +% associated with this graphing screen are reset. Shift click makes the +% AcroFlex widget deactivated. +% \begin{macrocode} +\newcommand{\clearGraphJS}{% + clearGraph("all","\afgraphName",this.pageNum);} +\newcommand{\graphClrBtn}[3][]{\pushButton[\BC{0 0 0}\CA{Clear} + \A{\JS{\clearGraphJS}}\TU{\tt@graphClrBtn}#1 + ]{\afgraphName clearIt}{#2}{#3}% +} +\newcommand{\ttgraphClrBtn}[1]{\def\tt@graphClrBtn{#1}} +\ttgraphClrBtn{Click to clear graph, shift-click to deactivate the + graphing screen} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \paragraph{The Domain the function is to be graphed over.} +% +% \begin{macro}{\domMin} +% \begin{macro}{\domMax} +% The lower endpoint of the interval over which the function is +% graphed. +% +% \begin{macrocode} +\newcommand{\domMin}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultDomMin}\nuV{\af@DefaultDomMin} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenDom.min}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultDomMin} + \nuDV{\af@DefaultDomMin}\BC{0 0 0}\TU{\tt@domMin}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenDom.min"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenDom.min"}} + }]{\afgraphName theDom.min}{#2}{#3}% +} +\newcommand{\ttdomMin}[1]{\def\tt@domMin{#1}} +\ttdomMin{Enter the minimum value for the variable x} +% \end{macrocode} +% The upper endpoint of the interval over which the function is graphed. +% \begin{macrocode} +\newcommand{\domMax}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultDomMax}\nuV{\af@DefaultDomMax} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenDom.max}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultDomMax} + \nuDV{\af@DefaultDomMax}\BC{0 0 0}\TU{\tt@domMax}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenDom.max"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenDom.max"}} + }]{\afgraphName theDom.max}{#2}{#3}% +} +\newcommand{\ttdomMax}[1]{\def\tt@domMax{#1}} +\ttdomMax{Enter the maximum value for the variable x} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \paragraph{The interval on vertical axis what is to be displayed.} +% \begin{macro}{\rngMin} +% \begin{macro}{\rngMax} +% The lower endpoint of the interval on the $y$-axis that is displayed on the +% graphing screen. +% \begin{macrocode} +\newcommand{\rngMin}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultRngMin}\nuV{\af@DefaultRngMin} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenRng.min}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultRngMin} + \nuDV{\af@DefaultRngMin}\BC{0 0 0}\TU{\tt@rngMin}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenRng.min"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenRng.min"}} + }]{\afgraphName theRng.min}{#2}{#3}% +} +\newcommand{\ttrngMin}[1]{\def\tt@rngMin{#1}} +\ttrngMin{Enter the minimum value for the variable y} +% \end{macrocode} +% The upper endpoint of the interval on the $y$-axis that is displayed on the +% graphing screen. +% \begin{macrocode} +\newcommand{\rngMax}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultRngMax}\nuV{\af@DefaultRngMax} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenRng.max}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultRngMax} + \nuDV{\af@DefaultRngMax}\BC{0 0 0}\TU{\tt@rngMax}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenRng.max"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenRng.max"}} + }]{\afgraphName theRng.max}{#2}{#3}% +} +\newcommand{\ttrngMax}[1]{\def\tt@rngMax{#1}} +\ttrngMax{Enter the maximum value for the variable y} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \paragraph{The Domain parametric equations is to be graphed over.} +% \begin{macro}{\domMinP} +% \begin{macro}{\domMaxP} +% The lower endpoint of the interval over which the function is graphed. +% \begin{macrocode} +\newcommand{\domMinP}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultDomMint}\nuV{\af@DefaultDomMint} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenDom_t.min}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultDomMint} + \nuDV{\af@DefaultDomMint}\BC{0 0 0}\TU{\tt@domMinP}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenDom_t.min"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenDom_t.min"}} + }]{\afgraphName theDom_t.min}{#2}{#3}% +} +\newcommand{\ttdomMinP}[1]{\def\tt@domMinP{#1}} +\ttdomMinP{Enter the minimum value for the variable t} +% \end{macrocode} +% The upper endpoint of the interval over which the function is graphed. +% \begin{macrocode} +\newcommand{\domMaxP}[3][]{\makebox[0pt][l]{% + \textField[\nuDV{\af@DefaultDomMaxt}\nuV{\af@DefaultDomMaxt} + \F{\FHidden}\Ff{\FfReadOnly} + ]{\afgraphName theHiddenDom_t.max}{1bp}{1bp}}% + \textField[\textSize{0}\nuV{\af@DefaultDomMaxt} + \nuDV{\af@DefaultDomMaxt}\BC{0 0 0}\TU{\tt@domMaxP}#1\AA{% + \AAKeystroke{\keystrokeDomRng{"\afgraphName theHiddenDom_t.max"}} + \AAFormat{\formatVarIntervals{"\afgraphName theHiddenDom_t.max"}} + }]{\afgraphName theDom_t.max}{#2}{#3}% +} +\newcommand{\ttdomMaxP}[1]{\def\tt@domMaxP{#1}} +\ttdomMaxP{Enter the maximum value for the variable t} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\formatVarIntervals} +% \begin{macro}{\keystrokeDomRng} +% These are format and keystroke functions that support the above +% domain and range commands. +% \begin{macrocode} +\def\formatVarIntervals#1{% + try{ formatVarIntervals(#1) } catch(e){}; +} +\def\keystrokeDomRng#1{% + if (event.willCommit) keystrokeDomRng(#1); +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \paragraph{The Number of points to plot.} +% \begin{macro}{\numPoints} +% \begin{macro}{\defaultNumPoints} +% The number of points to use for plotting the specified function. +% \begin{macrocode} +\newcommand{\defaultNumPoints}[1]{% + \def\af@defaultNumPoints{#1}} +\defaultNumPoints{40} +\newcommand\numPoints[3][]{% + \textField[\nuV{\af@defaultNumPoints}\nuDV{\af@defaultNumPoints} + \Q1\BC{0 0 0}\TU{\tt@numPoints}#1\AA{% + \AAKeystroke{if (event.willCommit) keystrokeNumPoints();}} + ]{\afgraphName numNodes}{#2}{#3}% +} +\newcommand{\ttnumPoints}[1]{\def\tt@numPoints{#1}} +\ttnumPoints{Enter the number of points to plot} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \paragraph{Shifting the Graph Screen.} +% In this section we provide basic control for shifting the graph screen up and down, +% and left and right. Two new text fields are designed to set the amount of vertical +% or horizontal shifting. +% +% \begin{macro}{\amtShift} +% Use this text field to enter the amount of horizontal or vertical shift. +% +% We have the usual three parameters, optional argument to change the appearance, +% the width of the form field, the height of the form field. +% \begin{macrocode} +\newcommand{\defaultShiftAmt}[1]{% + \def\af@defaultShiftAmt{#1}} +\defaultShiftAmt{1} +\newcommand{\amtShift}[3][]{% + \textField[\nuV{\af@defaultShiftAmt}\nuDV{\af@defaultShiftAmt}\Q1 + \BC{0 0 0}\TU{\tt@amtShift}#1\AA{\AAKeystroke{% + if (event.willCommit) keystrokeAmtShift(); + }}]{\afgraphName amtshift}{#2}{#3}% +} +\newcommand{\ttamtShift}[1]{\def\tt@amtShift{#1}} +\ttamtShift{Enter the amount to shift, horizontally or vertically} +% \end{macrocode} +% \end{macro} +% +% For the controls for initiating the shifting action, we can use forms or links. We'll begin +% by using links. +% \begin{macro}{\hShiftL} +% \begin{macro}{\hShiftR} +% \begin{macro}{\vShiftD} +% \begin{macro}{\vShiftU} +% Basic link to initiate the actions of shifting the viewing screen horizontally or vertically +% an amount equal to the entries in \cs{amtShift}. +% \begin{macrocode} +\newcommand{\hShiftL}[2][]{% + \setLinkText[#1\A{\JS{% + shiftHorVert ("\afgraphName",this.pageNum,"h","-"); + }}]{#2}% +} +\newcommand{\hShiftR}[2][]{% + \setLinkText[#1\A{\JS{% + shiftHorVert ("\afgraphName",this.pageNum,"h","+"); + }}]{#2}% +} +\newcommand{\vShiftD}[2][]{% + \setLinkText[#1\A{\JS{% + shiftHorVert ("\afgraphName",this.pageNum,"v","-"); + }}]{#2}% +} +\newcommand{\vShiftU}[2][]{% + \setLinkText[#1\A{\JS{% + shiftHorVert ("\afgraphName",this.pageNum,"v","+"); + }}]{#2}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \paragraph{The Zooming in and out.} +% Coming fresh off the success of the horizontal and vertical shifting commands, let's plough +% on to zooming in. +% \begin{macro}{\zoomInOut} +% This push button control zooms out, with a click, or zoom in with a shift-click. +% \begin{macrocode} +\newcommand{\zoomInOut}[3][]{% + \pushButton[\BC{0 0 0}\CA{Zoom}\TU{\tt@zoomInOut}#1 + \A{\JS{% + var shiftType = (event.shift) ? "+" : "-";\r + zoomInOut ("\afgraphName",this.pageNum,shiftType); + }} + ]{\afgraphName zoominout}{#2}{#3}% +} +\newcommand{\ttzoomInOut}[1]{\def\tt@zoomInOut{#1}} +\ttzoomInOut{Click to zoom out, shift-click to zoom in} +% \end{macrocode} +% \end{macro} +% +% \subsection{Non-Interactive Graphing} +% +% Use the \cs{setLinkText} command to pass a function name, the number of points, and domain/range +% information to the graphing screen, without user input. This command is useful for tutorials +% that would like to create a graph for the student to inspect, or as part of a quiz. +% \begin{macro}{\sgraphLink} +% The command \cs{sgraphLink} has four arguments, the first one is an optional argument +% to modify the appearance of the link; the second argument consist of key-value pairs that +% are options for the {\AcroFLeX} Graphing system; the third argument is the function of the +% semi-colon delimited list of points to be plotted; the fourth argument is the text to be used +% as the link. +%\begin{verbatim} +% \sgraphLink[]{}{func|points}{} +%\end{verbatim} +%\paragraph{Options for the Second Parameter.} We define and briefly discuss +% a series of keys for the second parameter. +% +% \begin{macrocode} +% \end{macrocode} +% \DescribeMacro{graph} +% Curves and points are graphed on chart series. This system uses \texttt{LinearSeries}, +% \texttt{PlotSeries}, and \texttt{AreaSeries}. The {\AcroFLeX} graphing widget provides +% four series for each of these three. Values of \texttt{c1}, \texttt{c2}, \texttt{c3}, \texttt{c4} for this key graphs the data +% on a \texttt{LinearSeries}; values of \texttt{p1}, \texttt{p2}, \texttt{p3}, \texttt{p4} plot the data on a \texttt{PlotSeries}; +% and values of \texttt{a1}, \texttt{a2}, \texttt{a3}, \texttt{a4} graphs the data on a \texttt{AreaSeries}. +% \begin{macrocode} +\define@choicekey+{afsl}{graph}{c1,c2,c3,c4,p1,p2,p3,p4,% + a1,a2,a3,a4}[c1]{\edef\afsl@graph{#1}}{\PackageWarning{acroflex} + {Bad choice for the graph key, permissible values are + c1, c2, c3,c4, p1, p2, p3, p4, a1, a2, a3, a4. Try again}} +% \end{macrocode} +% \DescribeMacro{type} +% The type of curve this is, \texttt{cart} ($y=f(x)$), \texttt{para} +% ($x=f(t); y=g(t)$), or \texttt{polar} ($r = f(t)$). When defining a polar function +% using \cs{sgraphLink}, use \texttt{type=polar} to signal that the curve is a polar function. +% \changes{v1.6c}{2016/08/29}{Set defaults for type and connectwith} +% \begin{macrocode} +\define@choicekey+{afsl}{type}{cart,para,polar}[cart]{% + \edef\afsl@type{#1}}{\PackageWarning{acroflex} + {Bad choice for the type key, permissible values are + cart, para, and polar. Try again}} +\let\afsl@type\@empty +% \end{macrocode} +% \DescribeMacro{connectwith} +% When the graph is either a \texttt{LinearSeries} or an +% \texttt{AreaSeries}, the points are connected. Use this key to +% specify how the points are to be connected. The default values +% for this key are as follows: for +% \texttt{graph=cart} it is \texttt{connectwith=curve}, and for +% \texttt{graph=para} it is \texttt{connectwith=segment}. +% Use this key to override these defaults. For parametric equations, +% \texttt{connectwith=curve} is not recommended, the results may not +% be good. Use of this key is recommended for \texttt{graph=cart}. +% \begin{macrocode} +\define@choicekey+{afsl}{connectwith}{curve,segment}[curve]{% + \edef\afsl@form{#1}}{\PackageWarning{acroflex} + {Bad choice for the connectwith key, permissible values are + curve and segment. Try again}} +\let\afsl@form\@empty +% \end{macrocode} +% \DescribeMacro{noquotes} +% This key is a workaround for the case when the function or data is passed by +% JavaScript. Used when passing things that are already strings, such as \texttt{event.value}. +% An example of usage can be found in \texttt{afgraph.tex}. +% \begin{macrocode} +\define@choicekey+{afsl}{noquotes}[\val\nr]{true,false}[true]{% + \ifcase\nr\relax\def\af@quotes{}\or\def\af@quotes{"}\fi} + {\PackageWarning{acroflex} + {Bad choice for the noquotes key, permissible values are + true and false. Try again}} +% \end{macrocode} +% \DescribeMacro{points} +% Use this key to specify the number of points to generate from the function. +% The key is ignored if \texttt{PlotSeries} is used, and should not appear, or be set to zero. +% \begin{macrocode} +\define@key{afsl}{points}[0]{\edef\afsl@nPoints{#1}} +% \end{macrocode} +% \DescribeMacro{xInterval} +% An interval of numbers on the horizontal axis. This interval determines the +% domain over which the function of $x$ is to be graphed. The endpoints of this +% interval also determine the left and right boundaries of the viewing window. +% \begin{macrocode} +\define@key{afsl}{xInterval}[]{\edef\afsl@xInterval{#1}} +% \end{macrocode} +% \DescribeMacro{xPlot} +% (10/11/09) Added the \texttt{xPlot} key. With the \texttt{xInterval} key, the interval over which to +% plot the curve is bound to the scaling on the x-axis. It is now desired to plot +% a graph over a smaller interval than the one on the x-axis, and \texttt{xPlot} will be used for +% that purpose; thus one can say \verb!xInterval={[-2,2]},xPlot={[-1,0]}!. If \texttt{xPlot} +% is not specified, then $\texttt{xPlot}=\texttt{xInterval}$. +% \begin{macrocode} +\define@key{afsl}{xPlot}[]{\edef\afsl@xPlot{#1}} +% \end{macrocode} +% \DescribeMacro{yInterval} +% An interval of numbers on the vertical axis. The endpoints of this +% interval also determine the lower and upper boundaries of the viewing window. +% \begin{macrocode} +\define@key{afsl}{yInterval}[]{\edef\afsl@yInterval{#1}} +% \end{macrocode} +% \DescribeMacro{tInterval} +% An interval of numbers on the parameter axis. This interval determines the +% domain over which a polar function and parametric equations are to be graphed. +% \texttt{xInterval} and \texttt{yInterval} determines the viewing window. +% \begin{macrocode} +\define@key{afsl}{tInterval}[]{\edef\afsl@tInterval{#1}} +% \end{macrocode} +% \DescribeMacro{populate} +% A Boolean value, which if \texttt{true}, signals \texttt{Graph\_xy()} or +% \texttt{Graph\_xyt()} to populate the interactive field controls. When +% no controls are provided for the graphing screen, populate should have a +% value of \texttt{false}. +% \begin{macrocode} +\define@choicekey+{afsl}{populate}{true,false}[true]{% + \edef\afsl@populate{#1}}{\PackageWarning{acroflex} + {Bad choice for the populate key, permissible values are + true and false. Try again}} +% \end{macrocode} +% \DescribeMacro{wait} +% When using \cs{defineGraphJS} to create an action with multiple graph events, +% use \texttt{wait=true}. This setting gives the {\AcroFLeX} graphing widget to +% receive one set of plotting data before trying to digest another. +% \begin{macrocode} +\define@choicekey+{afsl}{wait}{true,false}[true]{% + \edef\afsl@wait{#1}}{\PackageWarning{acroflex} + {Bad choice for the wait key, permissible values are + true and false. Try again}} +% \end{macrocode} +% \paragraph*{Set the defaults for all the keys.} +% All changes are local to each link, so we set global defaults whose values +% are not changed by the changes as a result of the passing key-value pairs +% through \cs{sgraphLink}. +% \begin{macrocode} +\setkeys{afsl}{graph,points,xInterval,xPlot,yInterval,tInterval,% + populate=false,type,connectwith,noquotes=false,wait=false} +% \end{macrocode} +% \begin{macro}{\sgraphLink} +% We finally come to the \cs{sgraphLink}. +% \begin{macrocode} +\newcommand{\sgraphLink}[4][]{{% + \defineGraphJS{#2}{#3}{\af@sglnkAction}% + \setLinkText[#1\A{\JS{\af@sglnkAction}}]{#4}% +}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\defineGraphJS} +% The \cs{defineGraphJS} is the JS used to call the \texttt{Graph\_xy()} or \texttt{Graph\_xyt()} +% JavaScript function defined in this package. It uses the same key-value pairs as the second +% argument of \cs{sgraphLink}. The command can be used to construct links that graph several +% curves (or plots) with a link or form action. It can be integrated into the exerquiz quizzing system, +% using the new key \cs{AddAAKeystroke} of \cs{RespBoxMath}. The use of this key and this command is illustrated +% in the \texttt{acroflex.tex} demo file. +%\par\medskip\noindent +% The \texttt* optional first parameter signals to use \cs{edef} in the subsequent command +% \cs{af@defineGraphJS}. +% \begin{macrocode} +\newcommand{\defineGraphJS}{\@ifstar{\let\AF@exDEF\edef\af@defineGraphJS} + {\let\AF@exDEF\xdef\af@defineGraphJS}} +% \end{macrocode} +% We continue \cs{defineGraphJS}: The first parameter are key-values of the +% \texttt{afsl} family; the second parameter is the function; the third is the +% name to assign the command being defined. +% modify the appearance of the link; the second parameter +% \begin{macrocode} +\newcommand{\af@defineGraphJS}[3]{{\makeJSspecials + \edef\af@tmp@exp{\noexpand\setkeys{afsl}{#1}}\af@tmp@exp + \ifx\afsl@xPlot\@empty\let\afsl@xPlot\afsl@xInterval\fi + \AF@exDEF#3{Graph_xytJS (\af@quotes#2\af@quotes,"\afsl@xInterval",% + "\afsl@yInterval","\afsl@xPlot","\afsl@tInterval","\afsl@graph",% + \afsl@populate,\afsl@wait,"\afsl@type","\afsl@form","\afgraphName",% + \afsl@nPoints)}% +}} +% \end{macrocode} +% \end{macro} +% +% \section{Document JS in Support of \texorpdfstring{\protect\AcroFLeX}{AcroFleX}} +% +% Below are some text macros used in creating error messages. They may be redefined +% into better English, or another language. Use the definition file \texttt{afcustom.def} +% to make these re-definitions. +% \begin{macrocode} +\defineJSStr{\af@badNumberMsg}{% + The value input does not appear to be a number, please enter a + number, or an expression that evaluates to a number.} +\defineJSStr{\af@negNumberMsg}{% + The number of points is a positive integer, changing to a + positive integer.} +\defineJSStr{\af@zeroNumberMsg}{% + The number of points is a positive integer, changing to the + default value of \af@defaultNumPoints.} +\defineJSStr{\af@negShiftMsg}{% + The amount of shift is a positive number, changing to a positive + number.} +\defineJSStr{\af@zeroShiftMsg}{% + The amount of shift is a positive number, changing to the + default value of 1.} +\defineJSStr{\af@saveDelSelAlerti}{% + There is nothing in the function input text field.} +\defineJSStr{\af@saveDelSelAlertii}{% + You have not defined any points to plot} +\defineJSStr{\af@graphBtnAlerti}{Undefined graph types} +% \end{macrocode} +% \begin{macrocode} +\begin{insDLJS*}[acroflexLoaded]{afgrfJS} +\begin{newsegment}{AF: AcroFLeX Graphing Bundle} +/* + Document Level JavaScript + AcroFLeX Graphing Bundle + D. P. Story copyright 2008-\the\year +*/ +var acroflexLoaded = true; +var _mathVars="xt"; +var aGraphData = new Array(); +var ck4PtsRe = /\(.+,.+\)/; +var badNumberMsg=\af@badNumberMsg; +var negNumberMsg=\af@negNumberMsg; +var zeroNumberMsg=\af@zeroNumberMsg; +var negShiftMsg=\af@negShiftMsg; +var zeroShiftMsg=\af@zeroShiftMsg; +var saveDelSelAlerti=\af@saveDelSelAlerti; +var saveDelSelAlertii=\af@saveDelSelAlertii; +var graphBtnAlerti=\af@graphBtnAlerti; +var scratchCounter=0; +var aTimeOutArray = new Array(); +var afSuffixes = new Array("ComboSelect","theFunction", + "amtShift","theDom","theRng", "theDom_t", + "Rng_t","numNodes"); +\end{newsegment} +\begin{newsegment}{AF: Graphing Functions} +% \end{macrocode} +% \DescribeMacro{Graph\_xy} Graphs a function of a single variable in the rectangular +% coordinate system. +% +% The \texttt{Graph\_xy} function takes four or more arguments. In interactive +% mode, it takes four. +%\begin{enumerate} +% \item \texttt{graph\_props}: (Needs Revision) This is a signal for the type of graphing requested. +% \texttt{c1,...,c4} for continuous plotting; and \texttt{p1,...,p4} for discrete +% plotting. There are four of these types. +% \item \texttt{baseName}: The base name of the graphing environment. This is used to +% build the field names for the controls, if any, on the page. +% \item \texttt{pNum}: The page number of the target rich media annot. This together +% with \texttt{baseName} is enough information to get the AnnotRichMedia object using +% the \texttt{Doc.AnnotRichMedia} method. +%\end{enumerate} +% When in interactive mode, we get the function to be graphed, the domain of $x$ +% the range of $y$, and the number of points to plot from form fields. +% \begin{itemize} +% \item The function is input by the user into the field \texttt{baseName+"theFunction"}, +% but we get the JS version from \texttt{baseName+"theHiddenFunction"}. +% When the user enters a function, it is parsed, and changed into a proper JS +% expression: \verb!2x^2sin(x)! becomes \verb!2*Math.pow(x,2)*Math.sin(x)!. +% +% \item The domain and range values are input by the user through the fields, having field names of +% \texttt{baseName+"theDom.min"}, \texttt{baseName+"theDom.max"}, \texttt{baseName+"theRng.min"}, +% and \texttt{baseName+"theRng.max"}, but we retrieve the values from hidden fields. +% See \texttt{getDomRng} below for the listing of the hidden fields. +% When the user enters domain/range info, this info is parsed and made into +% property JS expressions. In this way, the user can enter symbolics like \texttt{PI} +% or \texttt{sin(PI/3)}, or do arithmetic, like \texttt{2 + 1/3}. +% +% \item The number of points to plot is obtained from \texttt{baseName+"numNodes"}, +% no preprocessing is used. +% +% \end{itemize} +% +% \noindent When the number of arguments is greater than four, we are in non-interactive +% mode. The 5th argument is the JS function to graph; the 6th is the number of +% points to plot; the 7th is an object containing the domain +% +% \paragraph{Notes on the Modes.} There are three modes of operation: interactive, populate, +% and silent. +%\begin{itemize} +% \item \textbf{Interactive:} This occurs when the user enters a +% function through the UI. In this case the number of arguments +% passed to \texttt{Graph\_xy} (or \texttt{Graph\_xyt}) is only four. +% The number of \texttt{arguments} is determined by the arguments +% object, and the switch \texttt{afInteractive} is set to +% \texttt{true}. For this mode +% +% The following controls are \emph{required}: \cs{fileInputField}, +% \cs{graphBtn}, \cs{domMin}, \cs{domMax}, \cs{rngMin}, \cs{rngMax}, +% and \cs{numPoints}. If parametric or polar graphs are to be used, +% then \cs{domMinP} and \cs{domMaxP} are also required. The other +% controls are \emph{optional}, \cs{graphClrBtn} (recommended), +% \cs{amtShift} (and \cs{hShiftL}, +% \cs{hShiftR},\cs{vShiftD},\cs{vShiftU}) and \cs{zoomInOut}. +% +% \item \textbf{Populate:} This mode occurs when the graphing parameters +% are passed to \texttt{Graph\_xy} (or \texttt{Graph\_xyt}) by \cs{sgraphLink} +% (or some other command). All the essential information is passed as arguments, +% so the number of arguments is greater than four. The command initiating the +% graphing should set the \texttt{graph\_props.populate} to \texttt{true}. In this +% case the graphing data populate the required fields and the graph will be drawn. +% It is the document author's responsibility to only use populate on graphing screens +% that have all the required control fields. \texttt{Graph\_xy} (and \texttt{Graph\_xyt}) +% checks the value of the \texttt{graph\_props.populate} property, and sets the switch +% \texttt{populate} to \texttt{true}. +% +% Populate behave exactly like interactive, but the graphing data is passed to it in pre-packaged +% for my the document author; the user, however, can manipulate the curve once it appears. +% +% The required controls are the same as the interactive mode. +% +% \item \textbf{Silent:} This is a non-interactive mode, there must be no controls other than +% \cs{graphClrBtn}. Basically, the author prepares some pre-packaged graphs to be displayed +% to the user, without interaction. These may go along with a tutorial discussion symmetry, +% periodicity, tangent lines, etc. +% +%\end{itemize} +% \begin{macrocode} +function Graph_xy(graph_props, baseName, pNum) +{ + _mathVars="x"; + var afInteractive = (arguments.length <= 3); + if (afInteractive) { + var f = this.getField(baseName+"theHiddenFunction").value; +% \end{macrocode} +% If the file input field does not contain a Cartestian point $(a,b)$, +% but it does contain a semi-colon, we figure what is entered is a +% set of parametric equations. +% \begin{macrocode} + if ( !ck4PtsRe.test(f) && (f.indexOf(";")!=-1) ) { + var dt = this.getField(baseName+"theDom_t.min"); + if ( dt == null ) { + syntaxError(); return; + } + Graph_xyt(graph_props, baseName, pNum); + return; + } + f = this.getField(baseName+"theHiddenFunction").value; + } + createGraphData(baseName); + var which_graph=graph_props.graph; + var populate = false; + graph_props.type="cart"; + var aWhichGraph=/(c|p|a)(\d)/.exec(which_graph); + if ( aWhichGraph==null ) aWhichGraph=["","c","1"]; + var isGraph = (aWhichGraph[1]=="c" || aWhichGraph[1]=="a"); + var connectPoints=false; + var plotPoints=false; + var wait = false; + switch(aWhichGraph[1]) { + case "p": + var which_series="p"+aWhichGraph[2]; + plotPoints=true; + break; + case "a": + var which_series="a"+aWhichGraph[2]; + break; + default: + var which_series="c"+aWhichGraph[2]; + } + graph_props.graph=which_series; +% \end{macrocode} +% Get domain and range of x and y, respectively +% obtain in math environment so we can evaluate +% any symbolic constants, such as \texttt{Math.PI} +% \begin{macrocode} + if (afInteractive) var oDR = getDomRng (baseName); + else { + wait=graph_props.wait; + populate = graph_props.populate; + var oDR = arguments[5]; + if (populate) populateDomRng(baseName,oDR); + for ( var o in oDR ) oDR[o] = EvalParse(oDR[o]); + } + aGraphData[baseName].aDomRngs = oDR; +% \end{macrocode} +% calculate width of intervals. If the user has passed a subinterval to us, then +% \texttt{oDR.x\_min} would be defined, and we use it to compute the range. +% \begin{macrocode} + var rng_x = (typeof oDR.x_u=="undefined") ? + (oDR.x_max - oDR.x_min) : (oDR.x_u - oDR.x_l); + /* Get the function and calculated the plotted points */ + if (afInteractive) { + var n = Number(this.getField(baseName+"numNodes").value); + if ( isNaN(n) || n <=0 ) n = \af@defaultNumPoints; + } else { + var f = ParseInput(arguments[2+1]); + var n = Number(arguments[2+2]); + if (populate) { + this.getField(baseName+"theFunction").value=arguments[2+1]; + this.getField(baseName+"numNodes").value=n; + } + if (isGraph) { +% \end{macrocode} +% Is there a function there? We use n to determine +% that, if $n > 0$ we assume a function; otherwise, we +% assume plotted points to be connected. +% \begin{macrocode} + connectPoints = ( n <= 0 ); + if ( connectPoints ) plotPoints = true; + // passing points to be plotted, not connected + } else plotPoints = true; + } +% \end{macrocode} +% Before we calculate the points, let's record what we are graphing. +% \begin{macrocode} + if (afInteractive || populate) + updateGraphData(graph_props,baseName,f); +% \end{macrocode} +% Now we begin calculating the points to plot. +% \begin{macrocode} + var plot_x, plot_y; + var x = (typeof oDR.x_u=="undefined") ? oDR.x_min : oDR.x_l; + var h = rng_x / n; + var thismax = (typeof oDR.x_u=="undefined") ? oDR.x_max : oDR.x_u; +% \end{macrocode} +% The plotted data will be accumulated as XML +% \begin{macrocode} + var cPlotData=; +% \end{macrocode} +% We strip out anything of the form \texttt{"y = "}, \texttt{"x = "} or \texttt{"r = "}, +% allowing the user to enter the expressions in equational form \verb!"y = x^2"!, for example. +% \begin{macrocode} + var aSearchResults=/(([a-zA-Z])\s*=\s*)/.exec(f); + if ( aSearchResults != null) { + if ( aSearchResults[2] != "y" && aSearchResults[2] != "r" ) { + syntaxError(); return; + } + } +% \end{macrocode} +% This allows functions of the form $y=f(x)$, $r=f(x)$, $y=f(t)$, $r=f(t)$. +% \begin{macrocode} + f = f.replace(/(([a-zA-Z])\s*=\s*)/g,""); +% \end{macrocode} +% \begin{macrocode} + if ( isGraph && !plotPoints ) { + for (var i=0; i<=n; i++) + { +% \end{macrocode} +% We evaluate the function, and try to detect any errors. If an exception is thrown, +% we display an \textsf{exerquiz} \texttt{syntaxError()} message. If the result is not +% a number, we skip over it. +% \begin{macrocode} + try { with(Math) {_y = eval(f);} } + catch(e) { +% \end{macrocode} +% We have thrown an exception, so either this is bad code, or the user wants us +% to plot this as a polar function. We'll try, but if we're wrong, we'll throw an +% exception in \texttt{Graph\_xyt()}. +% \begin{macrocode} + var paraEqs = "("+f+")*Math.cos(t);("+f+")*Math.sin(t)"; + graph_props.type="polar"; + this.getField(baseName + +"theHiddenFunction").value=paraEqs; + Graph_xyt(graph_props, baseName, pNum); + return; + } + // If not a number then skip over. + if (isFinite(_y)) + { + plot_x = util.printf("\%.10f", x); + plot_y = util.printf("\%.10f", _y); +% \end{macrocode} +% We add the latest data point to the end of the XMList +% \begin{macrocode} + cPlotData.points[cPlotData..point.length()]= + {plot_x}{plot_y} + } + x += h; + } + } else { // prepare to data for plotting +% \end{macrocode} +% At this point the variable f should be a string of +% points to plot.\\ +% \hspace*{30pt}\texttt{f = "(0,1);(2,2);(4,2);...;(5,3)"}.\\ +% It's not clear whether the abcissas need to be sorted in +% increasing order, or whether FLEX is smart enough to do +% that. We'll assume the latter case. +% \begin{macrocode} + var afBegin = (f.indexOf("\(")+1); + var afEnd = f.lastIndexOf("\)"); + cPlotData=f.substring(afBegin,afEnd); + var re = /\)\s*;\s*\(/; + aPlotData= cPlotData.split(re); + var cPlotData=; + with (Math) { + for ( var i=0; i{aTmp[0]}{aTmp[1]} + } + } + } + cPlotData=cPlotData.toXMLString(); + var annot = this.getAnnotRichMedia(pNum,"afRM"+baseName); + if ( annot ) + { + if (!annot.activated || wait ) { + annot.activated=true; + afWait4Activation( + graph_props,baseName,pNum,oDR,cPlotData,50); + } + else + annot.callAS("getPlotData", graph_props, oDR, cPlotData); + } +} +% \end{macrocode} +% \DescribeMacro{Graph\_xyt} This function graphs a set of parametric equations in the +% rectangular coordinate system. The function pair is delimited by a semi-colon, early +% in the code we get the function and test whether the function has a semi-colon in its +% definition, so not, we send assume it is a function of a single variable, and send it +% off to \texttt{Graph\_xy}. +% +% For silent mode, the parameters are the same, except that there are two extra arguments, +% the endpoints of the parameter, $t$. The last argument is a Boolean, the author wants the +% graphing data to populate the corresponding fields so user can manipulate. +% \begin{macrocode} +function Graph_xyt(graph_props, baseName, pNum) +{ + _mathVars="t"; + var which_graph=graph_props.graph; + var populate = false; + var afInteractive = (arguments.length <= 3); + if (afInteractive) { + var f = this.getField(baseName+"theHiddenFunction").value; + if ( ck4PtsRe.test(f) || (f.indexOf(";")==-1) ) { + Graph_xy(graph_props, baseName, pNum); + return; + } + f = this.getField(baseName+"theHiddenFunction").value; + } + createGraphData(baseName); + if ( graph_props.type!="polar") graph_props.type="para"; + var aWhichGraph=/(c|p|a)(\d)/.exec(which_graph); + if ( aWhichGraph==null ) aWhichGraph=["","c","1"]; + var isGraph = (aWhichGraph[1]=="c" || aWhichGraph[1]=="a"); + var connectPoints=false; + var plotPoints=false; + var wait=false; + switch(aWhichGraph[1]) { + case "p": + var which_series="p"+aWhichGraph[2]; + plotPoints=true; + break; + case "a": + var which_series="a"+aWhichGraph[2]; + break; + default: + var which_series="c"+aWhichGraph[2]; + } + graph_props.graph=which_series; +% \end{macrocode} +% Get domain and range of x and y, respectively +% obtain in math environment so we can evaluate +% any symbolic constants, such as \texttt{Math.PI} +% \begin{macrocode} + if (afInteractive) { + var oDR = getDomRng (baseName); + var oDp = getParaDom (baseName); + } + else { + wait=graph_props.wait; + populate = graph_props.populate; + var oDR = arguments[5]; + if (populate) populateDomRng(baseName,oDR); + for ( var o in oDR ) oDR[o] = EvalParse(oDR[o]); + var oDp = arguments[6]; + if (populate) populateParaDom(baseName,oDp); + for ( var o in oDp ) oDp[o] = EvalParse(oDp[o]); + } + aGraphData[baseName].aDomRngs = oDR; + aGraphData[baseName].aDom_P = oDp; +% \end{macrocode} +% calculate width of intervals +% \begin{macrocode} + var rng_t = oDp.t_max - oDp.t_min; + /* Get the function and calculated the plotted points */ + if (afInteractive) { + var n = Number(this.getField(baseName+"numNodes").value); + if ( isNaN(n) || n <=0 ) n = \af@defaultNumPoints; + } else { +% \end{macrocode} +% If this is polar, then we need to check if it has been parsed yet. +% \begin{macrocode} + var f = arguments[2+1]; + if ( graph_props.type=="polar") { + if(f.indexOf(";")==-1) { + f = "("+f+")*cos(t);("+f+")*sin(t)"; + f = ParseInput(f); + } + } else + f = ParseInput(f); + var n = Number(arguments[2+2]); + if (populate) { + this.getField(baseName+"theHiddenFunction").value=f; + this.getField(baseName+"theFunction").value=arguments[2+1]; + this.getField(baseName+"numNodes").value=n; + } + if (isGraph) { +% \end{macrocode} +% Is there a function there? We use n to determine +% that, if $n > 0$ we assume a function; otherwise, we +% assume plotted points to be connected. +% \begin{macrocode} + connectPoints = ( n <= 0 ); + if ( connectPoints ) plotPoints = true; + // passing points to be plotted, not connected + } else plotPoints = true; + } +% \end{macrocode} +% Before we calculate the points, let's record what we are graphing. +% \begin{macrocode} + if (afInteractive || populate) + updateGraphData(graph_props,baseName,f); +% \end{macrocode} +% We strip out anything of the form \texttt{"y = "}, \texttt{"x = "} or \texttt{"r = "}, +% allowing the user to enter the expressions in equational form \texttt{"r = 1+sin(t)"}, +% or \texttt{x=sin(t); y = cos(t)}, for example. +% \begin{macrocode} + var aFunction = f.split(";"); + var x_function = aFunction[0]; + var y_function = aFunction[1]; + var aSearchResults=/(([a-zA-Z])\s*=\s*)/.exec(x_function); + if ( aSearchResults != null && aSearchResults[2] != "x") { + syntaxError(); return; + } + x_function = x_function.replace(/(([a-zA-Z])\s*=\s*)/g,""); + aSearchResults=/(([a-zA-Z])\s*=\s*)/.exec(y_function); + if ( aSearchResults != null && aSearchResults[2] != "y") { + syntaxError(); return; + } + y_function = y_function.replace(/(([a-zA-Z])\s*=\s*)/,""); + var plot_x, plot_y; + var t = oDp.t_min; + var h = rng_t / n; + var thismax = oDp.t_max; +% \end{macrocode} +% The plotted data will be accumulated as XML +% \begin{macrocode} + var cPlotData=; +% \end{macrocode} +% \begin{macrocode} + if ( isGraph && !plotPoints ) { + for (var i=0; i<=n; i++) + { +% \end{macrocode} +% We evaluate the function, and try to detect any errors. If an exception is thrown, +% we display an \textsf{exerquiz} \texttt{syntaxError()} message. If the result is not +% a number, we skip over it. +% \begin{macrocode} + try { + with(Math) { + _x = eval(x_function); + _y = eval(y_function); + } + } catch(e) { syntaxError(); return;} + // If not a number then skip over. + if (isFinite(_x)&&isFinite(_y)) + { + plot_x = util.printf("\%.10f", _x); + plot_y = util.printf("\%.10f", _y); +% \end{macrocode} +% We add the latest data point to the end of the XMList +% \begin{macrocode} + cPlotData.points[cPlotData..point.length()]= + {plot_x}{plot_y} + } + t += h; + } + } else { // prepare to data for plotting +% \end{macrocode} +% At this point the variable f should be a string of +% points to plot.\\ +% \hspace*{30pt}\texttt{f = "(0,1);(2,2);(4,2);...;(5,3)"}.\\ +% It's not clear whether the abcissas need to be sorted in +% increasing order, or whether FLEX is smart enough to do +% that. We'll assume the latter case. +% \begin{macrocode} + var afBegin = (f.indexOf("\(")+1); + var afEnd = f.lastIndexOf("\)"); + cPlotData=f.substring(afBegin,afEnd); + var re = /\)\s*;\s*\(/; + aPlotData= cPlotData.split(re); + var cPlotData=; + with (Math) { + for ( var i=0; i{aTmp[0]}{aTmp[1]} + } + } + } + cPlotData=cPlotData.toXMLString(); + var annot = this.getAnnotRichMedia(pNum,"afRM"+baseName); + if ( annot ) + { + if (!annot.activated || wait ) { + annot.activated=true; + afWait4Activation( + graph_props,baseName,pNum,oDR,cPlotData,50); + } + else + annot.callAS("getPlotData", graph_props, oDR, cPlotData); + } +} +function createGraphData(baseName) +{ + if( aGraphData[baseName] == undefined ) { + aGraphData[baseName] = new Object(); + aGraphData[baseName].aDomRngs=new Object(); + aGraphData[baseName].aDom_P=new Object(); + aGraphData[baseName].current = new Array(); + } +} +% \end{macrocode} +% This function is called by the \texttt{Graph\_xy} or \texttt{Graph\_xyt} +% and updates the graphing data we are trying to track. +% +% Properties of the object +% \verb!aGraphData[baseName].current[which_graph]! object are +% \texttt{hiddenFN} (a string of the hidden JS version of the +% function), \texttt{appearFN} (a string of the function the user +% sees), and \texttt{graph\_props} (the graph properties passed from +% \texttt{Graph\_xy} or \texttt{Graph\_xyt}. +% \begin{macrocode} +function updateGraphData(graph_props,baseName,f) +{ + var which_graph=graph_props.graph; + if (aGraphData[baseName].current[which_graph] == undefined) + aGraphData[baseName].current[which_graph]=new Object(); + aGraphData[baseName].current[which_graph].appearFN + =this.getField(baseName+"theFunction").value; + aGraphData[baseName].current[which_graph].hiddenFN=f; + aGraphData[baseName].current[which_graph].graph_props=graph_props; +} +\end{newsegment} +% \end{macrocode} +% When there are more than three arguments, we are in non-interactive mode. +% The 4th-7th arguments are the domain and range that the graph should be +% set to on reset. +% +% In the flash widget, we call the function \texttt{clearPlotData}, the parameters +% of which are +%\begin{verbatim} +% clearPlotData(graph_props:Object, oDR:Object) +%\end{verbatim} +% \begin{macrocode} +\begin{newsegment}{AF: Supporting Form Fields} +function clearGraph(graph_opts,baseName, pNum) +{ + which_graph=graph_opts.graph; + var aWhichGraph=/(c|p|a)(\d)/.exec(which_graph); + if ( aWhichGraph==null ) aWhichGraph=["","c","1"]; + var isGraph = (aWhichGraph[1]=="c" || aWhichGraph[1]=="a"); + switch(aWhichGraph[1]) { + case "p": + var which_series="p"+aWhichGraph[2]; + break; + case "a": + var which_series="a"+aWhichGraph[2]; + break; + default: + var which_series="c"+aWhichGraph[2]; + } + ProcessIt = false; + afResetForms = new Array (); + for (var i=0; i"),nIndx); + s.currentValueIndices=nIndx; + f.value="<"+cAppearV+"\afunused>"; + } else { + var newFunc = f.value; + var newFunc_tmp = newFunc.replace(/\s/g,""); + if ( newFunc_tmp == "" ) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:saveDelSelAlerti}); + } else { // something there, let's test it + if(/\afploti/.test(cAppearV) ) { + if (ck4PtsRe.test(newFunc)) { + // A set of points to plot + s.deleteItemAt(s.currentValueIndices); + s.insertItemAt(cAppearV,newFunc,nIndx); + s.currentValueIndices=nIndx; + } else {/* does not appear to be a point */ + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:saveDelSelAlertii}); + } + } else {/* not plot, must be curve*/ + s.deleteItemAt(s.currentValueIndices); + s.insertItemAt(cAppearV,newFunc,nIndx); + s.currentValueIndices=nIndx; + } + } + } + } +} +function graphBtnAction (baseName,pNum) +{ + var s = this.getField(baseName+"ComboSelect"); + var d; + var d, plot_curve="c1"; + if ( s != null ) { + var nIndx = s.currentValueIndices; + var cAppearV=s.getItemAt(s.currentValueIndices,false); + if ( ( d = /\afploti\s+(\d)/.exec(cAppearV) ) != null ) { + plot_curve="p"+d[1]; + } else { + if ( ( d = /\afcurvei\s+(\d)/.exec(cAppearV) ) != null ) { + plot_curve="c"+d[1]; + } else { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:graphBtnAlerti}); + } + } + } + Graph_xy({graph:plot_curve},baseName,pNum); +} +function afsplitInterval(cInterval) +{ + var aDomTmp=stripBrackets(cInterval); + aDomTmp=aDomTmp.split(","); + return { LEP: aDomTmp[0], UEP: aDomTmp[1] }; +} +\end{newsegment} +\begin{newsegment}{AF: Keystroke/Formatting Functions} +function keystrokeDomRng (fname) +{ + if (event.willCommit) { + var retn = ParseInput(event.value); + if ( !retn ) event.rc = false; + else { + try { eval ( retn ) } + catch(e) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:badNumberMsg}); + event.rc=false; + }; + } + } +} +function formatFileInput (fname) +{ + this.getField(fname).value = ParseInput(event.value); +} +function formatVarIntervals (fname) +{ + var val = Number(EvalParse(event.value)); + this.getField(fname).value = val; +} +function formatFunctionInput (fname) +{ + var val = ParseInput(event.value); + this.getField(fname).value = val; +} +function keystrokeFunctionInput () +{ + if (event.willCommit) { + var str = event.value.replace(/\s/g,""); + if ( str == "" ) { + app.alert({cTitle:"AcroFleX Graphing", + cMsg:saveDelSelAlerti}); + event.rc = false; + } + } +} +function keystrokeNumPoints () +{ + try{ + var val = Number(EvalParse(event.value)); + } catch(e) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:badNumberMsg}); + event.rc=false; + return; + } + if ( val < 0 ) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:negNumberMsg}); + } else { + if ( val == 0 ) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:zeroNumberMsg}); + val = \af@defaultNumPoints; + } + } + event.value = Math.ceil(Math.abs(val)); +} +function keystrokeAmtShift() +{ + try{ + var val = Number(EvalParse(event.value)); + } catch(e) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:badNumberMsg}); + event.rc=false; + return; + } + if ( val < 0 ) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:negShiftMsg}); + } else { + if ( val == 0 ) { + app.alert({cTitle:"AcroFLeX Graphing", + cMsg:zeroShiftMsg}); + val = 1; + } + } + event.value = Math.abs(val); +} +\end{newsegment} +\begin{newsegment}{AF: Support for Custom Graphing Problems} +% \end{macrocode} +% A general purpose function for graphing that takes into consideration all the +% parameters. This is used by the \cs{sgraphLink} and for any JS code that uses +% custom methods. The command \cs{defineGraphJS} is used to set up the parameters +% for this function.. +% \begin{macrocode} +function Graph_xytJS (func,xI,yI,xP,tI,graph,populate,wait,% +type,form,gName,nPts) { + var oDom = afsplitInterval(xI); + var oRng = afsplitInterval(yI); + var oPlotD = afsplitInterval(xP); + var oP=new Object(), oD=new Object(), oDt=new Object(); + oP.graph=graph; + oP.populate=populate; + oP.wait=wait; + if (type!="") oP.type=type; + if (form!="") oP.form=form; + oD={x_min:oDom.LEP,x_max:oDom.UEP,y_min:oRng.LEP,y_max:oRng.UEP,x_l:oPlotD.LEP,x_u:oPlotD.UEP}; + if ( tI=="") { + Graph_xy(oP,gName,this.pageNum,func,nPts,oD); + } else { + var oDom_t = afsplitInterval(tI); + oDt={t_min:oDom_t.LEP,t_max:oDom_t.UEP}; + Graph_xyt(oP,gName,this.pageNum,func,nPts,oD,oDt); + } +} +\end{newsegment} +\end{insDLJS*} +% \end{macrocode} +% Lastly, we define a \texttt{willClose} code and an \texttt{execJS} +% code. The first comes in on the ``developer's hook'' so the user +% can still use the \texttt{willClose} environment without disturbing +% this code. When the document starts to close, we deactivate all +% rich media annotations, to prevent exceptions from being thrown. +% \begin{macrocode} +\begin{defineJS}{\af@WillClose} +for (var n=0; n