diff options
Diffstat (limited to 'tex/context/base/mkiv/mlib-pps.mkiv')
-rw-r--r-- | tex/context/base/mkiv/mlib-pps.mkiv | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/mlib-pps.mkiv b/tex/context/base/mkiv/mlib-pps.mkiv new file mode 100644 index 000000000..cdccfc379 --- /dev/null +++ b/tex/context/base/mkiv/mlib-pps.mkiv @@ -0,0 +1,154 @@ +%D \module +%D [ file=mlib-pps, +%D version=2008.03.25, +%D title=\METAPOST\ Integrated Graphics, +%D subtitle=Basics, +%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 + +\registerctxluafile{mlib-pps}{1.001} + +%D Todo: catch nested graphics like external figures with dummies. + +% todo: figure out why this is shifted +% +% \setupbodyfont[palatino] +% +% \starttext +% \startMPpage +% draw textext("123") ; +% \stopMPpage +% \stoptext +% +% A slightly larger picture works ok so maybe there is some kind +% of interference with the page builder. + +\newbox \MPtextbox +\newtoks\everyMPLIBsettext % not used + +\def\doMPLIBflushenvironment + {%\writestatus\m!metapost{flushing environment}% + \clf_mptexget + \let\MPLIBflushenvironment\relax}% MPenvironments are depricated} + +\let\MPLIBflushenvironment\doMPLIBflushenvironment + +\unexpanded\def\MPLIBsetNtext#1% #2% box text + {\MPLIBflushenvironment + \dowithnextbox{\clf_mpsettext\nextbox #1}\hbox\bgroup % text + \meta_set_current_color + \let\MPLIBflushenvironment\doMPLIBflushenvironment + \let\next} % gobble open brace + +\unexpanded\def\MPLIBsetCtext#1#2% #3% box colorspec text + {\MPLIBflushenvironment + \dowithnextbox{\clf_mpsettext\nextbox #1}\hbox\bgroup % text + \directcolored[#2]% + \meta_set_current_color % so, textcolor wins ! + \let\MPLIBflushenvironment\doMPLIBflushenvironment + \let\next} % gobble open brace + +\let\MPLIBsettext\MPLIBsetNtext + +\unexpanded\def\MPLIBgettextscaled#1#2#3% why a copy .. can be used more often + {\clf_mpgettext\MPtextbox #1% + \vpack to \zeropoint{\vss\hpack to \zeropoint{\scale[\c!sx=#2,\c!sy=#3]{\raise\dp\MPtextbox\box\MPtextbox}\forcecolorhack\hss}}} + +\unexpanded\def\MPLIBfigure#1#2% + {\setbox\scratchbox\hpack{\externalfigure[#1][\c!mask=#2]}% + \clf_mpsetsxsy\wd\scratchbox\ht\scratchbox\zeropoint + \vpack to \zeropoint{\vss\hpack to \zeropoint{\scale[\c!sx=\sx,\c!sy=\sy]{\box\scratchbox}\hss}}} + +% horrible (we could inline scale and matrix code): + +\unexpanded\def\MPLIBgettextscaledcm#1#2#3#4#5#6#7#8#9% 2-7: sx,rx,ry,sy,tx,ty + {\clf_mpgettext\MPtextbox #1% + \setbox\MPbox\hpack\bgroup + \dotransformnextbox{#2}{#3}{#4}{#5}{#6}{#7}% does push pop ... will be changed to proper lua call (avoid small numbers) + \vpack to \zeropoint\bgroup + \vss + \hpack to \zeropoint \bgroup + % \scale[\c!sx=#8,\c!sy=#9]{\raise\dp\MPtextbox\box\MPtextbox}% + % \scale[\c!sx=#8,\c!sy=#9,\c!depth=\v!no]{\box\MPtextbox}% + \fastsxsy{#8}{#9}{\raise\dp\MPtextbox\box\MPtextbox}% + % This gives: LuaTeX warning: Misplaced \pdfrestore .. don't ask me why. + % but I'll retry it some day soon. + % \dostartscaling{#8}{#9}% + % \raise\dp\MPtextbox\box\MPtextbox + % \dostopscaling + \forcecolorhack % can go away ... already in the scale macro + \hss + \egroup + \egroup + \egroup + \smashbox\MPbox + \box\MPbox} + +\unexpanded\def\MPLIBgraphictext#1% use at mp end + {\startTEXpage[\c!scale=10000]#1\stopTEXpage} + +%D \startbuffer +%D \definelayer[test] +%D +%D \setlayerframed +%D [test] +%D [x=\MPx{somepos-1},y=\MPy{somepos-1}] +%D [width=\MPw{somepos-1},height=\MPh{somepos-1}] +%D {Whatever we want here!} +%D +%D \setlayerframed +%D [test] +%D [x=\MPx{somepos-2},y=\MPy{somepos-2}] +%D [width=\MPw{somepos-2},height=\MPh{somepos-2}] +%D {Whatever we need there!} +%D +%D \startuseMPgraphic{oeps} +%D draw fullcircle scaled 6cm withcolor red ; +%D register ("somepos-1",5cm,1cm,center currentpicture) ; +%D register ("somepos-2",4cm,3cm,(-1cm,-2cm)) ; +%D \stopuseMPgraphic +%D +%D \framed[background=test,offset=overlay]{\useMPgraphic{oeps}} +%D \stopbuffer +%D +%D \typebuffer \startlinecorrection \getbuffer \stoplinecorrection + +\unexpanded\def\MPLIBpositionwhd#1#2#3#4#5% bp ! + {\dosavepositionwhd{#1}\zerocount{#2\onebasepoint}{#3\onebasepoint}{#4\onebasepoint}{#5\onebasepoint}\zeropoint} + +% \def\MPLIBextrapass#1% +% {\ctxlua{metapost.graphic_extra_pass("#1")}} + +%D Experiment + +\def\doMPLIBstopgroup#1#2#3#4#5#6% some day this might happen elsewhere + {\egroup + \setbox\scratchbox\hpack{\kern\onebasepoint\box\scratchbox}% weird correction + \wd\scratchbox \dimexpr#5\onebasepoint-#3\onebasepoint+2\onebasepoint\relax + \ht\scratchbox #6\onebasepoint + \dp\scratchbox-#4\onebasepoint + \saveboxresource + attr {/Group << /S /Transparency /I \ifnum#1=1 true \else false \fi /K \ifnum#1=1 true \else false \fi >>} + resources {\pdfbackendcurrentresources} + \scratchbox + % \setbox\scratchbox\hbox\bgroup\kern-\onebasepoint\useboxresource\lastsavedboxresourceindex\egroup % why twice? + \setbox\scratchbox\hpack\bgroup\kern-\onebasepoint\useboxresource\lastsavedboxresourceindex\egroup + \wd\scratchbox\zeropoint + \ht\scratchbox\zeropoint + \dp\scratchbox\zeropoint + \box\scratchbox + \endgroup} + +\unexpanded\def\MPLIBstartgroup#1#2#3#4#5#6% isolated 0/1, knockout 0/1 llx lly urx ury + {\begingroup + \setbox\scratchbox\hpack\bgroup + \unexpanded\def\MPLIBstopgroup{\doMPLIBstopgroup{#1}{#2}{#3}{#4}{#5}{#6}}} + +\protect \endinput |