Faster grid gadget
parent
5faea12c89
commit
b71697db41
|
@ -11,14 +11,17 @@
|
||||||
- there was a performance hit, investigate
|
- there was a performance hit, investigate
|
||||||
- float boxing and overflow checks need a gc check too
|
- float boxing and overflow checks need a gc check too
|
||||||
- [ [ dup call ] dup call ] infer hangs
|
- [ [ dup call ] dup call ] infer hangs
|
||||||
- grid slows down with 2000 lines
|
|
||||||
- growable data heap
|
- growable data heap
|
||||||
- more compact relocation info
|
- more compact relocation info
|
||||||
- update module system docs
|
|
||||||
- flip may fail with >64kb string
|
- flip may fail with >64kb string
|
||||||
|
- documentation:
|
||||||
|
- document columns
|
||||||
|
- update module system docs
|
||||||
|
|
||||||
+ ui:
|
+ ui:
|
||||||
|
|
||||||
|
- grid displays quickly now, but constructing large amounts of gadgets
|
||||||
|
is slow: eg, 10000 [ dup number>string ] map describe
|
||||||
- completion is not ideal: eg, C+e "buttons"
|
- completion is not ideal: eg, C+e "buttons"
|
||||||
- some way of intercepting all gestures
|
- some way of intercepting all gestures
|
||||||
- slider needs to be modelized
|
- slider needs to be modelized
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-frames
|
IN: gadgets
|
||||||
USING: arrays gadgets gadgets-grids generic kernel math
|
USING: arrays generic kernel math namespaces sequences words ;
|
||||||
namespaces sequences words ;
|
|
||||||
|
|
||||||
! A frame arranges gadgets in a 3x3 grid, where the center
|
! A frame arranges gadgets in a 3x3 grid, where the center
|
||||||
! gadgets gets left-over space.
|
! gadgets gets left-over space.
|
||||||
TUPLE: frame ;
|
TUPLE: frame ;
|
||||||
|
|
||||||
: <frame-grid> 3 [ drop 3 f <array> ] map ;
|
: <frame-grid> 9 [ drop <gadget> ] map 3 group ;
|
||||||
|
|
||||||
: @center 1 1 ;
|
: @center 1 1 ;
|
||||||
: @left 0 1 ;
|
: @left 0 1 ;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-grids
|
IN: gadgets
|
||||||
USING: gadgets kernel math namespaces opengl sequences ;
|
USING: kernel math namespaces opengl sequences ;
|
||||||
|
|
||||||
! You can set a grid's gadget-boundary to this.
|
! You can set a grid's gadget-boundary to this.
|
||||||
TUPLE: grid-lines color ;
|
TUPLE: grid-lines color ;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-grids
|
IN: gadgets
|
||||||
USING: arrays gadgets kernel math namespaces sequences words ;
|
USING: arrays kernel math namespaces sequences words ;
|
||||||
|
|
||||||
TUPLE: grid children gap ;
|
TUPLE: grid children gap ;
|
||||||
|
|
||||||
|
@ -17,17 +17,14 @@ C: grid ( children -- grid )
|
||||||
: grid-child ( grid i j -- gadget ) rot grid-children nth nth ;
|
: grid-child ( grid i j -- gadget ) rot grid-children nth nth ;
|
||||||
|
|
||||||
: grid-add ( gadget grid i j -- )
|
: grid-add ( gadget grid i j -- )
|
||||||
>r >r over [ over add-gadget ] when* r> r>
|
>r >r 2dup add-gadget r> r>
|
||||||
3dup grid-child unparent rot grid-children nth set-nth ;
|
3dup grid-child unparent rot grid-children nth set-nth ;
|
||||||
|
|
||||||
: grid-remove ( grid i j -- )
|
: grid-remove ( grid i j -- )
|
||||||
>r >r >r f r> r> r> grid-add ;
|
>r >r >r <gadget> r> r> r> grid-add ;
|
||||||
|
|
||||||
: ?pref-dim ( gadget/f -- dim )
|
|
||||||
[ pref-dim ] [ { 0 0 } ] if* ;
|
|
||||||
|
|
||||||
: pref-dim-grid ( -- dims )
|
: pref-dim-grid ( -- dims )
|
||||||
grid get grid-children [ [ ?pref-dim ] map ] map ;
|
grid get grid-children [ [ pref-dim ] map ] map ;
|
||||||
|
|
||||||
: compute-grid ( -- horiz vert )
|
: compute-grid ( -- horiz vert )
|
||||||
pref-dim-grid
|
pref-dim-grid
|
||||||
|
@ -47,9 +44,9 @@ M: grid pref-dim*
|
||||||
] with-grid ;
|
] with-grid ;
|
||||||
|
|
||||||
: do-grid ( dims quot -- )
|
: do-grid ( dims quot -- )
|
||||||
swap grid get grid-children [
|
swap grid get grid-children
|
||||||
[ dup [ pick call ] [ 2drop ] if ] 2each
|
[ [ pick call ] 2each ] 2each
|
||||||
] 2each drop ; inline
|
drop ; inline
|
||||||
|
|
||||||
: pair-up ( horiz vert -- dims )
|
: pair-up ( horiz vert -- dims )
|
||||||
[ swap [ swap (pair-up) ] map-with ] map-with ;
|
[ swap [ swap (pair-up) ] map-with ] map-with ;
|
||||||
|
@ -75,3 +72,12 @@ M: grid layout*
|
||||||
#! The setter has stack effect ( new gadget -- ),
|
#! The setter has stack effect ( new gadget -- ),
|
||||||
#! the loc is @center, @top, etc.
|
#! the loc is @center, @top, etc.
|
||||||
swap [ [ grid-add ] build-spec ] with-gadget ; inline
|
swap [ [ grid-add ] build-spec ] with-gadget ; inline
|
||||||
|
|
||||||
|
M: grid children-on ( rect gadget -- seq )
|
||||||
|
dup gadget-children empty? [
|
||||||
|
2drop f
|
||||||
|
] [
|
||||||
|
{ 0 1 } swap grid-children
|
||||||
|
[ 0 <column> fast-children-on ] keep
|
||||||
|
<slice> concat
|
||||||
|
] if ;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: arrays errors freetype gadgets-frames generic hashtables
|
USING: arrays errors freetype gadgets generic hashtables
|
||||||
kernel math models namespaces opengl sequences ;
|
kernel math models namespaces opengl sequences ;
|
||||||
|
|
||||||
: menu-loc ( world menu -- loc )
|
: menu-loc ( world menu -- loc )
|
||||||
|
|
|
@ -2,9 +2,8 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-outliner
|
IN: gadgets-outliner
|
||||||
USING: arrays gadgets gadgets-borders gadgets-buttons
|
USING: arrays gadgets gadgets-borders gadgets-buttons
|
||||||
gadgets-frames gadgets-grids gadgets-labels gadgets-panes
|
gadgets-labels gadgets-panes gadgets-theme generic io kernel
|
||||||
gadgets-theme generic io kernel math opengl sequences styles
|
math opengl sequences styles namespaces ;
|
||||||
namespaces ;
|
|
||||||
|
|
||||||
! Vertical line.
|
! Vertical line.
|
||||||
TUPLE: guide color ;
|
TUPLE: guide color ;
|
||||||
|
@ -45,11 +44,12 @@ DEFER: set-outliner-expanded?
|
||||||
>r not <expand-button> r> @top-left grid-add ;
|
>r not <expand-button> r> @top-left grid-add ;
|
||||||
|
|
||||||
: setup-center ( expanded? outliner -- )
|
: setup-center ( expanded? outliner -- )
|
||||||
[ swap [ outliner-quot make-pane ] [ drop f ] if ] keep
|
[
|
||||||
@center grid-add ;
|
swap [ outliner-quot make-pane ] [ drop <gadget> ] if
|
||||||
|
] keep @center grid-add ;
|
||||||
|
|
||||||
: setup-guide ( expanded? outliner -- )
|
: setup-guide ( expanded? outliner -- )
|
||||||
>r [ <guide-gadget> ] [ f ] if r> @left grid-add ;
|
>r [ <guide-gadget> ] [ <gadget> ] if r> @left grid-add ;
|
||||||
|
|
||||||
: set-outliner-expanded? ( expanded? outliner -- )
|
: set-outliner-expanded? ( expanded? outliner -- )
|
||||||
#! Call the expander quotation if expanding.
|
#! Call the expander quotation if expanding.
|
||||||
|
|
|
@ -5,7 +5,7 @@ DEFER: call-listener
|
||||||
|
|
||||||
IN: gadgets-presentations
|
IN: gadgets-presentations
|
||||||
USING: arrays definitions gadgets gadgets-borders
|
USING: arrays definitions gadgets gadgets-borders
|
||||||
gadgets-buttons gadgets-grids gadgets-labels gadgets-outliner
|
gadgets-buttons gadgets-labels gadgets-outliner
|
||||||
gadgets-panes gadgets-paragraphs gadgets-theme
|
gadgets-panes gadgets-paragraphs gadgets-theme
|
||||||
generic hashtables tools io kernel prettyprint sequences strings
|
generic hashtables tools io kernel prettyprint sequences strings
|
||||||
styles words help math models namespaces ;
|
styles words help math models namespaces ;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-scrolling
|
IN: gadgets-scrolling
|
||||||
USING: arrays gadgets gadgets-frames gadgets-theme
|
USING: arrays gadgets gadgets-theme gadgets-viewports generic
|
||||||
gadgets-viewports generic kernel math namespaces sequences ;
|
kernel math namespaces sequences ;
|
||||||
|
|
||||||
! A scroller combines a viewport with two x and y sliders.
|
! A scroller combines a viewport with two x and y sliders.
|
||||||
! The follows slot is a boolean, if true scroller will scroll
|
! The follows slot is a boolean, if true scroller will scroll
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-scrolling
|
IN: gadgets-scrolling
|
||||||
USING: arrays gadgets gadgets-buttons gadgets-frames
|
USING: arrays gadgets gadgets-buttons
|
||||||
gadgets-grids gadgets-theme generic kernel math namespaces
|
gadgets-theme generic kernel math namespaces
|
||||||
sequences styles threads vectors ;
|
sequences styles threads vectors ;
|
||||||
|
|
||||||
! An elevator has a thumb that may be moved up and down.
|
! An elevator has a thumb that may be moved up and down.
|
||||||
|
|
|
@ -152,17 +152,19 @@ M: pack pref-dim*
|
||||||
M: pack layout*
|
M: pack layout*
|
||||||
dup gadget-children pref-dims pack-layout ;
|
dup gadget-children pref-dims pack-layout ;
|
||||||
|
|
||||||
: fast-children-on ( dim axis gadgets -- i )
|
: (fast-children-on) ( dim axis gadgets -- i )
|
||||||
swapd [ rect-loc v- over v. ] binsearch nip ;
|
swapd [ rect-loc v- over v. ] binsearch nip ;
|
||||||
|
|
||||||
M: pack children-on
|
: fast-children-on ( rect axis children -- from to )
|
||||||
dup gadget-orientation swap gadget-children [
|
3dup
|
||||||
3dup
|
>r >r dup rect-loc swap rect-dim v+ origin get v-
|
||||||
>r >r dup rect-loc swap rect-dim v+ origin get v-
|
r> r> (fast-children-on) 1+
|
||||||
r> r> fast-children-on 1+
|
>r
|
||||||
>r
|
>r >r rect-loc origin get v-
|
||||||
>r >r rect-loc origin get v-
|
r> r> (fast-children-on)
|
||||||
r> r> fast-children-on
|
0 max
|
||||||
0 max
|
r> ;
|
||||||
r>
|
|
||||||
] keep <slice> ;
|
M: pack children-on ( rect gadget -- seq )
|
||||||
|
dup gadget-orientation swap gadget-children
|
||||||
|
[ fast-children-on ] keep <slice> ;
|
||||||
|
|
|
@ -2,9 +2,8 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-text
|
IN: gadgets-text
|
||||||
USING: arrays errors freetype gadgets gadgets-borders
|
USING: arrays errors freetype gadgets gadgets-borders
|
||||||
gadgets-buttons gadgets-frames gadgets-labels
|
gadgets-buttons gadgets-labels gadgets-scrolling gadgets-theme
|
||||||
gadgets-scrolling gadgets-theme io kernel math models namespaces
|
io kernel math models namespaces opengl sequences strings styles ;
|
||||||
opengl sequences strings styles ;
|
|
||||||
|
|
||||||
TUPLE: editor
|
TUPLE: editor
|
||||||
font color caret-color selection-color
|
font color caret-color selection-color
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
USING: arrays sequences kernel gadgets-panes definitions
|
USING: arrays sequences kernel gadgets-panes definitions
|
||||||
prettyprint gadgets-theme gadgets-borders gadgets
|
prettyprint gadgets-theme gadgets-borders gadgets
|
||||||
generic gadgets-scrolling math io words models styles
|
generic gadgets-scrolling math io words models styles
|
||||||
namespaces gadgets-tracks gadgets-presentations gadgets-grids
|
namespaces gadgets-tracks gadgets-presentations
|
||||||
gadgets-workspace gadgets-frames help gadgets-buttons
|
gadgets-workspace help gadgets-buttons
|
||||||
gadgets-search tools ;
|
gadgets-search tools ;
|
||||||
IN: gadgets-browser
|
IN: gadgets-browser
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ USING: namespaces arrays sequences io inference math kernel
|
||||||
generic prettyprint words gadgets opengl gadgets-panes
|
generic prettyprint words gadgets opengl gadgets-panes
|
||||||
gadgets-labels gadgets-theme gadgets-presentations
|
gadgets-labels gadgets-theme gadgets-presentations
|
||||||
gadgets-buttons gadgets-borders gadgets-scrolling
|
gadgets-buttons gadgets-borders gadgets-scrolling
|
||||||
gadgets-frames gadgets-workspace optimizer models help ;
|
gadgets-workspace optimizer models help ;
|
||||||
|
|
||||||
GENERIC: node>gadget* ( height node -- gadget )
|
GENERIC: node>gadget* ( height node -- gadget )
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-help
|
IN: gadgets-help
|
||||||
USING: gadgets gadgets-borders gadgets-buttons gadgets-frames
|
USING: gadgets gadgets-borders gadgets-buttons
|
||||||
gadgets-panes gadgets-search gadgets-scrolling help kernel
|
gadgets-panes gadgets-search gadgets-scrolling help kernel
|
||||||
models namespaces sequences gadgets-tracks gadgets-workspace ;
|
models namespaces sequences gadgets-tracks gadgets-workspace ;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-listener
|
IN: gadgets-listener
|
||||||
USING: compiler arrays gadgets gadgets-frames gadgets-labels
|
USING: compiler arrays gadgets gadgets-labels
|
||||||
gadgets-panes gadgets-scrolling gadgets-text gadgets-lists
|
gadgets-panes gadgets-scrolling gadgets-text gadgets-lists
|
||||||
gadgets-search gadgets-theme gadgets-tracks gadgets-workspace
|
gadgets-search gadgets-theme gadgets-tracks gadgets-workspace
|
||||||
generic hashtables tools io kernel listener math models
|
generic hashtables tools io kernel listener math models
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-search
|
IN: gadgets-search
|
||||||
USING: arrays gadgets gadgets-frames gadgets-labels
|
USING: arrays gadgets gadgets-labels gadgets-panes
|
||||||
gadgets-panes gadgets-scrolling gadgets-text gadgets-theme
|
gadgets-scrolling gadgets-text gadgets-theme
|
||||||
generic help tools kernel models sequences words
|
generic help tools kernel models sequences words
|
||||||
gadgets-borders gadgets-lists namespaces parser hashtables io
|
gadgets-borders gadgets-lists namespaces parser hashtables io
|
||||||
completion styles ;
|
completion styles ;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-walker
|
IN: gadgets-walker
|
||||||
USING: arrays errors gadgets gadgets-buttons gadgets-frames
|
USING: arrays errors gadgets gadgets-buttons
|
||||||
gadgets-listener gadgets-panes gadgets-scrolling gadgets-text
|
gadgets-listener gadgets-panes gadgets-scrolling gadgets-text
|
||||||
gadgets-tracks gadgets-workspace generic hashtables tools
|
gadgets-tracks gadgets-workspace generic hashtables tools
|
||||||
interpreter io kernel kernel-internals listener math models
|
interpreter io kernel kernel-internals listener math models
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets-workspace
|
IN: gadgets-workspace
|
||||||
USING: help arrays compiler gadgets gadgets-books
|
USING: help arrays compiler gadgets gadgets-books
|
||||||
gadgets-browser gadgets-buttons
|
gadgets-browser gadgets-buttons gadgets-dataflow gadgets-help
|
||||||
gadgets-dataflow gadgets-frames gadgets-grids gadgets-help
|
|
||||||
gadgets-listener gadgets-presentations gadgets-walker
|
gadgets-listener gadgets-presentations gadgets-walker
|
||||||
gadgets-workspace generic kernel math modules scratchpad
|
gadgets-workspace generic kernel math modules scratchpad
|
||||||
sequences syntax words io namespaces hashtables
|
sequences syntax words io namespaces hashtables
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: arrays errors gadgets gadgets-buttons gadgets-frames
|
USING: arrays errors gadgets gadgets-buttons
|
||||||
gadgets-grids gadgets-labels gadgets-panes gadgets-presentations
|
gadgets-labels gadgets-panes gadgets-presentations
|
||||||
gadgets-scrolling gadgets-theme gadgets-viewports generic
|
gadgets-scrolling gadgets-theme gadgets-viewports generic
|
||||||
hashtables io kernel math models namespaces prettyprint queues
|
hashtables io kernel math models namespaces prettyprint queues
|
||||||
sequences test threads help sequences words ;
|
sequences test threads help sequences words ;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: arrays errors freetype gadgets-frames generic hashtables
|
USING: arrays errors freetype generic hashtables
|
||||||
kernel math models namespaces opengl sequences ;
|
kernel math models namespaces opengl sequences ;
|
||||||
|
|
||||||
! The world gadget is the top level gadget that all (visible)
|
! The world gadget is the top level gadget that all (visible)
|
||||||
|
|
Loading…
Reference in New Issue