ui.gadgets.editors: add editor-constrained-dim function to editor

This function allows the calculation of dimensions with respect
to min/max-row/column values.
char-rename
masweeney 2016-08-21 18:19:03 -04:00 committed by John Benediktsson
parent 630c4d326f
commit 16381beddc
1 changed files with 31 additions and 1 deletions

View File

@ -6,7 +6,7 @@ documents.elements fry grouping kernel locals make math
math.functions math.order math.ranges math.rectangles
math.vectors models models.arrow namespaces opengl sequences
sorting splitting timers ui.baseline-alignment ui.clipboards
ui.commands ui.gadgets ui.gadgets.borders
ui.commands ui.gadgets ui.gadgets.borders strings
ui.gadgets.line-support ui.gadgets.menus ui.gadgets.scrollers
ui.theme ui.gestures ui.pens.solid ui.render ui.text
unicode ;
@ -213,6 +213,36 @@ M: editor draw-gadget*
[ draw-lines ] [ draw-caret ] bi
] with-variable ;
<PRIVATE
: row,col-dim ( font r c -- dim )
CHAR: x <string> swap
CHAR: \n <string>
append text-dim ;
: min-dim ( font editor -- dim )
[ min-rows>> [ 0 ] unless* ]
[ min-cols>> [ 0 ] unless* ] bi
row,col-dim ;
: max-dim ( font editor -- dim )
! hopefully no one goes over 5000
[ max-rows>> [ 5000 ] unless* ]
[ max-cols>> [ 5000 ] unless* ] bi
row,col-dim ;
: txt-dim ( font editor -- dim )
control-value text-dim ;
PRIVATE>
: editor-constrained-dim ( editor -- dim )
[ font>> ] keep
[ max-dim ]
[ txt-dim ]
[ min-dim ]
2tri vmax vmin { 1 0 } v+ ;
M: editor pref-dim*
! Add some space for the caret.
[ font>> ] [ control-value ] bi text-dim { 1 0 } v+ ;