summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/grph-fig.mkiv
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-01-12 17:15:07 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-01-12 17:15:07 +0100
commit8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch)
tree94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/mkiv/grph-fig.mkiv
parentf5aed2e51223c36c84c5f25a6cad238b2af59087 (diff)
downloadcontext-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/mkiv/grph-fig.mkiv')
-rw-r--r--tex/context/base/mkiv/grph-fig.mkiv391
1 files changed, 391 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/grph-fig.mkiv b/tex/context/base/mkiv/grph-fig.mkiv
new file mode 100644
index 000000000..796309b88
--- /dev/null
+++ b/tex/context/base/mkiv/grph-fig.mkiv
@@ -0,0 +1,391 @@
+%D \module
+%D [ file=grph-fig,
+%D version=2006.08.26, % overhaul of 1997.03.31
+%D title=\CONTEXT\ Graphic Macros,
+%D subtitle=Figure Inclusion,
+%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.
+
+\unprotect
+
+%D Used in the styledesign manual:
+%
+% beware in mkiv we don't have the typeset- prefix
+%
+% \setbuffer[typeset-b]\endbuffer
+% \setbuffer[typeset-a]\endbuffer
+%
+% todo:
+%
+% \appendtoks \setbuffer[typeset-b]\endbuffer\to \everystarttext
+% \appendtoks \setbuffer[typeset-a]\endbuffer\to \everystarttext
+
+% we could use \typesetbuffer[*] to access the last one
+
+\newconstant\c_grph_buffers_mode
+
+\let\lasttypesetbuffer\empty
+
+\unexpanded\def\typesetbuffer
+ {\bgroup
+ \setconstant\c_grph_buffers_mode\plusone
+ \dodoubleempty\grph_buffers_typeset}
+
+\unexpanded\def\typesetbufferonly
+ {\bgroup
+ \setconstant\c_grph_buffers_mode\zerocount
+ \dodoubleempty\grph_buffers_typeset}
+
+\def\grph_buffers_typeset[#1][#2]% beware: this will mix up the mp graphics
+ {\ifsecondargument
+ \grph_buffers_typeset_indeed[#1][#2]%
+ \else\iffirstargument
+ \doifelseassignment{#1}
+ {\grph_buffers_typeset_indeed[\jobname][#1]}%
+ {\grph_buffers_typeset_indeed[#1][]}%
+ \else
+ \grph_buffers_typeset_indeed[\jobname][]
+ \fi\fi}
+
+\def\grph_buffers_typeset_indeed[#1][#2]% we could use the via files
+ {\doifnot{#1}{*}{\xdef\lasttypesetbuffer{\clf_runbuffer{#1}}}%
+ \ifcase\c_grph_buffers_mode
+ % typesetonly
+ \or
+ \externalfigure[\lasttypesetbuffer][#2]%
+ \fi
+ \egroup}
+
+% For manuals and such:
+%
+% \definetypesetting [name] [options] [settings-a]
+%
+% \typesetfile [name] [file] [settings-b]
+% \typesetfile [file] [options] [settings-b]
+% \typesetfile [file] [settings-b]
+% \typesetfile [file]
+%
+% \enabletrackers[files.run]
+% \starttext
+% \typesetfile[oepsoeps.tex][width=10cm,frame=on]
+% \stoptext
+
+\installcorenamespace{typesettingfile}
+
+\unexpanded\def\definetypesetting{\dotripleempty\grph_typesetting_define}
+\unexpanded\def\typesetfile {\dotripleempty\grph_typesetting_process}
+
+\def\grph_typesetting_define[#1][#2][#3]% <name> options settings-a
+ {\doifsomething{#1}{\setuvalue{\??typesettingfile#1}{\grph_typesetting_process_indeed{#2}{#3}}}}
+
+\def\grph_typesetting_process[#1][#2][#3]% <name> filename settings-b | filename options settings
+ {\ifcsname\??typesettingfile#1\endcsname
+ \csname\??typesettingfile#1\endcsname{#2}{#3}%
+ \else\ifthirdargument % filename options settings
+ \grph_typesetting_process_indeed{#2}{#3}{#1}{}%
+ \else\ifsecondargument % filename settings
+ \grph_typesetting_process_indeed{}{#2}{#1}{}%
+ \fi\fi\fi}
+
+\def\grph_typesetting_process_indeed#1#2#3#4% options settings-a filename settings-b
+ {\begingroup
+ \edef\m_typesetting_name{\clf_runcontextjob{#3}{#1}}%
+ \ifx\m_typesetting_name\empty \else
+ \expanded{\externalfigure[\m_typesetting_name]}[#2,#4]%
+ \fi
+ \endgroup}
+
+%D Whatever ... hardly used ... but historic ... needs checking ...
+%D will probably become m-fig-nn.mkiv .. or I will extend it cq. clean
+%D it up when I needed it. After all, it's documented in old manuals.
+
+\newcount\c_grph_steps_reference
+\newdimen\d_grph_steps_x
+\newdimen\d_grph_steps_y
+\newbox \b_grph_steps_colorbar
+
+\let\placestopfigure\relax
+
+\unexpanded\def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]%
+ {\hpack
+ {\setbox\scratchbox\hpack
+ {\useexternalfigure[\s!dummy][#2][#3,#5]%
+ \externalfigure[\s!dummy]}%
+ \grph_steps_calculate
+ \startpositioning
+ \let\referring\grph_steps_one_referring
+ \let\marking \grph_steps_one_marking
+ \let\remark \grph_steps_one_remark
+ \let\colorbar \grph_steps_one_colorbar
+ \position(0,0){\box\scratchbox}%
+ \linewidth\onepoint
+ \setuppositioning
+ [\c!unit=pt,
+ \c!xscale=\withoutpt\the\d_grph_steps_x,
+ \c!yscale=\withoutpt\the\d_grph_steps_y,
+ \c!factor=1]%
+ \ignorespaces#4%
+ \let\referring\grph_steps_two_referring
+ \let\marking \grph_steps_two_marking
+ \let\remark \grph_steps_two_remark
+ \let\colorbar \grph_steps_two_colorbar
+ \ignorespaces#4%
+ \stoppositioning
+ \ifvoid\b_grph_steps_colorbar\else\box\b_grph_steps_colorbar\fi}} % not really needed
+
+\unexpanded\def\grph_steps_one_referring(#1,#2)#3(#4,#5)#6[#7]%
+ {\position(#1,#2){\grph_steps_goto(#4,#5){\externalfigureparameter\c!frames}[#7]}}
+
+\unexpanded\def\grph_steps_one_marking(#1,#2)#3(#4,#5)#6[#7]%
+ {\position(#1,#2){\grph_steps_this_is(#4,#5){\externalfigureparameter\c!frames}[#7]}}
+
+\unexpanded\def\grph_steps_one_remark(#1,#2)#3(#4,#5)% (x,y)(h,b)[...]{tekst}
+ {\def\grph_steps_no_comment_indeed[##1]##2{}%
+ \dosingleempty\grph_steps_no_comment_indeed}
+
+\unexpanded\def\grph_steps_one_colorbar#1[#2]%
+ {}
+
+\unexpanded\def\grph_steps_two_referring(#1,#2)#3(#4,#5)#6[#7]%
+ {}
+
+\let\grph_steps_two_marking\grph_steps_two_referring
+
+\unexpanded\def\grph_steps_two_remark
+ {\grph_steps_comment\v!no}
+
+\unexpanded\def\grph_steps_two_colorbar#1[#2]
+ {\begingroup
+ \global\setbox\b_grph_steps_colorbar\vpack % \vbox ?
+ {\forgetall
+ \processcommalist[#2]\grph_colorbar_make_step}%
+ \global\setbox\b_grph_steps_colorbar\vpack
+ {\hskip2\emwidth\box\b_grph_steps_colorbar}%
+ \global\wd\b_grph_steps_colorbar\zeropoint
+ \endgroup}
+
+\unexpanded\def\grph_colorbar_make_step#1%
+ {\blackrule[\c!color=#1,\c!width=2\emwidth,\c!height=\exheight,\c!depth=\zeropoint]%
+ \endgraf}
+
+\unexpanded\def\startfigure % could be done nicer
+ {\grabuntil{\e!stop\v!figure}\grph_steps_figure_process}
+
+\let\stopfigure\relax
+
+\def\grph_steps_figure_process#1%
+ {\dotripleargument\grph_steps_figure_process_indeed#1\stopfigure}
+
+\def\grph_steps_figure_process_indeed[#1][#2][#3]#4\stopfigure
+ {\doifelse{\externalfigureparameter\c!option}\v!test
+ {\teststartfigure[#1][#2][#3]#4\teststopfigure
+ \letexternalfigureparameter\c!frames\v!on}
+ {\letexternalfigureparameter\c!frames\v!off}%
+ \setvalue{\??externalfigureinstance#1}%
+ {\dosingleempty{\placestartfigure[#1][#2][#3]#4\placestopfigure}}}
+
+\let\teststopfigure\relax
+
+\unexpanded\def\teststartfigure[#1][#2][#3]#4\teststopfigure
+ {\begingroup
+ \setbox\scratchbox\hpack
+ {\useexternalfigure[\s!dummy][#2][\c!wfactor=\v!max]%
+ \externalfigure[\s!dummy]}%
+ \let\referring\grph_steps_three_referring
+ \let\marking \grph_steps_three_marking
+ \let\remark \grph_steps_three_remark
+ \let\colorbar \grph_steps_three_colorbar
+ \c_grph_steps_reference\zerocount
+ \setbox0\vpack
+ {\hsize240\points
+ \startpositioning
+ \grph_steps_calculate
+ \position(0,0)
+ {\box\scratchbox}%
+ \position(0,0)
+ {\basegrid
+ [\c!nx=\externalfigureparameter\c!xmax,
+ \c!dx=\withoutpt\the\d_grph_steps_x,
+ \c!ny=\externalfigureparameter\c!ymax,
+ \c!dy=\withoutpt\the\d_grph_steps_y,
+ \c!xstep=1,
+ \c!ystep=1,
+ \c!scale=1,
+ \c!offset=\v!no,
+ \c!unit=pt]}%
+ \setuppositioning
+ [\c!unit=pt,
+ \c!xscale=\withoutpt\the\d_grph_steps_x,
+ \c!yscale=\withoutpt\the\d_grph_steps_y,
+ \c!factor=1]%
+ \linewidth\onepoint
+ \ignorespaces#4\relax
+ \stoppositioning
+ \vfill}%
+ \c_grph_steps_reference\zerocount
+ \let\referring\grph_steps_four_referring
+ \let\marking \grph_steps_four_marking
+ \let\remark \grph_steps_four_remark
+ \let\colorbar \grph_steps_four_colorbar
+ \setbox2\vbox % \vpack ?
+ {{\tfa\doifelsenothing{#1}{#2}{#1}}
+ \blank
+ \tfxx#4
+ \vfilll}%
+ \ifdim\ht0>\ht2
+ \ht2\ht0
+ \else
+ \ht0\ht2
+ \fi
+ \hpack
+ {\hskip3\emwidth
+ \tpack{\vskip12\points\box0\vskip6\points}%
+ \tpack{\vskip12\points\box2\vskip6\points}}%
+ \endgroup}
+
+\unexpanded\def\grph_steps_three_referring(#1,#2)#3(#4,#5)#6[#7]%
+ {\advance\c_grph_steps_reference\plusone
+ \position(#1,#2)
+ {\hbox{\the\c_grph_steps_reference}}%
+ \position(#1,#2)
+ {\gotosomeinternal\s!vwb{#7}\realfolio
+ {\grph_steps_marker(#4,#5)\v!on{\thisissomeinternal\s!vwa{#7}}}}}
+
+\unexpanded\def\grph_steps_three_remark
+ {\grph_steps_comment\v!yes}
+
+\let\grph_steps_three_marking \grph_steps_three_referring
+\let\grph_steps_three_colorbar\grph_steps_one_colorbar
+
+\unexpanded\def\grph_steps_four_referring
+ {\grph_steps_text{$\rightarrow$}}
+
+\unexpanded\def\grph_steps_four_marking
+ {\grph_steps_text{$\leftarrow$}}
+
+\let\grph_steps_four_remark \grph_steps_one_remark
+\let\grph_steps_four_colorbar\grph_steps_one_colorbar
+
+% Helpers:
+
+\def\grph_steps_calculate
+ {\ifnum0\externalfigureparameter\c!xmax=\zerocount
+ \ifnum0\externalfigureparameter\c!ymax=\zerocount
+ \setexternalfigureparameter\c!ymax{24}%
+ \fi
+ \d_grph_steps_y\figureheight
+ \divide\d_grph_steps_y \externalfigureparameter\c!ymax
+ \d_grph_steps_x\d_grph_steps_y
+ \scratchdimen\figurewidth
+ \advance\scratchdimen\d_grph_steps_y
+ \divide \scratchdimen\d_grph_steps_y
+ \setexternalfigureparameter\c!xmax{\number\scratchdimen}%
+ \else
+ \d_grph_steps_x\figurewidth \divide\d_grph_steps_x \externalfigureparameter\c!xmax\relax
+ \d_grph_steps_y\figureheight \divide\d_grph_steps_y \externalfigureparameter\c!ymax\relax
+ \fi}
+
+\def\grph_steps_comment#1(#2,#3)#4(#5,#6)% {kader}(x,y)(h,b)[...]{tekst}
+ {\def\grph_steps_comment_indeed[##1]##2%
+ {\position(#2,#3)%
+ {\setnostrut
+ \framed
+ [\c!width=#5\d_grph_steps_x,
+ \c!height=#6\d_grph_steps_y,
+ \c!offset=\v!none,
+ \c!frame=#1,
+ ##1]%
+ {##2}}}%
+ \dosingleempty\grph_steps_comment_indeed}
+
+% \def\grph_steps_figure#1%
+% {\position(0,0){\getvalue{#1}}}
+
+\def\grph_steps_goto(#1,#2)#3[#4]% (h,b)kader[ref]
+ {\gotobox{\vpack{\grph_steps_area(#1,#2)#3{}}}[#4]}
+
+\def\grph_steps_text#1(#2,#3)#4(#5,#6)#7[#8]%
+ {\advance\c_grph_steps_reference\plusone
+ \hbox % \hpack ?
+ {\quad
+ \thisissomeinternal\s!vwb
+ {#8}%
+ \gotosomeinternal\s!vwa{#8}\realfolio
+ {\hbox to 1.5em{\the\c_grph_steps_reference\presetgoto\hfill}}%
+ \quad#1 (#2,#3) (#5,#6) [#8]\hfill}%
+ \endgraf}
+
+\def\grph_steps_this_is(#1,#2)#3[#4]%
+ {\grph_steps_area(#1,#2){#3}{\dosetdirectpagereference{#4}}}
+
+\def\grph_steps_area(#1,#2)#3#4% (h,b){kader}{tekst}
+ {\bgroup
+ \setnostrut
+ \framed
+ [\c!width=#1\d_grph_steps_x,
+ \c!height=#2\d_grph_steps_y,
+ \c!offset=\zeropoint,
+ \c!frame=#3]
+ {#4}%
+ \egroup}
+
+\def\grph_steps_marker(#1,#2)#3#4% (h,b){kader}{tekst}
+ {\framed
+ [\c!width=#1\d_grph_steps_x,
+ \c!height=#2\d_grph_steps_y,
+ \c!offset=\v!none,
+ \c!frame=#3]%
+ {#4}}
+
+\protect \endinput
+
+% \startbuffer
+% \definecolor [blue] [c=1,m=.38,y=0,k=.64]
+% \definecolor [yellow] [c=0,m=.28,y=1,k=.06]
+%
+% \definespotcolor [blue-100] [blue] [p=1]
+% \definespotcolor [yellow-100] [yellow] [p=1]
+%
+% \definemultitonecolor [combicolor] [blue=.12,yellow=.28] [c=.1,m=.1,y=.3,k=.1]
+%
+% \definemultitonecolor [combicolor-b] [blue=1] [c=1,m=.38,y=0,k=.64] % force multitone
+% \definemultitonecolor [combicolor-y] [yellow=1] [c=0,m=.28,y=1,k=.06] % force multitone
+%
+% \useexternalfigure[demo-a][mill.png] [object=no,width=.2\textwidth]
+% \useexternalfigure[demo-b][hacker-bw.jpg][object=no,width=.2\textwidth]
+%
+% \startbaselinecorrection \startcombination[4*1]
+% {\externalfigure[demo-a]} {no color}
+% {\externalfigure[demo-a][color=combicolor]} {indexed duotone}
+% {\externalfigure[demo-a][color=combicolor-b]} {spot color}
+% {\externalfigure[demo-a][color=combicolor-y]} {spot color}
+% \stopcombination \stopbaselinecorrection
+%
+% \startbaselinecorrection \startcombination[4*1]
+% {\externalfigure[demo-b]} {no color}
+% {\externalfigure[demo-b][color=combicolor]} {indexed duotone}
+% {\externalfigure[demo-b][color=combicolor-b]} {spot color}
+% {\externalfigure[demo-b][color=combicolor-y]} {spot color}
+% \stopcombination \stopbaselinecorrection
+%
+% \startbaselinecorrection \startcombination[4*1]
+% {\externalfigure[demo-a]} {no color}
+% {\externalfigure[demo-a][color=combicolor]} {indexed duotone}
+% {\externalfigure[demo-a][color=blue-100]} {spot color}
+% {\externalfigure[demo-a][color=yellow-100]} {spot color}
+% \stopcombination \stopbaselinecorrection
+%
+% \startbaselinecorrection \startcombination[4*1]
+% {\externalfigure[demo-b]} {no color}
+% {\externalfigure[demo-b][color=combicolor]} {indexed duotone}
+% {\externalfigure[demo-b][color=blue-100]} {spot color}
+% {\externalfigure[demo-b][color=yellow-100]} {spot color}
+% \stopcombination \stopbaselinecorrection
+% \stopbuffer
+%
+% \getbuffer \typebuffer