diff options
author | scuri <scuri> | 2009-07-14 17:04:56 +0000 |
---|---|---|
committer | scuri <scuri> | 2009-07-14 17:04:56 +0000 |
commit | 4ea6e8cfe0246827d21e39a09dc2af35b44ce566 (patch) | |
tree | 3c12621947fc25f20774f34fb243e5e477e18d47 /test/lua/view_image.lua | |
parent | 42ec8e8809beb24b613e89f721597a6328109880 (diff) |
*** empty log message ***
Diffstat (limited to 'test/lua/view_image.lua')
-rw-r--r-- | test/lua/view_image.lua | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/lua/view_image.lua b/test/lua/view_image.lua new file mode 100644 index 0000000..c156bd3 --- /dev/null +++ b/test/lua/view_image.lua @@ -0,0 +1,76 @@ +require"imlua" +require"cdlua" +require"cdluaim" +require"iuplua" +require"iupluacd" + +iup.key_open() + +function View_Image(image, title) + ret = false + + cnv = iup.canvas{} + + function cnv:action() + local canvas = dlg.canvas + local image = dlg.image + + if (not canvas) then return end + + canvas:Activate() + cw, ch = canvas:GetSize() + iw = image:Width() + ih = image:Height() + + if (iw > ih) then + h = iw/iw * ch + y = (ch-h)/2 + x = 0 + w = cw + else + w = iw/ih * ch + x = (cw-w)/2 + y = 0 + h = ch + end + + canvas:Clear() + image:cdCanvasPutImageRect(canvas, x, y, w, h, 0, 0, 0, 0) + end + + function cnv:button_cb() + dlg:close_cb() + ret = true + return iup.CLOSE + end + + dlg = iup.dialog{iup.vbox{cnv, iup.label{title="Click to accept or press Esc to abort."}}} + dlg.placement="maximized" + dlg.title = title + dlg.cnv = cnv + dlg.image = image + + function dlg:k_any(c) + print("K_any("..c..")") + if (c == iup.K_ESC) then + dlg:close_cb() + return iup.CLOSE + end + end + + function dlg:close_cb() + local canvas = self.canvas + if canvas then canvas:Kill() end + end + + function dlg:map_cb() + canvas = cd.CreateCanvas(cd.IUP, self.cnv) + self.canvas = canvas + end + + dlg:show() + iup.MainLoop() + dlg:destroy() + + return ret +end |