summaryrefslogtreecommitdiff
path: root/test/lua/view_image.lua
diff options
context:
space:
mode:
authorscuri <scuri>2009-07-14 17:04:56 +0000
committerscuri <scuri>2009-07-14 17:04:56 +0000
commit4ea6e8cfe0246827d21e39a09dc2af35b44ce566 (patch)
tree3c12621947fc25f20774f34fb243e5e477e18d47 /test/lua/view_image.lua
parent42ec8e8809beb24b613e89f721597a6328109880 (diff)
*** empty log message ***
Diffstat (limited to 'test/lua/view_image.lua')
-rw-r--r--test/lua/view_image.lua76
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