RosettaCodeData/Task/OpenGL/Phix/opengl-1.phix

36 lines
1.2 KiB
Plaintext

include demo\Arwen32dibdemo\a32dpoly.ew
a32Dib0 screen_dib = 0
integer dx = 0, dy = 0, dw = 0, dh = 0
constant win = create(Window, "Arwen32Dib bitmap shaded triangle demo", 0, 0, Default, Default, 480, 300, 0)
function winHandler(integer id, integer msg, atom wParam, object lParam)
sequence rect
if id or object(lParam) then end if -- suppress warnings
if msg=WM_PAINT then
if sequence(screen_dib) then
clearDib(screen_dib, {0, 0, 0})
drawShadedPolygonToDib(screen_dib, {{dx, dy}, {dx, dh-dy}, {dw-dx, dh-dy}}, {{255, 0, 0}, {0, 0, 255}, {0, 255, 0}})
drawDib(win, screen_dib, 0, 0, 0, 0, screen_dib[DibWidth]-1, screen_dib[DibHeight]-1)
end if
elsif msg=WM_SIZE then
rect = getClientRect(win)
dw = rect[3]
dh = rect[4]
dx = floor(dw/4)+1
dy = floor(dh/4)+1
if sequence(screen_dib) then killDib(screen_dib) end if
screen_dib = newDib(dw, dh)
elsif msg=WM_CHAR
and wParam=VK_ESCAPE then
closeWindow(win)
end if
return 0
end function
setHandler(win, routine_id("winHandler"))
WinMain(win, SW_NORMAL)
if sequence(screen_dib) then killDib(screen_dib) end if