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()