ui.gadgets.grid-lines: make it work with non-zero grid gap

db4
Slava Pestov 2009-02-05 04:52:38 -06:00
parent 64bb5b45c4
commit 38ed0f477a
2 changed files with 23 additions and 14 deletions

View File

@ -1,9 +1,6 @@
IN: ui.gadgets.grid-lines.tests
USING: tools.test ui.gadgets.grid-lines ui.gadgets.grid-lines.tests colors ;
[ { 1 3 5 7 9 } ] [
8 { 0 2 4 6 } horizontal { 2 2 } grid-line-offsets
] unit-test
USING: tools.test ui.gadgets ui.gadgets.grid-lines ui.gadgets.grid-lines.private
ui.gadgets.grids.private accessors arrays ui.gadgets.grids sorting kernel ;
: 100x100 ( -- gadget ) <gadget> { 100 100 } >>dim ;
@ -22,6 +19,22 @@ USING: tools.test ui.gadgets.grid-lines ui.gadgets.grid-lines.tests colors ;
compute-grid-lines natural-sort
] unit-test
[
{
{ { 5 5 } { 5 115 } }
{ { 5 5 } { 115 5 } }
{ { 5 115 } { 115 115 } }
{ { 115 5 } { 115 115 } }
}
] [
100x100 1array
1array
<grid>
{ 10 10 } >>gap
dup prefer
compute-grid-lines natural-sort
] unit-test
[
{
{ { 0 0 } { 0 200 } }

View File

@ -3,7 +3,7 @@
USING: kernel accessors math namespaces opengl opengl.gl
sequences math.vectors ui.gadgets ui.gadgets.grids
ui.gadgets.grids.private ui.render math.rectangles
fry locals arrays ;
fry locals arrays assocs ;
IN: ui.gadgets.grid-lines
TUPLE: grid-lines color ;
@ -12,15 +12,11 @@ C: <grid-lines> grid-lines
<PRIVATE
: grid-line-offsets ( n ns orientation gap -- seq )
[ swap suffix ] [ v. 2/ ] 2bi* '[ _ + ] map ;
:: (compute-grid-lines) ( grid n ns orientation -- seq )
n ns orientation grid gap>> grid-line-offsets [
[ orientation n*v ]
[ dup 2array grid dim>> swap orientation set-axis ]
bi 2array
] map ;
grid gap>> :> gap
ns n suffix gap orientation v. '[ _ - orientation n*v ] map
dup grid dim>> gap v- orientation reverse v* '[ _ v+ ] map
[ [ gap [ 2/ ] map v+ ] map ] bi@ zip ;
: compute-grid-lines ( grid -- lines )
dup <grid-layout>