summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/mlib-svg.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/mlib-svg.lmt')
-rw-r--r--tex/context/base/mkxl/mlib-svg.lmt158
1 files changed, 78 insertions, 80 deletions
diff --git a/tex/context/base/mkxl/mlib-svg.lmt b/tex/context/base/mkxl/mlib-svg.lmt
index 862bd1cad..945cafbab 100644
--- a/tex/context/base/mkxl/mlib-svg.lmt
+++ b/tex/context/base/mkxl/mlib-svg.lmt
@@ -142,9 +142,8 @@ local trace_fonts = false trackers.register("metapost.svg.fonts", function(v)
-- This is just an experiment. Todo: reset hash etc. Also implement an option handler.
-local s_draw_image_start = "draw image ("
-local s_draw_image_stop = ") ;"
-
+local s_draw_image_start <const> = "draw image ("
+local s_draw_image_stop <const> = ") ;"
local ignoredopacity = 1
@@ -1207,34 +1206,34 @@ end
-- todo: viewbox helper
-local s_wrapped_start = s_draw_image_start
-local f_wrapped_stop = formatters[") shifted (0,%N) scaled %N ;"]
+local s_wrapped_start <const> = "draw image ("
+local f_wrapped_stop = formatters[") shifted (0,%N) scaled %N ;"]
local handletransform, handleviewbox do
local sind = math.sind
- -- local f_rotatedaround = formatters["svg_p := svg_p rotatedaround((%N,%N),%N) ;"]
- -- local f_rotated = formatters["svg_p := svg_p rotated(%N) ;"]
- -- local f_shifted = formatters["svg_p := svg_p shifted(%N,%N) ;"]
- -- local f_slanted_x = formatters["svg_p := svg_p xslanted(%N) ;"]
- -- local f_slanted_y = formatters["svg_p := svg_p yslanted(%N) ;"]
- -- local f_scaled = formatters["svg_p := svg_p scaled(%N) ;"]
- -- local f_xyscaled = formatters["svg_p := svg_p xyscaled(%N,%N) ;"]
- -- local f_matrix = formatters["svg_p := svg_p transformed bymatrix(%N,%N,%N,%N,%N,%N) ;"]
- -- local s_transform_start = "draw image ( begingroup ; save svg_p ; picture svg_p ; svg_p := image ( "
- -- local f_transform_stop = formatters[" ; ) ; %s ; draw svg_p ; endgroup ; ) ; "]
-
- local f_rotatedaround = formatters["rotatedaround((%N,%N),%N) "]
- local f_rotated = formatters["rotated(%N) "]
- local f_shifted = formatters["shifted(%N,%N) "]
- local f_slanted_x = formatters["xslanted(%N) "]
- local f_slanted_y = formatters["yslanted(%N) "]
- local f_scaled = formatters["scaled(%N) "]
- local f_xyscaled = formatters["xyscaled(%N,%N) "]
- local f_matrix = formatters["transformed bymatrix(%N,%N,%N,%N,%N,%N) "]
- local s_transform_start = "draw image ( "
- local f_transform_stop = formatters[") %s ; "]
+ -- local f_rotatedaround = formatters["svg_p := svg_p rotatedaround((%N,%N),%N) ;"]
+ -- local f_rotated = formatters["svg_p := svg_p rotated(%N) ;"]
+ -- local f_shifted = formatters["svg_p := svg_p shifted(%N,%N) ;"]
+ -- local f_slanted_x = formatters["svg_p := svg_p xslanted(%N) ;"]
+ -- local f_slanted_y = formatters["svg_p := svg_p yslanted(%N) ;"]
+ -- local f_scaled = formatters["svg_p := svg_p scaled(%N) ;"]
+ -- local f_xyscaled = formatters["svg_p := svg_p xyscaled(%N,%N) ;"]
+ -- local f_matrix = formatters["svg_p := svg_p transformed bymatrix(%N,%N,%N,%N,%N,%N) ;"]
+ -- local s_transform_start <const> = "draw image ( begingroup ; save svg_p ; picture svg_p ; svg_p := image ( "
+ -- local f_transform_stop = formatters[" ; ) ; %s ; draw svg_p ; endgroup ; ) ; "]
+
+ local f_rotatedaround = formatters["rotatedaround((%N,%N),%N) "]
+ local f_rotated = formatters["rotated(%N) "]
+ local f_shifted = formatters["shifted(%N,%N) "]
+ local f_slanted_x = formatters["xslanted(%N) "]
+ local f_slanted_y = formatters["yslanted(%N) "]
+ local f_scaled = formatters["scaled(%N) "]
+ local f_xyscaled = formatters["xyscaled(%N,%N) "]
+ local f_matrix = formatters["transformed bymatrix(%N,%N,%N,%N,%N,%N) "]
+ local s_transform_start <const> = "draw image ( "
+ local f_transform_stop = formatters[") %s ; "]
local transforms = { }
local noftransforms = 0
@@ -1690,18 +1689,17 @@ do
-- todo: clip = [ auto | rect(llx,lly,urx,ury) ]
- local s_rotation_start = "draw image ( "
- local f_rotation_stop = formatters[") rotatedaround((0,0),-angle((%N,%N))) ;"]
- local f_rotation_angle = formatters[") rotatedaround((0,0),-%N) ;"]
+ local s_rotation_start <const> = "draw image ( "
+ local f_rotation_stop = formatters[") rotatedaround((0,0),-angle((%N,%N))) ;"]
+ local f_rotation_angle = formatters[") rotatedaround((0,0),-%N) ;"]
- local s_offset_start = "draw image ( "
- local f_offset_stop = formatters[") shifted (%N,%N) ;"]
- local s_size_start = "draw image ( "
- local f_size_stop = formatters[") xysized (%N,%N) ;"]
+ local s_offset_start <const> = "draw image ( "
+ local f_offset_stop = formatters[") shifted (%N,%N) ;"]
+ local s_size_start <const> = "draw image ( "
+ local f_size_stop = formatters[") xysized (%N,%N) ;"]
local handleoffset, handlesize do
-
handleoffset = function(at)
local x = asnumber_vx(rawget(at,"x"))
local y = asnumber_vy(rawget(at,"y"))
@@ -2018,9 +2016,9 @@ local fraction = offset and asnumber_p(offset)
return p, d, c, o
end
- local s_opacity_start = s_draw_image_start
- local f_opacity_content = formatters["setgroup currentpicture to boundingbox currentpicture withopacity %N;"]
- local s_opacity_stop = s_draw_image_stop
+ local s_opacity_start <const> = "draw image ("
+ local f_opacity_content = formatters["setgroup currentpicture to boundingbox currentpicture withopacity %N;"]
+ local s_opacity_stop <const> = ") ;"
local function sharedopacity(at)
local o = at["opacity"]
@@ -2073,11 +2071,11 @@ local fraction = offset and asnumber_p(offset)
local viewport do
- local s_viewport_start = s_draw_image_start
- local s_viewport_stop = s_draw_image_stop
- local f_viewport_shift = formatters["currentpicture := currentpicture shifted (%N,%N);"]
- local f_viewport_scale = formatters["currentpicture := currentpicture xysized (%N,%N);"]
- local f_viewport_clip = formatters["clip currentpicture to (unitsquare xyscaled (%N,%N));"]
+ local s_viewport_start <const> = "draw image ("
+ local s_viewport_stop <const> = ") ;"
+ local f_viewport_shift = formatters["currentpicture := currentpicture shifted (%N,%N);"]
+ local f_viewport_scale = formatters["currentpicture := currentpicture xysized (%N,%N);"]
+ local f_viewport_clip = formatters["clip currentpicture to (unitsquare xyscaled (%N,%N));"]
viewport = function(x,y,w,h,noclip,scale)
r = r + 1 ; result[r] = s_viewport_start
@@ -2189,25 +2187,25 @@ setmetatableindex(res.at,at)
end
end
- local f_no_draw = formatters[' nodraw (%s)']
- local f_do_draw = formatters[' draw (%s)']
- local f_no_fill_c = formatters[' nofill closedcurve(%s)']
- local f_do_fill_c = formatters[' fill closedcurve(%s)']
- local f_eo_fill_c = formatters[' eofill closedcurve(%s)']
- local f_no_fill_l = formatters[' nofill closedlines(%s)']
- local f_do_fill_l = formatters[' fill closedlines(%s)']
- local f_eo_fill_l = formatters[' eofill closedlines(%s)']
- local f_closed_draw = formatters[' draw closedcurve(%s)']
- local f_do_fill = f_do_fill_c
- local f_eo_fill = f_eo_fill_c
- local f_no_fill = f_no_fill_c
- local s_clip_start = 'save p ; picture p ; p := image ('
- local f_clip_stop_c = formatters[') ; clip p to closedcurve(%s) %s ; draw p ;']
- local f_clip_stop_l = formatters[') ; clip p to closedlines(%s) %s ; draw p ;']
- local f_clip_stop = f_clip_stop_c
- local f_eoclip_stop_c = formatters[') ; eoclip p to closedcurve(%s) %s ; draw p ;']
- local f_eoclip_stop_l = formatters[') ; eoclip p to closedlines(%s) %s ; draw p ;']
- local f_eoclip_stop = f_eoclip_stop_c
+ local f_no_draw = formatters[' nodraw (%s)']
+ local f_do_draw = formatters[' draw (%s)']
+ local f_no_fill_c = formatters[' nofill closedcurve(%s)']
+ local f_do_fill_c = formatters[' fill closedcurve(%s)']
+ local f_eo_fill_c = formatters[' eofill closedcurve(%s)']
+ local f_no_fill_l = formatters[' nofill closedlines(%s)']
+ local f_do_fill_l = formatters[' fill closedlines(%s)']
+ local f_eo_fill_l = formatters[' eofill closedlines(%s)']
+ local f_closed_draw = formatters[' draw closedcurve(%s)']
+ local f_do_fill = f_do_fill_c
+ local f_eo_fill = f_eo_fill_c
+ local f_no_fill = f_no_fill_c
+ local s_clip_start <const> = 'save p ; picture p ; p := image ('
+ local f_clip_stop_c = formatters[') ; clip p to closedcurve(%s) %s ; draw p ;']
+ local f_clip_stop_l = formatters[') ; clip p to closedlines(%s) %s ; draw p ;']
+ local f_clip_stop = f_clip_stop_c
+ local f_eoclip_stop_c = formatters[') ; eoclip p to closedcurve(%s) %s ; draw p ;']
+ local f_eoclip_stop_l = formatters[') ; eoclip p to closedlines(%s) %s ; draw p ;']
+ local f_eoclip_stop = f_eoclip_stop_c
-- could be shared and then beginobject | endobject
@@ -2258,8 +2256,8 @@ setmetatableindex(res.at,at)
local f_linejoin = formatters[" interim linejoin := %s ;"]
local f_miterlimit = formatters[" interim miterlimit := %s ;"]
- local s_begingroup = "begingroup;"
- local s_endgroup = "endgroup;"
+ local s_begingroup <const> = "begingroup;"
+ local s_endgroup <const> = "endgroup;"
local linecaps = { butt = "butt", square = "squared", round = "rounded" }
local linejoins = { miter = "mitered", bevel = "beveled", round = "rounded" }
@@ -2658,8 +2656,8 @@ setmetatableindex(res.at,at)
function handlers.polyline(c) poly(c, ")") end
function handlers.polygon (c) poly(c,"--cycle)") end
- local s_image_start = s_draw_image_start
- local s_image_stop = s_draw_image_stop
+ local s_image_start <const> = "draw image ("
+ local s_image_stop <const> = ") ;"
function handlers.path(c)
local at = c.at
@@ -2926,21 +2924,21 @@ setmetatableindex(res.at,at)
do
- local s_start = "\\svgstart "
- local s_stop = "\\svgstop "
- local f_set = formatters["\\svgset{%N}{%N}"] -- we need a period
- local f_color_c = formatters["\\svgcolorc{%.3N}{%.3N}{%.3N}{"]
- local f_color_o = formatters["\\svgcoloro{%.3N}{"]
- local f_color_b = formatters["\\svgcolorb{%.3N}{%.3N}{%.3N}{%.3N}{"]
- local f_poscode = formatters["\\svgpcode{%N}{%N}{%s}"]
- local f_poschar = formatters["\\svgpchar{%N}{%N}{%s}"]
- local f_posspace = formatters["\\svgpspace{%N}{%N}"]
- local f_code = formatters["\\svgcode{%s}"]
- local f_char = formatters["\\svgchar{%s}"]
- local s_space = "\\svgspace "
- local f_size = formatters["\\svgsize{%0.6f}"] -- we need a period
- local f_font = formatters["\\svgfont{%s}{%s}{%s}"]
- local f_hashed = formatters["\\svghashed{%s}"]
+ local s_start <const> = "\\svgstart "
+ local s_stop <const> = "\\svgstop "
+ local f_set = formatters["\\svgset{%N}{%N}"] -- we need a period
+ local f_color_c = formatters["\\svgcolorc{%.3N}{%.3N}{%.3N}{"]
+ local f_color_o = formatters["\\svgcoloro{%.3N}{"]
+ local f_color_b = formatters["\\svgcolorb{%.3N}{%.3N}{%.3N}{%.3N}{"]
+ local f_poscode = formatters["\\svgpcode{%N}{%N}{%s}"]
+ local f_poschar = formatters["\\svgpchar{%N}{%N}{%s}"]
+ local f_posspace = formatters["\\svgpspace{%N}{%N}"]
+ local f_code = formatters["\\svgcode{%s}"]
+ local f_char = formatters["\\svgchar{%s}"]
+ local s_space <const> = "\\svgspace "
+ local f_size = formatters["\\svgsize{%0.6f}"] -- we need a period
+ local f_font = formatters["\\svgfont{%s}{%s}{%s}"]
+ local f_hashed = formatters["\\svghashed{%s}"]
----- p_texescape = lpegpatterns.texescape