%% %% This is file `rmannot.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% rmannot.dtx (with options: `copyright,package') %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% rmannot.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{rmannot} [2016/10/09 v2.0e Rich Media Annotations (dps)] \RequirePackage{xkeyval} \DeclareOptionX{use3D}{% \def\rma@input@iiidCode{\InputIfFileExists{annot3d.def}{}{}}% \def\rma@requirefp{\RequirePackage[nomessages]{fp}}% } \let\rma@input@iiidCode\relax \let\rma@requirefp\relax \ProcessOptionsX \RequirePackage{graphicxsp} \rma@requirefp \RequirePackage{ifthen} \newcounter{rm@Cnt} \newif\ifrma@EmbedFile\rma@EmbedFiletrue \newif\ifrma@EmbedVideoPlayer\rma@EmbedVideoPlayerfalse \let\rma@isVPEmbedded=0 \newif\ifrma@EmbedAudioPlayer\rma@EmbedAudioPlayerfalse \let\rma@isAPEmbedded=0 \def\rm@csarg#1#2{\expandafter#1\csname#2\endcsname} \newcommand{\pathToSkins}[1]{% \pdfstringdef\rma@pathToSkins{#1}% \def\PathToSkins{\rma@pathToSkins}% \def\rma@pathToPlayers{\rma@pathToSkins/Players}% } \newif\ifuseWinAcrobat\useWinAcrobattrue \define@key{rmAcroVer}{win}[win]{\useWinAcrobattrue} \define@key{rmAcroVer}{mac}[mac]{\useWinAcrobatfalse} \newcommand{\AcroVer}[2][]{% \def\rmDC{DC}\def\rmBeta{Beta}\def\rmArgi{#1}% \def\AcrobatVer{#2}\ifx\rmArgi\@empty\else \setkeys{rmAcroVer}{#1}\fi\def\@x{\string\ }% \ifx\AcrobatVer\rmDC \ifuseWinAcrobat \edef\rmSkinPath{C:/Program Files (x86)/Adobe/Acrobat DC/% Acrobat/Multimedia Skins}\else \edef\rmSkinPath{/Applications/Adobe{\@x}Acrobat{\@x}DC/% Adobe{\@x}Acrobat.app/Contents/Resources/% Multimedia{\@x}Skins}\fi \else\ifx\AcrobatVer\rmBeta \ifuseWinAcrobat \edef\rmSkinPath{C:/Program Files (x86)/Adobe/Acrobat Beta/% Acrobat/Multimedia Skins}\else \edef\rmSkinPath{/Applications/Adobe{\@x}Acrobat{\@x}Beta/% Adobe{\@x}Acrobat.app/Contents/Resources/% Multimedia{\@x}Skins}\fi \else\ifnum\AcrobatVer<9\relax \PackageError{rmannot}{Acrobat version 9 or later supports\MessageBreak rich multimedia annotations} {Upgrade your Acrobat to a more recent version.}% \else \ifuseWinAcrobat \ifnum\AcrobatVer<12\relax \edef\rmSkinPath{C:/Program Files (x86)/Adobe/% Acrobat \AcrobatVer.0/Acrobat/Multimedia Skins}% \else \edef\rmSkinPath{C:/Program Files (x86)/Adobe/% Acrobat \AcrobatVer/Acrobat/Multimedia Skins}% \fi \else \ifnum\AcrobatVer<12\relax \ifnum\AcrobatVer=9\relax \edef\rmSkinPath{/Applications/% Adobe{\@x}Acrobat{\@x}\AcrobatVer{\@x}Pro/% Adobe{\@x}Acrobat{\@x}Pro.app/Contents/% MacOS/Multimedia{\@x}Skins}% \else % ver 10 or 11 \ifnum\AcrobatVer=10\relax\def\romanVer{X}\else \ifnum\AcrobatVer=11\relax\def\romanVer{XI}\fi\fi \edef\rmSkinPath{/Applications/% Adobe{\@x}Acrobat{\@x}\romanVer{\@x}Pro/% Adobe{\@x}Acrobat{\@x}Pro.app/Contents/% Resources/Multimedia{\@x}Skins}\fi \else \edef\rmSkinPath{/Applications/% Adobe{\@x}Acrobat{\@x}\AcrobatVer/% Adobe{\@x}Acrobat.app/Contents/Resources/% Multimedia{\@x}Skins}% \fi \fi\fi\fi\fi \expandafter\pathToSkins\expandafter{\rmSkinPath}% } \@onlypreamble\AcroVer \AcroVer{11} \newcommand{\pathToPlayers}[1]{\pdfstringdef\rma@pathToPlayers{#1}} \newcommand{\defineRMPath}[1]{\def\rm@ctrlName{#1}% \hyper@normalise\rm@defineURLPath} \def\rm@defineURLPath#1{\expandafter\xdef\rm@ctrlName{#1}} \newif\ifVideoPlayerEx\VideoPlayerExfalse \def\rma@VideoPlayer{VideoPlayer.swf} \newcommand{\useVideoPlayerPlus}{% \PackageWarning{rmannot}{The \string\useVideoPlayerPlus\space is no longer supported,\MessageBreak will use \string\useVideoPlayX\space instead. In the future\MessageBreak specify \string\useVideoPlayX}% \useVideoPlayerX } \newcommand{\useVideoPlayerX}{\VideoPlayerExtrue \def\rma@VideoPlayer{VideoPlayerX.swf}% \let\useVideoPlayerPlus\relax } \@onlypreamble\useVideoPlayerPlus \@onlypreamble\useVideoPlayerX \def\mmPlay{"multimedia_play"} \def\mmPause{"multimedia_pause"} \def\mmRewind{"multimedia_rewind"} \def\mmNextCuePoint{"multimedia_nextCuePoint"} \def\mmPrevCuePoint{"multimedia_prevCuePoint"} \def\mmSeek{"multimedia_seek"} \def\mmMute{"multimedia_mute"} \def\mmVolume{"multimedia_volume"} \def\mmSource{"multimedia_setSource"} \def\mmSkin{"multimedia_setSkin"} \def\mmSkinColor{"multimedia_setSkinColor"} \def\mmSeekCuePoint{"multimedia_seekCuePoint"} \def\mmSkinAlpha{"multimedia_setSkinAlpha"} \def\mmGetSource{"multimedia_getSource"} \def\mmUseLocal{"multimedia_useLocal"} \def\mmGetMetaData{"multimedia_getMetdata"} \def\mmGetVideoState{"multimedia_getVideoState"} \def\mmSetScaleMode{"multimedia_setScaleMode"} \def\mmGetVersion{"multimedia_getVersion"} \def\mmSetStageColor{"multimedia_setStageColor"} \def\mmIsLooping{"multimedia_isLooping"} \def\mmSkinAutoHide{"multimedia_skinAutoHide"} \def\mmShowLoopButton{"multimedia_showLoopButton"} \def\ps@mark{[\space} \def\rma@edefexecute#1{\edef\rm@@temp@@exp{#1}\rm@@temp@@exp} \def\@MXV@newlabel#1#2{{% \rm@csarg\xdef{#1}{#2}}}% \def\@MXV@getlabelvalue#1{% \rm@csarg\ifx{#1}\relax% undefined% \else% \csname#1\endcsname% \fi% }% \def\@MXV@labeltoaux#1#2{% \@bsphack\protected@write\@auxout{}{% \string\@MXV@newlabel{#1}{#2}% \string\@MXV@newlabel{@#1@}{\@MXV@getlabelvalue{#1}}% }\@esphack% \ifthenelse{% \equal{\@MXV@getlabelvalue{#1}}{undefined}\OR% %double check that the value hasn't changed \NOT\equal{\@MXV@getlabelvalue{#1}}{\@MXV@getlabelvalue{@#1@}}% }{% \ifthenelse{\isundefined{\@MXV@warning}}{% \gdef\@MXV@warning{}% \AtEndDocument{% \PackageWarningNoLine{rmannot}{% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\MessageBreak @@ Rerun to get object references right! @@\MessageBreak @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}% }% }{}% }{}% }% \def\RefObjRm#1{{\@MXV@getlabelvalue{rmAnnot_#1}}} \InputIfFileExists{rmannot.cfg}{}{} \def\rma@embed@mpiii@Poster{% \embedEPS[hiresbb]{ramp3poster}{ramp3poster}% \global\let\rma@embed@mpiii@Poster\relax } \def\rma@set@mpiiiposter{% \begin{sp@createImage}{\bboxOf{ramp3poster}}{nramp3poster}% \rma@invisible \ps@mark{ramp3poster} /SP pdfmark \end{sp@createImage}% \global\let\rma@set@mpiiiposter\relax } \newcommand{\saveNamedPath}[2][]{% \edef\rm@argii{#2}\@ifundefined{rma@@#2}% {\gdef\rm@thisPath{rma@@#2}}{\rma@PkEr@ii}% \gdef\rm@thisMimeType{#1}% \hyper@normalise\rm@saveNamedPath } \def\rm@saveNamedPath#1{% \rm@csarg\gdef{\rm@thisPath}{#1}% \rm@csarg\xdef{rma@mt@\rm@argii}{\rm@thisMimeType}% \rma@edefexecute{\noexpand\filename@parse{#1}}% \@ifundefined{filename@ext}{\rma@PkEr@iii{#1}}{}% \rma@edefexecute{\noexpand \uppercase{\noexpand\def\noexpand\rma@tempi {\filename@ext}}} \rm@csarg\xdef{\rm@argii FileName}{% \filename@base.\filename@ext}% \rm@csarg\xdef{\rm@argii URL}{% \filename@area\filename@base.\filename@ext}% \ifx\rma@tempi\rma@rmAnnot@type@mpiii\rma@embed@mpiii@Poster\fi } \def\rma@useNamedPath#1{\@nameuse{rma@@#1}} \def\rma@resource#1{\csname#1FileName\endcsname} \def\rma@urlresource#1{\csname#1URL\endcsname} \expandafter\def\expandafter\makeJSspecials\expandafter{\makeJSspecials \let\Name\rma@resource\let\urlName\rma@urlresource } \let\rmaName\rma@resource \def\rmaNameP(#1){\rma@resource{#1}} \let\rmaUrlName\rma@urlresource \def\rmaUrlNameP(#1){\rma@urlresource{#1}} \def\getargsiii#1#2#3{\def\aeb@argi{#1}\def\aeb@argii{#2}% \def\aeb@argiii{#3}} \@tfor\rma@data:={{uiiid}{U3D}{model/u3d}}{{prc}{PRC}{model/prc}}% {{swf}{SWF}{application/x-shockwave-flash}}% {{flv}{FLV}{video/x-flv}}{{fiv}{F4V}{video/mp4}}% {{mpiv}{MP4}{video/mp4}}{{mivV}{M4V}{video/x-m4v}}% {{mov}{MOV}{video/quicktime}}{{iiiGP}{3GP}{video/3gpp}}% {{iiiGii}{3G2}{video/3gpp2}}{{mpiii}{MP3}{audio/x-mp3}}\do{% \expandafter\getargsiii\rma@data \rm@csarg\edef{rma@rmAnnot@type@\aeb@argi}{\aeb@argii} \rm@csarg\edef{rma@mimetype@\aeb@argi}{\aeb@argiii} } \def\rm@SkinsAndPlayerPaths{% \saveNamedPath{VideoPlayer}{\PathToSkins/Players/\rma@VideoPlayer}% \saveNamedPath{AudioPlayer}{\PathToSkins/Players/AudioPlayer.swf}% \saveNamedPath{skin1}{\PathToSkins/SkinOverAllNoFullNoCaption.swf}% \saveNamedPath{skin2}% {\PathToSkins/SkinOverAllNoVolNoCaptionNoFull.swf}% \saveNamedPath{skin3}{\PathToSkins/SkinOverPlay.swf}% \saveNamedPath{skin4}{\PathToSkins/SkinOverPlayMute.swf}% \saveNamedPath{skin5}{\PathToSkins/SkinOverPlaySeekMute.swf}% \saveNamedPath{skin6}{\PathToSkins/SkinOverPlaySeekStop.swf}% \saveNamedPath{skin7}{\PathToSkins/SkinOverPlayStopSeekMuteVol.swf}% } \AtBeginDocument{\rm@SkinsAndPlayerPaths} \@namedef{noneFileName}{} \@namedef{noneURL}{} \@namedef{noChangeFileName}{noChange} \@namedef{noChange}{noChange} \def\rma@ANT{rmAssetsNameTree-\therm@Cnt} \define@key{rmAnnot}{name}[aebRM\therm@Cnt]{\def\rma@Annot@name{#1}} \define@choicekey+{rmAnnot}{enabled}[\val\nr]% {onclick,pageopen,pagevisible}[onclick]{% \ifcase\nr\relax \def\rma@rmAnnot@enabled{/XA}\or \def\rma@rmAnnot@enabled{/PO}\or \def\rma@rmAnnot@enabled{/PV}\fi }{\PackageWarning{rmannot}{Bad choice for enabled, permissible values are onclick, pageopen and pagevisible. Try again}} \define@choicekey+{rmAnnot}{deactivated}[\val\nr]% {onclick,pageclose,pageinvisible}[onclick]{% \ifcase\nr\relax \def\rma@rmAnnot@deactivated{/XD}\or \def\rma@rmAnnot@deactivated{/PC}\or \def\rma@rmAnnot@deactivated{/PI}\fi }{\PackageWarning{rmannot}{Bad choice for deactivated, permissible values are onclick, pageclose and pageinvisible. Try again}} \define@boolkey{rmAnnot}{windowed}[true]{} \define@key{winDimPos}{width}{\def\rma@winDimPos@width{#1}} \define@key{winDimPosWidth}{default}[288]% {\def\rma@winDimPosWidth@def{#1}} \define@key{winDimPosWidth}{max}[576]% {\def\rma@winDimPosWidth@max{#1}} \define@key{winDimPosWidth}{min}[72]% {\def\rma@winDimPosWidth@min{#1}} \define@key{winDimPos}{height}{\def\rma@winDimPos@height{#1}} \define@key{winDimPosHeight}{default}[216]% {\def\rma@winDimPosHeight@def{#1}} \define@key{winDimPosHeight}{max}[432]% {\def\rma@winDimPosHeight@max{#1}} \define@key{winDimPosHeight}{min}[72]% {\def\rma@winDimPosHeight@min{#1}} \define@key{winDimPos}{position}{\def\rma@winDimPos@position{#1}} \define@choicekey+{winDimPosPos}{halign}[\val\nr]% {near,center,far}[far]{% \ifcase\nr\relax \def\rma@winDimPosPos@halign{/Near}\or \def\rma@winDimPosPos@halign{/Center}\or \def\rma@winDimPosPos@halign{/Far}\fi }{} \define@choicekey+{winDimPosPos}{valign}[\val\nr]% {near,center,far}[near]{% \ifcase\nr\relax \def\rma@winDimPosPos@valign{/Near}\or \def\rma@winDimPosPos@valign{/Center}\or \def\rma@winDimPosPos@valign{/Far}\fi }{} \define@key{winDimPosPos}{hoffset}[18]% {\def\rma@winDimPosPos@hoffset{#1}} \define@key{winDimPosPos}{voffset}[18]% {\def\rma@winDimPosPos@voffset{#1}} \providecommand{\setWindowDimPos}[1]{% \setkeys{winDimPos}{#1}% \edef\temp@expand@sets{% \noexpand\setkeys{winDimPosWidth}{\rma@winDimPos@width}% \noexpand\setkeys{winDimPosHeight}{\rma@winDimPos@height}% \noexpand\setkeys{winDimPosPos}{\rma@winDimPos@position}% }\temp@expand@sets } \providecommand{\resetWindowDimPos}{% \setWindowDimPos{width={default,max,min},height={default,max,min}, position={halign,valign,hoffset,voffset}}% } \resetWindowDimPos \define@boolkey{rmAnnot}{url}[true]{} \def\setRmOptions3D#1#2{\rm@csarg\xdef{#1_3DOPTS}{#2}} \define@choicekey+{rmAnnot}{borderwidth}[\val\nr]% {none,thin,medium,thick}[none]{% \ifcase\nr\relax \def\rma@rmAnnot@borderwidth{0}\or \def\rma@rmAnnot@borderwidth{1}\or \def\rma@rmAnnot@borderwidth{3}\or \def\rma@rmAnnot@borderwidth{5}\fi }{\PackageWarning{rmannot}{Bad choice for borderwidth, permissible values are none,thin,medium,and thick. Try again}} \define@key{rmAnnot}{poster}[]{\def\rma@rmAnnot@poster{#1}} \define@key{rmAnnot}{posternote}[AcroTeX \rma@poster@descrip]% {\def\rma@posternote{#1}} \define@key{rmAnnot}{invisible}[]% {\def\rma@invisible{\ps@mark/ca 0/SetTransparency pdfmark }} \let\rma@invisible\@empty \define@boolkey{rmAnnot}{transparentBG}[true]{% \ifKV@rmAnnot@transparentBG \def\rma@rmAnnot@transparent{true}\else \def\rma@rmAnnot@transparent{false}\fi } \define@boolkey{rmAnnot}{toolbar}[true]{% \ifKV@rmAnnot@toolbar \def\rma@rmAnnot@toolbar{true}\else \def\rma@rmAnnot@toolbar{false}\fi } \define@boolkey{rmAnnot}{modeltree}[true]{% \ifKV@rmAnnot@modeltree \def\rma@rmAnnot@modeltree{true}\else \def\rma@rmAnnot@modeltree{false}\fi } \define@boolkey{rmAnnot}{passcontext}[true]{% \ifKV@rmAnnot@passcontext \def\rma@rmAnnot@PassContextClick{true}\else \def\rma@rmAnnot@PassContextClick{false}\fi } \define@choicekey+{rmAnnot}{skin}[\val\nr]% {none,skin1,skin2,skin3,skin4,skin5,skin6,skin7}[skin1]{% \edef\rma@skinName{#1}% 2011/10/18 changed from number to name \ifcase\nr\relax \let\rma@rmAnnot@Skin\@empty\or \def\rma@rmAnnot@Skin{SkinOverAllNoFullNoCaption.swf}\or \def\rma@rmAnnot@Skin{SkinOverAllNoVolNoCaptionNoFull.swf}\or \def\rma@rmAnnot@Skin{SkinOverPlay.swf}\or \def\rma@rmAnnot@Skin{SkinOverPlayMute.swf}\or \def\rma@rmAnnot@Skin{SkinOverPlaySeekMute.swf}\or \def\rma@rmAnnot@Skin{SkinOverPlaySeekStop.swf}\or \def\rma@rmAnnot@Skin{SkinOverPlayStopSeekMuteVol.swf}\fi }{% \@ifundefined{rma@@#1}{% \PackageWarning{rmannot}{Bad choice for 'skin,' permissible values are skin1--skin7, or a custom skin already defined. Try again}}{% \PackageWarning{rmannot}{Recording new skin, '#1'}% \edef\rma@skinName{#1}% \edef\rma@rmAnnot@Skin{\csname#1FileName\endcsname}% \rm@csarg\let{embedSkin#1}=1 }% } \@tfor\rma@arg:={skin0}{skin1}{skin2}{skin3}{skin4}% {skin5}{skin6}{skin7}\do{% \rm@csarg\let{embedSkin\rma@arg}=1 } \define@boolkey{rmAnnot}{skinAutoHide}[true]{% \ifKV@rmAnnot@skinAutoHide \def\rma@skinAutoHide{true}\else \def\rma@skinAutoHide{false}\fi } \define@key{rmAnnot}{skinBGColor}[0x5F5F5F]% {\def\rma@skinBGColor{#1}} \define@key{rmAnnot}{skinBGAlpha}[0.75]% {\def\rma@skinBGAlpha{#1}} \define@key{rmAnnot}{volume}[1.00]% {\def\rma@rmAnnot@volume{#1}} \define@key{rmAnnot}{speed}[1]{% \def\rma@rmAnnot@speed{#1}% } \define@key{rmAnnot}{playcount}[-1]{% \def\rma@rmAnnot@playcount{#1}% } \newtoks\rma@toks\rma@toks={} \newcount\rma@nResources \newif\ifrma@isiiid\rma@isiiidfalse \define@key{rmAnnot}{resources}[]{\rma@toks={}\rma@nResources=0% \ifrma@isiiid\let\rma@next\relax \else\def\rma@next{\rma@proc@resources{#1}}\fi\rma@next } \newcommand{\rma@proc@resources}[1]{% \def\rma@rmAnnot@resources{#1}% \ifx\rma@rmAnnot@resources\@empty\let\rma@addResources\@empty \let\rma@addFileSpecs\@empty\else \@for\rma@arg:=\rma@rmAnnot@resources\do{% \advance\rma@nResources1\relax \rma@edefexecute{\noexpand \filename@parse{\rma@useNamedPath{\rma@arg}}}% \@ifundefined{filename@ext}{% \rma@PkEr@iii{\rma@useNamedPath{\rma@arg}}}{}% \edef\rma@fs@expand{rmFileStrm\rma@arg}% \@ifundefined{\rma@fs@expand}{% \rm@csarg\xdef{\rma@fs@expand}% {rmfstream\therm@Cnt-\the\rma@nResources}% \def\rma@embed{1}}{\def\rma@embed{0}}% \edef\rma@tmp@exp{\the\rma@toks% \noexpand\\{\the\rma@nResources}% {\filename@area}{\filename@base.\filename@ext}% {\rma@embed}{\csname\rma@fs@expand\endcsname}% {\rm@csarg\noexpand{rma@mt@\rma@arg}}}% \rma@toks=\expandafter{\rma@tmp@exp}% }% \let\\\rm@appendNameTree \expandafter\xdef\expandafter\rma@addResources% \expandafter{\the\rma@toks}% \let\\\rm@appendFileSpecs \expandafter\xdef\expandafter\rma@addFileSpecs% \expandafter{\the\rma@toks}% \fi } \def\rm@appendNameTree#1#2#3#4#5#6{% \ps@mark{\rma@ANT} (#3) /APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespec\therm@Cnt-#1}/APPEND pdfmark^^J% } \def\rm@appendFileSpecs#1#2#3#4#5#6{% \ps@mark/_objdef {rmfilespec\therm@Cnt-#1}/type/dict/OBJ pdfmark^^J% \ps@mark{rmfilespec\noexpand\therm@Cnt-#1} <<% /F(#3)% /UF (#3)% /EF <>% /Type/Filespec% >>/PUT pdfmark^^J% \if#41 \ps@mark/_objdef {#5} /type/stream/OBJ pdfmark^^J% \ps@mark{#5} (#2#3) (r) file /PUT pdfmark^^J% \ps@mark{#5}<<% /Type/EmbeddedFile% \ifx#6\@empty\else /Subtype(#6)% \fi >>/PUT pdfmark^^J% \ps@mark{#5} /CLOSE pdfmark^^J% \fi } \define@key{rmAnnot}{flashvars}[]{% \def\rma@rmAnnot@flashvars{#1}% } \define@key{rmAnnot}{cuepoints}[]{% \edef\rma@rmAnnot@cuepoints{#1}% \ifx\rma@rmAnnot@cuepoints\@empty\else \rma@nResources=0% \def\rma@array@hold{}\def\rma@dict@hold{}% \@for\arg:=\rma@rmAnnot@cuepoints\do{% \advance\rma@nResources1\relax \rma@edefexecute{\noexpand\setkeys{rmCuePt}{\arg}}% % need to build the array of indirect references, \edef\rma@array@hold{\rma@array@hold\space {rmCuePoints\therm@Cnt-\the\rma@nResources}}% % and the code for the cue point dictionary \edef\rma@dict@hold{\rma@dict@hold \ps@mark/_objdef % {rmCuePoints\therm@Cnt-\the\rma@nResources}% /type/dict/OBJ pdfmark^^J% \ps@mark{rmCuePoints\therm@Cnt-\the\rma@nResources} << /Type/CuePoint \ifx\rma@rmCuePt@name\@empty /Name (RMACP \the\rma@nResources) \else /Name (\rma@rmCuePt@name) \fi /Subtype \rma@rmCuePt@type /Time \rma@rmCuePt@time \ifx\rma@rmCuePt@action\@empty\else /A << /Type/Action\JS{\rma@rmCuePt@action} >> \fi >> /PUT pdfmark^^J% }% }% end of \@for \fi } \define@choicekey+{rmCuePt}{type}[\val\nr]% {event,nav}[nav]{% \ifcase\nr\relax \def\rma@rmCuePt@type{/Event}\or \def\rma@rmCuePt@type{/Navigation}\fi }{\PackageWarning{rmannot}{Bad choice for type, permissible values are event and nav. Try again}} \define@key{rmCuePt}{name}[]{% \def\rma@rmCuePt@name{#1}% } \define@key{rmCuePt}{time}[0]{% \def\rma@rmCuePt@time{#1}% } \define@key{rmCuePt}{action}[]{% \def\rma@rmCuePt@action{#1}% } \setkeys{rmAnnot}{name,url=false,enabled,deactivated,borderwidth,% windowed=false,poster,posternote,skin,skinAutoHide,skinBGColor,% skinBGAlpha,volume,speed,playcount,resources,flashvars,% transparentBG=false,passcontext=false,cuepoints,toolbar,% modeltree=false} \def\rma@recordVideoPlayer{% \ifrma@EmbedVideoPlayer \global\let\rma@isVPEmbedded=1\global\rma@EmbedVideoPlayerfalse \else \if\rma@isVPEmbedded0\global\rma@EmbedVideoPlayertrue\fi \fi } \def\rma@recordAudioPlayer{% \ifrma@EmbedAudioPlayer \global\let\rma@isAPEmbedded=1\global\rma@EmbedAudioPlayerfalse \else \if\rma@isAPEmbedded0\global\rma@EmbedAudioPlayertrue\fi \rma@set@mpiiiposter \fi } \newif\if@FndSuppExt \@FndSuppExtfalse \newcommand{\rmAnnot}[4][]{\begingroup \let\Name\rma@resource \let\urlName\rma@urlresource \makeJSspecials \let\rma@addResources\@empty\let\rma@addFileSpecs\@empty {\setlength{\dimen@}{#2}\xdef\rm@Annot@width{\the\dimen@}% \setlength{\dimen@}{#3}\xdef\rm@Annot@height{\the\dimen@}}% \stepcounter{rm@Cnt}% \rma@edefexecute{\noexpand\filename@parse{\rma@useNamedPath{#4}}}% \edef\rma@fs@expand{rmFileStrm#4}\@ifundefined{\rma@fs@expand}{% \rm@csarg\xdef{\rma@fs@expand}% {rmfstream\therm@Cnt}\global\rma@EmbedFiletrue}% {\global\rma@EmbedFilefalse}% \edef\rma@thisfilepath{\filename@area}% \edef\rma@basefilename{\filename@base}% \edef\rma@extension{\filename@ext}% \rma@edefexecute{\noexpand\uppercase{\noexpand \def\noexpand\rma@tempi{\rma@extension}}}% \ifx\rma@tempi\rma@rmAnnot@type@uiiid\rma@isiiidtrue \else\ifx\rma@tempi\rma@rmAnnot@type@prc\rma@isiiidtrue \else\rma@isiiidfalse \fi\fi \rma@edefexecute{\noexpand\setkeys{rmAnnot}{#1}}% \ifx\rma@input@iiidCode\relax\else \ifrma@isiiid \@ifundefined{\rma@Annot@name_3DOPTS}{% }{% \def\rma@Instances{}\def\rma@appendToNameTree{}% \rma@edefexecute{\noexpand\setkeys{rm3DOptsTopLevel}% {\@nameuse{\rma@Annot@name_3DOPTS}}}% \edef\additional@Instances{\rma@Instances}% \edef\rma@addResources{\rma@appendToNameTree}% \ifx\rma@rmAnnot@iiiDjs\@empty\else \def\@MXV@jscriptiiid{}% \literalps@out{% \ps@mark/_objdef {jscriptiiid\therm@Cnt}% /type/array/OBJ pdfmark^^J% \rmiiid@addToScriptsArray \rma@addFileSpecs }% \edef\@MXV@jscriptiiid{% /Scripts {jscriptiiid\therm@Cnt}% }% \fi \@MXV@buildva% }% \fi\fi \rma@edefexecute{\noexpand\uppercase{\noexpand \def\noexpand\rma@tempi{\rma@extension}}}% \ifrma@isiiid \def\rma@poster@descrip{3D}% \def\rma@RMCSubtype{/3D}% \ifx\rma@tempi\rma@rmAnnot@type@uiiid \def\rma@rmAnnot@type{U3D}% \edef\rma@mimeType{\rma@mimetype@uiiid}% \else \ifx\rma@tempi\rma@rmAnnot@type@prc \def\rma@rmAnnot@type{PRC}% \edef\rma@mimeType{\rma@mimetype@prc}% \fi\fi \else \def\rma@poster@descrip{Flash}% \ifx\rma@tempi\rma@rmAnnot@type@swf \def\rma@rmAnnot@type{SWF}\edef\rma@mimeType{\rma@mimetype@swf}% \def\rma@RMCSubtype{/Flash}% \else % if not flash \def\rma@poster@descrip{Video}\def\rma@rmAnnot@type{FLV}% \@FndSuppExtfalse \@tfor\rma@type:={flv}{fiv}{mpiv}{mivV}{mov}{iiiGP}{iiiGii}\do{% \expandafter\ifx\expandafter\rma@tempi\csname% rma@rmAnnot@type@\rma@type\endcsname \@FndSuppExttrue \edef\rma@mimeType{\csname% rma@mimetype@\rma@type\endcsname}% \rma@recordVideoPlayer\@break@tfor \fi }% \if@FndSuppExt \def\rma@RMCSubtype{/Video}% \xdef\FileStrmVideoPlayer{rmVideoPlayer\therm@Cnt}% \else % if not video \ifx\rma@tempi\rma@rmAnnot@type@mpiii \def\rma@rmAnnot@type{MP3}\edef\rma@mimeType{\rma@mimetype@mpiii}% \def\rma@poster@descrip{MP3}\def\rma@RMCSubtype{/Sound}% \xdef\FileStrmAudioPlayer{rmAudioPlayer\therm@Cnt}% \let\rma@rmAnnot@resources\@empty \rma@recordAudioPlayer \else % not mp3 \rma@PkEr@i \fi\fi\fi\fi \def\rma@thisfileName{\rma@basefilename.\rma@extension}% \def\rma@fullpath{\rma@thisfilepath\rma@thisfileName}% \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \let\rma@rmAnnot@flashvars\@empty\fi \ifx\rma@rmAnnot@type\rma@rmAnnot@type@mpiii \let\rma@rmAnnot@flashvars\@empty\fi \ifx\rma@rmAnnot@poster\@empty \ifx\rma@rmAnnot@type\rma@rmAnnot@type@mpiii \def\rma@rmAnnot@poster{nramp3poster}% \else \Gin@defaultbp\this@width\rm@Annot@width \Gin@defaultbp\this@height\rm@Annot@height \ifdim\rm@Annot@width < \rm@Annot@height \edef\calc@prop{\this@width}\else \edef\calc@prop{\this@height}\fi \def\this@bbox{0 0 \this@width\space\this@height}% \begin{sp@createImage}{\this@bbox}{rmAP@#4@\therm@Cnt}% \rma@invisible \rma@psgraphics@poster \end{sp@createImage}% \def\rma@rmAnnot@poster{rmAP@#4@\therm@Cnt}% \fi\fi \pdf@rect{\Bbox{\rm@Annot@width}{\rm@Annot@height}}% \@MXV@newlabel{rmAnnot_\rma@Annot@name}{rmAnnot\therm@Cnt}% \@MXV@labeltoaux{rmAnnot_\rma@Annot@name}{rmAnnot\therm@Cnt}% \literalps@out{% \ps@mark/_objdef {rmAnnot\therm@Cnt}% /Type/Annot% /Subtype/RichMedia% /NM (\rma@Annot@name)% % Annotation name \ifx\rma@rmAnnot@poster\@empty\else /AP <>% % poster appearance \fi /F 68% % Annotation flags /P {ThisPage}% % Parent /Border [ 0 0 \rma@rmAnnot@borderwidth ]% Border /BS <>% /RichMediaContent {rmContent\therm@Cnt}% /RichMediaSettings {rmSettings\therm@Cnt} H.B /ANN pdfmark^^J% \ps@mark/_objdef {rmContent\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmContent\therm@Cnt} <<% /Type/RichMediaContent% \ifrma@isiiid /Subtype/3D% \ifx\@MXV@varray\@empty\else /Views [\@MXV@varray]% \fi\fi /Configurations [{rmConfig\therm@Cnt}]% /Assets {rmAssets\therm@Cnt}% >>/PUT pdfmark^^J% \ps@mark/_objdef {rmConfig\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmConfig\therm@Cnt} <<% /Type/RichMediaConfiguration% /Name (RMConfig\therm@Cnt)% /Subtype\rma@RMCSubtype% /Instances {rmInstances\therm@Cnt}% >> /PUT pdfmark^^J% \ps@mark/_objdef {rmInstances\therm@Cnt}/type/array/OBJ pdfmark^^J% \ifrma@isiiid \ps@mark{rmInstances\therm@Cnt} {rmInstance\therm@Cnt}% /APPEND pdfmark^^J% \additional@Instances \else \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ps@mark{rmInstances\therm@Cnt} {rmVideoPlayer\therm@Cnt}% /APPEND pdfmark^^J% \else\ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf \ps@mark{rmInstances\therm@Cnt} {rmInstance\therm@Cnt}% /APPEND pdfmark^^J% \else \ps@mark{rmInstances\therm@Cnt} {rmAudioPlayer\therm@Cnt}% /APPEND pdfmark^^J% \fi\fi\fi \ps@mark/_objdef {rmAssets\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmAssets\therm@Cnt} <<% /Names {\rma@ANT}>>/PUT pdfmark^^J% \ps@mark/_objdef {\rma@ANT}/type/array/OBJ pdfmark^^J% \ifrma@isiiid \ps@mark{\rma@ANT} (\rma@thisfileName) /APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespec\therm@Cnt} /APPEND pdfmark^^J% \rma@addResources \else \ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf \ifKV@rmAnnot@url\else \ps@mark{\rma@ANT} (\rma@thisfileName)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespec\therm@Cnt}/APPEND pdfmark^^J% \rma@addResources \fi \else\ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ifKV@rmAnnot@url\else \ps@mark{\rma@ANT} (\rma@thisfileName)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespec\therm@Cnt}/APPEND pdfmark^^J% \ifVideoPlayerEx\rma@addResources\fi \fi \ifx\rma@rmAnnot@Skin\@empty\else \ps@mark{\rma@ANT} (\rma@rmAnnot@Skin)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespecSkin\rma@skinName}% /APPEND pdfmark^^J% \fi \ps@mark{\rma@ANT} (\rma@VideoPlayer)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespecVP}/APPEND pdfmark^^J% \else \ps@mark{\rma@ANT} (AudioPlayer.swf)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespecAP}/APPEND pdfmark^^J% \ps@mark{\rma@ANT} (\rma@thisfileName)/APPEND pdfmark^^J% \ps@mark{\rma@ANT} {rmfilespec\therm@Cnt}/APPEND pdfmark^^J% \fi\fi\fi \ifrma@isiiid \ps@mark/_objdef {rmInstance\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmInstance\therm@Cnt}% \else \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ps@mark/_objdef {rmVideoPlayer\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmVideoPlayer\therm@Cnt}% \else\ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf \ps@mark/_objdef {rmInstance\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmInstance\therm@Cnt}% \else \ps@mark/_objdef {rmAudioPlayer\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmAudioPlayer\therm@Cnt}% \fi\fi\fi <<% /Type/RichMediaInstance% \ifrma@isiiid /Subtype/3D% /Asset {rmfilespec\therm@Cnt}% \else /Subtype/Flash% \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv /Asset {rmfilespecVP}% \else\ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf /Asset {rmfilespec\therm@Cnt}% \else /Asset {rmfilespecAP}% \fi\fi\fi \ifrma@isiiid\else /Params {rmParams\therm@Cnt}% \fi >> /PUT pdfmark^^J% \ps@mark/_objdef {rmParams\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmParams\therm@Cnt} <<% /Type/RichMediaParams% \ifrma@isiiid\else \ifx\rma@rmAnnot@resources\@empty /Binding/Background% \else /Binding/Foreground% \fi\fi \ifrma@isiiid\else \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ifKV@rmAnnot@url /FlashVars (source=\rma@fullpath&% \else /FlashVars (source=\rma@thisfileName&% \fi \ifx\rma@rmAnnot@Skin\@empty\else skin=\rma@rmAnnot@Skin&% \fi skinAutoHide=\rma@skinAutoHide&% skinBackgroundColor=\rma@skinBGColor&% skinBackgroundAlpha=\rma@skinBGAlpha&% volume=\rma@rmAnnot@volume) \ifx\rma@rmAnnot@cuepoints\@empty\else /CuePoints [\rma@array@hold]% \fi \else\ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf \ifx\rma@rmAnnot@flashvars\@empty\else /FlashVars (\rma@rmAnnot@flashvars)% \fi \else /FlashVars (source=\ifKV@rmAnnot@url\rma@fullpath\else \rma@thisfileName\fi&autoPlay=true&% volume=\rma@rmAnnot@volume)% \fi\fi\fi >> /PUT pdfmark^^J% \ps@mark/_objdef {rmSettings\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmSettings\therm@Cnt} <<% /Type/RichMediaSettings% /Activation <<% /Type/RichMediaActivation% /Condition\rma@rmAnnot@enabled /Configuration {rmConfig\therm@Cnt}% \ifrma@isiiid /Animation% <<% /Type/RichMediaAnimation% /Subtype/Linear% /Speed \rma@rmAnnot@speed /PlayCount \rma@rmAnnot@playcount >>% \ifx\@MXV@defaultview\@empty\else /View \@MXV@defaultview \fi \ifx\@MXV@jscriptiiid\@empty\else \@MXV@jscriptiiid \fi\fi /Presentation {rmPresentation\therm@Cnt}% >> /Deactivation<<% /Type/RichMediaDeactivation% /Condition\rma@rmAnnot@deactivated >>% >>/PUT pdfmark^^J% \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ifx\rma@rmAnnot@cuepoints\@empty\else\rma@dict@hold\fi\fi \ps@mark/_objdef {rmPresentation\therm@Cnt}% /type/dict/OBJ pdfmark^^J% \ps@mark{rmPresentation\therm@Cnt}<<% /Type/RichMediaPresentation% \ifrma@isiiid /NavigationPane \rma@rmAnnot@modeltree % need key /Toolbar \rma@rmAnnot@toolbar % need key /Transparent \rma@rmAnnot@transparent \else \ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf /Transparent \rma@rmAnnot@transparent /PassContextClick \rma@rmAnnot@PassContextClick /NavigationPan false% \else /Transparent false% /NavigationPan false% \fi\fi \ifKV@rmAnnot@windowed /Style/Windowed% /Window {rmWindow\therm@Cnt}% \else /Style/Embedded% \fi >>/PUT pdfmark^^J% \ifKV@rmAnnot@windowed \ps@mark/_objdef {rmWindow\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmWindow\therm@Cnt}<<% /Type/RichMediaWindow% /Height<<% /Default \rma@winDimPosHeight@def /Max \rma@winDimPosHeight@max /Min \rma@winDimPosHeight@min >>% /Width<<% /Default \rma@winDimPosWidth@def /Max \rma@winDimPosWidth@max /Min \rma@winDimPosWidth@min >>% /Position<<% /Type/RichMediaPosition % RichMediaPosition dictionary /HAlign\rma@winDimPosPos@halign /VAlign\rma@winDimPosPos@valign /HOffset \rma@winDimPosPos@hoffset /VOffset \rma@winDimPosPos@voffset >>% >>/PUT pdfmark^^J% \fi \ps@mark/_objdef {rmfilespec\therm@Cnt}/type/dict/OBJ pdfmark^^J% \ps@mark{rmfilespec\therm@Cnt} <<% \ifKV@rmAnnot@url /F(\rma@fullpath)% /FS/URL% \else /F(\rma@thisfileName)% /UF (\rma@thisfileName)% /EF <> \fi /Type/Filespec >>/PUT pdfmark^^J% \ifKV@rmAnnot@url\else \ifrma@EmbedFile \ps@mark/_objdef {\csname rmFileStrm#4\endcsname}% /type/stream/OBJ pdfmark^^J% \ps@mark{\csname rmFileStrm#4\endcsname} (\rma@fullpath) (r) file /PUT pdfmark^^J% \ps@mark{\csname rmFileStrm#4\endcsname} <<% /Type/EmbeddedFile% /Subtype(\rma@mimeType)% >>/PUT pdfmark^^J% \ps@mark{\csname rmFileStrm#4\endcsname} /CLOSE pdfmark^^J% \fi\fi \ifx\rma@rmAnnot@type\rma@rmAnnot@type@swf\rma@addFileSpecs\fi \ifrma@isiiid\rma@addFileSpecs\fi \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ifVideoPlayerEx\rma@addFileSpecs\fi \ifx\rma@rmAnnot@Skin\@empty\else \ps@mark/_objdef {rmfilespecSkin\rma@skinName}% /type/dict/OBJ pdfmark^^J% \ps@mark{rmfilespecSkin\rma@skinName} <<% /F (\rma@rmAnnot@Skin)% /Type/Filespec% /UF (\rma@rmAnnot@Skin)% /EF <> >>/PUT pdfmark^^J% \rm@csarg\if{embedSkin\rma@skinName}1 \ps@mark/_objdef {rmfstreamSkin\rma@skinName}% /type/stream/OBJ pdfmark^^J% \ps@mark{rmfstreamSkin\rma@skinName}% (\rma@pathToSkins/\rma@rmAnnot@Skin) (r) file% /PUT pdfmark^^J% \ps@mark{rmfstreamSkin\rma@skinName} <<% /Type/EmbeddedFile /Subtype (\rma@mimetype@swf) >>/PUT pdfmark^^J% \ps@mark{rmfstreamSkin\rma@skinName}/CLOSE pdfmark^^J% \fi\fi\fi \ifx\rma@rmAnnot@type\rma@rmAnnot@type@flv \ps@mark/_objdef {rmfilespecVP}/type/dict/OBJ pdfmark^^J% \ps@mark{rmfilespecVP} <<% /Type/Filespec% /F (\rma@VideoPlayer)% /UF (\rma@VideoPlayer)% /EF <> >>/PUT pdfmark^^J% \ifrma@EmbedVideoPlayer \ps@mark/_objdef {rmfstreamVP}/type/stream/OBJ pdfmark^^J% \ps@mark{rmfstreamVP} (\rma@pathToPlayers/\rma@VideoPlayer) (r) file /PUT pdfmark^^J% \ps@mark{rmfstreamVP} <<% /Type/EmbeddedFile% /Subtype (\rma@mimetype@swf)% >>/PUT pdfmark^^J% \ps@mark{rmfstreamVP} /CLOSE pdfmark^^J% \fi\fi \ifx\rma@rmAnnot@type\rma@rmAnnot@type@mpiii \ps@mark/_objdef {rmfilespecAP}/type/dict/OBJ pdfmark^^J% \ps@mark{rmfilespecAP} <<% /F (AudioPlayer.swf)% /Type/Filespec% /UF (AudioPlayer.swf)% /EF <>% >>/PUT pdfmark^^J% \ifrma@EmbedAudioPlayer \ps@mark/_objdef {rmfstreamAP}/type/stream/OBJ pdfmark^^J% \ps@mark{rmfstreamAP}(\rma@pathToPlayers/AudioPlayer.swf) (r) file /PUT pdfmark^^J% \ps@mark{rmfstreamAP} <<% /Type/EmbeddedFile% /Subtype (\rma@mimetype@mpiii)% >>/PUT pdfmark^^J% \ps@mark{rmfstreamAP} /CLOSE pdfmark^^J% \fi\fi}% \ifx\rma@rmAnnot@type@flv\rma@rmAnnot@type \ifx\rma@rmAnnot@Skin\@empty\else \expandafter\global\rm@csarg\let{embedSkin\rma@skinName}=0\relax \fi\fi \endgroup} \newcommand{\defaultPoster}[1]{\def\rma@psgraphics@poster{#1}} \defaultPoster {% \rma@ps@bg@setcolor 0 0 \this@width\space\this@height\space rectfill \rma@ps@txt@x\adj@measure\rma@ps@txt@y\adj@measure moveto \rma@ps@txt@setcolor/\rma@ps@font\this@height\space \rma@ps@relfontsize div selectfont \rma@ps@msg } \def\adj@measure{\calc@prop\space mul 100 div }% \def\rma@ps@bg@setcolor{.7529 setgray } \def\rma@ps@txt@x{10 }\def\rma@ps@txt@y{10 } \def\rma@ps@txt@setcolor{.4 setgray } \def\rma@ps@font{Helvetica }\def\rma@ps@relfontsize{10 }% \def\rma@ps@msg{(\rma@posternote) show} \providecommand{\makePoster}[3][]{% \embedEPS[#1]{rma@#2}{#3}% \begin{createImage}{\bboxOf{rma@#2}}{#2}% \ps@mark{rma@#2} /SP pdfmark \end{createImage}% } \@onlypreamble{\makePoster} \def\rma@PkEr@i{% \PackageError{rmannot}{% You must specify a file with an extension\MessageBreak of .swf, .flv, .f4v, .mp4, .m4v, .mov, .3gp,\MessageBreak .3g2, .mp3}{Specify one of the supported file extensions to embed in this annotation.\MessageBreak See the rmannot manual for details on supported extensions.}} \def\rma@PkEr@ii{% \PackageError{rmannot}{% The name `\rm@argii' has already been used. Either\MessageBreak you are defining the same path, or a different path\MessageBreak with the same name}{% Names must be unique to the document, choose another}} \def\rma@PkEr@iii#1{% \PackageError{rmannot}{% No extension supplied with this file name,\MessageBreak#1.% \MessageBreak Please include a file extension of\MessageBreak .swf, .flv, or .mp3, as appropriate}{% Include an extension of .swf, .flv, or .mp3}} \rma@input@iiidCode \endinput %% %% End of file `rmannot.sty'.