Hello Slava,

Is this code better? You say that one usually doesn't need to change the 
projection or model matrices but isn't that necessary here. Any 
suggestions or criticism you have time for are welcome. Thanks for the help.

USING: kernel gadgets gadgets-theme opengl arrays timers math sequences ;
IN: red-book

: rotate-square ( angle -- )
    0.0 0.0 1.0 glRotatef ;

: draw-square ( -- )
    { 1.0 1.0 1.0 1.0 } gl-color
    { -25.0 -25.0 } { 25.0 25.0 } gl-fill-rect ;

: update-rotation ( angle -- angle )
    2.0 + dup 360.0 > [ 360.0 - ] when ;

TUPLE: square-gadget rotation ;

C: square-gadget ( -- gadget )
    [ 0.0 swap set-square-gadget-rotation ] keep
    [ delegate>gadget ] keep ;
   
M: square-gadget pref-dim* ( gadget -- dim )
    drop { 250 250 } ;

M: square-gadget draw-gadget* ( gadget -- )
    GL_PROJECTION
    [
        -50.0 50.0 -50.0 50.0 -1.0 1.0 glOrtho
        GL_MODELVIEW
        [
            glLoadIdentity
            square-gadget-rotation rotate-square
            draw-square
        ] do-matrix
    ] do-matrix ;

M: square-gadget tick ( gadget -- )
    dup square-gadget-rotation update-rotation
    over set-square-gadget-rotation
    relayout-1 ;

M: square-gadget graft* ( gadget -- )
    black solid-interior ;

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