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