View | Details | Raw Unified | Return to bug 36075
Collapse All | Expand All

(-)src/documentation/content/xdocs/hslf/ppt-file-format.xml (-10 / +81 lines)
Lines 26-32 Link Here
26
		<p>
26
		<p>
27
		Any numbers or strings stored in the records are always stored in
27
		Any numbers or strings stored in the records are always stored in
28
		Little Endian format (least important bytes first). This is the case
28
		Little Endian format (least important bytes first). This is the case
29
		no matter what platform the file was written on - be that a 
29
		no matter what platform the file was written on - be that a
30
		Little Endian or a Big Endian system.
30
		Little Endian or a Big Endian system.
31
		</p>
31
		</p>
32
		<p>
32
		<p>
Lines 36-42 Link Here
36
		records.
36
		records.
37
		</p>
37
		</p>
38
		</section>
38
		</section>
39
		
39
40
		<section><title>Record Headers</title>
40
		<section><title>Record Headers</title>
41
		<p>
41
		<p>
42
		All records, be they containers or atoms, have the same standard
42
		All records, be they containers or atoms, have the same standard
Lines 88-94 Link Here
88
		</p>
88
		</p>
89
		<p>
89
		<p>
90
		The UserEditAtom contains two byte level offsets (again as 32 bit
90
		The UserEditAtom contains two byte level offsets (again as 32 bit
91
		little endian numbers). At byte 12 is the offset to the 
91
		little endian numbers). At byte 12 is the offset to the
92
		PersistPtrIncrementalBlock associated with this UserEditAtom
92
		PersistPtrIncrementalBlock associated with this UserEditAtom
93
		(each UserEditAtom has one and only one PersistPtrIncrementalBlock).
93
		(each UserEditAtom has one and only one PersistPtrIncrementalBlock).
94
		At byte 8, there's the offset to the previous UserEditAtom. If this
94
		At byte 8, there's the offset to the previous UserEditAtom. If this
Lines 96-102 Link Here
96
		</p>
96
		</p>
97
		<p>
97
		<p>
98
		Every time you do a non full save in PowerPoint, it tacks on another
98
		Every time you do a non full save in PowerPoint, it tacks on another
99
		UserEditAtom and another PersistPtrIncrementalBlock. The 
99
		UserEditAtom and another PersistPtrIncrementalBlock. The
100
		CurrentUserAtom is updated to point to this new UserEditAtom, and the
100
		CurrentUserAtom is updated to point to this new UserEditAtom, and the
101
		new UserEditAtom points back to the previous UserEditAtom. You then
101
		new UserEditAtom points back to the previous UserEditAtom. You then
102
		end up with a chain, starting from the CurrentUserAtom, linking
102
		end up with a chain, starting from the CurrentUserAtom, linking
Lines 139-145 Link Here
139
		The PersistPtrIncrementalBlock contains byte offsets to all the
139
		The PersistPtrIncrementalBlock contains byte offsets to all the
140
		Slides, Notes, Documents and MasterSlides in the file. The first
140
		Slides, Notes, Documents and MasterSlides in the file. The first
141
		PersistPtrIncrementalBlock will point to all the ones that
141
		PersistPtrIncrementalBlock will point to all the ones that
142
		were present the first time the file was saved. Subsequent 
142
		were present the first time the file was saved. Subsequent
143
		PersistPtrIncrementalBlocks will contain pointers to all the ones
143
		PersistPtrIncrementalBlocks will contain pointers to all the ones
144
		that were changed in that edit. To find the offset to a given
144
		that were changed in that edit. To find the offset to a given
145
		sheet in the latest version, then start with the most recent
145
		sheet in the latest version, then start with the most recent
Lines 155-161 Link Here
155
		into memory, the lower 20 bits contain the starting number for the
155
		into memory, the lower 20 bits contain the starting number for the
156
		sequence of sheets to be described. The higher 12 bits contain
156
		sequence of sheets to be described. The higher 12 bits contain
157
		the count of the number of sheets described. Following that is
157
		the count of the number of sheets described. Following that is
158
		one 32 bit little endian integer for each sheet in the sequence, 
158
		one 32 bit little endian integer for each sheet in the sequence,
159
		the value being the offset to that sheet. If there is any data
159
		the value being the offset to that sheet. If there is any data
160
		left after parsing a block, then it corresponds to the next block.
160
		left after parsing a block, then it corresponds to the next block.
161
		</p>
161
		</p>
Lines 178-183 Link Here
178
</source>
178
</source>
179
		</section>
179
		</section>
180
180
181
		<section>
182
		<title>Fonts in PowerPoint</title>
183
		PowerPoint stores information about used fonts in FontEntityAtoms wich live inside Document.Environment.FontCollection.
184
		For every font used, a FontEntityAtom must exist for that font. There is always at least one FontEntityAtom
185
		in Document.Environment.FontCollection which describes the default font.
186
187
		<title>FontEntityAtom</title>
188
		<p>The instance field of the record header contains the zero based index of the font.
189
		It is used to refer to the font in StyleTextPropAtoms.
190
		The length of FontEntityAtom is always 68 bytes.
191
		</p>
192
193
		<p>Record Structure</p>
194
		<table>
195
		 <tr>
196
		 <td>Offset</td>
197
		 <td>Type</td>
198
		 <td>Name</td>
199
		 <td>Contents</td>
200
		 </tr>
201
202
		 <tr>
203
		   <td>0</td>
204
		   <td>String</td>
205
		   <td>font name</td>
206
		   <td> A null-terminated string that specifies the typeface name of the font in UTF-16LE encoding.
207
		     The length of this string must not exceed 32 characters, including the null terminator.
208
		   </td>
209
		 </tr>
210
211
		 <tr>
212
		   <td>64</td>
213
		   <td>byte</td>
214
		   <td>output precision</td>
215
		   <td> The bitmask which specifies the output precision. It defines how closely
216
		     the output must match the requested font's height, width, character orientation,
217
		     escapement, pitch, and font type. For more information, consult the Windows API (LOGFONT) structure.
218
		   </td>
219
		 </tr>
220
221
		 <tr>
222
		   <td>65</td>
223
		   <td>byte</td>
224
		   <td>clipping precision</td>
225
		   <td> The bitmask which specifies the clipping precision. The clipping precision defines how to
226
		   clip characters that are partially outside the clipping region.
227
		   For more information, consult the Windows API (LOGFONT) structure.
228
		   </td>
229
		 </tr>
230
231
		 <tr>
232
		   <td>66</td>
233
		   <td>byte</td>
234
		   <td>output quality</td>
235
		   <td> The bitmask which specifies the output quality. The output quality defines how carefully
236
		   the graphics device interface (GDI) must attempt to match the logical-font attributes to those of an actual physical font.
237
		   For more information, consult the Windows API (LOGFONT) structure.
238
		   </td>
239
		 </tr>
240
241
		 <tr>
242
		   <td>67</td>
243
		   <td>byte</td>
244
		   <td>pitch and family</td>
245
		   <td>The bitmask which specifies the pitch and family of the font.
246
  		   For more information, consult the Windows API (LOGFONT) structure.
247
 		   </td>
248
		 </tr>
249
		</table>
250
		</section>
251
181
		<section><title>Paragraph and Text Styling</title>
252
		<section><title>Paragraph and Text Styling</title>
182
		<p>
253
		<p>
183
			There are quite a number of records that affect the styling
254
			There are quite a number of records that affect the styling
Lines 196-204 Link Here
196
		</p>
267
		</p>
197
		<p>
268
		<p>
198
			Normally, powerpoint will have one text record (TextBytesAtom
269
			Normally, powerpoint will have one text record (TextBytesAtom
199
			or TextCharsAtom) for every paragraph, with a preceeding 
270
			or TextCharsAtom) for every paragraph, with a preceeding
200
			TextHeaderAtom to describe what sort of paragraph it is.
271
			TextHeaderAtom to describe what sort of paragraph it is.
201
			If any of the stylings differ from the master's, then a 
272
			If any of the stylings differ from the master's, then a
202
			StyleTextPropAtom will follow the text record. This contains
273
			StyleTextPropAtom will follow the text record. This contains
203
			the paragraph style information, and the styling information
274
			the paragraph style information, and the styling information
204
			for each section of the text which has a different style.
275
			for each section of the text which has a different style.
Lines 206-212 Link Here
206
		</p>
277
		</p>
207
		<p>
278
		<p>
208
			For every font used, a FontEntityAtom must exist for that font.
279
			For every font used, a FontEntityAtom must exist for that font.
209
			The FontEntityAtoms live inside a FontCollection record, and 
280
			The FontEntityAtoms live inside a FontCollection record, and
210
			there's one	of those inside Environment record inside the
281
			there's one	of those inside Environment record inside the
211
			Document record. <em>(More on Fonts to be discovered)</em>
282
			Document record. <em>(More on Fonts to be discovered)</em>
212
		</p>
283
		</p>
Lines 273-276 Link Here
273
</source>
344
</source>
274
		</section>
345
		</section>
275
	</body>
346
	</body>
276
</document>
347
</document>

Return to bug 36075