📄 box.lefty
字号:
load ('def.lefty');definit ();## initialize window data#canvas = defcanvas;wrect = [0 = ['x' = 0; 'y' = 0;]; 1 = ['x' = 400; 'y' = 500;];];setwidgetattr (canvas, ['window' = wrect;]);## data structures#objarray = [];objnum = 0;## misc functions#min = function (a, b) { if (a <= b) return a; return b;};max = function (a, b) { if (b <= a) return a; return b;};rectof = function (p1, p2) { return [ 0 = ['x' = min (p1.x, p2.x); 'y' = min (p1.y, p2.y);]; 1 = ['x' = max (p1.x, p2.x); 'y' = max (p1.y, p2.y);]; ];};pointadd = function (p1, p2) { return ['x' = p2.x + p1.x; 'y' = p2.y + p1.y;];};pointsub = function (p1, p2) { return ['x' = p2.x - p1.x; 'y' = p2.y - p1.y;];};## rendering functions#drawbox = function (obj, color) { box (canvas, obj, obj.rect, ['color' = color;]);};redrawboxes = function () { local i; clear (canvas); for (i = 0; i < objnum; i = i + 1) drawbox (objarray[i], 1);};redraw = function (canvas) { redrawboxes ();};## editing functions#new = function (rect) { objarray[objnum] = [ 'rect' = rect; 'id' = objnum; ]; objnum = objnum + 1; return objarray[objnum - 1];};reshape = function (obj, rect) { obj.rect = rect; return obj;};move = function (obj, p) { obj.rect[0] = pointadd (obj.rect[0], p); obj.rect[1] = pointadd (obj.rect[1], p); return obj;};delete = function (obj) { if (obj.id ~= objnum - 1) { objarray[obj.id] = objarray[objnum - 1]; objarray[obj.id].id = obj.id; } remove (objnum - 1, objarray); objnum = objnum - 1;};## user interface functions## left mouse button creates new box# middle button moves a box# right button deletes a box#leftdown = function (data) { if (data.obj ~= null) return; leftbox = new (rectof (data.pos, data.pos)); drawbox (leftbox, 1); setgfxattr (canvas, ['mode' = 'xor';]);};leftmove = function (data) { if (~leftbox) return; drawbox (leftbox, 1); clearpick (canvas, leftbox); reshape (leftbox, rectof (data.ppos, data.pos)); drawbox (leftbox, 1);};leftup = function (data) { if (~leftbox) return; drawbox (leftbox, 1); clearpick (canvas, leftbox); reshape (leftbox, rectof (data.ppos, data.pos)); setgfxattr (canvas, ['mode' = 'src';]); drawbox (leftbox, 1); remove ('leftbox');};middledown = function (data) { if (data.obj == null) return; middlebox = data.obj; middlepos = data.pos; setgfxattr (canvas, ['mode' = 'xor';]);};middlemove = function (data) { if (~middlebox) return; drawbox (middlebox, 1); clearpick (canvas, middlebox); move (middlebox, pointsub (middlepos, data.pos)); middlepos = data.pos; drawbox (middlebox, 1);};middleup = function (data) { if (~middlebox) return; drawbox (middlebox, 1); clearpick (canvas, middlebox); move (middlebox, pointsub (middlepos, data.pos)); setgfxattr (canvas, ['mode' = 'src';]); drawbox (middlebox, 1); remove ('middlepos'); remove ('middlebox');};rightup = function (data) { if (data.pobj == null) return; drawbox (data.obj, 0); clearpick (canvas, data.obj); delete (data.obj);};dops = function () { local s; s = ['x' = 8 * 300; 'y' = 10.5 * 300;]; canvas = createwidget (-1, ['type' = 'ps'; 'size' = s;]); setwidgetattr (canvas, ['window' = wrect;]); redraw (canvas); destroywidget (canvas); canvas=defcanvas;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -