DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=29124>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=29124

New line breaking algorithm





------- Additional Comments From [EMAIL PROTECTED]  2004-08-17 13:51 -------
Oops, sorry again, Simon!

In the code I used when creating the last patch there was an error affecting 
the TextLayoutManager.getChangedKnuthElements() method: two missing "break" 
inside a switch.
Due to this error, the sequence of elements generated for each space (when 
text-align is center, start or end) is wrong, and some text "disappears" (I 
even got IndexOutOfBounds exceptions).
Inserting these breaks is enough to make everything work:

    ...
    // ai refers to a space
    switch (alignment) {
        case CENTER : ...
                      iReturnedIndex ++;
                      break;             /* this was missing */
        case START  : // fall through
        case END    : ...
                      iReturnedIndex ++;
                      break;             /* this was missing */
        case JUSTIFY: ...
    }
    ...

As you can see, in the last patch I changed the getNextKnuthElements() and 
getChangedKnuthElements() return type, so they now return a sequence of 
elements instead of a single one.
This maybe reduces similarities between getNextKnuthElements() and 
getNextBreakPoss(), but I think it makes the code simpler and easier to 
understand. Maybe it would be even better to make them return the whole 
sequence, so that these methods are called once per LM.

Now I'm working on the newly-created LMs, so next patch (which I think will be 
ready tomorrow) will apply to the latest code version and will include Finn 
Bock's changes.

Regards,
    Luca

Reply via email to