diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/java-imp-stp.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/java-imp-stp.mkiv | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/java-imp-stp.mkiv b/Master/texmf-dist/tex/context/base/java-imp-stp.mkiv new file mode 100644 index 00000000000..ebddd8cc6f6 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/java-imp-stp.mkiv @@ -0,0 +1,123 @@ +%D \module +%D [ file=java-stp, +%D version=2004.03.15, +%D title=\CONTEXT\ JavaScript Macros, +%D subtitle=Stepping, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% we define ocglist global, otherwise we quickly run into a memory hog (even +% out of memory in a 512 Meg machine) + +% we cannot use doc_visited[this.pageNum] instead of doc_currentstep because +% of some funny side effect (i.e. dup or so) + +% todo: test with later as we do autoinsert now + +\startJSpreamble Steps used now + +var doc_ocglist = this.getOCGs() ; +var doc_stepname = "step" ; +var doc_currentstep = 0 ; +var doc_maxstep = 50 ; +var doc_visited = new Array() ; +var doc_busy = new Array() ; + +function SetupStepper(layername,laststep) { + doc_stepname = layername ; + doc_maxstep = laststep ; + for (var i=0; i<=this.numPages; i++) { + doc_visited[i] = 0 ; + doc_busy[i] = 0 ; + } +} + +for (var i=0; i<=this.numPages; i++) { + doc_visited[i] = 0 ; + doc_busy[i] = 0 ; +} + +function GetOCG(name) { + for (var i=0; i < doc_ocglist.length; i++) { + if (doc_ocglist[i].name == name) { + return doc_ocglist[i] ; + } + } + return null ; +} + +function CheckBusy() { + var ocg = GetOCG("step:busy") ; + if (ocg != null) { + if (doc_visited[this.pageNum]==0) { + ocg.state = true ; + } else { + if (doc_visited[this.pageNum]<doc_busy[this.pageNum]) { + ocg.state = true ; + } else { + ocg.state = false ; + } + } + } +} + +function SetStepper(maxstep,state) { + for (var i=1; i<=maxstep; i++) { + try { + var ocg = GetOCG(doc_stepname + ':' + String(i)) ; + if (ocg != null) { + ocg.state = state ; + } + } catch (e) { + return ; + } + } +} + +function CheckStepper(maxsteps) { + SetStepper(doc_visited[this.pageNum], true) ; + doc_busy[this.pageNum] = Number(maxsteps) ; + doc_currentstep = doc_visited[this.pageNum] ; + CheckBusy() ; +} + +function ResetStepper() { + SetStepper(doc_maxstep, false) ; + doc_currentstep = 0 ; +} + +function InvokeStepper() { + try { + if (doc_currentstep<doc_busy[this.pageNum]) { + doc_currentstep += 1 ; + doc_visited[this.pageNum] = doc_currentstep ; + var ocg = GetOCG(doc_stepname + ':' + String(doc_currentstep)) ; + if (ocg != null) { + ocg.state = true ; + } + } else { + if (this.pageNum+1==this.numPages) { + this.pageNum = 0 ; + } else { + this.pageNum += 1 ; + } + } + CheckBusy() ; + } catch (e) { + return ; + } +} + +\stopJSpreamble + +% \definereference [SetupStepper] [JS(SetupStepper{step,50})] +% \definereference [ResetStepper] [JS(ResetStepper)] +% \definereference [CheckStepper] [JS(CheckStepper{\StepCounter})] +% \definereference [InvokeStepper] [JS(InvokeStepper)] + +\endinput |