diff options
Diffstat (limited to 'Master/texmf-dist/doc/context/examples/clock/clock.tex')
-rw-r--r-- | Master/texmf-dist/doc/context/examples/clock/clock.tex | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/context/examples/clock/clock.tex b/Master/texmf-dist/doc/context/examples/clock/clock.tex new file mode 100644 index 00000000000..6b70de58512 --- /dev/null +++ b/Master/texmf-dist/doc/context/examples/clock/clock.tex @@ -0,0 +1,156 @@ +%D This example dates from late 2001, and ws probaby made for some \TEX\ related +%D meeting. It's a relative simple example that uses a few function from a general +%D \JAVASCRIPT\ preamble. In fact forcing the \type {FieldStack} code into the +%D is the only adaptation from \MKII\ to \MKIV\ (because we load on demand and here +%D the code is ude sindirectly). +%D +%D Nowadays we could layers instead which is probably a bit more ligthweight than +%D widgets. Also, we should actually synchronize the time but on the other hand, but +%D on the other hand, now it's a sort of stopwatch. + +% \nopdfcompression + +\starttext + +\useJSscripts[fld] + +\useJSpreamble[FieldStack] + +\definepapersize + [clock] + [width=2.5cm, + height=2.5cm] + +\setuppapersize + [clock][clock] + +\setuplayout + [header=0pt, + footer=0pt, + backspace=.25cm, + topspace=.25cm, + width=middle, + height=middle] + +\startJSpreamble stepper used now + + var state = 0 ; + var more = 0 ; + var step = 0 ; + + function step_clock() { + try { + if (more == 60) { + more = 0 ; + Walk_Field("more") ; + } else { + } + more += 1 ; + Walk_Field("clock") ; + this.dirty = false ; + } catch (e) { + } + } + + function start_clock() { + try { + if (state == 0) { + step = app.setInterval ("step_clock()", 1000) ; + step.count = 0 ; + state = 1 ; + } else if (state == 1) { + app.clearInterval (step) ; + state = 2 ; + } else if (state == 2) { + app.clearInterval (step) ; + Reset_Fields("more") ; + Reset_Fields("clock") ; + Set_Field("more", "1") ; + Set_Field("clock", "1") ; + more = 0 ; + state = 0 ; + } + } catch(e) { + } + } + + function stop_clock () { + try { + app.clearInterval(step) ; + } catch(e) { + } + } + +\stopJSpreamble + +\definereference[StopClock] [JS(stop_clock)] +\definereference[StartClock][JS(start_clock)] + +\setupinteraction + [state=start, + closeaction={StopClock,ForgetChanges}, + closepageaction={StopClock}] + +\startreusableMPgraphic{common} + drawoptions(withpen pencircle scaled 1mm withcolor .4white) ; + fill fullsquare scaled 2.5cm ; + drawoptions(withpen pencircle scaled 1mm withcolor .6green) ; + draw fullsquare scaled 2.5cm ; + drawoptions(withpen pencircle scaled 1mm withcolor .6red) ; + draw fullcircle scaled 2cm ; + drawoptions(withpen pencircle scaled 2mm withcolor .6yellow) ; + for i=1 upto 12 : + draw (0,1cm) rotated ((i-1)*(360/12)) ; + endfor ; +\stopreusableMPgraphic + +\startuseMPgraphic{clock} + numeric stp ; stp := (\MPvar{n}-1)*(360/60) ; + pair p ; p := (0,\MPvar{l}-.5mm) ; + drawoptions(withpen pencircle scaled 1mm withcolor .6\MPvar{c}) ; + draw (origin -- p) rotated -stp ; + draw (p shifted (-2mm,-2.5mm)--p--p shifted (2mm,-2.5mm)) rotated -stp ; + setbounds currentpicture to fullsquare scaled 2cm ; + drawoptions(withpen pencircle scaled 2mm withcolor .6white) ; + draw origin ; +\stopuseMPgraphic + +\defineoverlay [common] [\reuseMPgraphic{common}] +\defineoverlay [start] [\overlaybutton{StartClock}] + +\setupbackgrounds + [page] + [background={common,start}] + +\let\clocklist\empty +\let\morelist \empty + +\dorecurse {60} { + \appendtocommalist{step:#1}\clocklist + \definesymbol + [step:#1] + [\useMPgraphic{clock}{n=#1,l=1cm,c=blue}] + \appendtocommalist{more:#1}\morelist + \definesymbol + [more:#1] + [\useMPgraphic{clock}{n=#1,l=.75cm,c=green}] +} + +\definefieldstack + [clock] + [\clocklist] + [width=2cm,height=2cm,offset=overlay,frame=off] + +\definefieldstack + [more] + [\morelist] + [width=2cm,height=2cm,offset=overlay,frame=off] + +\starttext + + \startoverlay + {\fieldstack[more]} + {\fieldstack[clock]} + \stopoverlay + +\stoptext |