! Copyright (C) 2009 Eduardo Cavazos
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel namespaces opengl ui.render ui.gadgets accessors ;
-IN: ui.gadgets.slate
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+USING: accessors arrays combinators kernel math opengl opengl.gl
+sequences ui.gadgets ui.gadgets.worlds ui.render ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+IN: ui.gadgets.slate
TUPLE: slate < gadget action pdim graft ungraft ;
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
: init-slate ( slate -- slate )
[ ] >>action
{ 200 200 } >>pdim
[ ] >>ungraft ;
: <slate> ( action -- slate )
- slate new
- init-slate
- swap >>action ;
+ slate new
+ init-slate
+ swap >>action ;
M: slate pref-dim* ( slate -- dim ) pdim>> ;
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-USING: combinators arrays sequences math
- opengl.gl ui.gadgets.worlds ;
-
: width ( rect -- w ) dim>> first ;
+
: height ( rect -- h ) dim>> second ;
: screen-y* ( gadget -- loc )
- {
- [ find-world height ]
- [ screen-loc second ]
- [ height ]
- }
- cleave
- + - ;
+ [ find-world height ] [ screen-loc second ] [ height ] tri + - ;
: screen-loc* ( gadget -- loc )
- {
- [ screen-loc first ]
- [ screen-y* ]
- }
- cleave
- 2array ;
+ [ screen-loc first ] [ screen-y* ] bi 2array ;
: setup-viewport ( gadget -- gadget )
- dup
- {
- [ screen-loc* ]
- [ dim>> ]
- }
- cleave
- gl-viewport ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ dup { [ screen-loc* ] [ dim>> ] } cleave gl-viewport ;
: default-coordinate-system ( gadget -- gadget )
- dup
- {
- [ drop 0 ]
- [ width 1 - ]
- [ height 1 - ]
- [ drop 0 ]
- }
- cleave
- -1 1
- glOrtho ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ dup {
+ [ drop 0 ] [ width 1 - ] [ height 1 - ] [ drop 0 ]
+ } cleave -1 1 glOrtho ;
-M: slate graft* ( slate -- ) graft>> call( -- ) ;
-M: slate ungraft* ( slate -- ) ungraft>> call( -- ) ;
+M: slate graft* graft>> call( -- ) ;
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+M: slate ungraft* ungraft>> call( -- ) ;
GENERIC: establish-coordinate-system ( gadget -- gadget )
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-M: slate establish-coordinate-system ( slate -- slate )
- default-coordinate-system ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+M: slate establish-coordinate-system default-coordinate-system ;
GENERIC: draw-slate ( slate -- slate )
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-M: slate draw-slate ( slate -- slate ) dup action>> call( slate -- slate ) ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+M: slate draw-slate dup action>> call( slate -- slate ) ;
M: slate draw-gadget* ( slate -- )
setup-viewport
drop
drop ;
-
-! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!