summaryrefslogtreecommitdiff
path: root/metapost
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2005-01-12 00:00:00 +0100
committerHans Hagen <pragma@wxs.nl>2005-01-12 00:00:00 +0100
commit0fece0253ad71930dc23890d1ae3e1f76b296acb (patch)
treeee4101915a66616c98023bf6456d5615817b0766 /metapost
parent5604cb0a875f6114b67391fd279060678a9b7937 (diff)
downloadcontext-0fece0253ad71930dc23890d1ae3e1f76b296acb.tar.gz
stable 2005.01.12
Diffstat (limited to 'metapost')
-rw-r--r--metapost/context/base/mp-grid.mp24
-rw-r--r--metapost/context/base/mp-grph.mp11
2 files changed, 21 insertions, 14 deletions
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 :