You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2007/01/10 15:09:06 UTC
DO NOT REPLY [Bug 40143] - HSLF: RichTextRun returns wrong style attributes
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=40143>.
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=40143
------- Additional Comments From yegor@dinom.ru 2007-01-10 06:09 -------
Fixed.
There are three bugs I had to fix:
(1) Bug in StyleTextPropAtom.
The rule is that sum(length) for paragraph and character style runs must be
text.length + 1.
It was true only for character styles. I had to add the symmetrical code to the
paragraph block.
See the change in StyleTextPropAtom.setParentTextSize
I added a warning if this rule is broken and it helped me to discover two more bugs:
(2) The data setup for data_a and data_c in TestStyleTextPropAtom was wrong.
What we had for data_a:
/** From a real file: a paragraph with 4 different styles */
private byte[] data_a = new byte[] {
0, 0, 0xA1-256, 0x0F, 0x2A, 0, 0, 0,
0x36, 00, 00, 00, // paragraph is 54 long
00, 00, // (paragraph reserved field)
00, 00, 00, 00, // it doesn't have any styles
0x15, 00, 00, 00, // first char run is 21 long
00, 00, 00, 00, // it doesn't have any styles
0x11, 00, 00, 00, // second char run is 17 long
00, 00, 0x04, 00, // font.color only
00, 00, 00, 0x05, // blue
0x10, 00, 00, 00, // third char run is 16 long
00, 00, 0x04, 00, // font.color only
0xFF-256, 0x33, 00, 0xFE-256 // red
};
private int data_a_text_len = 54;
The value passed to StyleTextPropAtom.setParentTextSize is the text length.
If we read the corresponding style record we should get text.length + 1 chars
covered.
It means that actual text length is 54-1. The same stuff is with data_c. The
text length is 123-1.
(3) When we construct a new style record we need to pass text.length+1 to the
constructor.
See the change in TextRun.ensureStyleAtomPresent.
With these changes everything works fine.
Regards,
Yegor
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/