From 38ed0f477ae3b4a01624e7da4c2726bd344d14d3 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 5 Feb 2009 04:52:38 -0600 Subject: [PATCH] ui.gadgets.grid-lines: make it work with non-zero grid gap --- .../grid-lines/grid-lines-tests.factor | 23 +++++++++++++++---- basis/ui/gadgets/grid-lines/grid-lines.factor | 14 ++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/basis/ui/gadgets/grid-lines/grid-lines-tests.factor b/basis/ui/gadgets/grid-lines/grid-lines-tests.factor index e61cc7606f..55feed04df 100644 --- a/basis/ui/gadgets/grid-lines/grid-lines-tests.factor +++ b/basis/ui/gadgets/grid-lines/grid-lines-tests.factor @@ -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 ) { 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 + + { 10 10 } >>gap + dup prefer + compute-grid-lines natural-sort +] unit-test + [ { { { 0 0 } { 0 200 } } diff --git a/basis/ui/gadgets/grid-lines/grid-lines.factor b/basis/ui/gadgets/grid-lines/grid-lines.factor index 297a8ce554..3fbcad8a02 100755 --- a/basis/ui/gadgets/grid-lines/grid-lines.factor +++ b/basis/ui/gadgets/grid-lines/grid-lines.factor @@ -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-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