- deallocate textures and display lists\r
- nicer-looking buttons\r
- pixelColor replacement\r
-- opengl stack overflow\r
\r
+ ui:\r
\r
: pick-up-list ( rect/point gadget -- gadget/f )
dupd children-on reverse-slice [ inside? ] find-with nip ;
-: translate ( rect/point -- )
- rect-loc origin [ v+ ] change ;
+: translate ( rect/point -- new-origin )
+ rect-loc origin [ v+ dup ] change ;
: pick-up ( rect/point gadget -- gadget )
[
2dup inside? [
- dup translate 2dup pick-up-list dup
+ dup translate drop 2dup pick-up-list dup
[ nip pick-up ] [ rot 2drop ] if
] [ 2drop f ] if
] with-scope ;
: (draw-gadget) ( gadget -- )
dup dup interior paint-prop* draw-interior
dup dup boundary paint-prop* draw-boundary
- dup draw-gadget*
- visible-children [ draw-gadget ] each ;
+ dup draw-gadget* ;
: do-clip ( gadget -- )
>absolute clip [ rect-intersect dup ] change
dup rect-loc swap rect-dim gl-set-clip ;
: with-translation ( gadget quot -- | quot: gadget -- )
+ #! Note: origin variable is still changed after quot returns
GL_MODELVIEW [
- >r dup rect-loc dup translate first3 glTranslated
+ >r dup rect-loc translate first3 glTranslated
r> call
] do-matrix ; inline
: draw-gadget ( gadget -- )
clip get over inside? [
[
- dup do-clip [ dup (draw-gadget) ] with-translation
+ dup do-clip
+ [ dup (draw-gadget) ] with-translation
+ visible-children [ draw-gadget ] each
] with-scope
] when drop ;
: world-step ( -- )
world get world-invalid >r layout-world r>
- [ update-hand draw-world ] when ;
+ [ update-hand [ draw-world ] USE: test time ] when ;
: next-event ( -- event ? ) <event> dup SDL_PollEvent ;