X-Git-Url: https://i11git.iti.kit.edu/anon-gitweb/?p=Misc%2Fipe.git;a=blobdiff_plain;f=ipelets%2Fpresentation%2Fpresentation.lua;h=0616a738c54f12adc5e6033c4345dd00e9d89b1b;hp=93516befa5f3b90be281120d5e2a479f5177c96b;hb=HEAD;hpb=b58d153b0959a8ae0ff61c3869bd6e6f83686f9a diff --git a/ipelets/presentation/presentation.lua b/ipelets/presentation/presentation.lua index 93516be..0616a73 100644 --- a/ipelets/presentation/presentation.lua +++ b/ipelets/presentation/presentation.lua @@ -22,7 +22,18 @@ STYLESHEET (CHANGING PREFERRED SETTINGS) Example style sheet to cascade with presentation.isy is as follows. ---- content of example.isy --- -example removed, not possible to upload this file to the ipe-wiki otherwise + + + + + + + + + +\usepackage{amsmath} + + ---- end content of example.isy --- where: @@ -90,6 +101,12 @@ local PREFERRED_BOX_MODE="strokedfilled" -- or stroked or filled local BOX_DIALOG_SIZE={400,140} +-- "spline" is recommended here, as it should work with most +-- ipe-versions +local SPLINE_TYPE_NAME="spline" +-- local SPLINE_TYPE_NAME="oldspline" +-- local SPLINE_TYPE_NAME="bezier" + -- initialize the Height table local function init_spacing(model) local p=model:page() @@ -122,6 +139,7 @@ local function path(model, shape, props) model.attributes[k]=v end local obj = ipe.Path(model.attributes, shape) + -- print(obj) for k,v in pairs(props) do model.attributes[k]=oldvalues[k] end @@ -159,7 +177,7 @@ local function boxshape_roundTR(v1, v2) return { type="curve", closed=true; { type="segment"; v1, V(v1.x, v2.y) }, { type="segment"; V(v1.x, v2.y), V(v2.x-c, v2.y) }, - { type="bezier"; V(v2.x-c, v2.y), V(v2.x-c/2, v2.y), + { type=SPLINE_TYPE_NAME; V(v2.x-c, v2.y), V(v2.x-c/2, v2.y), V(v2.x, v2.y-c/2), V(v2.x, v2.y-c) }, { type="segment"; V(v2.x, v2.y-c), V(v2.x, v1.y) } } end @@ -169,7 +187,7 @@ local function boxshape_roundLL(v1, v2) return { type="curve", closed=true; { type="segment"; v2, V(v2.x, v1.y) }, { type="segment"; V(v2.x, v1.y), V(v1.x+c, v1.y) }, - { type="bezier"; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), + { type=SPLINE_TYPE_NAME; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), V(v1.x, v1.y+c/2), V(v1.x, v1.y+c) }, { type="segment"; V(v1.x, v1.y+c), V(v1.x, v2.y) } } end @@ -178,16 +196,16 @@ end local function boxshape_round(v1, v2) return { type="curve", closed=true; { type="segment"; V(v2.x, v2.y-c), V(v2.x, v1.y+c) }, -- R - { type="bezier"; V(v2.x,v1.y+c), V(v2.x, v1.y+c/2), + { type=SPLINE_TYPE_NAME; V(v2.x,v1.y+c), V(v2.x, v1.y+c/2), V(v2.x-c/2,v1.y), V(v2.x-c,v1.y)}, -- BR { type="segment"; V(v2.x-c, v1.y), V(v1.x+c, v1.y) }, -- B - { type="bezier"; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), + { type=SPLINE_TYPE_NAME; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), V(v1.x, v1.y+c/2), V(v1.x, v1.y+c) }, -- BL { type="segment"; V(v1.x, v1.y+c), V(v1.x, v2.y-c) }, -- L - { type="bezier"; V(v1.x, v2.y-c), V(v1.x,v2.y-c/2), + { type=SPLINE_TYPE_NAME; V(v1.x, v2.y-c), V(v1.x,v2.y-c/2), V(v1.x+c/2, v2.y), V(v1.x+c, v2.y) }, -- TL { type="segment"; V(v1.x+c, v2.y), V(v2.x-c, v2.y) }, -- T - { type="bezier"; V(v2.x-c, v2.y), V(v2.x-c/2,v2.y), + { type=SPLINE_TYPE_NAME; V(v2.x-c, v2.y), V(v2.x-c/2,v2.y), V(v2.x, v2.y-c/2), V(v2.x, v2.y-c) }, -- TR } end @@ -201,19 +219,19 @@ local function boxshape_round_pointer(v1, v2, v3, v4, v5) local v5=v5 or V(v1.x+.5*dx,v2.y) return { type="curve", closed=true; { type="segment"; V(v2.x, v2.y-c), V(v2.x, v1.y+c) }, -- R - { type="bezier"; V(v2.x,v1.y+c), V(v2.x, v1.y+c/2), + { type=SPLINE_TYPE_NAME; V(v2.x,v1.y+c), V(v2.x, v1.y+c/2), V(v2.x-c/2,v1.y), V(v2.x-c,v1.y)}, -- BR { type="segment"; V(v2.x-c, v1.y), V(v1.x+c, v1.y) }, -- B - { type="bezier"; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), + { type=SPLINE_TYPE_NAME; V(v1.x+c, v1.y), V(v1.x+c/2,v1.y), V(v1.x, v1.y+c/2), V(v1.x, v1.y+c) }, -- BL { type="segment"; V(v1.x, v1.y+c), V(v1.x, v2.y-c) }, -- L - { type="bezier"; V(v1.x, v2.y-c), V(v1.x,v2.y-c/2), + { type=SPLINE_TYPE_NAME; V(v1.x, v2.y-c), V(v1.x,v2.y-c/2), V(v1.x+c/2, v2.y), V(v1.x+c, v2.y) }, -- TL { type="segment"; V(v1.x+c, v2.y), v3}, -- T { type="segment"; v3, v4}, -- P { type="segment"; v4, v5}, --P { type="segment"; v5, V(v2.x-c, v2.y)}, -- T - { type="bezier"; V(v2.x-c, v2.y), V(v2.x-c/2,v2.y), + { type=SPLINE_TYPE_NAME; V(v2.x-c, v2.y), V(v2.x-c/2,v2.y), V(v2.x, v2.y-c/2), V(v2.x, v2.y-c) }, -- TR } end @@ -428,10 +446,11 @@ local function create_boxed(model,values, pos, prim) t.redo = function (t, doc) doc[t.pno]:replace(t.primary, t.final) end + model:runLatex() -- Necessary to re-set the resources! model:register(t) else + model:runLatex() -- Necessary to re-set the resources! model:creation("create boxed text", obj) - -- model.doc:runLatex() -- may crash the thing end end @@ -489,8 +508,8 @@ local function create_tabbed(model,values, pos, prim) -- header box local shape1 = { boxshape_roundTR(V(x1,y2-h-2*s), V(x2,y2)) } local hb = path(model, shape1, - {pathmode='filled', fill=values.hcolor, stroke="white"}) - hb:set('pathmode', 'filled', "white", values.hcolor) + {pathmode='filled', fill=values.hcolor, stroke="white"}) + hb:set('pathmode', 'filled', "white", values.hcolor) -- body box local shape2 = { boxshape_roundLL(V(x1,y1), V(x2,y2-h-2*s)) } @@ -515,8 +534,10 @@ local function create_tabbed(model,values, pos, prim) t.redo = function (t, doc) doc[t.pno]:replace(t.primary, t.final) end + model:runLatex() -- Necessary to re-set the resources! model:register(t) else + model:runLatex() -- Necessary to re-set the resources! model:creation("create tabbed text", obj) -- model.doc:runLatex() -- may crash the thing end @@ -667,7 +688,7 @@ function _G.MODEL:action_edit() local prim = p:primarySelection() if not prim then self:presentation_backup_action_edit() - return + return end local obj = p[prim] if obj:type() == "group" then @@ -746,7 +767,7 @@ function boxit(model) elseif model.attributes.fill then d:set("fill", indexOf(model.attributes.fill,colors) ) end - + if indexOf("boxborder",pens) then d:set("pen", indexOf("boxborder",pens)) elseif model.attributes.pen then @@ -798,4 +819,3 @@ methods = { { label = "Tabbed/Boxed Text", run=tabbedboxed}, { label = "Deselect All", run=deselectAll}, } -