diff options
Diffstat (limited to 'Master/texmf-dist/tex/luatex/optex/base/graphics.opm')
-rw-r--r-- | Master/texmf-dist/tex/luatex/optex/base/graphics.opm | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/Master/texmf-dist/tex/luatex/optex/base/graphics.opm b/Master/texmf-dist/tex/luatex/optex/base/graphics.opm index 901dc4d3522..afff1c12843 100644 --- a/Master/texmf-dist/tex/luatex/optex/base/graphics.opm +++ b/Master/texmf-dist/tex/luatex/optex/base/graphics.opm @@ -1,4 +1,4 @@ -%% This is part of OpTeX project, see http://petr.olsak.net/optex +%% This is part of the OpTeX project, see http://petr.olsak.net/optex \_codedecl \inspic {Graphics <2020-04-12>} % preloaded in format @@ -27,13 +27,13 @@ \_public \inspic ; \_doc ----------------------------- - Inkscape is able to save a picture to `*.pdf` file and labels for the picture - to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately) - and it is intended to read immediately it after `*.pdf` in included - in order to place labels of this picture in the same font as document is printed. - We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used. + Inkscape can save a picture to `*.pdf` file and labels for the picture + to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately) + and it is intended to read immediately after `*.pdf` is included + in order to place labels of this picture in the same font as the document is printed. + We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used. These macros are stored in the \`\_inkdefs` tokens list and it is used - locally in the group. The solution is borrowed from OPmac trick 0032. + locally in the group. The solution is borrowed from OPmac trick 0032. \_cod ----------------------------- \_def\_inkinspic{\_hbox\_bgroup\_isnextchar\_bgroup\_inkinspicB\_inkinspicA} @@ -44,10 +44,10 @@ \_opinput {\_the\_picdir #1_tex}% file with labels \_egroup} -\_newtoks\_inkdefs \_inkdefs={% - \_def\makeatletter#1\makeatother{}% - \_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_end \_inspic{#2}\_hss}% - \_def\_inkscanpage#1page=#2,#3\_end{\_ifx,#2,\_else\_def\_picparams{page#2}\_fi}% +\_newtoks\_inkdefs \_inkdefs={% + \_def\makeatletter#1\makeatother{}% + \_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_end \_inspic{#2}\_hss}% + \_def\_inkscanpage#1page=#2,#3\_end{\_ifx,#2,\_else\_def\_picparams{page#2}\_fi}% \_def\put(#1,#2)#3{\_nointerlineskip\_vbox to\_zo{\_vss\_hbox to\_zo{\_kern#1\_picwidth \_pdfsave\_hbox to\_zo{#3}\_pdfrestore\_hss}\_kern#2\_picwidth}}% \_def\begin#1{\_csname _begin#1\_endcsname}% @@ -55,11 +55,11 @@ \_hbox to\_picwidth{}\_kern#2\_picwidth \_def\end##1{\_egroup}}% \_def\_begintabular[#1]#2#3\end#4{% \_vtop{\_def\\{\_cr}\_tabiteml{}\_tabitemr{}\_table{#2}{#3}}}% - \_def\color[#1]#2{\_scancolor #2,}% - \_def\_scancolor#1,#2,#3,{\_pdfliteral{#1 #2 #3 rg}}% + \_def\color[#1]#2{\_scancolor #2,}% + \_def\_scancolor#1,#2,#3,{\_pdfliteral{#1 #2 #3 rg}}% \_def\makebox(#1)[#2]#3{\_hbox to\_zo{\_csname _mbx:#2\_endcsname{#3}}}% - \_sdef{_mbx:lb}#1{#1\_hss}\_sdef{_mbx:rb}#1{\_hss#1}\_sdef{_mbx:b}#1{\_hss#1\_hss}% - \_sdef{_mbx:lt}#1{#1\_hss}\_sdef{_mbx:rt}#1{\_hss#1}\_sdef{_mbx:t}#1{\_hss#1\_hss}% + \_sdef{_mbx:lb}#1{#1\_hss}\_sdef{_mbx:rb}#1{\_hss#1}\_sdef{_mbx:b}#1{\_hss#1\_hss}% + \_sdef{_mbx:lt}#1{#1\_hss}\_sdef{_mbx:rt}#1{\_hss#1}\_sdef{_mbx:t}#1{\_hss#1\_hss}% \_def\rotatebox#1#2{\_pdfrotate{#1}#2}% \_def\lineheight#1{}% \_def\setlength#1#2{}% @@ -67,9 +67,9 @@ \_public \inkinspic ; \_doc ---------------------------- - \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}` + \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}` macros are implemented by `\pdfsetmatrix` - primitive. We need to know values of sin, cos function in + primitive. We need to know the values of sin, cos function in the `\pdfrotate`. We use Lua code for this. \_cod ---------------------------- @@ -86,51 +86,51 @@ \_public \pdfscale \pdfrotate ; \_doc ----------------------------- - The \`\transformbox``{<transformation>}{<text>}` + The \`\transformbox``{<transformation>}{<text>}` is copied from OPmac trick 0046.\nl - The \`\rotbox``{<degrees>}{<text>}` is a combination of + The \`\rotbox``{<degrees>}{<text>}` is a combination of `\rotsimple` from OPmac trick 0101 and the `\transformbox`. - Note, that `\rotbox{-90}` puts the rotated text to the height of the outer - box (depth is zero) because code from `\rotsimple` is processed. + Note, that `\rotbox{-90}` puts the rotated text to the height of the outer + box (depth is zero) because code from `\rotsimple` is processed. But `\rotbox{-90.0}` puts the rotated text to the depth of the outer box (height is zero) because `\transformbox` is - processed. + processed. \_cod ----------------------------- -\_def\_multiplyMxV #1 #2 #3 #4 {% matrix * (vvalX, vvalY) - \_tmpdim = #1\_vvalX \_advance\_tmpdim by #3\_vvalY - \_vvalY = #4\_vvalY \_advance\_vvalY by #2\_vvalX - \_vvalX = \_tmpdim -} -\_def\_multiplyMxM #1 #2 #3 #4 {% currmatrix := currmatrix * matrix - \_vvalX=#1pt \_vvalY=#2pt \_ea\_multiplyMxV \_currmatrix - \_edef\_tmpb{\_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY}% - \_vvalX=#3pt \_vvalY=#4pt \_ea\_multiplyMxV \_currmatrix - \_edef\_currmatrix{\_tmpb\_space - \_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY\_space}% -} +\_def\_multiplyMxV #1 #2 #3 #4 {% matrix * (vvalX, vvalY) + \_tmpdim = #1\_vvalX \_advance\_tmpdim by #3\_vvalY + \_vvalY = #4\_vvalY \_advance\_vvalY by #2\_vvalX + \_vvalX = \_tmpdim +} +\_def\_multiplyMxM #1 #2 #3 #4 {% currmatrix := currmatrix * matrix + \_vvalX=#1pt \_vvalY=#2pt \_ea\_multiplyMxV \_currmatrix + \_edef\_tmpb{\_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY}% + \_vvalX=#3pt \_vvalY=#4pt \_ea\_multiplyMxV \_currmatrix + \_edef\_currmatrix{\_tmpb\_space + \_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY\_space}% +} \_def\_transformbox#1#2{\_hbox{\_setbox0=\_hbox{{#2}}% \_dimendef\_vvalX 11 \_dimendef\_vvalY 12 % we use these variables \_dimendef\_newHt 13 \_dimendef\_newDp 14 % only in this group - \_dimendef\_newLt 15 \_dimendef\_newRt 16 - \_preptransform{#1}% + \_dimendef\_newLt 15 \_dimendef\_newRt 16 + \_preptransform{#1}% \_kern-\_newLt \_vrule height\_newHt depth\_newDp width\_zo \_setbox0=\_hbox{\_box0}\_ht0=\_zo \_dp0=\_zo - \_pdfsave#1\_rlap{\_box0}\_pdfrestore \_kern\_newRt}% -} -\_def\_preptransform #1{\_def\_currmatrix{1 0 0 1 }% + \_pdfsave#1\_rlap{\_box0}\_pdfrestore \_kern\_newRt}% +} +\_def\_preptransform #1{\_def\_currmatrix{1 0 0 1 }% \_def\_pdfsetmatrix##1{\_edef\_tmpb{##1 }\_ea\_multiplyMxM \_tmpb\_unskip}% - \_let\pdfsetmatrix=\_pdfsetmatrix #1% - \_setnewHtDp 0pt \_ht0 \_setnewHtDp 0pt -\_dp0 - \_setnewHtDp \_wd0 \_ht0 \_setnewHtDp \_wd0 -\_dp0 + \_let\pdfsetmatrix=\_pdfsetmatrix #1% + \_setnewHtDp 0pt \_ht0 \_setnewHtDp 0pt -\_dp0 + \_setnewHtDp \_wd0 \_ht0 \_setnewHtDp \_wd0 -\_dp0 \_protected\_def \_pdfsetmatrix {\_pdfextension setmatrix}% \_let\pdfsetmatrix=\_pdfsetmatrix -} -\_def\_setnewHtDp #1 #2 {% - \_vvalX=#1\_relax \_vvalY=#2\_relax \_ea\_multiplyMxV \_currmatrix - \_ifdim\_vvalX<\_newLt \_newLt=\_vvalX \_fi \_ifdim\_vvalX>\_newRt \_newRt=\_vvalX \_fi - \_ifdim\_vvalY>\_newHt \_newHt=\_vvalY \_fi \_ifdim-\_vvalY>\_newDp \_newDp=-\_vvalY \_fi -} +} +\_def\_setnewHtDp #1 #2 {% + \_vvalX=#1\_relax \_vvalY=#2\_relax \_ea\_multiplyMxV \_currmatrix + \_ifdim\_vvalX<\_newLt \_newLt=\_vvalX \_fi \_ifdim\_vvalX>\_newRt \_newRt=\_vvalX \_fi + \_ifdim\_vvalY>\_newHt \_newHt=\_vvalY \_fi \_ifdim-\_vvalY>\_newDp \_newDp=-\_vvalY \_fi +} \_def\_rotbox#1#2{% \_isequal{90}{#1}\_iftrue \_rotboxA{#1}{\_kern\_ht0 \_tmpdim=\_dp0}{\_vfill}{#2}% @@ -156,10 +156,10 @@ \`\putpic` `<right> <up> <width> <height> {<image-file>}` does `\puttext` with the image scaled to desired <width> and <height>. If <with> or <height> is zero, natural dimension is used. - The \`\nospec` is a shortcut to such natural dimension. + The \`\nospec` is a shortcut to such a natural dimension. \nl - \`\backgroundpic``{<image-file>}` puts the image to - the background of each page. It it used in the slides style, for example. + \`\backgroundpic``{<image-file>}` puts the image to + the background of each page. It is used in the \~`\slides` style, for example. \_cod --------------------------- \_def\_scantwodimens{% @@ -172,7 +172,7 @@ \_def\_puttextB{% \_ifvmode \_ifdim\_prevdepth>\_zo \_vskip-\_prevdepth \_relax \_fi - \_nointerlineskip + \_nointerlineskip \_fi \_wd0=\_zo \_ht0=\_zo \_dp0=\_zo \_vbox to\_zo{\_kern-\_dimen2 \_hbox to\_zo{\_kern\_dimen1 \_box0\_hss}\_vss}} @@ -190,33 +190,33 @@ \_public \puttext \putpic \backgroundpic ; \_doc ----------------------------- - \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axix. + \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axis. The origin is in the center. \nl \`\_oval``{<x>}{<y>}{<roundness>}` creates an oval with `<x>`, `<y>` size and with - given `<roundness>`. The real size is bigger by 2`<roundness>`. The + the given `<roundness>`. The real size is bigger by 2`<roundness>`. The origin is at the left bottom corner. \nl \`\_mv``{<x>}{<y>}{<curve>}` moves current point to `<x>`, `<y>`, creates the - `<curve>` and returns back the current point. + `<curve>` and returns the current point back. All these macros are fully expandable and they can be used in the `\pdfliteral` argument. \_cod ----------------------------- -\def\_circle#1#2{\_expr{.5*(#1)} 0 m +\def\_circle#1#2{\_expr{.5*(#1)} 0 m \_expr{.5*(#1)} \_expr{.276*(#2)} \_expr{.276*(#1)} \_expr{.5*(#2)} 0 \_expr{.5*(#2)} c \_expr{-.276*(#1)} \_expr{.5*(#2)} \_expr{-.5*(#1)} \_expr{.276*(#2)} \_expr{-.5*(#1)} 0 c \_expr{-.5*(#1)} \_expr{-.276*(#2)} \_expr{-.276*(#1)} \_expr{-.5*(#2)} 0 \_expr{-.5*(#2)} c \_expr{.276*(#1)} \_expr{-.5*(#2)} \_expr{.5*(#1)} \_expr{-.276*(#2)} \_expr{.5*(#1)} 0 c h} -\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l - \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)} - \_expr{(#1)+(#3)} 0 c +\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l + \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)} + \_expr{(#1)+(#3)} 0 c \_expr{(#1)+(#3)} \_expr{#2} l \_expr{(#1)+(#3)} \_expr{(#2)+.552*(#3)} \_expr{(#1)+.552*(#3)} \_expr{(#2)+(#3)} \_expr{#1} \_expr{(#2)+(#3)} c 0 \_expr{(#2)+(#3)} l - \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)} + \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)} \_expr{-(#3)} \_expr{#2} c \_expr{-(#3)} 0 l \_expr{-(#3)} \_expr{-.552*(#3)} \_expr{-.552*(#3)} \_expr{-(#3)} 0 \_expr{-(#3)} c h} @@ -234,7 +234,7 @@ color and drawing color. \_cod ----------------------------- -\_newdimen \_lwidth +\_newdimen \_lwidth \_def\_fcolor{\_let\_fcolorvalue} \_def\_lcolor{\_let\_lcolorvalue} \_def\_shadow{\_let\_shadowvalue} @@ -251,7 +251,7 @@ \_edef#1{#1\_space\_lcolorvalue\_space}% } \_optdef\_inoval[]{\_vbox\_bgroup - \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp + \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt \_the\_ovalparams \_relax \_the\_opt \_relax \_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue @@ -266,23 +266,23 @@ \_dp0=\_dimexpr\_dp0+\_vvkern \_relax \_fi \_ifdim\_hhkern=\_zo \_else \_wd0=\_dimexpr\_wd0+\_hhkern \_relax \_fi \_ifx\_overlapmarginsvalue N\_dimen0=\_roundness \_dimen1=\_roundness - \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi + \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi \_setflcolors\_tmp - \_hbox{\_kern\_dimen0 + \_hbox{\_kern\_dimen0 \_vbox to\_zo{\_kern\_dp0 - \_ifx\_shadowvalue N\_else + \_ifx\_shadowvalue N\_else \_edef\_tmpb{{\_bp{\_wd0+\_lwidth}}{\_bp{\_ht0+\_dp0+\_lwidth}}{\_bp{\_roundness}}}% - \_doshadow\_oval + \_doshadow\_oval \_fi - \_pdfliteral{q \_bp{\_lwidth} w \_tmp + \_pdfliteral{q \_bp{\_lwidth} w \_tmp \_oval{\_bp{\_wd0}}{\_bp{\_ht0+\_dp0}}{\_bp{\_roundness}} B Q}\_vss}% \_ht0=\_dimexpr\_ht0+\_dimen1 \_relax \_dp0=\_dimexpr\_dp0+\_dimen1 \_relax - \_box0 + \_box0 \_kern\_dimen0}% \_egroup % of \vbox\bgroup } \_optdef\_incircle[]{\_vbox\_bgroup - \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp + \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt \_ea\_the \_ea\_circleparams \_space \_relax \_ea\_the \_ea\_opt \_space \_relax @@ -300,11 +300,11 @@ \_setflcolors\_tmp \_ifx\_overlapmarginsvalue N\_dimen0=\_zo \_dimen1=\_zo \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi - \_hbox{\_kern\_dimen0 - \_ifx\_shadowvalue N\_else + \_hbox{\_kern\_dimen0 + \_ifx\_shadowvalue N\_else \_edef\_tmpb{{\_bp{\_dimen2+\_lwidth}}{\_bp{\_dimen3+\_lwidth}}{}}% \_doshadow\_circlet - \_fi + \_fi \_pdfliteral{q \_bp{\_lwidth} w \_tmp \_mv{\_bp{.5\_wd0}}{\_bp{(\_ht0-\_dp0)/2}} {\_circle{\_bp{\_dimen2}}{\_bp{\_dimen3}} B} Q}% \_ifdim\_dimen1=\_zo \_else @@ -319,7 +319,7 @@ \_doc ----------------------------- A shadow effect is implemented here. The shadow is equal to the - silhouette of the given path in gray-transparent color shifted by + silhouette of the given path in a gray-transparent color shifted by \`\_shadowmoveto` vector and with blurred boundary. A waistline with the width 2*\`\_shadowb` around the boundary is blurred. The \`\shadowlevels` levels of transparent shapes is used for creating @@ -334,15 +334,15 @@ \_doc ----------------------------- The `\_pdfpageresources` primitive is used to define transparency. - It does not work when used in a box. So, we use it at the begining of - the output routine. The modification of the output routine is done + It does not work when used in a box. So, we use it at the beginning of + the output routine. The modification of the output routine is done using \`\_insertshadowresources` only once when the shadow effect is used first. \_cod ----------------------------- \_def\_insertshadowresources{% \_global\_addto\_begoutput{\_setshadowresources}% \_xdef\_setshadowresources{% - \_pdfpageresources{/ExtGState + \_pdfpageresources{/ExtGState << /op1 <</Type /ExtGState /ca \_shadowdarknessA>> /op2 <</Type /ExtGState /ca \_shadowdarknessB>> @@ -371,12 +371,12 @@ \_ifnum\_tmpnum=0 /op2 gs \_fi \_tmpb\_space f \_immediateassignment\_advance\_tmpnum by-1 - \_ifnum-\_tmpfin<\_tmpnum - \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi + \_ifnum-\_tmpfin<\_tmpnum + \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi \_ea \_shadowlayer \_fi }% - \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm - \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm + \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm + \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm \_else 1 0 0 1 -\_shadowb\_space -\_shadowb\_space cm \_fi \_shadowlayer Q} }} @@ -430,7 +430,7 @@ following code is recommended: My picture: \copy\mypic, again my picture: \copy\mypic, etc. \endtt -This code downloads the picture data to the PFD oputput only once (when +This code downloads the picture data to the PFD output only once (when `\setbox` is processed). Each usage of `\copy\mypic` puts only a pointer to the picture data in the PDF. |