Colour pinstripe/Display: Difference between revisions

Content deleted Content added
CalmoSoft (talk | contribs)
Petelomax (talk | contribs)
Added print menu
Line 663:
constant colours = {CD_BLACK, CD_RED, CD_GREEN, CD_MAGENTA, CD_CYAN, CD_YELLOW, CD_WHITE}
 
procedure draw_to(cdCanvas cdcanvas)
Ihandle dlg, canvas
cdCanvas cddbuffer, cdCanvasActivate(cdcanvas)
integer {width, height} = IupGetIntIntcdCanvasGetSize(canvas, "DRAWSIZE"cdcanvas)
 
function redraw_cb(Ihandle /*ih*/, integer /*posx*/, integer /*posy*/)
cdCanvasActivate(cddbuffer)
integer {width, height} = IupGetIntInt(canvas, "DRAWSIZE")
for y=1 to 4 do
integer x = 0, c = 1, h = floor(height/(5-y))
while x<width do
cdCanvasSetForeground(cddbuffercdcanvas, colours[c])
cdCanvasBox(cddbuffercdcanvas, x, x+y, height-h, height)
x += y
c = iff(c=length(colours)?1:c+1)
Line 679 ⟶ 676:
height -= h
end for
cdCanvasFlush(cddbuffercdcanvas)
end procedure
 
Ihandle dlg, canvas
cdCanvas cddbuffer, cdcanvas
 
function redraw_cb(Ihandle /*ih*/, integer /*posx*/, integer /*posy*/)
cdCanvasActivatedraw_to(cddbuffer)
return IUP_DEFAULT
end function
Line 698 ⟶ 702:
if c=K_ESC then return IUP_CLOSE end if
return IUP_CONTINUE
end function
 
function print_cb(Ihandle /*ih*/)
cdCanvan print_canvas = cdCreateCanvas(CD_PRINTER, "pinstripe -d")
if print_canvas!=NULL then
draw_to(print_canvas)
cdKillCanvas(print_canvas)
end if
return IUP_DEFAULT
end function
 
function exit_cb(Ihandle /*ih*/)
return IUP_CLOSE
end function
 
procedure main()
IupOpen()
 
Ihandle file_menu = IupMenu({IupMenuItem("&Print",Icallback("print_cb")),
IupMenuItem("E&xit", Icallback("exit_cb"))})
 
Ihandle main_menu = IupMenu({IupSubmenu("File", file_menu)})
 
canvas = IupCanvas(NULL)
Line 711 ⟶ 733:
dlg = IupDialog(canvas)
IupSetAttribute(dlg, "TITLE", "Colour pinstripe")
IupSetAttributeHandle(dlg,"MENU",main_menu)
IupSetCallback(canvas, "ACTION", Icallback("redraw_cb"))
IupSetCallback(dlg, "K_ANY", Icallback("esc_close"))