1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #include "precompiled_filter.hxx"
25 
26 #include <filter/msfilter/dffpropset.hxx>
27 #include <rtl/ustrbuf.hxx>
28 
29 static const DffPropSetEntry mso_PropSetDefaults[] = {
30 
31 // 0
32 { { false, false, false, false }, 0, 0 },
33 { { false, false, false, false }, 0, 0 },
34 { { false, false, false, false }, 0, 0 },
35 { { false, false, false, false }, 0, 0 },
36 { { false, false, false, false }, 0, 0 },
37 { { false, false, false, false }, 0, 0 },
38 { { false, false, false, false }, 0, 0 },
39 { { false, false, false, false }, 0, 0 },
40 { { false, false, false, false }, 0, 0 },
41 { { false, false, false, false }, 0, 0 },
42 { { false, false, false, false }, 0, 0 },
43 { { false, false, false, false }, 0, 0 },
44 { { false, false, false, false }, 0, 0 },
45 { { false, false, false, false }, 0, 0 },
46 { { false, false, false, false }, 0, 0 },
47 { { false, false, false, false }, 0, 0 },
48 { { false, false, false, false }, 0, 0 },
49 { { false, false, false, false }, 0, 0 },
50 { { false, false, false, false }, 0, 0 },
51 { { false, false, false, false }, 0, 0 },
52 { { false, false, false, false }, 0, 0 },
53 { { false, false, false, false }, 0, 0 },
54 { { false, false, false, false }, 0, 0 },
55 { { false, false, false, false }, 0, 0 },
56 { { false, false, false, false }, 0, 0 },
57 { { false, false, false, false }, 0, 0 },
58 { { false, false, false, false }, 0, 0 },
59 { { false, false, false, false }, 0, 0 },
60 { { false, false, false, false }, 0, 0 },
61 { { false, false, false, false }, 0, 0 },
62 { { false, false, false, false }, 0, 0 },
63 { { false, false, false, false }, 0, 0 },
64 { { false, false, false, false }, 0, 0 },
65 { { false, false, false, false }, 0, 0 },
66 { { false, false, false, false }, 0, 0 },
67 { { false, false, false, false }, 0, 0 },
68 { { false, false, false, false }, 0, 0 },
69 { { false, false, false, false }, 0, 0 },
70 { { false, false, false, false }, 0, 0 },
71 { { false, false, false, false }, 0, 0 },
72 { { false, false, false, false }, 0, 0 },
73 { { false, false, false, false }, 0, 0 },
74 { { false, false, false, false }, 0, 0 },
75 { { false, false, false, false }, 0, 0 },
76 { { false, false, false, false }, 0, 0 },
77 { { false, false, false, false }, 0, 0 },
78 { { false, false, false, false }, 0, 0 },
79 { { false, false, false, false }, 0, 0 },
80 { { false, false, false, false }, 0, 0 },
81 { { false, false, false, false }, 0, 0 },
82 { { false, false, false, false }, 0, 0 },
83 { { false, false, false, false }, 0, 0 },
84 { { false, false, false, false }, 0, 0 },
85 { { false, false, false, false }, 0, 0 },
86 { { false, false, false, false }, 0, 0 },
87 { { false, false, false, false }, 0, 0 },
88 { { false, false, false, false }, 0, 0 },
89 { { false, false, false, false }, 0, 0 },
90 { { false, false, false, false }, 0, 0 },
91 { { false, false, false, false }, 0, 0 },
92 { { false, false, false, false }, 0, 0 },
93 { { false, false, false, false }, 0, 0 },
94 { { false, false, false, false }, 0, 0 },
95 { { false, false, false, false }, 0, 0 },
96 
97 // 64
98 { { false, false, false, false }, 0, 0 },
99 { { false, false, false, false }, 0, 0 },
100 { { false, false, false, false }, 0, 0 },
101 { { false, false, false, false }, 0, 0 },
102 { { false, false, false, false }, 0, 0 },
103 { { false, false, false, false }, 0, 0 },
104 { { false, false, false, false }, 0, 0 },
105 { { false, false, false, false }, 0, 0 },
106 { { false, false, false, false }, 0, 0 },
107 { { false, false, false, false }, 0, 0 },
108 { { false, false, false, false }, 0, 0 },
109 { { false, false, false, false }, 0, 0 },
110 { { false, false, false, false }, 0, 0 },
111 { { false, false, false, false }, 0, 0 },
112 { { false, false, false, false }, 0, 0 },
113 { { false, false, false, false }, 0, 0 },
114 { { false, false, false, false }, 0, 0 },
115 { { false, false, false, false }, 0, 0 },
116 { { false, false, false, false }, 0, 0 },
117 { { false, false, false, false }, 0, 0 },
118 { { false, false, false, false }, 0, 0 },
119 { { false, false, false, false }, 0, 0 },
120 { { false, false, false, false }, 0, 0 },
121 { { false, false, false, false }, 0, 0 },
122 { { false, false, false, false }, 0, 0 },
123 { { false, false, false, false }, 0, 0 },
124 { { false, false, false, false }, 0, 0 },
125 { { false, false, false, false }, 0, 0 },
126 { { false, false, false, false }, 0, 0 },
127 { { false, false, false, false }, 0, 0 },
128 { { false, false, false, false }, 0, 0 },
129 { { false, false, false, false }, 0, 0 },
130 { { false, false, false, false }, 0, 0 },
131 { { false, false, false, false }, 0, 0 },
132 { { false, false, false, false }, 0, 0 },
133 { { false, false, false, false }, 0, 0 },
134 { { false, false, false, false }, 0, 0 },
135 { { false, false, false, false }, 0, 0 },
136 { { false, false, false, false }, 0, 0 },
137 { { false, false, false, false }, 0, 0 },
138 { { false, false, false, false }, 0, 0 },
139 { { false, false, false, false }, 0, 0 },
140 { { false, false, false, false }, 0, 0 },
141 { { false, false, false, false }, 0, 0 },
142 { { false, false, false, false }, 0, 0 },
143 { { false, false, false, false }, 0, 0 },
144 { { false, false, false, false }, 0, 0 },
145 { { false, false, false, false }, 0, 0 },
146 { { false, false, false, false }, 0, 0 },
147 { { false, false, false, false }, 0, 0 },
148 { { false, false, false, false }, 0, 0 },
149 { { false, false, false, false }, 0, 0 },
150 { { false, false, false, false }, 0, 0 },
151 { { false, false, false, false }, 0, 0 },
152 { { false, false, false, false }, 0, 0 },
153 { { false, false, false, false }, 0, 0 },
154 { { false, false, false, false }, 0, 0 },
155 { { false, false, false, false }, 0, 0 },
156 { { false, false, false, false }, 0, 0 },
157 { { false, false, false, false }, 0, 0 },
158 { { false, false, false, false }, 0, 0 },
159 { { false, false, false, false }, 0, 0 },
160 { { false, false, false, false }, 0, 0 },
161 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_LockAgainstGrouping
162 
163 // 128
164 { { false, false, false, false }, 0, 0 },
165 { { false, false, false, false }, 0, 0 },
166 { { false, false, false, false }, 0, 0 },
167 { { false, false, false, false }, 0, 0 },
168 { { false, false, false, false }, 0, 0 },
169 { { false, false, false, false }, 0, 0 },
170 { { false, false, false, false }, 0, 0 },
171 { { false, false, false, false }, 0, 0 },
172 { { false, false, false, false }, 0, 0 },
173 { { false, false, false, false }, 0, 0 },
174 { { false, false, false, false }, 0, 0 },
175 { { false, false, false, false }, 0, 0 },
176 { { false, false, false, false }, 0, 0 },
177 { { false, false, false, false }, 0, 0 },
178 { { false, false, false, false }, 0, 0 },
179 { { false, false, false, false }, 0, 0 },
180 { { false, false, false, false }, 0, 0 },
181 { { false, false, false, false }, 0, 0 },
182 { { false, false, false, false }, 0, 0 },
183 { { false, false, false, false }, 0, 0 },
184 { { false, false, false, false }, 0, 0 },
185 { { false, false, false, false }, 0, 0 },
186 { { false, false, false, false }, 0, 0 },
187 { { false, false, false, false }, 0, 0 },
188 { { false, false, false, false }, 0, 0 },
189 { { false, false, false, false }, 0, 0 },
190 { { false, false, false, false }, 0, 0 },
191 { { false, false, false, false }, 0, 0 },
192 { { false, false, false, false }, 0, 0 },
193 { { false, false, false, false }, 0, 0 },
194 { { false, false, false, false }, 0, 0 },
195 { { false, false, false, false }, 0, 0 },
196 { { false, false, false, false }, 0, 0 },
197 { { false, false, false, false }, 0, 0 },
198 { { false, false, false, false }, 0, 0 },
199 { { false, false, false, false }, 0, 0 },
200 { { false, false, false, false }, 0, 0 },
201 { { false, false, false, false }, 0, 0 },
202 { { false, false, false, false }, 0, 0 },
203 { { false, false, false, false }, 0, 0 },
204 { { false, false, false, false }, 0, 0 },
205 { { false, false, false, false }, 0, 0 },
206 { { false, false, false, false }, 0, 0 },
207 { { false, false, false, false }, 0, 0 },
208 { { false, false, false, false }, 0, 0 },
209 { { false, false, false, false }, 0, 0 },
210 { { false, false, false, false }, 0, 0 },
211 { { false, false, false, false }, 0, 0 },
212 { { false, false, false, false }, 0, 0 },
213 { { false, false, false, false }, 0, 0 },
214 { { false, false, false, false }, 0, 0 },
215 { { false, false, false, false }, 0, 0 },
216 { { false, false, false, false }, 0, 0 },
217 { { false, false, false, false }, 0, 0 },
218 { { false, false, false, false }, 0, 0 },
219 { { false, false, false, false }, 0, 0 },
220 { { false, false, false, false }, 0, 0 },
221 { { false, false, false, false }, 0, 0 },
222 { { false, false, false, false }, 0, 0 },
223 { { false, false, false, false }, 0, 0 },
224 { { false, false, false, false }, 0, 0 },
225 { { false, false, false, false }, 0, 0 },
226 { { false, false, false, false }, 0, 0 },
227 { {  true, false, false,  true }, 0, 0x0010 },		// DFF_Prop_FitTextToShape
228 
229 // 192
230 { { false, false, false, false }, 0, 0 },
231 { { false, false, false, false }, 0, 0 },
232 { { false, false, false, false }, 0, 0 },
233 { { false, false, false, false }, 0, 0 },
234 { { false, false, false, false }, 0, 0 },
235 { { false, false, false, false }, 0, 0 },
236 { { false, false, false, false }, 0, 0 },
237 { { false, false, false, false }, 0, 0 },
238 { { false, false, false, false }, 0, 0 },
239 { { false, false, false, false }, 0, 0 },
240 { { false, false, false, false }, 0, 0 },
241 { { false, false, false, false }, 0, 0 },
242 { { false, false, false, false }, 0, 0 },
243 { { false, false, false, false }, 0, 0 },
244 { { false, false, false, false }, 0, 0 },
245 { { false, false, false, false }, 0, 0 },
246 { { false, false, false, false }, 0, 0 },
247 { { false, false, false, false }, 0, 0 },
248 { { false, false, false, false }, 0, 0 },
249 { { false, false, false, false }, 0, 0 },
250 { { false, false, false, false }, 0, 0 },
251 { { false, false, false, false }, 0, 0 },
252 { { false, false, false, false }, 0, 0 },
253 { { false, false, false, false }, 0, 0 },
254 { { false, false, false, false }, 0, 0 },
255 { { false, false, false, false }, 0, 0 },
256 { { false, false, false, false }, 0, 0 },
257 { { false, false, false, false }, 0, 0 },
258 { { false, false, false, false }, 0, 0 },
259 { { false, false, false, false }, 0, 0 },
260 { { false, false, false, false }, 0, 0 },
261 { { false, false, false, false }, 0, 0 },
262 { { false, false, false, false }, 0, 0 },
263 { { false, false, false, false }, 0, 0 },
264 { { false, false, false, false }, 0, 0 },
265 { { false, false, false, false }, 0, 0 },
266 { { false, false, false, false }, 0, 0 },
267 { { false, false, false, false }, 0, 0 },
268 { { false, false, false, false }, 0, 0 },
269 { { false, false, false, false }, 0, 0 },
270 { { false, false, false, false }, 0, 0 },
271 { { false, false, false, false }, 0, 0 },
272 { { false, false, false, false }, 0, 0 },
273 { { false, false, false, false }, 0, 0 },
274 { { false, false, false, false }, 0, 0 },
275 { { false, false, false, false }, 0, 0 },
276 { { false, false, false, false }, 0, 0 },
277 { { false, false, false, false }, 0, 0 },
278 { { false, false, false, false }, 0, 0 },
279 { { false, false, false, false }, 0, 0 },
280 { { false, false, false, false }, 0, 0 },
281 { { false, false, false, false }, 0, 0 },
282 { { false, false, false, false }, 0, 0 },
283 { { false, false, false, false }, 0, 0 },
284 { { false, false, false, false }, 0, 0 },
285 { { false, false, false, false }, 0, 0 },
286 { { false, false, false, false }, 0, 0 },
287 { { false, false, false, false }, 0, 0 },
288 { { false, false, false, false }, 0, 0 },
289 { { false, false, false, false }, 0, 0 },
290 { { false, false, false, false }, 0, 0 },
291 { { false, false, false, false }, 0, 0 },
292 { { false, false, false, false }, 0, 0 },
293 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_gtextFStrikethrough
294 
295 //256
296 { { false, false, false, false }, 0, 0 },
297 { { false, false, false, false }, 0, 0 },
298 { { false, false, false, false }, 0, 0 },
299 { { false, false, false, false }, 0, 0 },
300 { { false, false, false, false }, 0, 0 },
301 { { false, false, false, false }, 0, 0 },
302 { { false, false, false, false }, 0, 0 },
303 { { false, false, false, false }, 0, 0 },
304 { { false, false, false, false }, 0, 0 },
305 { { false, false, false, false }, 0, 0 },
306 { { false, false, false, false }, 0, 0 },
307 { { false, false, false, false }, 0, 0 },
308 { { false, false, false, false }, 0, 0 },
309 { { false, false, false, false }, 0, 0 },
310 { { false, false, false, false }, 0, 0 },
311 { { false, false, false, false }, 0, 0 },
312 { { false, false, false, false }, 0, 0 },
313 { { false, false, false, false }, 0, 0 },
314 { { false, false, false, false }, 0, 0 },
315 { { false, false, false, false }, 0, 0 },
316 { { false, false, false, false }, 0, 0 },
317 { { false, false, false, false }, 0, 0 },
318 { { false, false, false, false }, 0, 0 },
319 { { false, false, false, false }, 0, 0 },
320 { { false, false, false, false }, 0, 0 },
321 { { false, false, false, false }, 0, 0 },
322 { { false, false, false, false }, 0, 0 },
323 { { false, false, false, false }, 0, 0 },
324 { { false, false, false, false }, 0, 0 },
325 { { false, false, false, false }, 0, 0 },
326 { { false, false, false, false }, 0, 0 },
327 { { false, false, false, false }, 0, 0 },
328 { { false, false, false, false }, 0, 0 },
329 { { false, false, false, false }, 0, 0 },
330 { { false, false, false, false }, 0, 0 },
331 { { false, false, false, false }, 0, 0 },
332 { { false, false, false, false }, 0, 0 },
333 { { false, false, false, false }, 0, 0 },
334 { { false, false, false, false }, 0, 0 },
335 { { false, false, false, false }, 0, 0 },
336 { { false, false, false, false }, 0, 0 },
337 { { false, false, false, false }, 0, 0 },
338 { { false, false, false, false }, 0, 0 },
339 { { false, false, false, false }, 0, 0 },
340 { { false, false, false, false }, 0, 0 },
341 { { false, false, false, false }, 0, 0 },
342 { { false, false, false, false }, 0, 0 },
343 { { false, false, false, false }, 0, 0 },
344 { { false, false, false, false }, 0, 0 },
345 { { false, false, false, false }, 0, 0 },
346 { { false, false, false, false }, 0, 0 },
347 { { false, false, false, false }, 0, 0 },
348 { { false, false, false, false }, 0, 0 },
349 { { false, false, false, false }, 0, 0 },
350 { { false, false, false, false }, 0, 0 },
351 { { false, false, false, false }, 0, 0 },
352 { { false, false, false, false }, 0, 0 },
353 { { false, false, false, false }, 0, 0 },
354 { { false, false, false, false }, 0, 0 },
355 { { false, false, false, false }, 0, 0 },
356 { { false, false, false, false }, 0, 0 },
357 { { false, false, false, false }, 0, 0 },
358 { { false, false, false, false }, 0, 0 },
359 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_pictureActive
360 
361 // 320
362 { { false, false, false, false }, 0, 0 },
363 { { false, false, false, false }, 0, 0 },
364 { { false, false, false, false }, 0, 0 },
365 { { false, false, false, false }, 0, 0 },
366 { { false, false, false, false }, 0, 0 },
367 { { false, false, false, false }, 0, 0 },
368 { { false, false, false, false }, 0, 0 },
369 { { false, false, false, false }, 0, 0 },
370 { { false, false, false, false }, 0, 0 },
371 { { false, false, false, false }, 0, 0 },
372 { { false, false, false, false }, 0, 0 },
373 { { false, false, false, false }, 0, 0 },
374 { { false, false, false, false }, 0, 0 },
375 { { false, false, false, false }, 0, 0 },
376 { { false, false, false, false }, 0, 0 },
377 { { false, false, false, false }, 0, 0 },
378 { { false, false, false, false }, 0, 0 },
379 { { false, false, false, false }, 0, 0 },
380 { { false, false, false, false }, 0, 0 },
381 { { false, false, false, false }, 0, 0 },
382 { { false, false, false, false }, 0, 0 },
383 { { false, false, false, false }, 0, 0 },
384 { { false, false, false, false }, 0, 0 },
385 { { false, false, false, false }, 0, 0 },
386 { { false, false, false, false }, 0, 0 },
387 { { false, false, false, false }, 0, 0 },
388 { { false, false, false, false }, 0, 0 },
389 { { false, false, false, false }, 0, 0 },
390 { { false, false, false, false }, 0, 0 },
391 { { false, false, false, false }, 0, 0 },
392 { { false, false, false, false }, 0, 0 },
393 { { false, false, false, false }, 0, 0 },
394 { { false, false, false, false }, 0, 0 },
395 { { false, false, false, false }, 0, 0 },
396 { { false, false, false, false }, 0, 0 },
397 { { false, false, false, false }, 0, 0 },
398 { { false, false, false, false }, 0, 0 },
399 { { false, false, false, false }, 0, 0 },
400 { { false, false, false, false }, 0, 0 },
401 { { false, false, false, false }, 0, 0 },
402 { { false, false, false, false }, 0, 0 },
403 { { false, false, false, false }, 0, 0 },
404 { { false, false, false, false }, 0, 0 },
405 { { false, false, false, false }, 0, 0 },
406 { { false, false, false, false }, 0, 0 },
407 { { false, false, false, false }, 0, 0 },
408 { { false, false, false, false }, 0, 0 },
409 { { false, false, false, false }, 0, 0 },
410 { { false, false, false, false }, 0, 0 },
411 { { false, false, false, false }, 0, 0 },
412 { { false, false, false, false }, 0, 0 },
413 { { false, false, false, false }, 0, 0 },
414 { { false, false, false, false }, 0, 0 },
415 { { false, false, false, false }, 0, 0 },
416 { { false, false, false, false }, 0, 0 },
417 { { false, false, false, false }, 0, 0 },
418 { { false, false, false, false }, 0, 0 },
419 { { false, false, false, false }, 0, 0 },
420 { { false, false, false, false }, 0, 0 },
421 { { false, false, false, false }, 0, 0 },
422 { { false, false, false, false }, 0, 0 },
423 { { false, false, false, false }, 0, 0 },
424 { { false, false, false, false }, 0, 0 },
425 { {  true, false, false,  true }, 0, 0x0039 },		// DFF_Prop_fFillOK
426 
427 // 384
428 { { false, false, false, false }, 0, 0 },
429 { {  true, false, false,  true }, 0, 0xffffff },	// DFF_Prop_fillColor
430 { { false, false, false, false }, 0, 0 },
431 { { false, false, false, false }, 0, 0 },
432 { { false, false, false, false }, 0, 0 },
433 { { false, false, false, false }, 0, 0 },
434 { { false, false, false, false }, 0, 0 },
435 { { false, false, false, false }, 0, 0 },
436 { { false, false, false, false }, 0, 0 },
437 { { false, false, false, false }, 0, 0 },
438 { { false, false, false, false }, 0, 0 },
439 { { false, false, false, false }, 0, 0 },
440 { { false, false, false, false }, 0, 0 },
441 { { false, false, false, false }, 0, 0 },
442 { { false, false, false, false }, 0, 0 },
443 { { false, false, false, false }, 0, 0 },
444 { { false, false, false, false }, 0, 0 },
445 { { false, false, false, false }, 0, 0 },
446 { { false, false, false, false }, 0, 0 },
447 { { false, false, false, false }, 0, 0 },
448 { { false, false, false, false }, 0, 0 },
449 { { false, false, false, false }, 0, 0 },
450 { { false, false, false, false }, 0, 0 },
451 { { false, false, false, false }, 0, 0 },
452 { { false, false, false, false }, 0, 0 },
453 { { false, false, false, false }, 0, 0 },
454 { { false, false, false, false }, 0, 0 },
455 { { false, false, false, false }, 0, 0 },
456 { { false, false, false, false }, 0, 0 },
457 { { false, false, false, false }, 0, 0 },
458 { { false, false, false, false }, 0, 0 },
459 { { false, false, false, false }, 0, 0 },
460 { { false, false, false, false }, 0, 0 },
461 { { false, false, false, false }, 0, 0 },
462 { { false, false, false, false }, 0, 0 },
463 { { false, false, false, false }, 0, 0 },
464 { { false, false, false, false }, 0, 0 },
465 { { false, false, false, false }, 0, 0 },
466 { { false, false, false, false }, 0, 0 },
467 { { false, false, false, false }, 0, 0 },
468 { { false, false, false, false }, 0, 0 },
469 { { false, false, false, false }, 0, 0 },
470 { { false, false, false, false }, 0, 0 },
471 { { false, false, false, false }, 0, 0 },
472 { { false, false, false, false }, 0, 0 },
473 { { false, false, false, false }, 0, 0 },
474 { { false, false, false, false }, 0, 0 },
475 { { false, false, false, false }, 0, 0 },
476 { { false, false, false, false }, 0, 0 },
477 { { false, false, false, false }, 0, 0 },
478 { { false, false, false, false }, 0, 0 },
479 { { false, false, false, false }, 0, 0 },
480 { { false, false, false, false }, 0, 0 },
481 { { false, false, false, false }, 0, 0 },
482 { { false, false, false, false }, 0, 0 },
483 { { false, false, false, false }, 0, 0 },
484 { { false, false, false, false }, 0, 0 },
485 { { false, false, false, false }, 0, 0 },
486 { { false, false, false, false }, 0, 0 },
487 { { false, false, false, false }, 0, 0 },
488 { { false, false, false, false }, 0, 0 },
489 { { false, false, false, false }, 0, 0 },
490 { { false, false, false, false }, 0, 0 },
491 { {  true, false, false,  true }, 0, 0x001c },		// DFF_Prop_fNoFillHitTest
492 
493 // 448
494 { { false, false, false, false }, 0, 0 },
495 { { false, false, false, false }, 0, 0 },
496 { { false, false, false, false }, 0, 0 },
497 { { false, false, false, false }, 0, 0 },
498 { { false, false, false, false }, 0, 0 },
499 { { false, false, false, false }, 0, 0 },
500 { { false, false, false, false }, 0, 0 },
501 { { false, false, false, false }, 0, 0 },
502 { { false, false, false, false }, 0, 0 },
503 { { false, false, false, false }, 0, 0 },
504 { { false, false, false, false }, 0, 0 },
505 { { false, false, false, false }, 0, 0 },
506 { { false, false, false, false }, 0, 0 },
507 { { false, false, false, false }, 0, 0 },
508 { { false, false, false, false }, 0, 0 },
509 { { false, false, false, false }, 0, 0 },
510 { { false, false, false, false }, 0, 0 },
511 { { false, false, false, false }, 0, 0 },
512 { { false, false, false, false }, 0, 0 },
513 { { false, false, false, false }, 0, 0 },
514 { { false, false, false, false }, 0, 0 },
515 { { false, false, false, false }, 0, 0 },
516 { { false, false, false, false }, 0, 0 },
517 { { false, false, false, false }, 0, 0 },
518 { { false, false, false, false }, 0, 0 },
519 { { false, false, false, false }, 0, 0 },
520 { { false, false, false, false }, 0, 0 },
521 { { false, false, false, false }, 0, 0 },
522 { { false, false, false, false }, 0, 0 },
523 { { false, false, false, false }, 0, 0 },
524 { { false, false, false, false }, 0, 0 },
525 { { false, false, false, false }, 0, 0 },
526 { { false, false, false, false }, 0, 0 },
527 { { false, false, false, false }, 0, 0 },
528 { { false, false, false, false }, 0, 0 },
529 { { false, false, false, false }, 0, 0 },
530 { { false, false, false, false }, 0, 0 },
531 { { false, false, false, false }, 0, 0 },
532 { { false, false, false, false }, 0, 0 },
533 { { false, false, false, false }, 0, 0 },
534 { { false, false, false, false }, 0, 0 },
535 { { false, false, false, false }, 0, 0 },
536 { { false, false, false, false }, 0, 0 },
537 { { false, false, false, false }, 0, 0 },
538 { { false, false, false, false }, 0, 0 },
539 { { false, false, false, false }, 0, 0 },
540 { { false, false, false, false }, 0, 0 },
541 { { false, false, false, false }, 0, 0 },
542 { { false, false, false, false }, 0, 0 },
543 { { false, false, false, false }, 0, 0 },
544 { { false, false, false, false }, 0, 0 },
545 { { false, false, false, false }, 0, 0 },
546 { { false, false, false, false }, 0, 0 },
547 { { false, false, false, false }, 0, 0 },
548 { { false, false, false, false }, 0, 0 },
549 { { false, false, false, false }, 0, 0 },
550 { { false, false, false, false }, 0, 0 },
551 { { false, false, false, false }, 0, 0 },
552 { { false, false, false, false }, 0, 0 },
553 { { false, false, false, false }, 0, 0 },
554 { { false, false, false, false }, 0, 0 },
555 { { false, false, false, false }, 0, 0 },
556 { { false, false, false, false }, 0, 0 },
557 { {  true, false, false,  true }, 0, 0x001e },		// DFF_Prop_fNoLineDrawDash
558 
559 // 512
560 { { false, false, false, false }, 0, 0 },
561 { { false, false, false, false }, 0, 0 },
562 { { false, false, false, false }, 0, 0 },
563 { { false, false, false, false }, 0, 0 },
564 { { false, false, false, false }, 0, 0 },
565 { { false, false, false, false }, 0, 0 },
566 { { false, false, false, false }, 0, 0 },
567 { { false, false, false, false }, 0, 0 },
568 { { false, false, false, false }, 0, 0 },
569 { { false, false, false, false }, 0, 0 },
570 { { false, false, false, false }, 0, 0 },
571 { { false, false, false, false }, 0, 0 },
572 { { false, false, false, false }, 0, 0 },
573 { { false, false, false, false }, 0, 0 },
574 { { false, false, false, false }, 0, 0 },
575 { { false, false, false, false }, 0, 0 },
576 { { false, false, false, false }, 0, 0 },
577 { { false, false, false, false }, 0, 0 },
578 { { false, false, false, false }, 0, 0 },
579 { { false, false, false, false }, 0, 0 },
580 { { false, false, false, false }, 0, 0 },
581 { { false, false, false, false }, 0, 0 },
582 { { false, false, false, false }, 0, 0 },
583 { { false, false, false, false }, 0, 0 },
584 { { false, false, false, false }, 0, 0 },
585 { { false, false, false, false }, 0, 0 },
586 { { false, false, false, false }, 0, 0 },
587 { { false, false, false, false }, 0, 0 },
588 { { false, false, false, false }, 0, 0 },
589 { { false, false, false, false }, 0, 0 },
590 { { false, false, false, false }, 0, 0 },
591 { { false, false, false, false }, 0, 0 },
592 { { false, false, false, false }, 0, 0 },
593 { { false, false, false, false }, 0, 0 },
594 { { false, false, false, false }, 0, 0 },
595 { { false, false, false, false }, 0, 0 },
596 { { false, false, false, false }, 0, 0 },
597 { { false, false, false, false }, 0, 0 },
598 { { false, false, false, false }, 0, 0 },
599 { { false, false, false, false }, 0, 0 },
600 { { false, false, false, false }, 0, 0 },
601 { { false, false, false, false }, 0, 0 },
602 { { false, false, false, false }, 0, 0 },
603 { { false, false, false, false }, 0, 0 },
604 { { false, false, false, false }, 0, 0 },
605 { { false, false, false, false }, 0, 0 },
606 { { false, false, false, false }, 0, 0 },
607 { { false, false, false, false }, 0, 0 },
608 { { false, false, false, false }, 0, 0 },
609 { { false, false, false, false }, 0, 0 },
610 { { false, false, false, false }, 0, 0 },
611 { { false, false, false, false }, 0, 0 },
612 { { false, false, false, false }, 0, 0 },
613 { { false, false, false, false }, 0, 0 },
614 { { false, false, false, false }, 0, 0 },
615 { { false, false, false, false }, 0, 0 },
616 { { false, false, false, false }, 0, 0 },
617 { { false, false, false, false }, 0, 0 },
618 { { false, false, false, false }, 0, 0 },
619 { { false, false, false, false }, 0, 0 },
620 { { false, false, false, false }, 0, 0 },
621 { { false, false, false, false }, 0, 0 },
622 { { false, false, false, false }, 0, 0 },
623 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_fshadowObscured
624 
625 // 576
626 { { false, false, false, false }, 0, 0 },
627 { { false, false, false, false }, 0, 0 },
628 { { false, false, false, false }, 0, 0 },
629 { { false, false, false, false }, 0, 0 },
630 { { false, false, false, false }, 0, 0 },
631 { { false, false, false, false }, 0, 0 },
632 { { false, false, false, false }, 0, 0 },
633 { { false, false, false, false }, 0, 0 },
634 { { false, false, false, false }, 0, 0 },
635 { { false, false, false, false }, 0, 0 },
636 { { false, false, false, false }, 0, 0 },
637 { { false, false, false, false }, 0, 0 },
638 { { false, false, false, false }, 0, 0 },
639 { { false, false, false, false }, 0, 0 },
640 { { false, false, false, false }, 0, 0 },
641 { { false, false, false, false }, 0, 0 },
642 { { false, false, false, false }, 0, 0 },
643 { { false, false, false, false }, 0, 0 },
644 { { false, false, false, false }, 0, 0 },
645 { { false, false, false, false }, 0, 0 },
646 { { false, false, false, false }, 0, 0 },
647 { { false, false, false, false }, 0, 0 },
648 { { false, false, false, false }, 0, 0 },
649 { { false, false, false, false }, 0, 0 },
650 { { false, false, false, false }, 0, 0 },
651 { { false, false, false, false }, 0, 0 },
652 { { false, false, false, false }, 0, 0 },
653 { { false, false, false, false }, 0, 0 },
654 { { false, false, false, false }, 0, 0 },
655 { { false, false, false, false }, 0, 0 },
656 { { false, false, false, false }, 0, 0 },
657 { { false, false, false, false }, 0, 0 },
658 { { false, false, false, false }, 0, 0 },
659 { { false, false, false, false }, 0, 0 },
660 { { false, false, false, false }, 0, 0 },
661 { { false, false, false, false }, 0, 0 },
662 { { false, false, false, false }, 0, 0 },
663 { { false, false, false, false }, 0, 0 },
664 { { false, false, false, false }, 0, 0 },
665 { { false, false, false, false }, 0, 0 },
666 { { false, false, false, false }, 0, 0 },
667 { { false, false, false, false }, 0, 0 },
668 { { false, false, false, false }, 0, 0 },
669 { { false, false, false, false }, 0, 0 },
670 { { false, false, false, false }, 0, 0 },
671 { { false, false, false, false }, 0, 0 },
672 { { false, false, false, false }, 0, 0 },
673 { { false, false, false, false }, 0, 0 },
674 { { false, false, false, false }, 0, 0 },
675 { { false, false, false, false }, 0, 0 },
676 { { false, false, false, false }, 0, 0 },
677 { { false, false, false, false }, 0, 0 },
678 { { false, false, false, false }, 0, 0 },
679 { { false, false, false, false }, 0, 0 },
680 { { false, false, false, false }, 0, 0 },
681 { { false, false, false, false }, 0, 0 },
682 { { false, false, false, false }, 0, 0 },
683 { { false, false, false, false }, 0, 0 },
684 { { false, false, false, false }, 0, 0 },
685 { { false, false, false, false }, 0, 0 },
686 { { false, false, false, false }, 0, 0 },
687 { { false, false, false, false }, 0, 0 },
688 { { false, false, false, false }, 0, 0 },
689 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_fPerspective
690 
691 // 640
692 { { false, false, false, false }, 0, 0 },
693 { { false, false, false, false }, 0, 0 },
694 { { false, false, false, false }, 0, 0 },
695 { { false, false, false, false }, 0, 0 },
696 { { false, false, false, false }, 0, 0 },
697 { { false, false, false, false }, 0, 0 },
698 { { false, false, false, false }, 0, 0 },
699 { { false, false, false, false }, 0, 0 },
700 { { false, false, false, false }, 0, 0 },
701 { { false, false, false, false }, 0, 0 },
702 { { false, false, false, false }, 0, 0 },
703 { { false, false, false, false }, 0, 0 },
704 { { false, false, false, false }, 0, 0 },
705 { { false, false, false, false }, 0, 0 },
706 { { false, false, false, false }, 0, 0 },
707 { { false, false, false, false }, 0, 0 },
708 { { false, false, false, false }, 0, 0 },
709 { { false, false, false, false }, 0, 0 },
710 { { false, false, false, false }, 0, 0 },
711 { { false, false, false, false }, 0, 0 },
712 { { false, false, false, false }, 0, 0 },
713 { { false, false, false, false }, 0, 0 },
714 { { false, false, false, false }, 0, 0 },
715 { { false, false, false, false }, 0, 0 },
716 { { false, false, false, false }, 0, 0 },
717 { { false, false, false, false }, 0, 0 },
718 { { false, false, false, false }, 0, 0 },
719 { { false, false, false, false }, 0, 0 },
720 { { false, false, false, false }, 0, 0 },
721 { { false, false, false, false }, 0, 0 },
722 { { false, false, false, false }, 0, 0 },
723 { { false, false, false, false }, 0, 0 },
724 { { false, false, false, false }, 0, 0 },
725 { { false, false, false, false }, 0, 0 },
726 { { false, false, false, false }, 0, 0 },
727 { { false, false, false, false }, 0, 0 },
728 { { false, false, false, false }, 0, 0 },
729 { { false, false, false, false }, 0, 0 },
730 { { false, false, false, false }, 0, 0 },
731 { { false, false, false, false }, 0, 0 },
732 { { false, false, false, false }, 0, 0 },
733 { { false, false, false, false }, 0, 0 },
734 { { false, false, false, false }, 0, 0 },
735 { { false, false, false, false }, 0, 0 },
736 { { false, false, false, false }, 0, 0 },
737 { { false, false, false, false }, 0, 0 },
738 { { false, false, false, false }, 0, 0 },
739 { { false, false, false, false }, 0, 0 },
740 { { false, false, false, false }, 0, 0 },
741 { { false, false, false, false }, 0, 0 },
742 { { false, false, false, false }, 0, 0 },
743 { { false, false, false, false }, 0, 0 },
744 { { false, false, false, false }, 0, 0 },
745 { { false, false, false, false }, 0, 0 },
746 { { false, false, false, false }, 0, 0 },
747 { { false, false, false, false }, 0, 0 },
748 { { false, false, false, false }, 0, 0 },
749 { { false, false, false, false }, 0, 0 },
750 { { false, false, false, false }, 0, 0 },
751 { { false, false, false, false }, 0, 0 },
752 { { false, false, false, false }, 0, 0 },
753 { { false, false, false, false }, 0, 0 },
754 { { false, false, false, false }, 0, 0 },
755 { {  true, false, false,  true }, 0, 0x0001 },		// DFF_Prop_fc3DLightFace
756 
757 // 704
758 { { false, false, false, false }, 0, 0 },
759 { { false, false, false, false }, 0, 0 },
760 { { false, false, false, false }, 0, 0 },
761 { { false, false, false, false }, 0, 0 },
762 { { false, false, false, false }, 0, 0 },
763 { { false, false, false, false }, 0, 0 },
764 { { false, false, false, false }, 0, 0 },
765 { { false, false, false, false }, 0, 0 },
766 { { false, false, false, false }, 0, 0 },
767 { { false, false, false, false }, 0, 0 },
768 { { false, false, false, false }, 0, 0 },
769 { { false, false, false, false }, 0, 0 },
770 { { false, false, false, false }, 0, 0 },
771 { { false, false, false, false }, 0, 0 },
772 { { false, false, false, false }, 0, 0 },
773 { { false, false, false, false }, 0, 0 },
774 { { false, false, false, false }, 0, 0 },
775 { { false, false, false, false }, 0, 0 },
776 { { false, false, false, false }, 0, 0 },
777 { { false, false, false, false }, 0, 0 },
778 { { false, false, false, false }, 0, 0 },
779 { { false, false, false, false }, 0, 0 },
780 { { false, false, false, false }, 0, 0 },
781 { { false, false, false, false }, 0, 0 },
782 { { false, false, false, false }, 0, 0 },
783 { { false, false, false, false }, 0, 0 },
784 { { false, false, false, false }, 0, 0 },
785 { { false, false, false, false }, 0, 0 },
786 { { false, false, false, false }, 0, 0 },
787 { { false, false, false, false }, 0, 0 },
788 { { false, false, false, false }, 0, 0 },
789 { { false, false, false, false }, 0, 0 },
790 { { false, false, false, false }, 0, 0 },
791 { { false, false, false, false }, 0, 0 },
792 { { false, false, false, false }, 0, 0 },
793 { { false, false, false, false }, 0, 0 },
794 { { false, false, false, false }, 0, 0 },
795 { { false, false, false, false }, 0, 0 },
796 { { false, false, false, false }, 0, 0 },
797 { { false, false, false, false }, 0, 0 },
798 { { false, false, false, false }, 0, 0 },
799 { { false, false, false, false }, 0, 0 },
800 { { false, false, false, false }, 0, 0 },
801 { { false, false, false, false }, 0, 0 },
802 { { false, false, false, false }, 0, 0 },
803 { { false, false, false, false }, 0, 0 },
804 { { false, false, false, false }, 0, 0 },
805 { { false, false, false, false }, 0, 0 },
806 { { false, false, false, false }, 0, 0 },
807 { { false, false, false, false }, 0, 0 },
808 { { false, false, false, false }, 0, 0 },
809 { { false, false, false, false }, 0, 0 },
810 { { false, false, false, false }, 0, 0 },
811 { { false, false, false, false }, 0, 0 },
812 { { false, false, false, false }, 0, 0 },
813 { { false, false, false, false }, 0, 0 },
814 { { false, false, false, false }, 0, 0 },
815 { { false, false, false, false }, 0, 0 },
816 { { false, false, false, false }, 0, 0 },
817 { { false, false, false, false }, 0, 0 },
818 { { false, false, false, false }, 0, 0 },
819 { { false, false, false, false }, 0, 0 },
820 { { false, false, false, false }, 0, 0 },
821 { {  true, false, false,  true }, 0, 0x0016 },		// DFF_Prop_fc3DFillHarsh
822 
823 // 768
824 { { false, false, false, false }, 0, 0 },
825 { { false, false, false, false }, 0, 0 },
826 { { false, false, false, false }, 0, 0 },
827 { { false, false, false, false }, 0, 0 },
828 { { false, false, false, false }, 0, 0 },
829 { { false, false, false, false }, 0, 0 },
830 { { false, false, false, false }, 0, 0 },
831 { { false, false, false, false }, 0, 0 },
832 { { false, false, false, false }, 0, 0 },
833 { { false, false, false, false }, 0, 0 },
834 { { false, false, false, false }, 0, 0 },
835 { { false, false, false, false }, 0, 0 },
836 { { false, false, false, false }, 0, 0 },
837 { { false, false, false, false }, 0, 0 },
838 { { false, false, false, false }, 0, 0 },
839 { { false, false, false, false }, 0, 0 },
840 { { false, false, false, false }, 0, 0 },
841 { { false, false, false, false }, 0, 0 },
842 { { false, false, false, false }, 0, 0 },
843 { { false, false, false, false }, 0, 0 },
844 { { false, false, false, false }, 0, 0 },
845 { { false, false, false, false }, 0, 0 },
846 { { false, false, false, false }, 0, 0 },
847 { { false, false, false, false }, 0, 0 },
848 { { false, false, false, false }, 0, 0 },
849 { { false, false, false, false }, 0, 0 },
850 { { false, false, false, false }, 0, 0 },
851 { { false, false, false, false }, 0, 0 },
852 { { false, false, false, false }, 0, 0 },
853 { { false, false, false, false }, 0, 0 },
854 { { false, false, false, false }, 0, 0 },
855 { { false, false, false, false }, 0, 0 },
856 { { false, false, false, false }, 0, 0 },
857 { { false, false, false, false }, 0, 0 },
858 { { false, false, false, false }, 0, 0 },
859 { { false, false, false, false }, 0, 0 },
860 { { false, false, false, false }, 0, 0 },
861 { { false, false, false, false }, 0, 0 },
862 { { false, false, false, false }, 0, 0 },
863 { { false, false, false, false }, 0, 0 },
864 { { false, false, false, false }, 0, 0 },
865 { { false, false, false, false }, 0, 0 },
866 { { false, false, false, false }, 0, 0 },
867 { { false, false, false, false }, 0, 0 },
868 { { false, false, false, false }, 0, 0 },
869 { { false, false, false, false }, 0, 0 },
870 { { false, false, false, false }, 0, 0 },
871 { { false, false, false, false }, 0, 0 },
872 { { false, false, false, false }, 0, 0 },
873 { { false, false, false, false }, 0, 0 },
874 { { false, false, false, false }, 0, 0 },
875 { { false, false, false, false }, 0, 0 },
876 { { false, false, false, false }, 0, 0 },
877 { { false, false, false, false }, 0, 0 },
878 { { false, false, false, false }, 0, 0 },
879 { { false, false, false, false }, 0, 0 },
880 { { false, false, false, false }, 0, 0 },
881 { { false, false, false, false }, 0, 0 },
882 { { false, false, false, false }, 0, 0 },
883 { { false, false, false, false }, 0, 0 },
884 { { false, false, false, false }, 0, 0 },
885 { { false, false, false, false }, 0, 0 },
886 { { false, false, false, false }, 0, 0 },
887 { {  true, false, false,  true }, 0, 0 },			// DFF_Prop_fBackground
888 
889 // 832
890 { { false, false, false, false }, 0, 0 },
891 { { false, false, false, false }, 0, 0 },
892 { { false, false, false, false }, 0, 0 },
893 { { false, false, false, false }, 0, 0 },
894 { { false, false, false, false }, 0, 0 },
895 { { false, false, false, false }, 0, 0 },
896 { { false, false, false, false }, 0, 0 },
897 { { false, false, false, false }, 0, 0 },
898 { { false, false, false, false }, 0, 0 },
899 { { false, false, false, false }, 0, 0 },
900 { { false, false, false, false }, 0, 0 },
901 { { false, false, false, false }, 0, 0 },
902 { { false, false, false, false }, 0, 0 },
903 { { false, false, false, false }, 0, 0 },
904 { { false, false, false, false }, 0, 0 },
905 { { false, false, false, false }, 0, 0 },
906 { { false, false, false, false }, 0, 0 },
907 { { false, false, false, false }, 0, 0 },
908 { { false, false, false, false }, 0, 0 },
909 { { false, false, false, false }, 0, 0 },
910 { { false, false, false, false }, 0, 0 },
911 { { false, false, false, false }, 0, 0 },
912 { { false, false, false, false }, 0, 0 },
913 { { false, false, false, false }, 0, 0 },
914 { { false, false, false, false }, 0, 0 },
915 { { false, false, false, false }, 0, 0 },
916 { { false, false, false, false }, 0, 0 },
917 { { false, false, false, false }, 0, 0 },
918 { { false, false, false, false }, 0, 0 },
919 { { false, false, false, false }, 0, 0 },
920 { { false, false, false, false }, 0, 0 },
921 { { false, false, false, false }, 0, 0 },
922 { { false, false, false, false }, 0, 0 },
923 { { false, false, false, false }, 0, 0 },
924 { { false, false, false, false }, 0, 0 },
925 { { false, false, false, false }, 0, 0 },
926 { { false, false, false, false }, 0, 0 },
927 { { false, false, false, false }, 0, 0 },
928 { { false, false, false, false }, 0, 0 },
929 { { false, false, false, false }, 0, 0 },
930 { { false, false, false, false }, 0, 0 },
931 { { false, false, false, false }, 0, 0 },
932 { { false, false, false, false }, 0, 0 },
933 { { false, false, false, false }, 0, 0 },
934 { { false, false, false, false }, 0, 0 },
935 { { false, false, false, false }, 0, 0 },
936 { { false, false, false, false }, 0, 0 },
937 { { false, false, false, false }, 0, 0 },
938 { { false, false, false, false }, 0, 0 },
939 { { false, false, false, false }, 0, 0 },
940 { { false, false, false, false }, 0, 0 },
941 { { false, false, false, false }, 0, 0 },
942 { { false, false, false, false }, 0, 0 },
943 { { false, false, false, false }, 0, 0 },
944 { { false, false, false, false }, 0, 0 },
945 { { false, false, false, false }, 0, 0 },
946 { { false, false, false, false }, 0, 0 },
947 { { false, false, false, false }, 0, 0 },
948 { { false, false, false, false }, 0, 0 },
949 { { false, false, false, false }, 0, 0 },
950 { { false, false, false, false }, 0, 0 },
951 { { false, false, false, false }, 0, 0 },
952 { { false, false, false, false }, 0, 0 },
953 { {  true, false, false,  true }, 0, 0x0010 },		// DFF_Prop_fCalloutLengthSpecified
954 
955 // 896
956 { { false, false, false, false }, 0, 0 },
957 { { false, false, false, false }, 0, 0 },
958 { { false, false, false, false }, 0, 0 },
959 { { false, false, false, false }, 0, 0 },
960 { { false, false, false, false }, 0, 0 },
961 { { false, false, false, false }, 0, 0 },
962 { { false, false, false, false }, 0, 0 },
963 { { false, false, false, false }, 0, 0 },
964 { { false, false, false, false }, 0, 0 },
965 { { false, false, false, false }, 0, 0 },
966 { { false, false, false, false }, 0, 0 },
967 { { false, false, false, false }, 0, 0 },
968 { { false, false, false, false }, 0, 0 },
969 { { false, false, false, false }, 0, 0 },
970 { { false, false, false, false }, 0, 0 },
971 { { false, false, false, false }, 0, 0 },
972 { { false, false, false, false }, 0, 0 },
973 { { false, false, false, false }, 0, 0 },
974 { { false, false, false, false }, 0, 0 },
975 { { false, false, false, false }, 0, 0 },
976 { { false, false, false, false }, 0, 0 },
977 { { false, false, false, false }, 0, 0 },
978 { { false, false, false, false }, 0, 0 },
979 { { false, false, false, false }, 0, 0 },
980 { { false, false, false, false }, 0, 0 },
981 { { false, false, false, false }, 0, 0 },
982 { { false, false, false, false }, 0, 0 },
983 { { false, false, false, false }, 0, 0 },
984 { { false, false, false, false }, 0, 0 },
985 { { false, false, false, false }, 0, 0 },
986 { { false, false, false, false }, 0, 0 },
987 { { false, false, false, false }, 0, 0 },
988 { { false, false, false, false }, 0, 0 },
989 { { false, false, false, false }, 0, 0 },
990 { { false, false, false, false }, 0, 0 },
991 { { false, false, false, false }, 0, 0 },
992 { { false, false, false, false }, 0, 0 },
993 { { false, false, false, false }, 0, 0 },
994 { { false, false, false, false }, 0, 0 },
995 { { false, false, false, false }, 0, 0 },
996 { { false, false, false, false }, 0, 0 },
997 { { false, false, false, false }, 0, 0 },
998 { { false, false, false, false }, 0, 0 },
999 { { false, false, false, false }, 0, 0 },
1000 { { false, false, false, false }, 0, 0 },
1001 { { false, false, false, false }, 0, 0 },
1002 { { false, false, false, false }, 0, 0 },
1003 { { false, false, false, false }, 0, 0 },
1004 { { false, false, false, false }, 0, 0 },
1005 { { false, false, false, false }, 0, 0 },
1006 { { false, false, false, false }, 0, 0 },
1007 { { false, false, false, false }, 0, 0 },
1008 { { false, false, false, false }, 0, 0 },
1009 { { false, false, false, false }, 0, 0 },
1010 { { false, false, false, false }, 0, 0 },
1011 { { false, false, false, false }, 0, 0 },
1012 { { false, false, false, false }, 0, 0 },
1013 { { false, false, false, false }, 0, 0 },
1014 { { false, false, false, false }, 0, 0 },
1015 { { false, false, false, false }, 0, 0 },
1016 { { false, false, false, false }, 0, 0 },
1017 { { false, false, false, false }, 0, 0 },
1018 { { false, false, false, false }, 0, 0 },
1019 { {  true, false, false,  true }, 0, 0x0001 },		// DFF_Prop_fPrint
1020 
1021 // 960
1022 { { false, false, false, false }, 0, 0 },
1023 { { false, false, false, false }, 0, 0 },
1024 { { false, false, false, false }, 0, 0 },
1025 { { false, false, false, false }, 0, 0 },
1026 { { false, false, false, false }, 0, 0 },
1027 { { false, false, false, false }, 0, 0 },
1028 { { false, false, false, false }, 0, 0 },
1029 { { false, false, false, false }, 0, 0 },
1030 { { false, false, false, false }, 0, 0 },
1031 { { false, false, false, false }, 0, 0 },
1032 { { false, false, false, false }, 0, 0 },
1033 { { false, false, false, false }, 0, 0 },
1034 { { false, false, false, false }, 0, 0 },
1035 { { false, false, false, false }, 0, 0 },
1036 { { false, false, false, false }, 0, 0 },
1037 { { false, false, false, false }, 0, 0 },
1038 { { false, false, false, false }, 0, 0 },
1039 { { false, false, false, false }, 0, 0 },
1040 { { false, false, false, false }, 0, 0 },
1041 { { false, false, false, false }, 0, 0 },
1042 { { false, false, false, false }, 0, 0 },
1043 { { false, false, false, false }, 0, 0 },
1044 { { false, false, false, false }, 0, 0 },
1045 { { false, false, false, false }, 0, 0 },
1046 { { false, false, false, false }, 0, 0 },
1047 { { false, false, false, false }, 0, 0 },
1048 { { false, false, false, false }, 0, 0 },
1049 { { false, false, false, false }, 0, 0 },
1050 { { false, false, false, false }, 0, 0 },
1051 { { false, false, false, false }, 0, 0 },
1052 { { false, false, false, false }, 0, 0 },
1053 { { false, false, false, false }, 0, 0 },
1054 { { false, false, false, false }, 0, 0 },
1055 { { false, false, false, false }, 0, 0 },
1056 { { false, false, false, false }, 0, 0 },
1057 { { false, false, false, false }, 0, 0 },
1058 { { false, false, false, false }, 0, 0 },
1059 { { false, false, false, false }, 0, 0 },
1060 { { false, false, false, false }, 0, 0 },
1061 { { false, false, false, false }, 0, 0 },
1062 { { false, false, false, false }, 0, 0 },
1063 { { false, false, false, false }, 0, 0 },
1064 { { false, false, false, false }, 0, 0 },
1065 { { false, false, false, false }, 0, 0 },
1066 { { false, false, false, false }, 0, 0 },
1067 { { false, false, false, false }, 0, 0 },
1068 { { false, false, false, false }, 0, 0 },
1069 { { false, false, false, false }, 0, 0 },
1070 { { false, false, false, false }, 0, 0 },
1071 { { false, false, false, false }, 0, 0 },
1072 { { false, false, false, false }, 0, 0 },
1073 { { false, false, false, false }, 0, 0 },
1074 { { false, false, false, false }, 0, 0 },
1075 { { false, false, false, false }, 0, 0 },
1076 { { false, false, false, false }, 0, 0 },
1077 { { false, false, false, false }, 0, 0 },
1078 { { false, false, false, false }, 0, 0 },
1079 { { false, false, false, false }, 0, 0 },
1080 { { false, false, false, false }, 0, 0 },
1081 { { false, false, false, false }, 0, 0 },
1082 { { false, false, false, false }, 0, 0 },
1083 { { false, false, false, false }, 0, 0 },
1084 { { false, false, false, false }, 0, 0 },
1085 { { false, false, false, false }, 0, 0 }
1086 
1087 };
1088 
DffPropSet()1089 DffPropSet::DffPropSet()
1090 {
1091 	mpPropSetEntries = reinterpret_cast< DffPropSetEntry* >( new sal_uInt8[ 1024 * sizeof( DffPropSetEntry ) ] );
1092 }
1093 
~DffPropSet()1094 DffPropSet::~DffPropSet()
1095 {
1096 	delete[] reinterpret_cast< sal_uInt8* >( mpPropSetEntries );
1097 }
1098 
ReadPropSet(SvStream & rIn,bool bSetUninitializedOnly)1099 void DffPropSet::ReadPropSet( SvStream& rIn, bool bSetUninitializedOnly )
1100 {
1101 	DffRecordHeader aHd;
1102 	sal_Size nEndOfStream, nEndOfRecord;
1103 	rIn >> aHd;
1104 	nEndOfStream = rIn.Seek(STREAM_SEEK_TO_END);
1105 	aHd.SeekToContent( rIn );
1106 	nEndOfRecord = Min(aHd.GetRecEndFilePos(), nEndOfStream);
1107 
1108 	if ( !bSetUninitializedOnly )
1109 	{
1110 		InitializePropSet( aHd.nRecType );
1111 		maOffsets.clear();
1112 	}
1113 
1114 	sal_uInt32 nPropCount = aHd.nRecInstance;
1115 
1116 	// FilePos der ComplexData merken
1117 	sal_uInt32 nComplexDataFilePos = rIn.Tell() + ( nPropCount * 6 );
1118 
1119 	for( sal_uInt32 nPropNum = 0; nPropNum < nPropCount; nPropNum++ )
1120 	{
1121 		sal_uInt16 nTmp;
1122 		sal_uInt32 nRecType, nContent;
1123 		if (nEndOfRecord - rIn.Tell() < 6)
1124 			break;
1125 		rIn >> nTmp
1126 			>> nContent;
1127 
1128 		nRecType = nTmp & 0x3fff;
1129 
1130 		if ( nRecType > 0x3ff )
1131 			break;
1132 		if ( ( nRecType & 0x3f ) == 0x3f )
1133 		{
1134 			if ( bSetUninitializedOnly )
1135 			{
1136 				sal_uInt32 nCurrentFlags = mpPropSetEntries[ nRecType ].nContent;
1137 				sal_uInt32 nMergeFlags = nContent;
1138 
1139 				nMergeFlags &=  ( nMergeFlags >> 16 ) | 0xffff0000;				// clearing low word
1140 				nMergeFlags &= ( ( nCurrentFlags & 0xffff0000 )					// remove allready hard set
1141 								| ( nCurrentFlags >> 16 ) ) ^ 0xffffffff;		// attributes from mergeflags
1142 				nCurrentFlags &= ( ( nMergeFlags & 0xffff0000 )					// apply zero master bits
1143 								| ( nMergeFlags >> 16 ) ) ^ 0xffffffff;
1144 				nCurrentFlags |= (sal_uInt16)nMergeFlags;						// apply filled master bits
1145 				mpPropSetEntries[ nRecType ].nContent = nCurrentFlags;
1146 				mpPropSetEntries[ nRecType ].nComplexIndexOrFlagsHAttr |= static_cast< sal_uInt16 >( nContent >> 16 );
1147 			}
1148 			else
1149 			{
1150 				// clear flags that have to be cleared
1151 				mpPropSetEntries[ nRecType ].nContent &= ( ( nContent >> 16 ) ^ 0xffffffff );
1152 				// set flags that have to be set
1153 				mpPropSetEntries[ nRecType ].nContent |= nContent;
1154 				mpPropSetEntries[ nRecType ].nComplexIndexOrFlagsHAttr = static_cast< sal_uInt16 >( nContent >> 16 );
1155 			}
1156 		}
1157 		else
1158 		{
1159 			bool bSetProperty = !bSetUninitializedOnly || ( !IsProperty( nRecType ) || !IsHardAttribute( nRecType ) );
1160 
1161 			DffPropFlags aPropFlag = { 1, 0, 0, 0 };
1162 			if ( nTmp & 0x4000 )
1163 				aPropFlag.bBlip = sal_True;
1164 			if ( nTmp & 0x8000 )
1165 				aPropFlag.bComplex = sal_True;
1166 			if ( aPropFlag.bComplex && nContent && ( nComplexDataFilePos < nEndOfRecord ) )
1167             {
1168                 // normally nContent is the complete size of the complex property,
1169                 // but this is not always true for IMsoArrays ( what the hell is a IMsoArray ? )
1170 
1171                 // I love special threatments :-(
1172 				if ( ( nRecType == DFF_Prop_pVertices ) || ( nRecType == DFF_Prop_pSegmentInfo )
1173                     || ( nRecType == DFF_Prop_fillShadeColors ) || ( nRecType == DFF_Prop_lineDashStyle )
1174                         || ( nRecType == DFF_Prop_pWrapPolygonVertices ) || ( nRecType == DFF_Prop_connectorPoints )
1175 							|| ( nRecType == DFF_Prop_Handles ) || ( nRecType == DFF_Prop_pFormulas )
1176 								|| ( nRecType == DFF_Prop_textRectangles ) )
1177 				{
1178                     // now check if the current content size is possible, or 6 bytes too small
1179 					sal_uInt32  nOldPos = rIn.Tell();
1180 					sal_Int16   nNumElem, nNumElemReserved, nSize;
1181 
1182                     rIn.Seek( nComplexDataFilePos );
1183 					rIn >>  nNumElem >> nNumElemReserved >> nSize;
1184                     if ( nNumElemReserved >= nNumElem )
1185                     {
1186                         // the size of these array elements is nowhere defined,
1187                         // what if the size is negative ?
1188                         // ok, we will make it positive and shift it.
1189                         // for -16 this works
1190 						if ( nSize < 0 )
1191 							nSize = ( -nSize ) >> 2;
1192                         sal_uInt32 nDataSize = (sal_uInt32)( nSize * nNumElem );
1193 
1194                         // sometimes the content size is 6 bytes too small (array header information is missing )
1195                         if ( nDataSize == nContent )
1196                             nContent += 6;
1197 
1198                         // check if array fits into the PropertyContainer
1199                         if ( nContent > nEndOfRecord - nComplexDataFilePos)
1200                             nContent = 0;
1201                     }
1202                     else
1203                         nContent = 0;
1204 					rIn.Seek( nOldPos );
1205                 } else {
1206                     // check if complex property fits into the PropertyContainer
1207                     if ( nContent > nEndOfRecord - nComplexDataFilePos)
1208                         nContent = 0;
1209                 }
1210                 if ( nContent )
1211                 {
1212 					if ( bSetProperty )
1213 					{
1214 						mpPropSetEntries[ nRecType ].nComplexIndexOrFlagsHAttr = static_cast< sal_uInt16 >( maOffsets.size() );
1215 						maOffsets.push_back( nComplexDataFilePos );		// insert the filepos of this property;
1216 					}
1217 					nComplexDataFilePos += nContent;					// store filepos, that is used for the next complex property
1218                 }
1219                 else													// a complex property needs content
1220                     aPropFlag.bSet = sal_False;							// otherwise something is wrong
1221 			}
1222 			if ( bSetProperty )
1223 			{
1224 				mpPropSetEntries[ nRecType ].nContent = nContent;
1225 				mpPropSetEntries[ nRecType ].aFlags = aPropFlag;
1226 			}
1227 		}
1228 	}
1229 	aHd.SeekToEndOfRecord( rIn );
1230 }
1231 
operator >>(SvStream & rIn,DffPropSet & rRec)1232 SvStream& operator>>( SvStream& rIn, DffPropSet& rRec )
1233 {
1234 	rRec.ReadPropSet( rIn, false );
1235 	return rIn;
1236 }
1237 
operator |=(SvStream & rIn,DffPropSet & rRec)1238 SvStream& operator|=( SvStream& rIn, DffPropSet& rRec )
1239 {
1240 	rRec.ReadPropSet( rIn, true );
1241 	return rIn;
1242 }
1243 
InitializePropSet(sal_uInt16 nPropSetType) const1244 void DffPropSet::InitializePropSet( sal_uInt16 nPropSetType ) const
1245 {
1246     /*
1247     cmc:
1248     " Boolean properties are grouped in bitfields by property set; note that
1249     the Boolean properties in each property set are contiguous. They are saved
1250     under the property ID of the last Boolean property in the set, and are
1251     placed in the value field in reverse order starting with the last property
1252     in the low bit. "
1253 
1254     e.g.
1255 
1256     fEditedWrap
1257     fBehindDocument
1258     fOnDblClickNotify
1259     fIsButton
1260     fOneD
1261     fHidden
1262     fPrint
1263 
1264     are all part of a group and all are by default false except for fPrint,
1265     which equates to a default bit sequence for the group of 0000001 -> 0x1
1266 
1267     If at a later stage word sets fBehindDocument away from the default it
1268     will be done by having a property named fPrint whose bitsequence will have
1269     the fBehindDocument bit set. e.g. a DFF_Prop_fPrint with value 0x200020
1270     has set bit 6 on so as to enable fBehindDocument (as well as disabling
1271     everything else)
1272     */
1273 	if ( nPropSetType == DFF_msofbtOPT )
1274 	{
1275 		memcpy( mpPropSetEntries, mso_PropSetDefaults, 0x400 * sizeof( DffPropSetEntry ) );
1276 	}
1277 	else
1278 	{
1279 		memset( mpPropSetEntries, 0, 0x400 * sizeof( DffPropSetEntry ) );
1280 	}
1281 }
1282 
IsHardAttribute(sal_uInt32 nId) const1283 sal_Bool DffPropSet::IsHardAttribute( sal_uInt32 nId ) const
1284 {
1285 	sal_Bool bRetValue = sal_True;
1286 	nId &= 0x3ff;
1287 	if ( ( nId & 0x3f ) >= 48 )	// is this a flag id
1288 		bRetValue = ( mpPropSetEntries[ nId ].nComplexIndexOrFlagsHAttr & ( 1 << ( 0xf - ( nId & 0xf ) ) ) ) != 0;
1289 	else
1290 		bRetValue = ( mpPropSetEntries[ nId ].aFlags.bSoftAttr == 0 );
1291 	return bRetValue;
1292 };
1293 
GetPropertyValue(sal_uInt32 nId,sal_uInt32 nDefault) const1294 sal_uInt32 DffPropSet::GetPropertyValue( sal_uInt32 nId, sal_uInt32 nDefault ) const
1295 {
1296 	nId &= 0x3ff;
1297 	return ( mpPropSetEntries[ nId ].aFlags.bSet ) ? mpPropSetEntries[ nId ].nContent : nDefault;
1298 };
1299 
GetPropertyBool(sal_uInt32 nId,bool bDefault) const1300 bool DffPropSet::GetPropertyBool( sal_uInt32 nId, bool bDefault ) const
1301 {
1302     sal_uInt32 nBaseId = nId | 31;              // base ID to get the sal_uInt32 property value
1303     sal_uInt32 nMask = 1 << (nBaseId - nId);    // bit mask of the boolean property
1304 
1305     sal_uInt32 nPropValue = GetPropertyValue( nBaseId, bDefault ? nMask : 0 );
1306     return (nPropValue & nMask) != 0;
1307 }
1308 
GetPropertyString(sal_uInt32 nId,SvStream & rStrm) const1309 ::rtl::OUString DffPropSet::GetPropertyString( sal_uInt32 nId, SvStream& rStrm ) const
1310 {
1311     sal_Size nOldPos = rStrm.Tell();
1312     ::rtl::OUStringBuffer aBuffer;
1313     sal_uInt32 nBufferSize = GetPropertyValue( nId );
1314     if( (nBufferSize > 0) && IsComplex( nId ) && SeekToContent( nId, rStrm ) )
1315     {
1316         sal_Int32 nStrLen = static_cast< sal_Int32 >( nBufferSize / 2 );
1317         aBuffer.ensureCapacity( nStrLen );
1318         for( sal_Int32 nCharIdx = 0; nCharIdx < nStrLen; ++nCharIdx )
1319         {
1320             sal_uInt16 nChar = 0;
1321             rStrm >> nChar;
1322             if( nChar > 0 )
1323                 aBuffer.append( static_cast< sal_Unicode >( nChar ) );
1324             else
1325                 break;
1326         }
1327     }
1328     rStrm.Seek( nOldPos );
1329     return aBuffer.makeStringAndClear();
1330 }
1331 
SetPropertyValue(sal_uInt32 nId,sal_uInt32 nValue) const1332 void DffPropSet::SetPropertyValue( sal_uInt32 nId, sal_uInt32 nValue ) const
1333 {
1334 	nId &= 0x3ff;
1335 	mpPropSetEntries[ nId ].aFlags.bSet = true;
1336 	mpPropSetEntries[ nId ].nContent = nValue;
1337 };
1338 
SeekToContent(sal_uInt32 nRecType,SvStream & rStrm) const1339 sal_Bool DffPropSet::SeekToContent( sal_uInt32 nRecType, SvStream& rStrm ) const
1340 {
1341 	nRecType &= 0x3ff;
1342 	if ( mpPropSetEntries[ nRecType ].aFlags.bSet )
1343 	{
1344 		if ( mpPropSetEntries[ nRecType ].aFlags.bComplex )
1345 		{
1346 			sal_uInt16 nIndex = mpPropSetEntries[ nRecType ].nComplexIndexOrFlagsHAttr;
1347 			if ( nIndex < maOffsets.size() )
1348 			{
1349 				rStrm.Seek( maOffsets[ nIndex ] );
1350 				return sal_True;
1351 			}
1352 		}
1353 	}
1354 	return sal_False;
1355 }
1356 
1357 /* vi:set tabstop=4 shiftwidth=4 expandtab: */
1358