diff options
| author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-02-20 15:15:08 +0100 | 
|---|---|---|
| committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-02-20 15:15:08 +0100 | 
| commit | 93dce457ab8769ef45a56b2e0f7ad447d7a47a83 (patch) | |
| tree | 2374ca50eceb2aab1a5d0af0ba26dc129eb19ab6 /tex/context/base/mkiv/grph-rul.lua | |
| parent | b13dd166ce8563c60c10affc97ab28940d6a7776 (diff) | |
| download | context-93dce457ab8769ef45a56b2e0f7ad447d7a47a83.tar.gz | |
2016-02-20 14:58:00
Diffstat (limited to 'tex/context/base/mkiv/grph-rul.lua')
| -rw-r--r-- | tex/context/base/mkiv/grph-rul.lua | 48 | 
1 files changed, 46 insertions, 2 deletions
diff --git a/tex/context/base/mkiv/grph-rul.lua b/tex/context/base/mkiv/grph-rul.lua index c0ba5f9d8..4ca36b677 100644 --- a/tex/context/base/mkiv/grph-rul.lua +++ b/tex/context/base/mkiv/grph-rul.lua @@ -21,6 +21,11 @@ local a_color        = attributes.private('color')  local a_transparency = attributes.private('transparency')  local a_colorspace   = attributes.private('colormodel') +local mpcolor        = attributes.colors.mpcolor + +local floor          = math.floor +local random         = math.random +  do      local simplemetapost = metapost.simple @@ -63,16 +68,27 @@ do          endfig ;      ]] +    local predefined = { +        ["fake:word"] = [[ +fill unitsquare xscaled RuleWidth yscaled RuleHeight withcolor RuleColor ; +draw (0,RuleDepth+RuleThickness/2) -- (RuleWidth,RuleDepth+RuleThickness/2) withpen pencircle scaled RuleThickness withcolor white ; +        ]], +        ["fake:rule"] = [[ +fill unitsquare xscaled RuleWidth yscaled RuleHeight withcolor RuleColor ; +        ]], +    } +      ruleactions.mp = function(p,h,v,i,n) +        local name = p.name          local code = makecode { -            data   = p.data, +            data   = name and predefined[name] or p.data or "",              width  = p.width * bpfactor,              height = p.height * bpfactor,              depth  = p.depth * bpfactor,              factor = (p.factor or 0) * bpfactor, -- needs checking              offset = p.offset or 0,              line   = (p.line or 65536) * bpfactor, -            color  = attributes.colors.mpcolor(p.ma,p.ca,p.ta), +            color  = mpcolor(p.ma,p.ca,p.ta),          }          local m = cache[code]          if m and m ~= "" then @@ -129,6 +145,7 @@ interfaces.implement {          { "line",   "dimension" },          { "type",   "string" },          { "data",   "string" }, +        { "name",   "string" },      } } ,      actions = function(t)          if t.type == "mp" then @@ -141,3 +158,30 @@ interfaces.implement {      end  } +interfaces.implement { +    name      = "fakeword", +    arguments = { { +        { "factor", "dimension" }, +        { "name",   "string" }, -- can be type +        { "min",    "dimension" }, +        { "max",    "dimension" }, +        { "n",      "integer" }, +    } } , +    actions = function(t) +        local factor = t.factor or 0 +        local rule   = userrule { +            height = 1.25*factor, +            depth  = 0.25*factor, +            width  = floor(random(t.min,t.max)/10000) * 10000, +            line   = 0.10*factor, +            ma     = getattribute(a_colorspace) or 1, +            ca     = getattribute(a_color), +            ta     = getattribute(a_transparency), +            type   = "mp", +            name   = t.name, +        } +        context(rule) +    end +} + +  | 
