Thanks for the quick response Slava. The following code is example 1-3 
from the OpenGL Programming Guide - a square that spins when the left 
mouse button is pressed. I am  setting the background color and shade 
model in graft* after  calling find-gl-context (I didn't find  
libs/canvas you mentioned in  Factor  .89 but  I did find this word in 
libs/gadgets/lib/lib.factor). These words don't have any effect. If 
however I uncomment out the calls to these words at the top of 
draw-gadget* it works fine. Am I doing something wrong here? Also I 
expected to find some sort of resize generic word for the gadget where I 
could place the call to glViewport. Wasn't able to find anything that 
looked like what I wanted in the documentation - is there such a thing?

IN: red-book
USE: modules
"libs/gadgets/lib/lib" require
USING: kernel gadgets opengl arrays timers math sequences gadgets.lib ;

: width ( gadget -- n )
    rect-dim 0 swap nth ;
   
: height ( gadget -- n )
    rect-dim 1 swap nth ;
   
TUPLE: example-1-3-gadget spin ;

C: example-1-3-gadget ( -- gadget )
    [ 0.0 swap set-example-1-3-gadget-spin ] keep
    [ delegate>gadget ] keep ;
   
M: example-1-3-gadget pref-dim* ( gadget -- dim )
    drop { 250 250 } ;

M: example-1-3-gadget draw-gadget* ( gadget -- )
    #! 0.0 0.0 0.0 0.0 glClearColor
    #! GL_FLAT glShadeModel ;
    0 0 pick [ width ] keep height glViewport
    GL_PROJECTION glMatrixMode
    glLoadIdentity
    -50.0 50.0 -50.0 50.0 -1.0 1.0 glOrtho
    GL_MODELVIEW glMatrixMode
    glLoadIdentity
    GL_COLOR_BUFFER_BIT glClear
    glPushMatrix
    example-1-3-gadget-spin 0.0 0.0 1.0 glRotatef
    1.0 1.0 1.0 glColor3f
    -25.0 -25.0 25.0 25.0 glRectf
    glPopMatrix ;

M: example-1-3-gadget tick ( gadget -- )
    dup    example-1-3-gadget-spin
    2.0 + dup
    360.0 > [ 360.0 - ] when
    over set-example-1-3-gadget-spin
    relayout-1 ;

M: example-1-3-gadget graft* ( gadget -- )
    find-gl-context
    0.0 0.0 0.0 0.0 glClearColor
    GL_FLAT glShadeModel ;

example-1-3-gadget H{
    { T{ button-down f f 1 } [ dup remove-timer 1 1 add-timer ] }
    { T{ button-down f f 2 } [ remove-timer ] }
} set-gestures

: run-example-1-3 ( -- )
    <example-1-3-gadget> "Example 1-3" open-window ;


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to