From 0fece0253ad71930dc23890d1ae3e1f76b296acb Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 12 Jan 2005 00:00:00 +0100 Subject: stable 2005.01.12 --- metapost/context/base/mp-grid.mp | 24 +++++++++++++----------- metapost/context/base/mp-grph.mp | 11 ++++++++--- 2 files changed, 21 insertions(+), 14 deletions(-) (limited to 'metapost') diff --git a/metapost/context/base/mp-grid.mp b/metapost/context/base/mp-grid.mp index d0d97dba9..f6e843489 100644 --- a/metapost/context/base/mp-grid.mp +++ b/metapost/context/base/mp-grid.mp @@ -30,68 +30,70 @@ boolean fmt_pictures ; fmt_pictures := true ; def do_format = if fmt_pictures : format else : formatstr fi enddef ; def do_mformat = if fmt_pictures : Mformat else : Mformatstr fi enddef ; +numeric grid_eps ; grid_eps = eps ; + def hlingrid (expr Min, Max, Step, Length, Width) text t = - image ( for i=Min step Step until Max : + image ( for i=Min step Step until Max+grid_eps : draw (origin--(Width,0)) shifted (0,i*(Length/Max)) t ; endfor ; ) ; enddef ; def vlingrid (expr Min, Max, Step, Length, Height) text t = - image ( for i=Min step Step until Max : + image ( for i=Min step Step until Max+grid_eps : draw (origin--(0,Height)) shifted (i*(Length/Max),0) t ; endfor ; ) ; enddef ; def hloggrid (expr Min, Max, Step, Length, Width) text t = - image ( for i=max(Min,1) step Step until min(Max,10) : + image ( for i=max(Min,1) step Step until min(Max,10)+grid_eps : draw (origin--(Width,0)) shifted (0,Length*log(i)) t ; endfor ; ) ; enddef ; def vloggrid (expr Min, Max, Step, Length, Height) text t = - image ( for i=max(Min,1) step Step until min(Max,10) : + image ( for i=max(Min,1) step Step until min(Max,10)+grid_eps : draw (origin--(0,Height)) shifted (Length*log(i),0) t ; endfor ; ) ; enddef ; vardef hlintext@#(expr Min, Max, Step, Length, Format) text t = image ( do_initialize_numbers ; - for i=Min step Step until Max : + for i=Min step Step until Max+grid_eps : draw textext@#(do_format(Format,i)) shifted (0,i*(Length/Max)) t ; endfor ; ) enddef ; vardef vlintext@#(expr Min, Max, Step, Length, Format) text t = image ( do_initialize_numbers ; - for i=Min step Step until Max : + for i=Min step Step until Max+grid_eps : draw textext@#(do_format(Format,i)) shifted (i*(Length/Max),0) t ; endfor ; ) enddef ; vardef hlogtext@#(expr Min, Max, Step, Length, Format) text t = image ( do_initialize_numbers ; - for i=max(Min,1) step Step until min(Max,10) : + for i=max(Min,1) step Step until min(Max,10)+grid_eps : draw textext@#(do_format(Format,i)) shifted (0,Length*log(i)) t ; endfor ; ) enddef ; vardef vlogtext@#(expr Min, Max, Step, Length, Format) text t = image ( do_initialize_numbers ; - for i=max(Min,1) step Step until min(Max,10) : + for i=max(Min,1) step Step until min(Max,10)+grid_eps : draw textext@#(do_format(Format,i)) shifted (Length*log(i),0) t ; endfor ; ) enddef ; vardef hlinlabel@#(expr Min, Max, Step, Length) text t = image ( - for i=Min step Step until Max : + for i=Min step Step until Max+grid_eps : draw thelabel@#(decimal i,(0,i*(Length/Max))) t ; endfor ; ) enddef ; vardef vlinlabel@#(expr Min, Max, Step, Length) text t = image ( - for i=Min step Step until Max : + for i=Min step Step until Max+grid_eps : draw thelabel@#(decimal i,(i*(Length/Max),0)) t ; endfor ; ) enddef ; @@ -140,4 +142,4 @@ def processpath (expr p) (text pp) = else : p fi -enddef ; \ No newline at end of file +enddef ; diff --git a/metapost/context/base/mp-grph.mp b/metapost/context/base/mp-grph.mp index 957a60ec8..18c43c57b 100644 --- a/metapost/context/base/mp-grph.mp +++ b/metapost/context/base/mp-grph.mp @@ -48,7 +48,7 @@ def protectgraphicmacros = save endfig ; let endfig = endgraphictextfig ; save end ; let end = relax ; interim prologues := prologues ; - resetfig ; + resetfig ; % resets currentpicture enddef ; numeric currentgraphictext ; currentgraphictext := 0 ; @@ -115,7 +115,7 @@ def doloadfigure (expr filename) text figureattributes = enddef ; let endfig = relax ; readfile(filename) ; - if figureshift : + if figureshift : currentpicture := currentpicture shifted -llcorner currentpicture ; fi ; addto figurepicture also currentpicture figureattributes ; @@ -129,6 +129,8 @@ enddef ; def dographictext (expr t) = begingroup ; + save figurepicture ; picture figurepicture ; + figurepicture := currentpicture ; currentpicture := nullpicture ; if graphictextformat<>"" : graphictextstring := "% format=" & graphictextformat & CRLF & graphictextstring ; @@ -145,6 +147,8 @@ enddef ; def regraphictext (expr t) = begingroup ; + save figurepicture ; picture figurepicture ; + figurepicture := currentpicture ; currentpicture := nullpicture ; save currentgraphictext ; numeric currentgraphictext ; currentgraphictext := t ; dofinishgraphictext @@ -164,7 +168,7 @@ enddef ; %D why. def dofinishgraphictext text x_op_x = - protectgraphicmacros ; + protectgraphicmacros ; % resets currentpicture interim linecap := butt ; % normally rounded interim linejoin := mitered ; % normally rounded interim miterlimit := 10 ; % todo @@ -213,6 +217,7 @@ def dofinishgraphictext text x_op_x = 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 : -- cgit v1.2.3