diff options
Diffstat (limited to 'tex/context/base/meta-grd.mkiv')
-rw-r--r-- | tex/context/base/meta-grd.mkiv | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tex/context/base/meta-grd.mkiv b/tex/context/base/meta-grd.mkiv new file mode 100644 index 000000000..da410ba68 --- /dev/null +++ b/tex/context/base/meta-grd.mkiv @@ -0,0 +1,116 @@ +%D \module +%D [ file=meta-grd, +%D version=2012.06.28, +%D title=\METAPOST\ Graphics, +%D subtitle=grids, +%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. + +\writestatus{loading}{MetaPost Graphics / Grids} + +%D This used to be a \TEX\ method, and a rather old one too. We keep it around but +%D in a more modern way. +%D +%D \startbuffer +%D \basegrid +%D [nx=8,ny=5, +%D dx=.5,dy=.25, +%D unit=cm,scale=2,factor=1, +%D offset=1ex,xstep=2,ystep=1, +%D align=middle,style=\tt\tx] +%D \stopbuffer +%D +%D \typebuffer +%D +%D \placefigure +%D {An example of a grid.} +%D {\getbuffer} + +\startuseMPgraphic{grid}{nx,ny,dx,dy,factor,scale,xstep,ystep,xoffset,yoffset,align} + begingroup ; + + save nx, ny, dx, dy, wd, ht, xstep, ystep, xoffset, yoffset, align, xalign, yalign ; + + numeric nx ; nx := \MPvar{nx} ; + numeric ny ; ny := \MPvar{ny} ; + numeric dx ; dx := \MPvar{factor} * \MPvar{scale} * \MPvar{dx} ; + numeric dy ; dy := \MPvar{factor} * \MPvar{scale} * \MPvar{dy} ; + numeric wd ; wd := nx * dx ; + numeric ht ; ht := ny * dy ; + numeric xstep ; xstep := \MPvar{xstep} ; + numeric ystep ; ystep := \MPvar{ystep} ; + numeric xoffset ; xoffset := \MPvar{xoffset} ; + numeric yoffset ; yoffset := \MPvar{yoffset} ; + numeric align ; align := \MPvar{align} ; + numeric xalign ; xalign := 0 ; + numeric yalign ; yalign := 0 ; + + if align = 1 : + xalign := dx/2 ; + yalign := dy/2 ; + fi ; + + for i=0 step dx until wd : + draw (i,0) -- (i,ht) ; + endfor ; + for i=0 step dy until ht : + draw (0,i) -- (wd,i) ; + endfor ; + + if xstep > 0 : + for i=1 step xstep until nx : + draw thetextext.bot(decimal i,(i*dx-xalign,-xoffset)) ; + endfor ; + fi ; + if ystep > 0 : + for i=1 step ystep until ny : + draw thetextext.lft(decimal i,(-yoffset,i*dy-yalign)) ; + endfor ; + fi ; + + endgroup ; +\stopuseMPgraphic + +\unprotect + +\unexpanded\def\basegrid + {\dosingleempty\typo_grid_base} + +\def\typo_grid_base[#1]% + {\hbox\bgroup + \getdummyparameters + [\c!nx=10,\c!ny=10,\c!dx=.5,\c!dy=.5,\c!xstep=0,\c!ystep=0, + \c!unit=\s!cm,\c!scale=1,\c!factor=1, + \c!offset=.25ex,\c!xoffset=\directdummyparameter\c!offset,\c!yoffset=\directdummyparameter\c!offset, + \c!align=, + #1]% + \usedummystyleandcolor\c!style\c!color + \edef\p_align{\directdummyparameter\c!align}% + \ifx\p_align\v!middle + \let\p_align\!!plusone + \else + \let\p_align\!!zerocount + \fi + \useMPgraphic + {grid}% + {nx=\directdummyparameter\c!nx,% + ny=\directdummyparameter\c!ny,% + dx=\directdummyparameter\c!dx\directdummyparameter\c!unit,% + dy=\directdummyparameter\c!dy\directdummyparameter\c!unit,% + factor=\directdummyparameter\c!factor,% + scale=\directdummyparameter\c!scale,% + xstep=\directdummyparameter\c!xstep,% + ystep=\directdummyparameter\c!ystep,% + xoffset=\directdummyparameter\c!xoffset,% + yoffset=\directdummyparameter\c!yoffset,% + align=\p_align}% + \egroup} + +\let\grid\basegrid + +\protect \endinput |