From 5a96cf7b6e9ade3c3df8a119e6f0bd1a0a81a2bf Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Sun, 12 Apr 2015 01:15:04 +0200 Subject: 2015-04-12 00:56:00 --- metapost/context/base/mp-luas.mpiv | 9 ++++ metapost/context/base/mp-page.mpiv | 108 +++++++++++++++++-------------------- 2 files changed, 59 insertions(+), 58 deletions(-) (limited to 'metapost') diff --git a/metapost/context/base/mp-luas.mpiv b/metapost/context/base/mp-luas.mpiv index b926b586c..c919ba215 100644 --- a/metapost/context/base/mp-luas.mpiv +++ b/metapost/context/base/mp-luas.mpiv @@ -13,6 +13,15 @@ if known context_luas : endinput ; fi ; +% When I prototyped the runscript primitive I was just thinking of a usage like +% the original \directlua primitive in luatex: genererate something and pipe +% that back to metapost, and have access to some internals. Instead of compiling +% the code a the metapost end here we delegate that to the lua end. Only strings +% get passed. Of course in the end the real usage got a bit beyong the intended +% usage. So, in addition to some definitions here there are and will be use in +% other metafun modules too. Of course in retrospect I should have done this five +% years earlier. + boolean context_luas ; context_luas := true ; % First variant: diff --git a/metapost/context/base/mp-page.mpiv b/metapost/context/base/mp-page.mpiv index 55f72b0e8..7a6e576bd 100644 --- a/metapost/context/base/mp-page.mpiv +++ b/metapost/context/base/mp-page.mpiv @@ -188,8 +188,6 @@ fi ; string CurrentLayout ; CurrentLayout := "default" ; -path Page ; - vardef PaperHeight = lua.mp.PaperHeight () enddef ; vardef PaperWidth = lua.mp.PaperWidth () enddef ; vardef PrintPaperHeight = lua.mp.PrintPaperHeight () enddef ; @@ -263,6 +261,9 @@ vardef ExHeight = lua.mp.ExHeight () enddef ; vardef PageFraction = lua.mp.PageFraction () enddef ; +vardef SpineWidth = lua.mp.SpineWidth () enddef ; +vardef PaperBleed = lua.mp.PaperBleed () enddef ; + boolean mfun_swapped ; def SwapPageState = @@ -517,29 +518,55 @@ def SetPageField = endfor ; enddef ; -def SetPagePage = - path Page ; - Page := unitsquare xscaled PaperWidth yscaled PaperHeight ; +def mfun_page_Area = hide(SetPageArea ;) Area enddef ; +def mfun_page_Location = hide(SetPageLocation ;) Location enddef ; +def mfun_page_Field = hide(SetPageField ;) Field enddef ; +def mfun_page_Vsize = hide(SetPageVsize ;) Vsize enddef ; +def mfun_page_Hsize = hide(SetPageHsize ;) Hsize enddef ; +def mfun_page_Vstep = hide(SetPageVstep ;) Vstep enddef ; +def mfun_page_Hstep = hide(SetPageHstep ;) Hstep enddef ; + +def SetAreaVariables = + let Area = mfun_page_Area ; + let Location = mfun_page_Location ; + let Field = mfun_page_Field ; + let Vsize = mfun_page_Vsize ; + let Hsize = mfun_page_Hsize ; + let Vstep = mfun_page_Vstep ; + let Hstep = mfun_page_Hstep ; enddef ; -def mfun_page_Area = hide(SetPageArea ;) Area enddef ; -def mfun_page_Location = hide(SetPageLocation ;) Location enddef ; -def mfun_page_Field = hide(SetPageField ;) Field enddef ; -def mfun_page_Vsize = hide(SetPageVsize ;) Vsize enddef ; -def mfun_page_Hsize = hide(SetPageHsize ;) Hsize enddef ; -def mfun_page_Vstep = hide(SetPageVstep ;) Vstep enddef ; -def mfun_page_Hstep = hide(SetPageHstep ;) Hstep enddef ; -def mfun_page_Page = hide(SetPagePage ;) Page enddef ; +% we should make Page no path .. from now on don't assume this .. for a while we keek it + +vardef FrontPageWidth = PaperWidth enddef ; +vardef BackPageWidth = PaperWidth enddef ; +vardef CoverWidth = 2 * PaperWidth + SpineWidth enddef ; +vardef CoverHeight = PaperHeight enddef ; + +vardef FrontPageHeight = PaperHeight enddef ; +vardef BackPageHeight = PaperHeight enddef ; +vardef SpineHeight = PaperHeight enddef ; + +def SetPagePage = path Page ; Page := unitsquare xscaled PaperWidth yscaled PaperHeight ; enddef ; +def SetPageCoverPage = path CoverPage ; CoverPage := unitsquare xscaled CoverWidth yscaled CoverHeight ; enddef ; +def SetPageSpine = path Spine ; Spine := unitsquare xscaled SpineWidth yscaled CoverHeight shifted (BackPageWidth,0) ; enddef ; +def SetPageBackPage = path BackPage ; BackPage := unitsquare xscaled BackPageWidth yscaled CoverHeight ; enddef ; +def SetPageFrontPage = path FrontPage ; FrontPage := unitsquare xscaled FrontPageWidth yscaled CoverHeight shifted (BackPageWidth+SpineWidth,0) ; enddef ; + +def mfun_page_Page = hide(SetPagePage ;) Page enddef ; +def mfun_page_CoverPage = hide(SetPageCoverPage;) CoverPage enddef ; +def mfun_page_Spine = hide(SetPageSpine ;) Spine enddef ; +def mfun_page_BackPage = hide(SetPageBackPage ;) BackPage enddef ; +def mfun_page_FrontPage = hide(SetPageFrontPage;) FrontPage enddef ; def SetPageVariables = - let Area = mfun_page_Area ; - let Location = mfun_page_Location ; - let Field = mfun_page_Field ; - let Vsize = mfun_page_Vsize ; - let Hsize = mfun_page_Hsize ; - let Vstep = mfun_page_Vstep ; - let Hstep = mfun_page_Hstep ; - let Page = mfun_page_Page ; + SetAreaVariables ; + % + let Page = mfun_page_Page ; + let CoverPage = mfun_page_CoverPage ; + let Spine = mfun_page_Spine ; + let BackPage = mfun_page_BackPage ; + let FrontPage = mfun_page_FrontPage ; enddef ; SetPageVariables ; @@ -572,45 +599,10 @@ enddef ; def BoundCoverAreas = % todo: add cropmarks - bboxmargin := 0 ; setbounds currentpicture to Paper enlarged PaperBleed ; -enddef ; - -def SetCoverAreas = - - if unknown SpineWidth : - SpineWidth := 8mm ; - fi ; - - if unknown PaperBleed : - PaperBleed := 0 ; - fi ; - - FrontPageWidth := PaperWidth ; - BackPageWidth := PaperWidth ; - PaperWidth := 2 * PaperWidth + SpineWidth ; - - FrontPageHeight := PaperHeight ; - BackPageHeight := PaperHeight ; - PaperHeight := PaperHeight ; - SpineHeight := PaperHeight ; - - path Paper ; Paper := unitsquare xscaled PaperWidth yscaled PaperHeight ; - path Spine ; Spine := unitsquare xscaled SpineWidth yscaled PaperHeight shifted (BackPageWidth,0); - path BackPage ; BackPage := unitsquare xscaled BackPageWidth yscaled PaperHeight ; - path FrontPage ; FrontPage := unitsquare xscaled FrontPageWidth yscaled PaperHeight shifted (BackPageWidth+SpineWidth,0) ; - + bboxmargin := 0 ; setbounds currentpicture to CoverPage enlarged PaperBleed ; enddef ; -% def StartCover = -% begingroup ; -% if PageStateAvailable : -% LoadPageState ; -% % SwapPageState ; -% fi ; -% SetPageAreas ; -% SetCoverAreas ; -% BoundCoverAreas ; -% enddef ; +let SetCoverAreas = SetPageVariables ; % compatiblity def StartCover = begingroup ; -- cgit v1.2.3