1 ! Copyright (C) 2006, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs fry kernel locals math math.vectors
4 opengl sequences ui.gadgets ui.gadgets.grids.private ui.pens ;
5 IN: ui.gadgets.grid-lines
7 TUPLE: grid-lines color ;
9 C: <grid-lines> grid-lines
13 :: (compute-grid-lines) ( grid n ns orientation -- seq )
15 ns n suffix gap orientation v. '[ _ - orientation n*v ] map
16 dup grid dim>> gap v- orientation reverse [ v* ] keep '[ _ _ v+ v+ ] map
17 [ [ gap [ 2/ ] map v+ ] map ] bi@ zip ;
19 : compute-grid-lines ( grid -- lines )
21 [ accumulate-cell-xs horizontal (compute-grid-lines) ]
22 [ accumulate-cell-ys vertical (compute-grid-lines) ]
27 M: grid-lines draw-boundary
28 color>> gl-color compute-grid-lines [ first2 gl-line ] each ;