summaryrefslogtreecommitdiff
path: root/tex/context/base/m-visual.mkiv
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-10-19 01:20:13 +0300
committerMarius <mariausol@gmail.com>2012-10-19 01:20:13 +0300
commit69d2352af4b60929b37fc49f3bdb263977016244 (patch)
treedb5eb11398e345dfa23b4c4500fb93575d2afb7c /tex/context/base/m-visual.mkiv
parentc18f7cbe51449a611ea1819fedd9a4ff18529b7d (diff)
downloadcontext-69d2352af4b60929b37fc49f3bdb263977016244.tar.gz
stable 2012.05.30 11:26
Diffstat (limited to 'tex/context/base/m-visual.mkiv')
-rw-r--r--tex/context/base/m-visual.mkiv581
1 files changed, 12 insertions, 569 deletions
diff --git a/tex/context/base/m-visual.mkiv b/tex/context/base/m-visual.mkiv
index 504c0d0c5..5d259f6ab 100644
--- a/tex/context/base/m-visual.mkiv
+++ b/tex/context/base/m-visual.mkiv
@@ -13,9 +13,6 @@
\unprotect
-%D Much will probably be replaced by \LUA\ based solutions which is
-%D rather trivial and fun doing.
-
%D This module collect a few more visual debugger features. I
%D needed them for manuals and styles. The macros are documented
%D in a my way document.
@@ -31,11 +28,11 @@
\begingroup
\directcolored[fakerulecolor]%
\iffakebaseline
- \vrule\s!height1.25ex\s!depth-.05ex\s!width#1%
+ \vrule\!!height1.25ex\!!depth-.05ex\!!width#1%
\kern-#1%
- \vrule\s!height-.05ex\s!depth .25ex\s!width#1%
+ \vrule\!!height-.05ex\!!depth .25ex\!!width#1%
\else
- \vrule\s!height1.25ex\s!depth .25ex\s!width#1%
+ \vrule\!!height1.25ex\!!depth .25ex\!!width#1%
\fi
\endgroup
\allowbreak}
@@ -119,9 +116,9 @@
\ifx\dofakedroppedcaps\relax
{\fakeparindentcolor
\vrule
- \s!height \strutheight % not longer .5ex
- \s!depth \strutdepth % not longer 0pt
- \s!width \parindent}%
+ \!!height \strutheight % not longer .5ex
+ \!!depth \strutdepth % not longer 0pt
+ \!!width \parindent}%
\else
\dofakedroppedcaps \let\dofakedroppedcaps\relax
\fi
@@ -140,9 +137,9 @@
\advance\scratchdimen -\lineheight
\advance\scratchdimen \dp\strutbox
\vrule
- \s!width#1\wd\scratchbox
- \s!height\ht\scratchbox
- \s!depth\scratchdimen}%
+ \!!width#1\wd\scratchbox
+ \!!height\ht\scratchbox
+ \!!depth\scratchdimen}%
\ht\scratchbox\ht\strutbox
\dp\scratchbox\dp\strutbox
\hangindent\wd\scratchbox
@@ -217,7 +214,7 @@
{\hss\lower.5\ht\scratchbox\box\scratchbox\hss}%
\hbox to \zeropoint
{\hss
- \black\vrule\s!width6\linewidth\s!height3\linewidth\s!depth3\linewidth
+ \black\vrule\!!width6\linewidth\!!height3\linewidth\!!depth3\linewidth
\hss}}}
\unexpanded\def\bodyfontgrid
@@ -246,564 +243,10 @@
\placefigure{\fakewords{8}{15}}{\fakeimage{5cm}{3cm}{10cm}{5cm}}
\dorecurse{2}{\fakewords{100}{200}\endgraf}}}}}
-%D Moved code:
-
-%D \module
-%D [ file=trac-vis, % was core-vis,
-%D version=1996.06.01,
-%D title=\CONTEXT\ Tracking Macros,
-%D subtitle=Visualization,
-%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 This module adds some more visualization cues to the ones
-%D supplied in the support module.
-%D
-%D %\everypar dual character, \the\everypar and \everypar=
-%D %\hrule cannot be grabbed in advance, switches mode
-%D %\vrule cannot be grabbed in advance, switches mode
-%D %
-%D %\indent only explicit ones
-%D %\noindent only explicit ones
-%D %\par only explicit ones
-%D
-%D %\leftskip only if explicit one
-%D %\rightskip only if explicit one
-
-\writestatus{loading}{ConTeXt Tracking Macros / Visualization}
-
-\unprotect
-
-%D \macros
-%D {indent, noindent, par}
-%D
-%D \TeX\ acts upon paragraphs. In mosts documents paragraphs
-%D are separated by empty lines, which internally are handled as
-%D \type{\par}. Paragraphs can be indented or not, depending on
-%D the setting of \type{\parindent}, the first token of a
-%D paragraph and/or user suppressed or forced indentation.
-%D
-%D Because the actual typesetting is based on both explicit
-%D user and implicit system actions, visualization is only
-%D possible for the user supplied \type{\indent},
-%D \type{\noindent}, and \type{\par}. Other
-%D 'clever' tricks will quite certainly lead to more failures
-%D than successes, so we only support these three explicit
-%D primitives and one macro:
-
-\unexpanded\def\showparagraphcue#1#2#3#4#5%
- {\bgroup
- \scratchdimen#1\relax
- \dontinterfere
- \dontcomplain
- %boxrulewidth5\testrulewidth
- #3#4\relax
- \setbox\scratchbox\normalhbox to \scratchdimen
- {#2{\ruledhbox to \scratchdimen
- {\vrule #5 20\testrulewidth \s!width \zeropoint
- \normalhss}}}%
- \smashbox\scratchbox
- \normalpenalty\plustenthousand
- \box\scratchbox
- \egroup}
-
-\unexpanded\def\ruledhanging
- {\ifdim\hangindent>\zeropoint
- \ifnum\hangafter<\zerocount
- \normalhbox
- {%boxrulewidth5\testrulewidth
- \setbox\scratchbox\ruledhbox to \hangindent
- {\scratchdimen\strutht
- \advance\scratchdimen \strutdp
- \vrule
- \s!width \zeropoint
- \s!height \zeropoint
- \s!depth -\hangafter\scratchdimen}%
- \normalhskip-\hangindent
- \smashbox\scratchbox
- \raise\strutht\box\scratchbox}%
- \fi
- \fi}
-
-\unexpanded\def\ruledparagraphcues
- {\bgroup
- \dontcomplain
- \normalhbox to \zeropoint
- {\ifdim\leftskip>\zeropoint\relax
- \showparagraphcue\leftskip\llap\relax\relax\!!depth
- \normalhskip-\leftskip
- \fi
- \ruledhanging
- \normalhskip\hsize
- \ifdim\rightskip>\zeropoint\relax
- \normalhskip-\rightskip
- \showparagraphcue\rightskip\relax\relax\relax\!!depth
- \fi}%
- \egroup}
-
-\unexpanded\def\ruledpar
- {\relax
- \ifhmode
- \showparagraphcue{40\testrulewidth}\relax\rightrulefalse\relax\s!height
- \fi
- \normalpar}
-
-\unexpanded\def\rulednoindent
- {\relax
- \normalnoindent
- \ruledparagraphcues
- \showparagraphcue{40\testrulewidth}\llap\leftrulefalse\relax\s!height}
-
-\unexpanded\def\ruledindent
- {\relax
- \normalnoindent
- \ruledparagraphcues
- \ifdim\parindent>\zeropoint
- \showparagraphcue\parindent\relax\relax\relax\s!height
- \else
- \showparagraphcue{40\testrulewidth}\llap\relax\relax\s!height
- \fi
- \normalhskip\parindent}
-
-\unexpanded\def\dontshowimplicits
- {\let\noindent \normalnoindent
- \let\indent \normalindent
- \let\par \normalpar}
-
-\unexpanded\def\showimplicits
- {\testrulewidth \defaulttestrulewidth
- \let\noindent \rulednoindent
- \let\indent \ruledindent
- \let\par \ruledpar}
-
-%D The next few||line examples show the four cues. Keep in
-%D mind that we only see them when we explicitly open or close
-%D a paragraph.
-%D
-%D \bgroup
-%D \def\voorbeeld#1%
-%D {#1Visualizing some \TeX\ primitives and Plain \TeX\
-%D macros can be very instructive, at least it is to me.
-%D Here we see {\tt\string#1} and {\tt\string\ruledpar} in
-%D action, while {\tt\string\parindent} equals
-%D {\tt\the\parindent}.\ruledpar}
-%D
-%D \showimplicits
-%D
-%D \voorbeeld \indent
-%D \voorbeeld \noindent
-%D
-%D \parindent=60pt
-%D
-%D \voorbeeld \indent
-%D \voorbeeld \noindent
-%D
-%D \startnarrower
-%D \voorbeeld \indent
-%D \voorbeeld \noindent
-%D \stopnarrower
-%D \egroup
-%D
-%D These examples also demonstrate the visualization of
-%D \type {\leftskip} and \type {\rightskip}. The macro
-%D \type {\nofruledbaselines} determines the number of lines
-%D shown.
-
-\newcounter\ruledbaselines
-
-\def\nofruledbaselines{3}
-
-\unexpanded\def\ruledbaseline
- {\vrule \s!width \zeropoint
- \bgroup
- \dontinterfere
- \doglobal\increment\ruledbaselines
- \scratchdimen\nofruledbaselines\baselineskip
- \setbox\scratchbox\normalvbox to 2\scratchdimen
- {\leaders
- \normalhbox
- {\strut
- \vrule
- \s!height \testrulewidth
- \s!depth \testrulewidth
- \s!width 120\points}
- \normalvfill}%
- \smashbox\scratchbox
- \advance\scratchdimen \strutheightfactor\baselineskip
- \setbox\scratchbox\normalhbox
- {\normalhskip -48\points
- \normalhbox to 24\points
- {\normalhss
- {\ttxx\ruledbaselines}%
- \normalhskip6\points}%
- \raise\scratchdimen\box\scratchbox}%
- \smashbox\scratchbox
- \box\scratchbox
- \egroup}
-
-\unexpanded\def\showbaselines
- {\testrulewidth\defaulttestrulewidth
- \EveryPar{\ruledbaseline}}
-
-%D \macros
-%D {showpagebuilder}
-%D
-%D The next tracing option probaly is only of use to me and a
-%D few \CONTEXT\ hackers.
-
-\unexpanded\def\showpagebuilder
- {\EveryPar{\doshowpagebuilder}}
-
-\unexpanded\def\doshowpagebuilder
- {\strut\llap
- {\startcolor[blue]\vl
- \high{\infofont v:\the\vsize }\vl
- \high{\infofont g:\the\pagegoal }\vl
- \high{\infofont t:\the\pagetotal}\vl
- \stopcolor}}
-
-%D \macros
-%D {colormarkbox,rastermarkbox}
-%D
-%D This macro is used in the pagebody routine. No other use
-%D is advocated here.
-%D
-%D \starttyping
-%D \colormarkbox0
-%D \stoptyping
-
-\def\colormarkoffset{\cutmarkoffset}
-\def\colormarklength{\cutmarklength}
-
-\def\dodocolorrangeA#1%
- {\fastcolored[#1]{\hrule\s!width3em\s!height\scratchdimen\s!depth\zeropoint}}
-
-\def\docolorrangeA#1 #2 %
- {\vbox
- {\hsize3em % \scratchdimen
- \ifcase#1\or
- \dodocolorrangeA{c=#2}\or
- \dodocolorrangeA{m=#2}\or
- \dodocolorrangeA{y=#2}\or
- \dodocolorrangeA{m=#2,y=#2}\or
- \dodocolorrangeA{c=#2,y=#2}\or
- \dodocolorrangeA{c=#2,m=#2}\fi
- \ifdim\scratchdimen>1ex
- \vskip-\scratchdimen
- \vbox to \scratchdimen
- {\vss\hbox to 3em{\hss#2\hss}\vss}%
- \fi}}
-
-\def\colorrangeA#1%
- {\vbox
- {\startcolor[\s!white]%
- \scratchdimen\dimexpr(-\colormarklength*4+\tractempheight+\tractempdepth)/21\relax
- \offinterlineskip
- \docolorrangeA #1 1.00 \docolorrangeA #1 0.95
- \docolorrangeA #1 0.75
- \docolorrangeA #1 0.50
- \docolorrangeA #1 0.25 \docolorrangeA #1 0.05
- \docolorrangeA #1 0.00
- \stopcolor}}
-
-\def\docolorrangeB #1 #2 #3 #4 #5 %
- {\fastcolored
- [\c!c=#2,\c!m=#3,\c!y=#4,\c!k=#5]
- {\vrule\s!width\scratchdimen\s!height\colormarklength\s!depth\zeropoint}%
- \ifdim\scratchdimen>2em
- \hskip-\scratchdimen
- \vbox to \colormarklength
- {\vss\hbox to \scratchdimen{\hss#1\hss}\vss}%
- \fi}
-
-\def\colorrangeB
- {\hbox
- {\startcolor[\s!white]%
- \scratchdimen\dimexpr(-\colormarklength*\plustwo+\tractempwidth)/11\relax
- \docolorrangeB .5~C .5 0 0 0
- \docolorrangeB .5~M 0 .5 0 0
- \docolorrangeB .5~Y 0 0 .5 0
- \docolorrangeB .5~K 0 0 0 .5
- \docolorrangeB C 1 0 0 0
- \docolorrangeB G 1 0 1 0
- \docolorrangeB Y 0 0 1 0
- \docolorrangeB R 0 1 1 0
- \docolorrangeB M 0 1 0 0
- \docolorrangeB B 1 1 0 0
- \docolorrangeB K 0 0 0 1
- \stopcolor}}
-
-\def\docolorrangeC#1 %
- {\fastcolored
- [\c!s=#1]%
- {\vrule\s!width\scratchdimen\s!height\colormarklength\s!depth\zeropoint}%
- \ifdim\scratchdimen>2em
- \hskip-\scratchdimen
- \vbox to \colormarklength
- {\vss\hbox to \scratchdimen{\hss#1\hss}\vss}%
- \fi}
-
-\def\colorrangeC
- {\hbox
- {\startcolor[\s!white]%
- \scratchdimen\dimexpr(-\colormarklength*2+\tractempwidth)/14\relax
- \docolorrangeC 1 \docolorrangeC .95
- \docolorrangeC .9 \docolorrangeC .85
- \docolorrangeC .8 \docolorrangeC .75
- \docolorrangeC .7
- \docolorrangeC .6
- \docolorrangeC .5
- \docolorrangeC .4
- \docolorrangeC .3
- \docolorrangeC .2
- \docolorrangeC .1
- \docolorrangeC 0
- \stopcolor}}
-
-\def\docolormarkbox#1#2%
- {\tractempheight\ht#2%
- \tractempdepth \dp#2%
- \tractempwidth \wd#2%
- \setbox#2\hbox
- {\scratchdimen\dimexpr\colormarklength/2\relax
- \forgetall
- \ssxx
- \setbox\scratchbox\vbox
- {\offinterlineskip
- \vskip\dimexpr-\colormarkoffset\scratchdimen-2\scratchdimen\relax
- \ifcase#1\relax
- \vskip\dimexpr\colormarklength+\scratchdimen+\tractempheight\relax
- \else
- \hbox to \tractempwidth{\hss\hbox{\colorrangeB}\hss}%
- \vskip\colormarkoffset\scratchdimen
- \vbox to \tractempheight
- {\vss
- \hbox to \tractempwidth
- {\llap{\colorrangeA1\hskip\colormarkoffset\scratchdimen}\hfill
- \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA4}}%
- \vss
- \hbox to \tractempwidth
- {\llap{\colorrangeA2\hskip\colormarkoffset\scratchdimen}\hfill
- \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA5}}%
- \vss
- \hbox to \tractempwidth
- {\llap{\colorrangeA3\hskip\colormarkoffset\scratchdimen}\hfill
- \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA6}}%
- \vss}%
- \fi
- \vskip\colormarkoffset\scratchdimen
- \hbox to \tractempwidth
- {\hss\lower\tractempdepth\hbox{\colorrangeC}\hss}}%
- \ht\scratchbox\tractempheight
- \dp\scratchbox\tractempdepth
- \wd\scratchbox\zeropoint
- \box\scratchbox
- \box#2}%
- \wd#2\tractempwidth
- \ht#2\tractempheight
- \dp#2\tractempdepth}
-
-\unexpanded\def\colormarkbox {\docolormarkbox\plusone } % #1
-\unexpanded\def\rastermarkbox{\docolormarkbox\zerocount} % #1
-
-%D \macros
-%D {showwhatsits, dontshowwhatsits}
-%D
-%D \TEX\ has three so called whatsits: \type {\mark}, \type
-%D {\write} and \type {\special}. The first one keeps track of
-%D the current state at page boundaries, the last two are used
-%D to communicate to the outside world. Due to fact that
-%D especially \type {\write} is often used in conjunction with
-%D \type {\edef}, we can only savely support that one in \ETEX.
-%D
-%D \bgroup \showwhatsits \setupcolors[state=start]
-%D
-%D Whatsits show up \color[blue]{in color} and are
-%D characterized bij their first character.\footnote [some note]
-%D {So we may encounter \type {w}, \type {m} and \type{s}.}
-%D They are \writestatus{dummy}{demo}\color[yellow]{stacked}.
-%D
-%D \egroup
-
-\newif\ifimmediatewrite
-
-\let\supernormalmark \normalmark % mark may already been superseded
-\let\supernormalmarks \normalmarks % mark may already been superseded
-
-\unexpanded\def\showwhatsits
- {\protected\def\normalmark {\visualwhatsit100+m\supernormalmark }%
- \protected\def\normalmarks{\visualwhatsit100+m\supernormalmarks}%
- \protected\def\special {\visualwhatsit0100s\normalspecial }%
- \protected\def\write {\visualwhatsit001-w\normalwrite }%
- \let\immediate\immediatewhatsit
- \appendtoks\dontshowwhatsits\to\everystoptext}
-
-\unexpanded\def\immediatewhatsit
- {\bgroup\futurelet\next\doimmediatewhatsit}
-
-\unexpanded\def\doimmediatewhatsit
- {\ifx\next\write
- \egroup\immediatewritetrue
- \else
- \egroup\expandafter\normalimmediate
- \fi}
-
-\unexpanded\def\dontshowwhatsits
- {\let\immediate \normalimmediate
- \let\normalmark\supernormalmark
- \let\special \normalspecial
- \let\write \normalwrite}
-
-\unexpanded\def\visualwhatsit#1#2#3#4#5%
- {\bgroup
- \pushwhatsit
- \dontinterfere
- \dontcomplain
- \dontshowcomposition
- \dontshowwhatsits
- \ttx
- \ifvmode\donetrue\else\donefalse\fi
- \setbox\scratchbox\hbox
- {\ifdone
- \colored[r=#1,g=#2,b=#3]{#5}% temp hack
- \else
- \colored[s=0]{#5}% temp hack
- \fi}%
- \setbox\scratchbox\hbox
- {\ifdone
- \colored[r=#1,g=#2,b=#3]{\vrule\s!width\wd\scratchbox}% temp hack
- \else
- \colored[s=0]{\vrule\s!width\wd\scratchbox}% temp hack
- \fi
- \hskip-\wd\scratchbox\box\scratchbox}%
- \scratchdimen1ex
- \setbox\scratchbox\hbox
- {\ifdone\hskip\else\raise#4\fi\scratchdimen\box\scratchbox}%
- \smashbox\scratchbox
- \ifdone\nointerlineskip\fi
- \box\scratchbox
- \ifvmode\nointerlineskip\fi
- \popwhatsit
- \egroup
- \ifimmediatewrite
- \immediatewritefalse
- \expandafter\normalimmediate
- \fi}
-
-\unexpanded\def\pushwhatsit
- {\ifzeropt\lastskip
- \ifcase\lastpenalty
- \ifzeropt\lastkern
- \ifhmode
- \let\popwhatsit\relax
- \else
- \edef\popwhatsit{\prevdepth\the\prevdepth}%
- \fi
- \else
- \ifhmode
- \edef\popwhatsit{\kern\the\lastkern}\unkern
- \else
- \edef\popwhatsit{\kern\the\lastkern\prevdepth\the\prevdepth}%
- \kern-\lastkern
- \fi
- \fi
- \else
- \ifhmode
- \edef\popwhatsit{\the\lastpenalty}%
- \unpenalty
- \else
- \edef\popwhatsit{\penalty\the\lastpenalty\prevdepth\the\prevdepth}%
- %\nobreak
- \fi
- \fi
- \else
- \ifhmode
- \edef\popwhatsit{\hskip\the\lastskip}\unskip
- \else
- \edef\popwhatsit{\vskip\the\lastskip\prevdepth\the\prevdepth}%
- \vskip-\lastskip
- \fi
- \fi}
-
-%D The next macro can be used to keep track of classes of
-%D boxes (handy for development cq.\ tracing).
-
-\def\dodotagbox#1#2#3% can be reimplemented
- {\def\next##1##2##3##4%
- {\vbox to \ht#2{##3\hbox to \wd#2{##1#3##2}##4}}%
- \processaction
- [#1]
- [ l=>\next\relax\hfill\vfill\vfill,
- r=>\next\hfill\relax\vfill\vfill,
- t=>\next\hfill\hfill\relax\vfill,
- b=>\next\hfill\hfill\vfill\relax,
- lt=>\next\relax\hfill\relax\vfill,
- lb=>\next\relax\hfill\vfill\relax,
- rt=>\next\hfill\relax\relax\vfill,
- rb=>\next\hfill\relax\vfill\relax,
- tl=>\next\relax\hfill\relax\vfill,
- bl=>\next\relax\hfill\vfill\relax,
- tr=>\next\hfill\relax\relax\vfill,
- br=>\next\hfill\relax\vfill\relax,
- \s!default=>\next\hfill\hfill\vfill\vfill,
- \s!unknown=>\next\hfill\hfill\vfill\vfill]}
-
-\def\dotagbox[#1]#2%
- {\bgroup
- \dowithnextbox
- {\setbox\scratchbox\flushnextbox
- \setbox\nextbox\ifhbox\nextbox\hbox\else\vbox\fi
- \bgroup
- \startoverlay
- {\copy\scratchbox}
- {\dodotagbox{#1}\scratchbox{\framed
- [\c!background=\v!screen,\c!backgroundscreen=1]{#2}}}
- \stopoverlay
- \egroup
- \nextboxwd\the\wd\scratchbox
- \nextboxht\the\ht\scratchbox
- \nextboxdp\the\dp\scratchbox
- \flushnextbox
- \egroup}}
-
-\unexpanded\def\tagbox
- {\dosingleempty\dotagbox}
-
-%D \macros
-%D {coloredhbox,coloredvbox,coloredvtop,
-%D coloredstrut}
-%D
-%D The following visualizations are used in some of the manuals:
-
-\definecolor[boxcolor:ht][r=.5,g=.75,b=.5]
-\definecolor[boxcolor:dp][r=.5,g=.5,b=.75]
-\definecolor[boxcolor:wd][r=.75,g=.5,b=.5]
-\definecolor[strutcolor] [r=.5,g=.25,b=.25]
-
-\unexpanded\def\coloredbox#1%
- {\dowithnextbox{#1{\hbox
- {\blackrule[\c!width=\nextboxwd,\c!height=\nextboxht,\c!depth=\zeropoint,\c!color=boxcolor:ht]%
- \hskip-\nextboxwd
- \blackrule[\c!width=\nextboxwd,\c!height=\zeropoint,\c!depth=\nextboxdp,\c!color=boxcolor:dp]%
- \hskip-\nextboxwd
- \box\nextbox}}}#1}
-
-\unexpanded\def\coloredhbox{\coloredbox\hbox}
-\unexpanded\def\coloredvbox{\coloredbox\vbox}
-\unexpanded\def\coloredvtop{\coloredbox\vtop}
-
-\unexpanded\def\coloredstrut
- {\color[strutcolor]{\def\strutwidth{2\points}\setstrut\strut}}
-
-\protect
-
\continueifinputfile{m-visual.mkiv}
\starttext
\simplethesis
\stoptext
+
+\protect \endinput