summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp')
-rw-r--r--Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp295
1 files changed, 0 insertions, 295 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp b/Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp
deleted file mode 100644
index 18c43c57b53..00000000000
--- a/Master/texmf-dist/doc/metapost/featpost/typesetinspace/mp-grph.mp
+++ /dev/null
@@ -1,295 +0,0 @@
-%D \module
-%D [ file=mp-grph.mp,
-%D version=2000.12.14,
-%D title=\CONTEXT\ \METAPOST\ graphics,
-%D subtitle=graphic text support,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
-%C details.
-
-%D Under construction.
-
-if unknown context_tool : input mp-tool ; fi ;
-if known context_grph : endinput ; fi ;
-
-boolean context_grph ; context_grph := true ;
-
-string CRLF ; CRLF := char 10 & char 13 ;
-
-picture _currentpicture_ ;
-
-def beginfig (expr c) =
- begingroup
- charcode := c ;
- resetfig ;
- scantokens extra_beginfig ;
-enddef ;
-
-def resetfig =
- clearxy ;
- clearit ;
- clearpen ;
- pickup defaultpen ;
- interim linecap := linecap ;
- interim linejoin := linejoin ;
- interim miterlimit := miterlimit ;
- save _background_ ; color _background_ ; _background_ := background ;
- save background ; color background ; background := _background_ ;
- drawoptions () ;
-enddef ;
-
-def protectgraphicmacros =
- save showtext ;
- save beginfig ; let beginfig = begingraphictextfig ;
- save endfig ; let endfig = endgraphictextfig ;
- save end ; let end = relax ;
- interim prologues := prologues ;
- resetfig ; % resets currentpicture
-enddef ;
-
-numeric currentgraphictext ; currentgraphictext := 0 ;
-string graphictextformat ; graphictextformat := "plain" ;
-string graphictextstring ; graphictextstring := "" ;
-string graphictextfile ; graphictextfile := "dummy.mpo" ;
-
-def savegraphictext (expr str) =
- graphictextfile := jobname & ".mpo" ;
- if (graphictextstring<>"") :
- write graphictextstring to graphictextfile ;
- graphictextstring := "" ;
- fi ;
- write str to graphictextfile ;
- let erasegraphictextfile = relax ;
-enddef ;
-
-def erasegraphictextfile =
- graphictextfile := jobname & ".mpo" ;
- write EOF to graphictextfile ;
- let erasegraphictextfile = relax ;
-enddef ;
-
-extra_beginfig := extra_beginfig & " erasegraphictextfile ;" ;
-
-def begingraphictextfig (expr n) =
- foundpicture := n ; scratchpicture := nullpicture ;
-enddef ;
-
-def endgraphictextfig =
- if foundpicture = currentgraphictext :
- expandafter endinput
- else :
- scratchpicture := nullpicture ;
- fi ;
-enddef ;
-
-def loadfigure primary filename =
- doloadfigure (filename)
-enddef ;
-
-def doloadfigure (expr filename) text figureattributes =
- begingroup ;
- save figurenumber, figurepicture, number, fixedplace ;
- numeric figurenumber ; figurenumber := 0 ;
- boolean figureshift ; figureshift := true ;
- picture figurepicture ; figurepicture := currentpicture ;
- def number primary n = hide(figurenumber := n) enddef ;
- def fixedplace = hide(figureshift := false) enddef ;
- protectgraphicmacros ;
- % defaults
- interim linecap := rounded ;
- interim linejoin := rounded ;
- interim miterlimit := 10 ;
- %
- currentpicture := nullpicture ;
- draw fullcircle figureattributes ; % expand number
- currentpicture := nullpicture ;
- def beginfig (expr n) =
- currentpicture := nullpicture ;
- if (figurenumber=n) or (figurenumber=0) :
- let endfig = endinput ;
- fi ;
- enddef ;
- let endfig = relax ;
- readfile(filename) ;
- if figureshift :
- currentpicture := currentpicture shifted -llcorner currentpicture ;
- fi ;
- addto figurepicture also currentpicture figureattributes ;
- currentpicture := figurepicture ;
- endgroup ;
-enddef ;
-
-def graphictext primary t =
- dographictext(t)
-enddef ;
-
-def dographictext (expr t) =
- begingroup ;
- save figurepicture ; picture figurepicture ;
- figurepicture := currentpicture ; currentpicture := nullpicture ;
- if graphictextformat<>"" :
- graphictextstring :=
- "% format=" & graphictextformat & CRLF & graphictextstring ;
- graphictextformat := "" ;
- fi ;
- currentgraphictext := currentgraphictext + 1 ;
- savegraphictext ("\startTEXpage[scale=10000]" & t & "\stopTEXpage") ;
- dofinishgraphictext
-enddef ;
-
-def redographictext primary t =
- regraphictext(t)
-enddef ;
-
-def regraphictext (expr t) =
- begingroup ;
- save figurepicture ; picture figurepicture ;
- figurepicture := currentpicture ; currentpicture := nullpicture ;
- save currentgraphictext ; numeric currentgraphictext ;
- currentgraphictext := t ;
- dofinishgraphictext
-enddef ;
-
-%D Believe it or not, but it took me half a day to uncover
-%D the following neccessity:
-%D
-%D \starttypen
-%D save withfillcolor, withdrawcolor ;
-%D \stoptypen
-%D
-%D When we have more than one graphictext, these will be
-%D defined after the first graphic. For some obscure reason,
-%D this means that in the next graphic they will be called, but
-%D afterwards the data and boolean are not set. Don't ask me
-%D why.
-
-def dofinishgraphictext text x_op_x =
- protectgraphicmacros ; % resets currentpicture
- interim linecap := butt ; % normally rounded
- interim linejoin := mitered ; % normally rounded
- interim miterlimit := 10 ; % todo
- let normalwithshade = withshade ;
- save foundpicture, scratchpicture, str ;
- save fill, draw, withshade, reversefill, outlinefill ;
- save withfillcolor, withdrawcolor ; % quite important
- numeric foundpicture ; picture scratchpicture ; string str ;
- def draw expr p =
- % the first, naive implementation was:
- % addto scratchpicture doublepath p withpen currentpen ;
- % but it is better to turn lines into fills
- addto scratchpicture contour boundingbox
- image (addto currentpicture doublepath p withpen currentpen) ;
- enddef ;
- def fill expr p =
- addto scratchpicture contour p withpen currentpen ;
- enddef ;
- def f_op_f = enddef ; boolean f_color ; f_color := false ;
- def d_op_d = enddef ; boolean d_color ; d_color := false ;
- def s_op_s = enddef ; boolean s_color ; s_color := false ;
- boolean reverse_fill ; reverse_fill := false ;
- boolean outline_fill ; outline_fill := false ;
- def reversefill =
- hide(reverse_fill := true )
- enddef ;
- def outlinefill =
- hide(outline_fill := true )
- enddef ;
- def withshade primary c =
- hide(def s_op_s = normalwithshade c enddef ; s_color := true )
- enddef ;
- def withfillcolor primary c =
- hide(def f_op_f = withcolor c enddef ; f_color := true )
- enddef ;
- def withdrawcolor primary c =
- hide(def d_op_d = withcolor c enddef ; d_color := true )
- enddef ;
- scratchpicture := nullpicture ;
- addto scratchpicture doublepath origin x_op_x ; % pre-roll
- for i within scratchpicture : % Below here is a dirty tricky test!
- if (urcorner dashpart i) = origin : outline_fill := false ; fi ;
- endfor ;
- scratchpicture := nullpicture ;
- readfile(jobname & ".mpy") ;
- scratchpicture := (scratchpicture shifted -llcorner scratchpicture) scaled (1/10) ;
- if not d_color and not f_color : d_color := true ; fi
- if s_color : d_color := false ; f_color := false ; fi ;
- currentpicture := figurepicture ;
- if d_color and not reverse_fill :
- for i within scratchpicture :
- if f_color and outline_fill :
- addto currentpicture doublepath pathpart i _op_ x_op_x f_op_f
- dashed nullpicture ;
- fi ;
- if filled i :
- addto currentpicture doublepath pathpart i _op_ x_op_x d_op_d ;
- fi ;
- endfor ;
- fi ;
- if f_color :
- for i within scratchpicture :
- if filled i :
- addto currentpicture contour pathpart i _op_ x_op_x f_op_f
- withpen pencircle scaled 0 ;
- fi ;
- endfor ;
- fi ;
- if d_color and reverse_fill :
- for i within scratchpicture :
- if filled i :
- addto currentpicture doublepath pathpart i _op_ x_op_x d_op_d ;
- fi ;
- endfor ;
- fi ;
- if s_color :
- for i within scratchpicture :
- if filled i :
- addto currentpicture contour pathpart i _op_ x_op_x s_op_s ;
- fi ;
- endfor ;
- else :
- for i within scratchpicture :
- if stroked i :
- addto currentpicture doublepath pathpart i _op_ x_op_x d_op_d ;
- fi ;
- endfor ;
- fi ;
- endgroup ;
-enddef ;
-
-def resetgraphictextdirective =
- graphictextstring := "" ;
-enddef ;
-
-def graphictextdirective text t =
- graphictextstring := graphictextstring & t & CRLF ;
-enddef ;
-
-endinput
-
-% example
-
-input mp-grph ;
-
- graphictextformat := "context" ;
-% graphictextformat := "plain" ;
-% graphictextformat := "latex" ; graphictextdirective "\documentclass[]{article}" ;
-
-beginfig (1) ;
- graphictext
- "\vbox{\hsize10cm \input tufte }"
- scaled 8
- withdrawcolor blue
- withfillcolor red
- withpen pencircle scaled 2pt ;
-endfig ;
-
-beginfig(1) ;
- loadfigure "gracht.mp" rotated 20 ;
- loadfigure "koe.mp" number 1 scaled 2 ;
-endfig ;
-
-end