summaryrefslogtreecommitdiff
path: root/macros/luatex/optex/base/graphics.opm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/optex/base/graphics.opm')
-rw-r--r--macros/luatex/optex/base/graphics.opm162
1 files changed, 81 insertions, 81 deletions
diff --git a/macros/luatex/optex/base/graphics.opm b/macros/luatex/optex/base/graphics.opm
index 901dc4d352..afff1c1284 100644
--- a/macros/luatex/optex/base/graphics.opm
+++ b/macros/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.