ui.gadgets.line-support: common code for gadgets that display a vertical list of lines
parent
06eb14573b
commit
f4ae56a85b
|
@ -0,0 +1 @@
|
|||
Slava Pestov
|
|
@ -0,0 +1,4 @@
|
|||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: tools.test ui.gadgets.line-support ;
|
||||
IN: ui.gadgets.line-support.tests
|
|
@ -0,0 +1,50 @@
|
|||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors arrays combinators fry kernel math math.order
|
||||
math.ranges math.vectors namespaces opengl sequences ui.gadgets
|
||||
ui.render ui.text ;
|
||||
IN: ui.gadgets.line-support
|
||||
|
||||
! Some code shared by table and editor gadgets
|
||||
SLOT: font
|
||||
|
||||
: line-height ( gadget -- n )
|
||||
font>> "" text-height ;
|
||||
|
||||
: y>line ( y gadget -- n )
|
||||
line-height /i ;
|
||||
|
||||
: line>y ( n gadget -- y )
|
||||
line-height * ;
|
||||
|
||||
: validate-line ( m gadget -- n )
|
||||
control-value [ drop f ] [ length 1- min 0 max ] if-empty ;
|
||||
|
||||
: visible-line ( gadget quot -- n )
|
||||
'[
|
||||
[ clip get @ origin get [ second ] bi@ - ] dip
|
||||
y>line
|
||||
] keep validate-line ; inline
|
||||
|
||||
: first-visible-line ( gadget -- n )
|
||||
[ loc>> ] visible-line ;
|
||||
|
||||
: last-visible-line ( gadget -- n )
|
||||
[ [ loc>> ] [ dim>> ] bi v+ ] visible-line 1+ ;
|
||||
|
||||
: each-slice-index ( from to seq quot -- )
|
||||
[ [ <slice> ] [ drop [a,b) ] 3bi ] dip 2each ; inline
|
||||
|
||||
GENERIC: draw-line ( line index gadget -- )
|
||||
|
||||
: draw-lines ( gadget -- )
|
||||
{
|
||||
[ first-visible-line ]
|
||||
[ last-visible-line ]
|
||||
[ control-value ]
|
||||
[ line-height ]
|
||||
[ ]
|
||||
} cleave '[
|
||||
0 over _ * 2array
|
||||
[ _ draw-line ] with-translation
|
||||
] each-slice-index ;
|
|
@ -0,0 +1 @@
|
|||
Code shared between table and editor gadgets
|
Loading…
Reference in New Issue