nick 2005/09/04 13:09:11
Modified: src/documentation/content/xdocs/hslf ppt-file-format.xml
Log:
NCB: Updated documentation on StyleTextPropAtom
Revision Changes Path
1.3 +76 -41
jakarta-poi/src/documentation/content/xdocs/hslf/ppt-file-format.xml
Index: ppt-file-format.xml
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/documentation/content/xdocs/hslf/ppt-file-format.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ppt-file-format.xml 7 Aug 2005 15:04:46 -0000 1.2
+++ ppt-file-format.xml 4 Sep 2005 20:09:11 -0000 1.3
@@ -219,57 +219,92 @@
be one of these records.
</p>
<p>
- Firstly, this contains the number of characters it
applies to,
- stored in a 2 byte little endian number.
- Normally, this will be the same as the number of
characters
- in the text record. Then there are two values which
encode
- paragraph properties (alignment, text spacing etc),
both 4
- byte little endian numbers.
+ This record is made up of two lists of lists. Firstly,
+ there's a list of paragraph stylings - each made up of
the
+ number of characters it applies two, followed by the
matching
+ styling elements. Following that is the equivalent for
+ character stylings.
</p>
<p>
- Following this is one block of information for each
subsequent
- bit of text with a different styling. (If your text was
- 10 characters in blue, then 10 in red, you would have
two blocks).
- Firstly is the number of characters it applies to, or 0
if it
- applies to all remaining text. (This is a 2 byte little
endian
- number). Then there is a number (4 byte little endian)
that
- encodes if the text is bold/italic/underlined. If that
number
- was non zero, it is followed by another 4 byte number,
that
- encodes further text styling information. If it was
zero,
- then it's followed by a 2 byte number.
+ Each styling list (in either list) starts with the
number
+ of characters it applies to, stored in a 2 byte little
+ endian number. If it is a paragraph styling, it will be
+ followed by a 2 byte number (of unknown use). After
this is
+ a four byte number, which is a mask indicating which
stylings
+ will follow. You then have an entry for each of the
stylings
+ indicated in the mask. Finally, you move onto the next
set
+ of stylings.
</p>
<p>
- In the character styling block, the first number after
the
- character count indicated the bold/italic/underlined
status
- of the text. If you binary AND it with 0x00010000
(65536) and
- get that value back, it is in bold. If you binary AND
it with
- 0x00020000 (131072) and get that value back, it is in
italic.
- If you binary AND it with 0x00040000 (262144) and get
that
- value back, it is underlined.
+ Each styling has a specific mask flag to indicate its
+ presence. (The list may be found towards the top of
+ org.apache.poi.hslf.record.StyleTextPropAtom.java, and
is
+ too long to sensibly include here). For each styling
entry
+ will occur in the order of its mask value (so one with
mask
+ 1 will come first, followed by the next higest mask
value).
+ Depending on the styling, it is either made up of a 2
byte
+ or 4 byte numeric value. The meaning of the value will
+ depend on the styling (eg for font.size, it is the font
+ size in points).
+ </p>
+ <p>
+ Some stylings are actually mask stylings. For these, the
+ value will be a 4 byte number. This is then processed
as
+ mask, to indicate a number of different sub-stylings.
+ The styling for bold/italic/underline is one such
example.
</p>
<source>
hex on disk decimal description
----------- ------- -----------
+
0000 0 No options
A10F 4001 Record type is 4001
-2E00 0000 46 Length of data is 46 bytes
-5300 83 The paragraph stylings apply to 83 characters
-0000 0000 0 Paragraph stylings 1 - as per the master
-0000 0000 0 Paragraph stylings 2 - as per the master
-
-1E00 30 These character properties apply to 30
characters
-0000 0100 65536 Bold
-0000 0100 65536 ??
-1C00 28 These character properties apply to 28
characters
-0000 0200 131072 Italic
-0400 0200 131076 ??
-0000 0 These character properties apply to the
remaining characters
-0005 1900 1639680 Bold
-0000 0000 0 ??
-
-0400 4 ??
-FF33 13311 ??
-00FE 65024 ??
+8000 0000 128 Length of data is 128 bytes
+1E00 0000 30 The paragraph styling applies to 30
characters
+0000 0 Paragraph options are 0
+0018 0000 6144 0x0800=Text Alignment, 0x1000=Line Spacing
+0000 0 Text Alignment = Left
+5000 80 Line Spacing = 80
+
+1C00 0000 28 The paragraph styling applies to 28
characters
+0000 0 Paragraph options are 0
+0010 0000 4096 0x1000=Line Spacing
+5000 80 Line Spacing = 80
+
+1900 0000 25 The paragraph styling applies to 25
characters
+0000 0 Paragraph options are 0
+0018 0000 6144 0x0800=Text Alignment, 0x1000=Line Spacing
+0200 0 Text Alignment = Right
+5000 80 Line Spacing = 80
+
+6100 0000 61 The paragraph styling applies to 61
characters
+ (includes final CR)
+0000 0 Paragraph options are 0
+0018 0000 6144 0x0800=Text Alignment, 0x1000=Line Spacing
+0000 0 Text Alignment = Left
+5000 80 Line Spacing = 80
+
+1E00 0000 30 The character styling applies to 30
characters
+0100 0200 131073 0x0001=Char Props Mask, 0x20000=Font Size
+0100 1 Char Props 0x0001=Bold
+1400 20 Font Size = 20
+
+1C00 0000 28 The character styling applies to 28
characters
+0200 0600 393218 0x0002=Char Props Mask, 0x20000=Font Size,
0x40000=Font Color
+0200 2 Char Props 0x0002=Italic
+1400 20 Font Size = 20
+0000 0005 83886080 Blue
+
+1900 0000 25 The character styling applies to 25
characters
+0000 0600 393216 0x20000=Font Size, 0x40000=Font Color
+1400 20 Font Size = 20
+FF33 00FE 4261426175 Red
+
+6000 0000 96 The character styling applies to 96
characters
+0400 0300 196612 0x0004=Char Props Mask, 0x10000=Font Index,
0x20000=Font Size
+0400 4 Char Props 0x0004=Underlined
+0100 1 Font Index = 1 (2nd Font in table)
+1800 24 Font Size = 24
</source>
</section>
</body>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/