%D \module %D [ file=x-res-50, %D version=2004.02.18, %D title=\CONTEXT\ Style File, %D subtitle=Multimedia Presentation, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D The xml mapping has to be redone! \endinput %D This is a preliminary module, using a preliminary xml media format that %D looks as follows (record is embedded in resource library element): %D %D \starttyping %D %D Sample One %D application/x-shockwave-flash %D http://localhost/mb.swf %D 8cm %D 6cm %D Nothing special to be said. %D cow.pdf %D %D %D %D Sample Two %D audio/mpeg %D mb.mp3 %D mb.jpg %D %D \stoptyping %D %D \starttyping %D texexec --pdf --use=med-show yourfile.xml %D \stoptyping %D %D Bonus: %D %D \starttyping %D --arg="url=http://localhost:8881/e:/media" %D \stoptyping % output=pdftex % \nopdfcompression % bugs in recognizing embedded stream cq. player % bugs in layers + hide/vide % bugs in save javascripts % bugs all over the place % in principe kan menu overal hetzelfde zijn als we via JS per pagina de clip var zetten, % hoewel, misschien zal het menu gaan afhangen van de soort clip % viewerlayer (eigenschap) aan framed en layer \usemodule[meta-dum] \usemodule[contml] \autoXMLnamespace [context] \doifelsevariable{environment}{url} {\setvariables[mediaclip][url=\getvariable{environment}{url}/]} {\setvariables[mediaclip][url=]} \startmode [silent] \setvariables[mediaclip:option][start=] \stopmode \startnotmode [silent] \setvariables[mediaclip:option][start=auto] \stopnotmode \chardef\XMLtokensreduction=1 \dontcomplain % \showframe \pdfcompresslevel=0 \setuppapersize [S6][S6] \definemeasure [GapSize] [\dimexpr( 15pt)] \definemeasure [EdgeWidth] [\dimexpr(100pt)] \definemeasure [TextWidth] [\dimexpr(.5\textwidth)] \definemeasure [RenderingWidth] [\dimexpr(\textwidth)] \definemeasure [RenderingHeight] [\dimexpr(\textheight)] % \XMLflush{rl:ratio}\dimexpr(.75\textwidth), \setuplayout [backspace=\measure{GapSize}, topspace=\measure{GapSize}, header=0pt, footer=0pt, margin=0pt, edgedistance=2\measure{GapSize}, rightedge=\measure{EdgeWidth}, bottomdistance=2\measure{GapSize}, bottom=2\measure{GapSize}, height=fit, width=fit] \setupinteraction [state=start, color=lightgray, contrastcolor=lightgray, openaction=PresetFields, closeaction=ForgetChanges, menu=on, click=no] \setupinteractionscreen [option=max] \setupcolors [state=start] \usetypescript [palatino][texnansi] \setupbodyfont [palatino] \definecolor[darkgray] [s=.2] \definecolor[mediumgray][s=.5] \definecolor[lightgray] [s=.8] \definecolor[transgray] [s=1,t=.9,a=1] \setupbackgrounds [page] [backgroundoffset=\measure{GapSize}, background={color,pagebutton}, backgroundcolor=black] \definelayer [main] [width=\textwidth, height=\textheight] \definelayer [extra] [width=\rightedgewidth, height=\bottomheight] \setupbackgrounds [text] [backgroundoffset=0pt, background=main] \setupbackgrounds [bottom][rightedge] [backgroundoffset=0pt, background=extra] % java scripts \startJSpreamble {handy} used now function ForgetChanges () { this.dirty = false } function PresetFields () { this.syncAnnotScan() } \stopJSpreamble \definereference[PresetFields] [JS(PresetFields)] \definereference[ForgetChanges][JS(ForgetChanges)] % layers \defineviewerlayer [menulayer] [title=menulayer] \defineviewerlayer [textlayer] [title=textlayer,state=stop] \defineviewerlayer [datalayer] [title=datalayer,state=stop] \setupfield [rollbutton] [fieldlayer=menulayer] \setupfield [rollbutton] [option=auto] \definepalet [rollover] [n=darkgray, r=lightgray, d=darkgray] % list \definelist [clips] [expansion=yes, criterium=text, alternative=f] % navigation \defineoverlay[pagebutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer},ToggleLayer{menulayer}}] \defineoverlay[textbutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}] \defineoverlay[databutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}] % clips \defineXMLenvironment [rl:mediaclip] {\setups[mediaclip:start]} {\setups[mediaclip:stop]} \newcounter\MediaClip \startsetups[mediaclip:start] \bgroup \startXMLignore % no \startstandardmakeup here since we need the dsta in the menuconstruction \defineXMLsave [rl:name] \defineXMLsave [rl:visualization] \defineXMLsave [rl:file] \defineXMLsave [rl:mime] \defineXMLsave [rl:picture] [backgroundcolor=lightgray] \defineXMLsavecontent [rl:text] {No additional info.} \defineXMLsavecontent [rl:width] {\measure{RenderingWidth}} \defineXMLsavecontent [rl:height] {\measure{RenderingHeight}} \defineXMLsavecontent [rl:aspect] {1} \stopsetups \startsetups[mediaclip:stop] \startstandardmakeup \doifXMLdataelse{rl:file} {\setups[mediaclip:file:yes]} {} \doifXMLdataelse{rl:picture} {\doifelse{\XMLflush{rl:picture}}{self} {\setups[mediaclip:picture:self]} {\setups[mediaclip:picture:yes]}} {\setups[mediaclip:picture:no]} \doifXMLdata{rl:text} {\setups[mediaclip:text]} \setlayerframed [extra] [preset=rightbottom] [frame=off,offset=overlay,width=fit,background=databutton,align=left] {\startviewerlayer[datalayer]\setups[mediaclip:data]\stopviewerlayer} \doifXMLdataelse{rl:name} {\writetolist[clips]{}{\XMLflush{rl:name}}} {\writetolist[clips]{}{\XMLpar{rl:mediaclip}{label}{unknown}}} \stopstandardmakeup \stopXMLignore \egroup \stopsetups \setuptabulate [before=, after=] \def\rlCleanupFileName#1% {\bgroup \def\cleanup##1##2{\ifnum##1##2=20 \space\else\char\octnumber{##1##2}\fi}% \defineactivecharacter 37 {\cleanup}% \scantokens{#1}% \egroup} \startsetups[mediaclip:data] \noindent \buttonframed [framecolor=lightgray, foregroundcolor=lightgray] {\bf\expanded{\rlCleanupFileName{\XMLflush{rl:file}}}} \vskip.75\measure{GapSize} \noindent \buttonframed [framecolor=lightgray, foregroundcolor=lightgray] {\bf\XMLflush{rl:mime}} \stopsetups \startsetups[mediaclip:picture:self] \definerenderingwindow [mediaclip] [width=\XMLflush{rl:width}, height=\XMLflush{rl:height}, frame=off, openpageaction=StartRendering{mediaclip}, closepageaction=StoptRendering{mediaclip}] \setlayer [main] {\placerenderingwindow[mediaclip][mediaclip-\MediaClip]} \stopsetups \startsetups[mediaclip:picture:yes] \setlayer [main] {\externalfigure [\XMLflush{rl:picture}] [background=color, backgroundcolor=\XMLpar{rl:picture}{backgroundcolor}{lightgray}, factor=max, width=\XMLflush{rl:width}, height=\XMLflush{rl:height}]} \stopsetups \startsetups[mediaclip:picture:no] \setlayer [main] {\externalfigure [dummy] [width=\XMLflush{rl:width}, height=\XMLflush{rl:height}]} \stopsetups \startsetups[mediaclip:file:yes] \doglobal\increment\MediaClip \useexternalrendering [mediaclip-\MediaClip] [\XMLflush{rl:mime}] [\getvariable{mediaclip}{url}\XMLflush{rl:file}] [\getvariable{mediaclip:option}{start}] \stopsetups \defineinteractionmenu [navigation] [right] \defineinteractionmenu [control] [bottom] \setupinteractionmenu [navigation,control] [state=start, frame=on, middle=\hskip.5\measure{GapSize}, inbetween=\vskip.5\measure{GapSize}] \setupinteractionmenu [right,bottom] [distance=overlay] \startinteractionmenu [navigation] \rob [HideLayer{textlayer},FirstPage] First Page \\ \rob [HideLayer{textlayer},PreviousPage] Previous Page \\ \rob [HideLayer{textlayer},NextPage] Next Page \\ \rob [HideLayer{textlayer},LastPage] Last Page \\ \rob [HideLayer{textlayer},clips] List Of Clips \\ \rob [ForgetChanges,CloseDocument] Close Document \\ \stopinteractionmenu \startinteractionmenu [control] \rob [StartRendering{mediaclip-\MediaClip}] Start \\ \rob [StopRendering{mediaclip-\MediaClip}] Stop \\ \rob [PauseRendering{mediaclip-\MediaClip}] Pause \\ \rob [ResumeRendering{mediaclip-\MediaClip}] Resume \\ \rob [ToggleLayer{datalayer}] Info \\ \doifXMLdata{rl:text}{\rob [HideLayer{datalayer},ToggleLayer{textlayer}] Text \\} \stopinteractionmenu \startsetups[mediaclip:text] \setlayer [extra] [preset=rightbottom] {\startviewerlayer[textlayer] \framed [align=normal, frame=off, width=\measure{TextWidth}, foregroundcolor=darkgray, background={color,textbutton}, backgroundcolor=lightgray] {\XMLflush{rl:text}} \stopviewerlayer} \stopsetups \setupcolors[textcolor=lightgray] \startsetups [library:start] \starttext \setupinteractionmenu[control][state=stop] \title[clips]{List of Media Clips} \placelist[clips] \page \setupinteractionmenu[control][state=start] \stopsetups \startsetups [library:stop] \stoptext \stopsetups \defineXMLenvironment [rl:resourcelibrary] {\setups[library:start]} {\setups[library:stop]} \doifelsenothing{\inputfilename} {\processXMLfile{mediaclient.xml}} {\processXMLfile{\inputfilename}}