Le 03/04/2016 23:31, Igor Stasenko a écrit :


On 4 April 2016 at 00:18, Thierry Goubier <[email protected]
<mailto:[email protected]>> wrote:


             The scroll is defined in delta in pixels. So, scrolling
        single line
             - you scroll by top or bottom line height (depending on
        direction).


    You wrote a dedicated scrollbar? The standard one is [0, 1.0] with a
    constant step whatever the direction so it's hard to make the
    difference in height between the top line or the bottom line.


Yes. I, of course did not made it dedicated only for text. But i guess
text is only single user of it so far.

Ok.

    But it could be worth subclassing ScrollBar for that purpose.


Unfortunately, my cognitive capacity was not that high at that moment,
in order to understand how ScrollBar is working and what needs to be
done in order to adapt it to my text model. Or maybe because when i was
looking at its implementation the only thing i was thinking is not to
run screaming in terror.

:)

Pick one explanation, that suits you best :)

I'm using the same explanation when I see some widgets. I wanted to use a button for expand/unexpand in a tree, looked at the variants of ButtonMorphs (and three state button morphs and...), got a headache and just took a normal Morph with a custom handler :(

        Or maybe i lying here.. i could be 'scroll up/down' until
        next/previous
        line are fully visible in layout. (There's of course an edge
        case, when
        line height is bigger than viewport height)


    That edge case is complex to handle...

             Scrolling page - you scroll by using height of viewport. No
        need to
             count lines of text.
             And so, i scan text forward or backward until new layout fully
             covers part of text after such scrolling. And after it deleting
             portion of layout that became invisible due to scrolling.
             The layout has anchor point in text - a position. And then
             dimensions (width and height) and offset (a delta horizontal or
             vertical relative to perfect condition when a position in text
             corresponds to 0,0 point in layout )


    Understood for the scan forward or backward.

             The only place where i needed to measure text size was to
             positioning a scrollbar knob to represent its size & vertical
             position approximately close to where you in text and text
        size. And
             i really don't like that, since it requires scanning whole
        text..
             But well... tradeoffs.. It win anyways, since i succeeded
        to avoid
             most operations to be bound to text size. And only few
        left, that
             you cannot avoid.


    What do you scan in the text? Do you compute a complete pixel height
    of the text or some approximation?


Well, for scrollbars it is just counting lines of text. For layout , it
is of course, fully precise text layout & kerning yadda yadda.

Understood. Thanks again for all the explanations.

Thierry

Reply via email to