Working on baseline alignment

db4
Slava Pestov 2009-02-02 13:45:06 -06:00
parent a4362512f7
commit 193be29964
7 changed files with 12 additions and 12 deletions

View File

@ -36,7 +36,7 @@ M: label pref-dim*
M: label baseline
>label< dup string? [ first ] unless
line-metrics ascent>> ceiling ;
line-metrics ascent>> round ;
M: label draw-gadget*
>label< origin get draw-text ;

View File

@ -5,8 +5,6 @@ math.vectors math.order math.geometry.rect namespaces accessors
fry combinators arrays ;
IN: ui.gadgets.packs
SYMBOL: +baseline+
TUPLE: pack < gadget
{ align initial: 0 } { fill initial: 0 } { gap initial: { 0 0 } } ;
@ -28,10 +26,7 @@ TUPLE: pack < gadget
[ align>> ] [ dim>> ] bi '[ [ _ _ ] dip v- n*v ] map ;
: baseline-aligned-locs ( pack -- seq )
children>> [ { } ] [
[ baseline ] map [ supremum ] keep
[ - 0 swap 2array ] with map
] if-empty ;
children>> baseline-align [ 0 swap 2array ] map ;
: aligned-locs ( sizes pack -- seq )
dup align>> +baseline+ eq?

View File

@ -26,6 +26,6 @@ INSTANCE: fake-break word-break
[ { 0 0 } ] [ "a" get loc>> ] unit-test
[ { 45 0 } ] [ "b" get loc>> ] unit-test
[ { 45 15 } ] [ "b" get loc>> ] unit-test
[ { 0 30 } ] [ "c" get loc>> ] unit-test

View File

@ -57,7 +57,11 @@ M: paragraph pref-dim*
[ key>> ] 2dip 2array >>loc prefer ;
: layout-line ( wrapped-line y -- )
[ dup word-x-coordinates ] dip '[ _ layout-word ] 2each ;
[
[ ]
[ word-x-coordinates ]
[ [ key>> ] map baseline-align ] tri
] dip '[ _ + layout-word ] 3each ;
M: paragraph layout*
wrap-paragraph dup line-y-coordinates

View File

@ -18,9 +18,9 @@ TUPLE: search-field < track field ;
: <search-field> ( model -- gadget )
horizontal search-field new-track
{ 5 5 } >>gap
"Search:" <label> f track-add
+baseline+ >>align
swap <model-field> 10 >>min-width >>field
dup field>> 1 track-add
dup field>> "Search:" label-on-left 1 track-add
dup <clear-button> f track-add ;
TUPLE: search-table < track table field ;

View File

@ -30,7 +30,7 @@ TUPLE: browser-gadget < tool pane scroller search-field ;
: <browser-toolbar> ( browser -- toolbar )
<shelf>
+baseline+ >>align
1/2 >>align
{ 5 5 } >>gap
over <toolbar> add-gadget
swap search-field>> "Search:" label-on-left add-gadget ;

View File

@ -102,6 +102,7 @@ M: method-renderer row-value drop first ;
: <profiler-tool-bar> ( profiler -- gadget )
<shelf>
+baseline+ >>align
{ 5 5 } >>gap
over <toolbar> add-gadget
"Sort by:" <label> add-gadget