]> gitweb.factorcode.org Git - factor.git/commitdiff
Fix some UI painting bugs
authorslava <slava@factorcode.org>
Thu, 12 Oct 2006 22:09:30 +0000 (22:09 +0000)
committerslava <slava@factorcode.org>
Thu, 12 Oct 2006 22:09:30 +0000 (22:09 +0000)
library/ui/gadgets/labels.factor
library/ui/gadgets/outliner.factor
library/ui/opengl/opengl-utils.factor
library/ui/paint.factor
library/ui/tools/dataflow.factor

index 3ceba9e69f246a24251467c7d94eaafdcbf70bfb..aa4e58f70fa73e793b14f37180682dc9a192b9ef 100644 (file)
@@ -13,18 +13,14 @@ C: label ( text -- label )
     [ set-label-text ] keep
     dup label-theme ;
 
-: label-size ( gadget -- dim )
+M: label pref-dim*
     dup label-font lookup-font dup font-height >r
     swap label-text string-width r> 2array ;
 
-M: label pref-dim* label-size ;
-
-: draw-label ( label -- )
+M: label draw-gadget*
     dup label-color gl-color
     dup label-font swap label-text
     origin get draw-string ;
 
-M: label draw-gadget* draw-label ;
-
 : <label-control> ( model -- gadget )
     "" <label> [ set-label-text ] <control> ;
index 9364b54a0c07798f5ebddd5c1d634c3b1ae1da9e..98889688f893bd5b17855dcba8a4ed423cee33db 100644 (file)
@@ -3,18 +3,22 @@
 IN: gadgets-outliner
 USING: arrays gadgets gadgets-borders gadgets-buttons
 gadgets-frames gadgets-grids gadgets-labels gadgets-panes
-gadgets-theme generic io kernel math opengl sequences styles ;
+gadgets-theme generic io kernel math opengl sequences styles
+namespaces ;
 
 ! Vertical line.
 TUPLE: guide color ;
 
 M: guide draw-interior
     guide-color gl-color
-    rect-dim dup { 0.5 0 0 } v* swap { 0.5 1 0 } v* gl-line ;
+    rect-dim dup { 0.5 0 0 } v* origin get v+
+    swap { 0.5 1 0 } v* origin get v+ gl-line ;
+
+: guide-theme ( gadget -- )
+    T{ guide f { 0.5 0.5 0.5 1.0 } } swap set-gadget-interior ;
 
 : <guide-gadget> ( -- gadget )
-    <gadget>
-    T{ guide f { 0.5 0.5 0.5 1.0 } } over set-gadget-interior ;
+    <gadget> dup guide-theme ;
 
 ! Outliner gadget.
 TUPLE: outliner quot ;
index dabb4a24a308c1b6b1a8689fc4c2da3dc7eb8491..2b8858583cf68a1bbc59a77b687e4b1b411ecae9 100644 (file)
@@ -33,7 +33,7 @@ sequences ;
 : gl-rect ( loc dim -- )
     #! Draws a two-dimensional box.
     GL_FRONT_AND_BACK GL_LINE glPolygonMode
-    gl-fill-rect
+    >r { 0.5 0.5 } v+ r> { 0.5 0.5 } v- gl-fill-rect
     GL_FRONT_AND_BACK GL_FILL glPolygonMode ;
 
 : (gl-poly) [ [ gl-vertex ] each ] do-state ;
index 64e216fbab02d56ec1fcaaa4320fce47cbc5e1ca..b2c786d8b0ae6f55e8c322921b237d81cd820f2d 100644 (file)
@@ -38,11 +38,10 @@ DEFER: draw-gadget
 : (draw-gadget) ( gadget -- )
     [
         dup rect-loc translate
-        dup dup gadget-interior draw-interior
+        dup dup gadget-interior draw-interior
         dup draw-gadget*
         dup visible-children [ draw-gadget ] each
-        ! dup gadget-boundary draw-boundary
-        drop
+        dup gadget-boundary draw-boundary
     ] with-scope ;
 
 : change-clip ( gadget -- )
@@ -82,7 +81,8 @@ M: f draw-boundary 2drop ;
 TUPLE: solid color ;
 
 ! Solid pen
-: (solid) solid-color gl-color rect-dim >r origin get r> ;
+: (solid)
+    solid-color gl-color rect-dim >r origin get dup r> v+ ;
 
 M: solid draw-interior (solid) gl-fill-rect ;
 
@@ -103,8 +103,9 @@ M: gradient draw-interior
 TUPLE: polygon color points ;
 
 : draw-polygon ( polygon quot -- )
-    >r dup polygon-color gl-color polygon-points r> each ;
-    inline
+    origin get [
+        >r dup polygon-color gl-color polygon-points r> call
+    ] with-translation ; inline
 
 M: polygon draw-boundary
     [ gl-poly ] draw-polygon drop ;
@@ -112,12 +113,12 @@ M: polygon draw-boundary
 M: polygon draw-interior
     [ gl-fill-poly ] draw-polygon drop ;
 
-: arrow-up    { { { 3 0 } { 6 6 } { 0 6 } } } ;
-: arrow-right { { { 0 0 } { 6 3 } { 0 6 } } } ;
-: arrow-down  { { { 0 0 } { 6 0 } { 3 6 } } } ;
-: arrow-left  { { { 0 3 } { 6 0 } { 6 6 } } } ;
+: arrow-up    { { 3 0 } { 6 6 } { 0 6 } } ;
+: arrow-right { { 0 0 } { 6 3 } { 0 6 } } ;
+: arrow-down  { { 0 0 } { 6 0 } { 3 6 } } ;
+: arrow-left  { { 0 3 } { 6 0 } { 6 6 } } ;
 
 : <polygon-gadget> ( color points -- gadget )
-    dup { 0 0 } [ max-dim vmax ] reduce
+    dup max-dim
     >r <polygon> <gadget> r> over set-rect-dim
     [ set-gadget-interior ] keep ;
index 9851fd5a9abf0e648fe96d6f23e0499053985010..50811f07097e512d204b2b024bae93273b492ab9 100644 (file)
@@ -34,8 +34,10 @@ C: shuffle-gadget ( node -- gadget )
     [ 2array ] 2map ;
 
 : draw-shuffle ( gadget seq seq -- )
-    >r >r rect-dim first2 r> r> shuffled-endpoints
-    [ first2 gl-line ] each ;
+    origin get [
+        >r >r rect-dim first2 r> r> shuffled-endpoints
+        [ first2 gl-line ] each
+    ] with-translation ;
 
 M: shuffle-gadget draw-gadget*
     { 0 0 0 1 } gl-color