diff options
author | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:56:41 -0800 |
---|---|---|
committer | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:59:33 -0800 |
commit | d577d991b97ae2b5ee1af23641bcffc3f83af5b2 (patch) | |
tree | 590639d50205d1bcfaff2a7d2dc6ebf3f373c7ed /cd/test/lua |
Initial import. Contains the im, cd and iup librairies, and a "working" Makefile for them under linux.
Diffstat (limited to 'cd/test/lua')
-rwxr-xr-x | cd/test/lua/cdalign.wlua | 67 | ||||
-rwxr-xr-x | cd/test/lua/cdtext.wlua | 59 | ||||
-rwxr-xr-x | cd/test/lua/imagergb.wlua | 35 | ||||
-rwxr-xr-x | cd/test/lua/iupcdaux.lua | 45 | ||||
-rwxr-xr-x | cd/test/lua/iuplua_cdlua.wlua | 58 | ||||
-rwxr-xr-x | cd/test/lua/rubberband.wlua | 54 |
6 files changed, 318 insertions, 0 deletions
diff --git a/cd/test/lua/cdalign.wlua b/cd/test/lua/cdalign.wlua new file mode 100755 index 0000000..849d258 --- /dev/null +++ b/cd/test/lua/cdalign.wlua @@ -0,0 +1,67 @@ +require("iupcdaux") -- utility module used in some samples + +dlg = iupcdaux.new_dialog(w, h) +cnv = dlg[1] -- retrieve the IUP canvas + +function DrawText(canvas, x, y, text, align) + canvas:TextAlignment(align) + canvas:Mark(x, y) + canvas:Text(x, y, text) + xmin, xmax, ymin, ymax = canvas:GetTextBox(x, y, text) + canvas:Rect(xmin, xmax, ymin, ymax) +end + +text_aligment = { + cd.NORTH, + cd.SOUTH, + cd.EAST, + cd.WEST, + cd.NORTH_EAST, + cd.NORTH_WEST, + cd.SOUTH_EAST, + cd.SOUTH_WEST, + cd.CENTER, + cd.BASE_LEFT, + cd.BASE_CENTER, + cd.BASE_RIGHT +} + +text_aligment_str = { + "NORTH", + "SOUTH", + "EAST", + "WEST", + "NORTH EAST", + "NORTH WEST", + "SOUTH EAST", + "SOUTH WEST", + "CENTER", + "BASE LEFT", + "BASE CENTER", + "BASE RIGHT" +} + + +-- custom function used in action callback +-- from the iupcdaux module +function cnv:Draw(canvas) + canvas:MarkSize(40) + canvas:Font("Courier", cd.PLAIN, 12) + + i = 1 + while (i <= 12) do + DrawText(canvas, 100, 35*i + 30, text_aligment_str[i], text_aligment[i]) + i = i + 1 + end +end + + +--tmpCanvas = cd.CreateCanvas(cd.PS, "cdalign.ps") +--tmpCanvas:Clear() +--cnv:Draw(tmpCanvas) +--tmpCanvas:Kill() + + +dlg:show() +iup.MainLoop() + diff --git a/cd/test/lua/cdtext.wlua b/cd/test/lua/cdtext.wlua new file mode 100755 index 0000000..556d02f --- /dev/null +++ b/cd/test/lua/cdtext.wlua @@ -0,0 +1,59 @@ +require("iupcdaux") -- utility module used in some samples + +--require"cdluacontextplus" +--cd.UseContextPlus(1) + +dlg = iupcdaux.new_dialog(w, h) +cnv = dlg[1] -- retrieve the IUP canvas + +function DrawTextBox(canvas, x, y, text) + canvas:Mark(x, y) + canvas:Text(x, y, text) + w, h = canvas:GetTextSize(text) + xmin = x - w/2 + ymin = y - h/2 + xmax = x + w/2 + ymax = y + h/2 + canvas:Line(xmin, ymin, xmax, ymin) + canvas:Line(xmin, ymin, xmin, ymax) + canvas:Line(xmin, ymax, xmax, ymax) + canvas:Line(xmax, ymin, xmax, ymax) +end + +-- custom function used in action callback +-- from the iupcdaux module +function cnv:Draw(canvas) + + -- Available in ContextPlus drivers or in IMAGERGB driver + -- canvas:SetAttribute("ANTIALIAS", "1") + + canvas:TextAlignment(cd.CENTER) + canvas:MarkSize(40) + + canvas:Font("Courier", cd.PLAIN, 12) + local aa = canvas:GetAttribute("ANTIALIAS") + if (aa == "1") then + DrawTextBox(canvas, 130, 30, "ANTIALIAS=1") + else + DrawTextBox(canvas, 130, 30, "ANTIALIAS=0") + end + + canvas:Font("Courier", cd.ITALIC, 34) + DrawTextBox(canvas, 130, 160, "xxxxxppx") + + canvas:Font("Times", cd.PLAIN, 12) + DrawTextBox(canvas, 130, 290, "taaaa") + + canvas:Font("Times", cd.BOLD, 14) + DrawTextBox(canvas, 130, 370, "gggggggg") +end + + +--tmpCanvas = cd.CreateCanvas(cd.PS, "cdtext.ps") +--tmpCanvas:Clear() +--cnv:Draw(tmpCanvas) +--tmpCanvas:Kill() + + +dlg:show() +iup.MainLoop() diff --git a/cd/test/lua/imagergb.wlua b/cd/test/lua/imagergb.wlua new file mode 100755 index 0000000..b7c6f11 --- /dev/null +++ b/cd/test/lua/imagergb.wlua @@ -0,0 +1,35 @@ +require("iupcdaux") -- utility module used in some samples + +w = 100 +h = 100 + +image_rgb = cd.CreateImageRGB(w, h) + +size = w * h +i = 0 +while i < size do + + if i < size/2 then + image_rgb.r[i] = 255 + image_rgb.g[i] = 0 + image_rgb.b[i] = 0 + else + image_rgb.r[i] = 0 + image_rgb.g[i] = 0 + image_rgb.b[i] = 255 + end + + i = i + 1 +end + +dlg = iupcdaux.new_dialog(w, h) +cnv = dlg[1] -- retrieve the IUP canvas + +-- custom function used in action callback +-- from the iupcdaux module +function cnv:Draw(canvas) + canvas:PutImageRectRGB(image_rgb, 0, 0, w, h, 0, 0, 0, 0) +end + +dlg:show() +iup.MainLoop() diff --git a/cd/test/lua/iupcdaux.lua b/cd/test/lua/iupcdaux.lua new file mode 100755 index 0000000..18ae23c --- /dev/null +++ b/cd/test/lua/iupcdaux.lua @@ -0,0 +1,45 @@ +require"cdlua" +require"iuplua" +require"iupluacd" + +iupcdaux = {} +iupcdaux.count = 0 + +-- Function to easy create a new IUP dialog with an IUP canvas, +-- and a CD canvas pointing to that IUP canvas + +function iupcdaux.new_dialog(w, h) + + -- defaul size + w = w or 300 + h = h or 200 + + cnv = iup.canvas { bgcolor="255 255 255", rastersize=w.."x"..h } + dlg = iup.dialog { cnv; title="canvas_"..(iupcdaux.count+1) } + + function cnv:map_cb() + canvas = cd.CreateCanvas(cd.IUP, self) + self.canvas = canvas -- store the CD canvas in a IUP attribute + end + + function cnv:action() + canvas = self.canvas -- retrieve the CD canvas from the IUP attribute + canvas:Activate() + canvas:Clear() + + if (self.Draw) then + self:Draw(canvas) + end + end + + function dlg:close_cb() + cnv = self[1] + canvas = cnv.canvas -- retrieve the CD canvas from the IUP attribute + canvas:Kill() + self:destroy() + return iup.IGNORE -- because we destroy the dialog + end + + iupcdaux.count = iupcdaux.count + 1 + return dlg +end diff --git a/cd/test/lua/iuplua_cdlua.wlua b/cd/test/lua/iuplua_cdlua.wlua new file mode 100755 index 0000000..5528117 --- /dev/null +++ b/cd/test/lua/iuplua_cdlua.wlua @@ -0,0 +1,58 @@ +require"cdlua" +require"iuplua" +require"iupluacd" + +cnv = iup.canvas {size = "200x100"} + +box = iup.vbox{ + iup.button { title="Version" }, + cnv, + iup.button { title="Close" }, + } + +dlg = iup.dialog{box; title="Example IUPLUA/CDLUA"} + +function cnv:map_cb() + canvas = cd.CreateCanvas(cd.IUP, self) + self.canvas = canvas -- store the CD canvas in a IUP attribute +end + +function dlg:close_cb() + cnv = self[1][2] + canvas = cnv.canvas -- retrieve the CD canvas from the IUP attribute + canvas:Kill() + self:destroy() + return iup.IGNORE -- because we destroy the dialog +end + +bt_version = dlg[1][1] +function bt_version:action() + iup.Message("Version", "CD Version: " .. cd.Version() .. "\nIUP Version: " .. iup.Version() .. "\n" .. _VERSION) +end + +bt_close = dlg[1][3] +function bt_close:action() + return iup.CLOSE +end + +function cnv:action() + canvas = self.canvas -- retrieve the CD canvas from the IUP attribute + + canvas:Activate() + canvas:Clear() + canvas:Foreground (cd.RED) + canvas:Box (10, 55, 10, 55) + canvas:Foreground(cd.EncodeColor(255, 32, 140)) + canvas:Line(0, 0, 300, 100) +end + +function cnv:button_cb(b, e, x, y, r) + print ("Button: " .. "Button="..tostring(b).." Pressed="..tostring(e).." X="..tostring(x).." Y="..tostring(y) ) +end + +function cnv:resize_cb(w, h) + print("Resize: Width="..w.." Height="..h) +end + +dlg:show() +iup.MainLoop() diff --git a/cd/test/lua/rubberband.wlua b/cd/test/lua/rubberband.wlua new file mode 100755 index 0000000..595373a --- /dev/null +++ b/cd/test/lua/rubberband.wlua @@ -0,0 +1,54 @@ +require("iupcdaux") -- utility module used in some samples + +dlg = iupcdaux.new_dialog(w, h) +cnv = dlg[1] -- retrieve the IUP canvas + + +function cnv:button_cb(button,pressed,x,y,r) + canvas = self.canvas -- retrieve the CD canvas from the IUP attribute + + -- start drag if button1 is pressed + if button ==iup.BUTTON1 and pressed == 1 then + y = canvas:UpdateYAxis(y) + + -- prepare for XOR + canvas:Foreground(cd.WHITE) + canvas:WriteMode(cd.XOR) + + xstart = x + ystart = y + drag = 1 + first = 1 + else + if (drag == 1) then + drag = 0 + canvas:Rect(xstart,xend,ystart,yend) + end + end +end + + +function cnv:motion_cb(x,y,r) + canvas = self.canvas -- retrieve the CD canvas from the IUP attribute + + if (drag == 1) then + y = canvas:UpdateYAxis(y) + + if (first == 1) then + first = 0 + else + canvas:Rect(xstart,xend,ystart,yend) + end + + canvas:Rect(xstart,x,ystart,y) + + xend = x + yend = y + end +end + +first = 1 +drag = 0 + +dlg:show() +iup.MainLoop() |