xref: /AOO41X/main/svx/source/customshapes/EnhancedCustomShapeGeometry.cxx (revision 7b6b9ddb4b63a97ea0214b9472b5270bbf674949)
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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_svx.hxx"
26 #include "svx/EnhancedCustomShapeGeometry.hxx"
27 #include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp>
28 /*
29 static const SvxMSDffVertPair Vert[] =
30 {
31     { 0, 0, }
32 };
33 static const sal_uInt16 Segm[] =
34 {
35     0x4000,
36     0x8000
37 };
38 static const SvxMSDffCalculationData Calc[] =
39 {
40     { 0x0000, 0, 0, 0 }
41 };
42 static const sal_Int32 Default[] =
43 {
44     0
45 };
46 static const SvxMSDffTextRect TextRect[] =
47 {
48     { { 0, 0 }, { 0, 0 } }
49 };
50 static const mso_CustomShape mso =
51 {
52     (SvxMSDffVertPair*)mso_sptVert, sizeof( mso_sptVert ) / sizeof( SvxMSDffVertPair ),
53     (sal_uInt16*)mso_sptSegm, sizeof( mso_sptSegm ) >> 1,
54     (SvxMSDffCalculationData*)mso_sptCalc, sizeof( mso_sptCalc ) / sizeof( SvxMSDffCalculationData ),
55     (sal_Int32*)mso_sptDefault,
56     (SvxMSDffTextRectangles*)mso_sptTextRect, sizeof( mso_sptTextRect ) / sizeof( SvxMSDffTextRectangles ),
57     21600, 21600,
58     0x80000000, 0x80000000,
59     (SvxMSDffVertPair*)mso_sptVert, sizeof( mso_sptVert ) / sizeof( SvxMSDffVertPair ),
60     (SvxMSDffHandles*)mso_sptHandles, sizeof( mso_sptHandles ) / sizeof( SvxMSDffHandles )
61 };
62 */
63 
64 static const sal_Int32 mso_sptDefault0[] =
65 {
66     1, 0
67 };
68 static const sal_Int32 mso_sptDefault1400[] =
69 {
70     1, 1400
71 };
72 static const sal_Int32 mso_sptDefault1800[] =
73 {
74     1, 1800
75 };
76 static const sal_Int32 mso_sptDefault2500[] =
77 {
78     1, 2500
79 };
80 static const sal_Int32 mso_sptDefault2700[] =
81 {
82     1, 2700
83 };
84 static const sal_Int32 mso_sptDefault3600[] =
85 {
86     1, 3600
87 };
88 static const sal_Int32 mso_sptDefault3700[] =
89 {
90     1, 3700
91 };
92 static const sal_Int32 mso_sptDefault5400[] =
93 {
94     1, 5400
95 };
96 static const sal_Int32 mso_sptDefault7200[] =
97 {
98     1, 7200
99 };
100 static const sal_Int32 mso_sptDefault8100[] =
101 {
102     1, 8100
103 };
104 static const sal_Int32 mso_sptDefault9600[] =
105 {
106     1, 9600
107 };
108 static const sal_Int32 mso_sptDefault10800[] =
109 {
110     1, 10800
111 };
112 static const sal_Int32 mso_sptDefault12000[] =
113 {
114     1, 12000
115 };
116 static const sal_Int32 mso_sptDefault13500[] =
117 {
118     1, 13500
119 };
120 static const sal_Int32 mso_sptDefault16200[] =
121 {
122     1, 16200
123 };
124 static const sal_Int32 mso_sptDefault16200and5400[] =
125 {
126     2, 16200, 5400
127 };
128 
129 static const SvxMSDffVertPair mso_sptArcVert[] =
130 {
131     { 0, 0 }, { 21600, 21600 }, { 3 MSO_I, 1 MSO_I }, { 7 MSO_I, 5 MSO_I }, { 10800, 10800 },
132     { 0, 0 }, { 21600, 21600 }, { 3 MSO_I, 1 MSO_I }, { 7 MSO_I, 5 MSO_I }
133 };
134 static const sal_uInt16 mso_sptArcSegm[] =
135 {
136     0xa504, 0xab00, 0x0001, 0x6001, 0x8000,
137     0xa504, 0xaa00, 0x8000
138 };
139 static const SvxMSDffCalculationData mso_sptArcCalc[] =
140 {
141     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
142     { 0x2000, { 0x400, 10800, 0 } },
143     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
144     { 0x2000, { 0x402, 10800, 0 } },
145     { 0x4009, { 10800, DFF_Prop_adjust2Value, 0 } },
146     { 0x2000, { 0x404, 10800, 0 } },
147     { 0x400a, { 10800, DFF_Prop_adjust2Value, 0 } },
148     { 0x2000, { 0x406, 10800, 0 } }
149 };
150 static const sal_Int32 mso_sptArcDefault[] =
151 {
152     2, 270, 0
153 };
154 static const SvxMSDffVertPair mso_sptStandardGluePoints[] =
155 {
156     { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 21600, 10800 }
157 };
158 static const SvxMSDffHandle mso_sptArcHandle[] =
159 {
160     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
161         10800, 0x100, 10800, 10800, 10800, 10800, 0x80000000, 0x7fffffff },
162     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
163         10800, 0x101, 10800, 10800, 10800, 10800, 0x80000000, 0x7fffffff }
164 };
165 static const mso_CustomShape msoArc =
166 {
167     (SvxMSDffVertPair*)mso_sptArcVert, sizeof( mso_sptArcVert ) / sizeof( SvxMSDffVertPair ),
168     (sal_uInt16*)mso_sptArcSegm, sizeof( mso_sptArcSegm ) >> 1,
169     (SvxMSDffCalculationData*)mso_sptArcCalc, sizeof( mso_sptArcCalc ) / sizeof( SvxMSDffCalculationData ),
170     (sal_Int32*)mso_sptArcDefault,
171     NULL, 0,
172     21600, 21600,
173     0x80000000, 0x80000000,
174     NULL, 0,
175     (SvxMSDffHandle*)mso_sptArcHandle, sizeof( mso_sptArcHandle ) / sizeof( SvxMSDffHandle )        // handles
176 };
177 
178 static const SvxMSDffVertPair mso_sptTextSimpleVert[] =
179 {
180     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
181 };
182 static const mso_CustomShape msoTextSimple =
183 {
184     (SvxMSDffVertPair*)mso_sptTextSimpleVert, sizeof( mso_sptTextSimpleVert ) / sizeof( SvxMSDffVertPair ),
185     NULL, 0,
186     NULL, 0,
187     NULL,
188     NULL, 0,
189     21600, 21600,
190     0x80000000, 0x80000000,
191     NULL, 0,
192     NULL, 0     // handles
193 };
194 
195 static const SvxMSDffVertPair mso_sptRectangleVert[] =
196 {
197     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
198 };
199 static const mso_CustomShape msoRectangle =
200 {
201     (SvxMSDffVertPair*)mso_sptRectangleVert, sizeof( mso_sptRectangleVert ) / sizeof( SvxMSDffVertPair ),
202     NULL, 0,
203     NULL, 0,
204     NULL,
205     NULL, 0,
206     21600, 21600,
207     0x80000000, 0x80000000,
208     NULL, 0,
209     NULL, 0     // handles
210 };
211 
212 static const SvxMSDffVertPair mso_sptRoundRectangleVert[] = // adj value 0 -> 10800
213 {
214     { 7 MSO_I, 0 }, { 0, 8 MSO_I }, { 0, 9 MSO_I }, { 7 MSO_I, 21600 },
215     { 10 MSO_I, 21600 }, { 21600, 9 MSO_I }, { 21600, 8 MSO_I }, { 10 MSO_I, 0 }
216 };
217 static const sal_uInt16 mso_sptRoundRectangleSegm[] =
218 {
219     0x4000, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x6000, 0x8000
220 };
221 static const SvxMSDffCalculationData mso_sptRoundRectangleCalc[] =
222 {
223     { 0x000e, { 0, 45, 0 } },
224     { 0x6009, { DFF_Prop_adjustValue, 0x400, 0 } },
225     { 0x2001, { 0x401, 3163, 7636 } },
226     { 0x6000, { DFF_Prop_geoLeft, 0x402, 0 } },
227     { 0x6000, { DFF_Prop_geoTop, 0x402, 0 } },
228     { 0xa000, { DFF_Prop_geoRight, 0, 0x402 } },
229     { 0xa000, { DFF_Prop_geoBottom, 0, 0x402 } },
230     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
231     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
232     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
233     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } }
234 };
235 static const SvxMSDffTextRectangles mso_sptRoundRectangleTextRect[] =
236 {
237     { { 3 MSO_I, 4 MSO_I }, { 5 MSO_I, 6 MSO_I } }
238 };
239 static const SvxMSDffHandle mso_sptRoundRectangleHandle[] =
240 {
241     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
242         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
243 };
244 static const mso_CustomShape msoRoundRectangle =
245 {
246     (SvxMSDffVertPair*)mso_sptRoundRectangleVert, sizeof( mso_sptRoundRectangleVert ) / sizeof( SvxMSDffVertPair ),
247     (sal_uInt16*)mso_sptRoundRectangleSegm, sizeof( mso_sptRoundRectangleSegm ) >> 1,
248     (SvxMSDffCalculationData*)mso_sptRoundRectangleCalc, sizeof( mso_sptRoundRectangleCalc ) / sizeof( SvxMSDffCalculationData ),
249     (sal_Int32*)mso_sptDefault3600,
250     (SvxMSDffTextRectangles*)mso_sptRoundRectangleTextRect, sizeof( mso_sptRoundRectangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
251     21600, 21600,
252     10800, 10800,
253     NULL, 0,
254     (SvxMSDffHandle*)mso_sptRoundRectangleHandle, sizeof( mso_sptRoundRectangleHandle ) / sizeof( SvxMSDffHandle )      // handles
255 };
256 
257 static const SvxMSDffVertPair mso_sptRightTriangleVert[] =
258 {
259     { 0, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
260 };
261 static const SvxMSDffTextRectangles mso_sptRightTriangleTextRect[] =
262 {
263     { { 1900, 12700 }, { 12700, 19700 } }
264 };
265 static const SvxMSDffVertPair mso_sptRightTriangleGluePoints[] =
266 {
267     { 0, 0 }, { 0, 10800 }, { 0, 21600 }, { 10800, 21600 }, { 21600, 21600 }, { 10800, 10800 }
268 };
269 static const mso_CustomShape msoRightTriangle =
270 {
271     (SvxMSDffVertPair*)mso_sptRightTriangleVert, sizeof( mso_sptRightTriangleVert ) / sizeof( SvxMSDffVertPair ),
272     NULL, 0,
273     NULL, 0,
274     NULL,
275     (SvxMSDffTextRectangles*)mso_sptRightTriangleTextRect, sizeof( mso_sptRightTriangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
276     21600, 21600,
277     0x80000000, 0x80000000,
278     (SvxMSDffVertPair*)mso_sptRightTriangleGluePoints, sizeof( mso_sptRightTriangleGluePoints ) / sizeof( SvxMSDffVertPair ),
279     NULL, 0     // handles
280 };
281 
282 static const SvxMSDffVertPair mso_sptEllipseVert[] =
283 {
284     { 10800, 10800 }, { 10800, 10800 },  { 0, 360 }
285 };
286 static const sal_uInt16 mso_sptEllipseSegm[] =
287 {
288     0xa203, 0x6000, 0x8000
289 };
290 static const SvxMSDffTextRectangles mso_sptEllipseTextRect[] =
291 {
292     { { 3163, 3163 }, { 18437, 18437 } }
293 };
294 static const SvxMSDffVertPair mso_sptEllipseGluePoints[] =
295 {
296     { 10800, 0 }, { 3163, 3163 }, { 0, 10800 }, { 3163, 18437 }, { 10800, 21600 }, { 18437, 18437 }, { 21600, 10800 }, { 18437, 3163 }
297 };
298 static const mso_CustomShape msoEllipse =
299 {
300     (SvxMSDffVertPair*)mso_sptEllipseVert, sizeof( mso_sptEllipseVert ) / sizeof( SvxMSDffVertPair ),
301     (sal_uInt16*)mso_sptEllipseSegm, sizeof( mso_sptEllipseSegm ) >> 1,
302     NULL, 0,
303     NULL,
304     (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
305     21600, 21600,
306     0x80000000, 0x80000000,
307     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
308     NULL, 0     // handles
309 };
310 
311 static const SvxMSDffVertPair mso_sptParallelogramVert[] =  // adjustment1 : 0 - 21600
312 {
313     { 0 MSO_I, 0 }, { 21600, 0 }, { 1 MSO_I, 21600 }, { 0, 21600 }
314 };
315 static const sal_uInt16 mso_sptParallelogramSegm[] =
316 {
317     0x4000, 0x0003, 0x6001, 0x8000
318 };
319 static const SvxMSDffCalculationData mso_sptParallelogramCalc[] =
320 {
321     { 0x4000, { 0, DFF_Prop_adjustValue, 0 } },
322     { 0x8000, { 0, 21600, DFF_Prop_adjustValue } },
323     { 0x2001, { DFF_Prop_adjustValue, 10, 24 } },
324     { 0x2000, { 0x0402, 1750, 0 } },
325     { 0x8000, { 21600, 0, 0x0403 } },
326     { 0x2001, { 0x400, 1, 2 } },
327     { 0x4000, { 10800, 0x405, 0 } },
328     { 0x2000, { 0x400, 0, 10800 } },
329     { 0x6006, { 0x407, 0x40d, 0 } },
330     { 0x8000, { 10800, 0, 0x405 } },
331     { 0x6006, { 0x407, 0x40c, 21600 } },
332     { 0x8000, { 21600, 0, 0x405 } },
333     { 0x8001, { 21600, 10800, 0x400 } },
334     { 0x8000, { 21600, 0, 0x40c } }
335 };
336 static const SvxMSDffTextRectangles mso_sptParallelogramTextRect[] =
337 {
338     { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
339 };
340 static const SvxMSDffVertPair mso_sptParallelogramGluePoints[] =
341 {
342     { 6 MSO_I, 0 }, { 10800, 8 MSO_I }, { 11 MSO_I, 10800 }, { 9 MSO_I, 21600 }, { 10800, 10 MSO_I }, { 5 MSO_I, 10800 }
343 };
344 static const SvxMSDffHandle mso_sptParallelogramHandle[] =
345 {
346     {   MSDFF_HANDLE_FLAGS_RANGE,
347         0x100, 0, 10800, 10800, 0, 21600, 0x80000000, 0x7fffffff }
348 };
349 static const mso_CustomShape msoParallelogram =
350 {
351     (SvxMSDffVertPair*)mso_sptParallelogramVert, sizeof( mso_sptParallelogramVert ) / sizeof( SvxMSDffVertPair ),
352     (sal_uInt16*)mso_sptParallelogramSegm, sizeof( mso_sptParallelogramSegm ) >> 1,
353     (SvxMSDffCalculationData*)mso_sptParallelogramCalc, sizeof( mso_sptParallelogramCalc ) / sizeof( SvxMSDffCalculationData ),
354     (sal_Int32*)mso_sptDefault5400,
355     (SvxMSDffTextRectangles*)mso_sptParallelogramTextRect, sizeof( mso_sptParallelogramTextRect ) / sizeof( SvxMSDffTextRectangles ),
356     21600, 21600,
357     0x80000000, 0x80000000,
358     (SvxMSDffVertPair*)mso_sptParallelogramGluePoints, sizeof( mso_sptParallelogramGluePoints ) / sizeof( SvxMSDffVertPair ),
359     (SvxMSDffHandle*)mso_sptParallelogramHandle, sizeof( mso_sptParallelogramHandle ) / sizeof( SvxMSDffHandle )        // handles
360 };
361 
362 static const SvxMSDffVertPair mso_sptDiamondVert[] =
363 {
364     { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 10800 }, { 10800, 0 }
365 };
366 static const SvxMSDffTextRectangles mso_sptDiamondTextRect[] =
367 {
368     { { 5400, 5400 }, { 16200, 16200 } }
369 };
370 static const mso_CustomShape msoDiamond =
371 {
372     (SvxMSDffVertPair*)mso_sptDiamondVert, sizeof( mso_sptDiamondVert ) / sizeof( SvxMSDffVertPair ),
373     NULL, 0,
374     NULL, 0,
375     NULL,
376     (SvxMSDffTextRectangles*)mso_sptDiamondTextRect, sizeof( mso_sptDiamondTextRect ) / sizeof( SvxMSDffTextRectangles ),
377     21600, 21600,
378     0x80000000, 0x80000000,
379     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
380     NULL, 0     // handles
381 };
382 
383 static const SvxMSDffVertPair mso_sptTrapezoidVert[] =      // adjustment1 : 0 - 10800
384 {
385     { 0, 0 }, { 21600, 0 }, {0 MSO_I, 21600 }, { 1 MSO_I, 21600 }
386 };
387 static const sal_uInt16 mso_sptTrapezoidSegm[] =
388 {
389     0x4000, 0x0003, 0x6001, 0x8000
390 };
391 static const SvxMSDffCalculationData mso_sptTrapezoidCalc[] =
392 {
393     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
394     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
395     { 0x2001, { DFF_Prop_adjustValue, 10, 18 } },
396     { 0x2000, { 0x0402, 1750, 0 } },
397     { 0x8000, { 21600, 0, 0x403 } },
398     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
399     { 0x8000, { 21600, 0, 0x405 } }
400 };
401 static const SvxMSDffTextRectangles mso_sptTrapezoidTextRect[] =
402 {
403     { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
404 };
405 static const SvxMSDffVertPair mso_sptTrapezoidGluePoints[] =
406 {
407     { 6 MSO_I, 10800 }, { 10800, 21600 }, { 5 MSO_I, 10800 }, { 10800, 0 }
408 };
409 static const SvxMSDffHandle mso_sptTrapezoidHandle[] =
410 {
411     {   MSDFF_HANDLE_FLAGS_RANGE,
412         0x100, 1, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
413 };
414 static const mso_CustomShape msoTrapezoid =
415 {
416     (SvxMSDffVertPair*)mso_sptTrapezoidVert, sizeof( mso_sptTrapezoidVert ) / sizeof( SvxMSDffVertPair ),
417     (sal_uInt16*)mso_sptTrapezoidSegm, sizeof( mso_sptTrapezoidSegm ) >> 1,
418     (SvxMSDffCalculationData*)mso_sptTrapezoidCalc, sizeof( mso_sptTrapezoidCalc ) / sizeof( SvxMSDffCalculationData ),
419     (sal_Int32*)mso_sptDefault5400,
420     (SvxMSDffTextRectangles*)mso_sptTrapezoidTextRect, sizeof( mso_sptTrapezoidTextRect ) / sizeof( SvxMSDffTextRectangles ),
421     21600, 21600,
422     0x80000000, 0x80000000,
423     (SvxMSDffVertPair*)mso_sptTrapezoidGluePoints, sizeof( mso_sptTrapezoidGluePoints ) / sizeof( SvxMSDffVertPair ),
424     (SvxMSDffHandle*)mso_sptTrapezoidHandle, sizeof( mso_sptTrapezoidHandle ) / sizeof( SvxMSDffHandle )        // handles
425 };
426 
427 static const SvxMSDffVertPair mso_sptOctagonVert[] =        // adjustment1 : 0 - 10800
428 {
429     { 0 MSO_I, 0 }, { 2 MSO_I, 0 }, { 21600, 1 MSO_I }, { 21600, 3 MSO_I },
430     { 2 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0, 3 MSO_I }, { 0, 1 MSO_I }
431 };
432 static const sal_uInt16 mso_sptOctagonSegm[] =
433 {
434     0x4000, 0x0007, 0x6001, 0x8000
435 };
436 static const SvxMSDffCalculationData mso_sptOctagonCalc[] =
437 {
438     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
439     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
440     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
441     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
442     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
443     { 0x6000, { DFF_Prop_geoLeft, 0x404, 0 } },
444     { 0x6000, { DFF_Prop_geoTop, 0x404, 0 } },
445     { 0xa000, { DFF_Prop_geoRight, 0, 0x404 } },
446     { 0xa000, { DFF_Prop_geoBottom, 0, 0x404 } }
447 };
448 static const sal_Int32 mso_sptOctagonDefault[] =
449 {
450     1, 5000
451 };
452 static const SvxMSDffTextRectangles mso_sptOctagonTextRect[] =
453 {
454     { { 5 MSO_I, 6 MSO_I }, { 7 MSO_I, 8 MSO_I } }
455 };
456 static const SvxMSDffHandle mso_sptOctagonHandle[] =
457 {
458     {   MSDFF_HANDLE_FLAGS_RANGE,
459         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
460 };
461 static const mso_CustomShape msoOctagon =
462 {
463     (SvxMSDffVertPair*)mso_sptOctagonVert, sizeof( mso_sptOctagonVert ) / sizeof( SvxMSDffVertPair ),
464     (sal_uInt16*)mso_sptOctagonSegm, sizeof( mso_sptOctagonSegm ) >> 1,
465     (SvxMSDffCalculationData*)mso_sptOctagonCalc, sizeof( mso_sptOctagonCalc ) / sizeof( SvxMSDffCalculationData ),
466     (sal_Int32*)mso_sptOctagonDefault,
467     (SvxMSDffTextRectangles*)mso_sptOctagonTextRect, sizeof( mso_sptOctagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
468     21600, 21600,
469     10800, 10800,
470     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
471     (SvxMSDffHandle*)mso_sptOctagonHandle, sizeof( mso_sptOctagonHandle ) / sizeof( SvxMSDffHandle )        // handles
472 };
473 
474 static const SvxMSDffVertPair mso_sptIsocelesTriangleVert[] =   // adjustment1 : 0 - 21600
475 {
476     { 0 MSO_I, 0 }, { 21600, 21600 }, { 0, 21600 }
477 };
478 static const sal_uInt16 mso_sptIsocelesTriangleSegm[] =
479 {
480     0x4000, 0x0002, 0x6001, 0x8000
481 };
482 static const SvxMSDffCalculationData mso_sptIsocelesTriangleCalc[] =
483 {
484     { 0x4000, { 0, DFF_Prop_adjustValue, 0 } },
485     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
486     { 0x2000, { 0x401, 10800, 0 } },
487     { 0x2001, { DFF_Prop_adjustValue, 2, 3 } },
488     { 0x2000, { 0x403, 7200, 0 } },
489     { 0x8000, { 21600, 0, 0x400 } },
490     { 0x2001, { 0x405, 1, 2 } },
491     { 0x8000, { 21600, 0, 0x406 } }
492 };
493 static const SvxMSDffTextRectangles mso_sptIsocelesTriangleTextRect[] =
494 {
495     { { 1 MSO_I, 10800 }, { 2 MSO_I, 18000 } },
496     { { 3 MSO_I, 7200 }, { 4 MSO_I, 21600   } }
497 };
498 static const SvxMSDffVertPair mso_sptIsocelesTriangleGluePoints[] =
499 {
500     { 0 MSO_I, 0 }, { 1 MSO_I, 10800 }, { 0, 21600 }, { 10800, 21600 }, { 21600, 21600 }, { 7 MSO_I, 10800 }
501 };
502 static const SvxMSDffHandle mso_sptIsocelesTriangleHandle[] =
503 {
504     {   MSDFF_HANDLE_FLAGS_RANGE,
505         0x100, 0, 10800, 10800, 0, 21600, 0x80000000, 0x7fffffff }
506 };
507 static const mso_CustomShape msoIsocelesTriangle =
508 {
509     (SvxMSDffVertPair*)mso_sptIsocelesTriangleVert, sizeof( mso_sptIsocelesTriangleVert ) / sizeof( SvxMSDffVertPair ),
510     (sal_uInt16*)mso_sptIsocelesTriangleSegm, sizeof( mso_sptIsocelesTriangleSegm ) >> 1,
511     (SvxMSDffCalculationData*)mso_sptIsocelesTriangleCalc, sizeof( mso_sptIsocelesTriangleCalc ) / sizeof( SvxMSDffCalculationData ),
512     (sal_Int32*)mso_sptDefault10800,
513     (SvxMSDffTextRectangles*)mso_sptIsocelesTriangleTextRect, sizeof( mso_sptIsocelesTriangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
514     21600, 21600,
515     0x80000000, 0x80000000,
516     (SvxMSDffVertPair*)mso_sptIsocelesTriangleGluePoints, sizeof( mso_sptIsocelesTriangleGluePoints ) / sizeof( SvxMSDffVertPair ),
517     (SvxMSDffHandle*)mso_sptIsocelesTriangleHandle, sizeof( mso_sptIsocelesTriangleHandle ) / sizeof( SvxMSDffHandle )      // handles
518 };
519 
520 static const SvxMSDffVertPair mso_sptHexagonVert[] =                // adjustment1 : 0 - 10800
521 {
522     { 0 MSO_I, 0 }, { 1 MSO_I, 0 }, { 21600, 10800 }, { 1 MSO_I, 21600 },
523     { 0 MSO_I, 21600 }, { 0, 10800 }
524 };
525 static const sal_uInt16 mso_sptHexagonSegm[] =
526 {
527     0x4000, 0x0005, 0x6001, 0x8000
528 };
529 static const SvxMSDffCalculationData mso_sptHexagonCalc[] =
530 {
531     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
532     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
533     { 0x2001, { DFF_Prop_adjustValue, 100, 234 } },
534     { 0x2000, { 0x402, 1700, 0 } },
535     { 0x8000, { 21600, 0, 0x403 } }
536 };
537 static const SvxMSDffTextRectangles mso_sptHexagonTextRect[] =
538 {
539     { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
540 };
541 static const SvxMSDffHandle mso_sptHexagonHandle[] =
542 {
543     {   MSDFF_HANDLE_FLAGS_RANGE,
544         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
545 };
546 static const mso_CustomShape msoHexagon =
547 {
548     (SvxMSDffVertPair*)mso_sptHexagonVert, sizeof( mso_sptHexagonVert ) / sizeof( SvxMSDffVertPair ),
549     (sal_uInt16*)mso_sptHexagonSegm, sizeof( mso_sptHexagonSegm ) >> 1,
550     (SvxMSDffCalculationData*)mso_sptHexagonCalc, sizeof( mso_sptHexagonCalc ) / sizeof( SvxMSDffCalculationData ),
551     (sal_Int32*)mso_sptDefault5400,
552     (SvxMSDffTextRectangles*)mso_sptHexagonTextRect, sizeof( mso_sptHexagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
553     21600, 21600,
554     0x80000000, 0x80000000,
555     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
556     (SvxMSDffHandle*)mso_sptHexagonHandle, sizeof( mso_sptHexagonHandle ) / sizeof( SvxMSDffHandle )        // handles
557 };
558 
559 static const SvxMSDffVertPair mso_sptPentagonVert[] =
560 {
561     { 10800, 0 }, { 0, 8260 }, { 4230, 21600 }, { 17370, 21600 },
562     { 21600, 8260 }, { 10800, 0 }
563 };
564 static const SvxMSDffTextRectangles mso_sptPentagonTextRect[] =
565 {
566     { { 4230, 5080 }, { 17370, 21600 } }
567 };
568 static const SvxMSDffVertPair mso_sptPentagonGluePoints[] =
569 {
570     { 10800, 0 }, { 0, 8260 }, { 4230, 21600 }, { 10800, 21600 },
571     { 17370, 21600 }, { 21600, 8260 }
572 };
573 static const mso_CustomShape msoPentagon =
574 {
575     (SvxMSDffVertPair*)mso_sptPentagonVert, sizeof( mso_sptPentagonVert ) / sizeof( SvxMSDffVertPair ),
576     NULL, 0,
577     NULL, 0,
578     NULL,
579     (SvxMSDffTextRectangles*)mso_sptPentagonTextRect, sizeof( mso_sptPentagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
580     21600, 21600,
581     0x80000000, 0x80000000,
582     (SvxMSDffVertPair*)mso_sptPentagonGluePoints, sizeof( mso_sptPentagonGluePoints ) / sizeof( SvxMSDffVertPair ),
583     NULL, 0     // handles
584 };
585 
586 static const SvxMSDffVertPair mso_sptPlusVert[] =               // adjustment1 : 0 - 10800
587 {
588     { 1 MSO_I, 0 }, { 2 MSO_I, 0 }, { 2 MSO_I, 1 MSO_I }, { 21600, 1 MSO_I },
589     { 21600, 3 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 21600 }, { 1 MSO_I, 21600 },
590     { 1 MSO_I, 3 MSO_I }, { 0, 3 MSO_I }, { 0, 1 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 0 }
591 };
592 static const SvxMSDffCalculationData mso_sptPlusCalc[] =
593 {
594     { 0x2001, { DFF_Prop_adjustValue, 10799, 10800 } },
595     { 0x2000, { 0x400, 0, 0 } },
596     { 0xa000, { DFF_Prop_geoRight, 0, 0x400 } },
597     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } }
598 };
599 static const SvxMSDffTextRectangles mso_sptPlusTextRect[] =
600 {
601     { { 1 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I } }
602 };
603 static const SvxMSDffHandle mso_sptPlusHandle[] =
604 {
605     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
606         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
607 };
608 static const mso_CustomShape msoPlus =
609 {
610     (SvxMSDffVertPair*)mso_sptPlusVert, sizeof( mso_sptPlusVert ) / sizeof( SvxMSDffVertPair ),
611     NULL, 0,
612     (SvxMSDffCalculationData*)mso_sptPlusCalc, sizeof( mso_sptPlusCalc ) / sizeof( SvxMSDffCalculationData ),
613     (sal_Int32*)mso_sptDefault5400,
614     (SvxMSDffTextRectangles*)mso_sptPlusTextRect, sizeof( mso_sptPlusTextRect ) / sizeof( SvxMSDffTextRectangles ),
615     21600, 21600,
616     10800, 10800,
617     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
618     (SvxMSDffHandle*)mso_sptPlusHandle, sizeof( mso_sptPlusHandle ) / sizeof( SvxMSDffHandle )      // handles
619 };
620 
621 static const SvxMSDffVertPair mso_sptCanVert[] =        // adjustment1 : 0 - 10800
622 {
623     { 44, 0 },
624     { 20, 0 }, { 0, 2 MSO_I }, { 0, 0 MSO_I },          // ccp
625     { 0, 3 MSO_I },                                     // p
626     { 0, 4 MSO_I }, { 20, 21600 }, { 44, 21600 },       // ccp
627     { 68, 21600 }, { 88, 4 MSO_I }, { 88, 3 MSO_I },    // ccp
628     { 88, 0 MSO_I },                                    // p
629     { 88, 2 MSO_I }, { 68, 0 }, { 44, 0 },              // ccp
630     { 44, 0 },                                          // p
631     { 20, 0 }, { 0, 2 MSO_I }, { 0, 0 MSO_I },          // ccp
632     { 0, 5 MSO_I }, { 20, 6 MSO_I }, { 44, 6 MSO_I },   // ccp
633     { 68, 6 MSO_I },{ 88, 5 MSO_I }, { 88, 0 MSO_I },   // ccp
634     { 88, 2 MSO_I },{ 68, 0 }, { 44, 0 }                // ccp
635 };
636 static const sal_uInt16 mso_sptCanSegm[] =
637 {
638     0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x6001, 0x8000,
639     0x4000, 0x2004, 0x6001, 0x8000
640 };
641 static const SvxMSDffCalculationData mso_sptCanCalc[] =
642 {
643     { 0x2001, { DFF_Prop_adjustValue, 2, 4 } },     // 1/4
644     { 0x2001, { 0x0400, 6, 11 } },
645     { 0xa000, { 0x0400, 0, 0x0401 } },
646     { 0x8000, { 21600, 0, 0x0400 } },
647     { 0x6000, { 0x0403, 0x0401, 0 } },
648     { 0x6000, { 0x0400, 0x0401, 0 } },
649     { 0x2001, { DFF_Prop_adjustValue, 2, 2 } },
650     { 0x0000, { 44, 0, 0 } }
651 };
652 static const SvxMSDffTextRectangles mso_sptCanTextRect[] =
653 {
654     { { 0, 6 MSO_I }, { 88, 3 MSO_I } }
655 };
656 static const SvxMSDffVertPair mso_sptCanGluePoints[] =
657 {
658     { 44, 6 MSO_I }, { 44, 0 }, { 0, 10800 }, { 44, 21600 }, { 88, 10800 }
659 };
660 static const SvxMSDffHandle mso_sptCanHandle[] =
661 {
662     {   MSDFF_HANDLE_FLAGS_RANGE,
663         7 + 3, 0x100, 44, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
664 };
665 static const mso_CustomShape msoCan =
666 {
667     (SvxMSDffVertPair*)mso_sptCanVert, sizeof( mso_sptCanVert ) / sizeof( SvxMSDffVertPair ),
668     (sal_uInt16*)mso_sptCanSegm, sizeof( mso_sptCanSegm ) >> 1,
669     (SvxMSDffCalculationData*)mso_sptCanCalc, sizeof( mso_sptCanCalc ) / sizeof( SvxMSDffCalculationData ),
670     (sal_Int32*)mso_sptDefault5400,
671     (SvxMSDffTextRectangles*)mso_sptCanTextRect, sizeof( mso_sptCanTextRect ) / sizeof( SvxMSDffTextRectangles ),
672     88, 21600,
673     0x80000000, 0x80000000,
674     (SvxMSDffVertPair*)mso_sptCanGluePoints, sizeof( mso_sptCanGluePoints ) / sizeof( SvxMSDffVertPair ),
675     (SvxMSDffHandle*)mso_sptCanHandle, sizeof( mso_sptCanHandle ) / sizeof( SvxMSDffHandle )        // handles
676 };
677 
678 static const SvxMSDffVertPair mso_sptArrowVert[] =  // adjustment1: x 0 - 21600
679 {                                                   // adjustment2: y 0 - 10800
680     { 0, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 21600, 10800 },
681     { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 0, 2 MSO_I }
682 };
683 static const sal_uInt16 mso_sptArrowSegm[] =
684 {
685     0x4000, 0x0006, 0x6001, 0x8000
686 };
687 static const SvxMSDffCalculationData mso_sptArrowCalc[] =
688 {
689     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
690     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
691     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },
692     { 0x8000, { 21600, 0, 0x401 } },
693     { 0x6001, { 0x403, 0x400, 10800 } },
694     { 0x6000, { 0x401, 0x404, 0 } },
695     { 0x6001, { 0x401, 0x400, 10800 } },
696     { 0xa000, { 0x401, 0, 0x406 } }
697 };
698 static const SvxMSDffTextRectangles mso_sptArrowTextRect[] =
699 {
700     { { 0, 0 MSO_I }, { 5 MSO_I, 2 MSO_I } }
701 };
702 static const SvxMSDffHandle mso_sptArrowHandle[] =
703 {
704     {   MSDFF_HANDLE_FLAGS_RANGE,
705         0x100, 0x101, 10800, 10800, 0, 21600, 0, 10800 }
706 };
707 static const mso_CustomShape msoArrow =
708 {
709     (SvxMSDffVertPair*)mso_sptArrowVert, sizeof( mso_sptArrowVert ) / sizeof( SvxMSDffVertPair ),
710     (sal_uInt16*)mso_sptArrowSegm, sizeof( mso_sptArrowSegm ) >> 1,
711     (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
712     (sal_Int32*)mso_sptDefault16200and5400,
713     (SvxMSDffTextRectangles*)mso_sptArrowTextRect, sizeof( mso_sptArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
714     21600, 21600,
715     0x80000000, 0x80000000,
716     NULL, 0,
717     (SvxMSDffHandle*)mso_sptArrowHandle, sizeof( mso_sptArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
718 };
719 
720 static const SvxMSDffVertPair mso_sptLeftArrowVert[] =  // adjustment1: x 0 - 21600
721 {                                                       // adjustment2: y 0 - 10800
722     { 21600, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 0, 10800 },
723     { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 21600, 2 MSO_I }
724 };
725 static const sal_uInt16 mso_sptLeftArrowSegm[] =
726 {
727     0x4000, 0x0006, 0x6001, 0x8000
728 };
729 static const sal_Int32 mso_sptLeftArrowDefault[] =
730 {
731     2, 5400, 5400
732 };
733 static const SvxMSDffTextRectangles mso_sptLeftArrowTextRect[] =
734 {
735     { { 7 MSO_I, 0 MSO_I }, { 21600, 2 MSO_I } }
736 };
737 static const SvxMSDffHandle mso_sptLeftArrowHandle[] =
738 {
739     {   MSDFF_HANDLE_FLAGS_RANGE,
740         0x100, 0x101, 10800, 10800, 0, 21600, 0, 10800 }
741 };
742 static const mso_CustomShape msoLeftArrow =
743 {
744     (SvxMSDffVertPair*)mso_sptLeftArrowVert, sizeof( mso_sptLeftArrowVert ) / sizeof( SvxMSDffVertPair ),
745     (sal_uInt16*)mso_sptLeftArrowSegm, sizeof( mso_sptLeftArrowSegm ) >> 1,
746     (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
747     (sal_Int32*)mso_sptLeftArrowDefault,
748     (SvxMSDffTextRectangles*)mso_sptLeftArrowTextRect, sizeof( mso_sptLeftArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
749     21600, 21600,
750     0x80000000, 0x80000000,
751     NULL, 0,
752     (SvxMSDffHandle*)mso_sptLeftArrowHandle, sizeof( mso_sptLeftArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
753 };
754 
755 static const SvxMSDffVertPair mso_sptDownArrowVert[] =  // adjustment1: x 0 - 21600
756 {                                                       // adjustment2: y 0 - 10800
757     { 0 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 0, 1 MSO_I }, { 10800, 21600 },
758     { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 0 }
759 };
760 static const sal_uInt16 mso_sptDownArrowSegm[] =
761 {
762     0x4000, 0x0006, 0x6001, 0x8000
763 };
764 static const SvxMSDffTextRectangles mso_sptDownArrowTextRect[] =
765 {
766     { { 0 MSO_I, 0 }, { 2 MSO_I, 5 MSO_I } }
767 };
768 static const SvxMSDffHandle mso_sptDownArrowHandle[] =
769 {
770     {   MSDFF_HANDLE_FLAGS_RANGE,
771         0x101, 0x100, 10800, 10800, 0, 10800, 0, 21600 }
772 };
773 static const mso_CustomShape msoDownArrow =
774 {
775     (SvxMSDffVertPair*)mso_sptDownArrowVert, sizeof( mso_sptDownArrowVert ) / sizeof( SvxMSDffVertPair ),
776     (sal_uInt16*)mso_sptDownArrowSegm, sizeof( mso_sptDownArrowSegm ) >> 1,
777     (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
778     (sal_Int32*)mso_sptDefault16200and5400,
779     (SvxMSDffTextRectangles*)mso_sptDownArrowTextRect, sizeof( mso_sptDownArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
780     21600, 21600,
781     0x80000000, 0x80000000,
782     NULL, 0,
783     (SvxMSDffHandle*)mso_sptDownArrowHandle, sizeof( mso_sptDownArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
784 };
785 
786 static const SvxMSDffVertPair mso_sptUpArrowVert[] =    // adjustment1: x 0 - 21600
787 {                                                       // adjustment2: y 0 - 10800
788     { 0 MSO_I, 21600 }, { 0 MSO_I, 1 MSO_I }, { 0, 1 MSO_I }, { 10800, 0 },
789     { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 21600 }
790 };
791 static const sal_uInt16 mso_sptUpArrowSegm[] =
792 {
793     0x4000, 0x0006, 0x6001, 0x8000
794 };
795 static const sal_Int32 mso_sptUpArrowDefault[] =
796 {
797     2, 5400, 5400
798 };
799 static const SvxMSDffTextRectangles mso_sptUpArrowTextRect[] =
800 {
801     { { 0 MSO_I, 7 MSO_I }, { 2 MSO_I, 21600 } }
802 };
803 static const SvxMSDffHandle mso_sptUpArrowHandle[] =
804 {
805     {   MSDFF_HANDLE_FLAGS_RANGE,
806         0x101, 0x100, 10800, 10800, 0, 10800, 0, 21600 }
807 };
808 static const mso_CustomShape msoUpArrow =
809 {
810     (SvxMSDffVertPair*)mso_sptUpArrowVert, sizeof( mso_sptUpArrowVert ) / sizeof( SvxMSDffVertPair ),
811     (sal_uInt16*)mso_sptUpArrowSegm, sizeof( mso_sptUpArrowSegm ) >> 1,
812     (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
813     (sal_Int32*)mso_sptUpArrowDefault,
814     (SvxMSDffTextRectangles*)mso_sptUpArrowTextRect, sizeof( mso_sptUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
815     21600, 21600,
816     0x80000000, 0x80000000,
817     NULL, 0,
818     (SvxMSDffHandle*)mso_sptUpArrowHandle, sizeof( mso_sptUpArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
819 };
820 
821 static const SvxMSDffVertPair mso_sptLeftRightArrowVert[] = // adjustment1: x 0 - 10800
822 {                                                           // adjustment2: y 0 - 10800
823     { 0, 10800 }, { 0 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 1 MSO_I },
824     { 2 MSO_I, 0 }, { 21600, 10800 }, { 2 MSO_I, 21600 }, { 2 MSO_I, 3 MSO_I },
825     { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 21600 }
826 };
827 static const sal_uInt16 mso_sptLeftRightArrowSegm[] =
828 {
829     0x4000, 0x0009, 0x6001, 0x8000
830 };
831 static const SvxMSDffCalculationData mso_sptDoubleArrowCalc[] =
832 {
833     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
834     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
835     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
836     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },
837     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },
838     { 0x6001, { DFF_Prop_adjustValue, 0x404, 10800 } },
839     { 0x8000, { 21600, 0, 0x405 } },
840     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
841     { 0x6001, { DFF_Prop_adjust2Value, 0x407, 10800 } },
842     { 0x8000, { 21600, 0, 0x408 } }
843 };
844 static const sal_Int32 mso_sptLeftRightArrowDefault[] =
845 {
846     2, 4300, 5400
847 };
848 static const SvxMSDffTextRectangles mso_sptLeftRightArrowTextRect[] =
849 {
850     { { 5 MSO_I, 1 MSO_I }, { 6 MSO_I, 3 MSO_I } }
851 };
852 static const SvxMSDffHandle mso_sptLeftRightArrowHandle[] =
853 {
854     {   MSDFF_HANDLE_FLAGS_RANGE,
855         0x100, 0x101, 10800, 10800, 0, 10800, 0, 10800 }
856 };
857 static const mso_CustomShape msoLeftRightArrow =
858 {
859     (SvxMSDffVertPair*)mso_sptLeftRightArrowVert, sizeof( mso_sptLeftRightArrowVert ) / sizeof( SvxMSDffVertPair ),
860     (sal_uInt16*)mso_sptLeftRightArrowSegm, sizeof( mso_sptLeftRightArrowSegm ) >> 1,
861     (SvxMSDffCalculationData*)mso_sptDoubleArrowCalc, sizeof( mso_sptDoubleArrowCalc ) / sizeof( SvxMSDffCalculationData ),
862     (sal_Int32*)mso_sptLeftRightArrowDefault,
863     (SvxMSDffTextRectangles*)mso_sptLeftRightArrowTextRect, sizeof( mso_sptLeftRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
864     21600, 21600,
865     0x80000000, 0x80000000,
866     NULL, 0,
867     (SvxMSDffHandle*)mso_sptLeftRightArrowHandle, sizeof( mso_sptLeftRightArrowHandle ) / sizeof( SvxMSDffHandle )      // handles
868 };
869 
870 static const SvxMSDffVertPair mso_sptUpDownArrowVert[] =    // adjustment1: x 0 - 10800
871 {                                                           // adjustment2: y 0 - 10800
872     { 0, 1 MSO_I }, { 10800, 0 }, { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I },
873     { 2 MSO_I, 3 MSO_I }, { 21600, 3 MSO_I }, { 10800, 21600 }, { 0, 3 MSO_I },
874     { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 1 MSO_I }
875 };
876 static const sal_uInt16 mso_sptUpDownArrowSegm[] =
877 {
878     0x4000, 0x0009, 0x6001, 0x8000
879 };
880 static const sal_Int32 mso_sptUpDownArrowDefault[] =
881 {
882     2, 5400, 4300
883 };
884 static const SvxMSDffTextRectangles mso_sptUpDownArrowTextRect[] =
885 {
886     { { 0 MSO_I, 8 MSO_I }, { 2 MSO_I, 9 MSO_I } }
887 };
888 static const SvxMSDffHandle mso_sptUpDownArrowHandle[] =
889 {
890     {   MSDFF_HANDLE_FLAGS_RANGE,
891         0x100, 0x101, 10800, 10800, 0, 10800, 0, 10800 }
892 };
893 static const mso_CustomShape msoUpDownArrow =
894 {
895     (SvxMSDffVertPair*)mso_sptUpDownArrowVert, sizeof( mso_sptUpDownArrowVert ) / sizeof( SvxMSDffVertPair ),
896     (sal_uInt16*)mso_sptUpDownArrowSegm, sizeof( mso_sptUpDownArrowSegm ) >> 1,
897     (SvxMSDffCalculationData*)mso_sptDoubleArrowCalc, sizeof( mso_sptDoubleArrowCalc ) / sizeof( SvxMSDffCalculationData ),
898     (sal_Int32*)mso_sptUpDownArrowDefault,
899     (SvxMSDffTextRectangles*)mso_sptUpDownArrowTextRect, sizeof( mso_sptUpDownArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
900     21600, 21600,
901     0x80000000, 0x80000000,
902     NULL, 0,
903     (SvxMSDffHandle*)mso_sptUpDownArrowHandle, sizeof( mso_sptUpDownArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
904 };
905 
906 static const SvxMSDffVertPair mso_sptQuadArrowVert[] =  // adjustment1: x 0 - 10800, adjustment2: x 0 - 10800
907 {                                                       // adjustment3: y 0 - 10800
908     { 0, 10800 }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 2 MSO_I, 2 MSO_I },
909     { 2 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 10800, 0 }, { 3 MSO_I, 0 MSO_I },
910     { 4 MSO_I, 0 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 5 MSO_I, 1 MSO_I },
911     { 21600, 10800 }, { 5 MSO_I, 3 MSO_I }, { 5 MSO_I, 4 MSO_I }, { 4 MSO_I, 4 MSO_I },
912     { 4 MSO_I, 5 MSO_I }, { 3 MSO_I, 5 MSO_I }, { 10800, 21600 }, { 1 MSO_I, 5 MSO_I },
913     { 2 MSO_I, 5 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 0 MSO_I, 4 MSO_I }, { 0 MSO_I, 3 MSO_I }
914 };
915 static const sal_uInt16 mso_sptQuadArrowSegm[] =
916 {
917     0x4000, 0x0017, 0x6001, 0x8000
918 };
919 static const SvxMSDffCalculationData mso_sptQuadArrowCalc[] =
920 {
921     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
922     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
923     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
924     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
925     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },
926     { 0x8000, { 21600, 0, DFF_Prop_adjust3Value } }
927 };
928 static const sal_Int32 mso_sptQuadArrowDefault[] =
929 {
930     3, 6500, 8600, 4300
931 };
932 static const SvxMSDffTextRectangles mso_sptQuadArrowTextRect[] =    // todo
933 {
934     { { 0, 0 }, { 21600, 21600 } }
935 };
936 static const SvxMSDffHandle mso_sptQuadArrowHandle[] =
937 {
938     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
939         0x101, 0x102, 10800, 10800, 0x100, 10800, 0, 0x100 },
940     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
941         0x100, 0, 10800, 10800, 0x102, 0x101, 0x80000000, 0x7fffffff }
942 };
943 static const mso_CustomShape msoQuadArrow =
944 {
945     (SvxMSDffVertPair*)mso_sptQuadArrowVert, sizeof( mso_sptQuadArrowVert ) / sizeof( SvxMSDffVertPair ),
946     (sal_uInt16*)mso_sptQuadArrowSegm, sizeof( mso_sptQuadArrowSegm ) >> 1,
947     (SvxMSDffCalculationData*)mso_sptQuadArrowCalc, sizeof( mso_sptQuadArrowCalc ) / sizeof( SvxMSDffCalculationData ),
948     (sal_Int32*)mso_sptQuadArrowDefault,
949     (SvxMSDffTextRectangles*)mso_sptQuadArrowTextRect, sizeof( mso_sptQuadArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
950     21600, 21600,
951     0x80000000, 0x80000000,
952     NULL, 0,
953     (SvxMSDffHandle*)mso_sptQuadArrowHandle, sizeof( mso_sptQuadArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
954 };
955 
956 static const SvxMSDffVertPair mso_sptLeftRightUpArrowVert[] =   // adjustment1: x 0 - 10800, adjustment2: x 0 - 10800
957 {                                                               // adjustment3: y 0 - 21600
958     { 10800, 0 }, { 3 MSO_I, 2 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 4 MSO_I, 1 MSO_I },
959     { 5 MSO_I, 1 MSO_I }, { 5 MSO_I, 0 MSO_I }, { 21600, 10800 }, { 5 MSO_I, 3 MSO_I },
960     { 5 MSO_I, 4 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0, 10800 },
961     { 2 MSO_I, 0 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 2 MSO_I },
962     { 0 MSO_I, 2 MSO_I }
963 };
964 static const sal_uInt16 mso_sptLeftRightUpArrowSegm[] =
965 {
966     0x4000, 0x0010, 0x6001, 0x8000
967 };
968 static const SvxMSDffCalculationData mso_sptLeftRightUpArrowCalc[] =
969 {
970     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },             // 0
971     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },            // 1
972     { 0x6001, { 0x0403, DFF_Prop_adjust3Value, 21600 } },   // 2
973     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },         // 3
974     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },        // 4
975     { 0x8000, { 21600, 0, 0x0402 } }                        // 5
976 };
977 static const sal_Int32 mso_sptLeftRightUpArrowDefault[] =
978 {
979     3, 6500, 8600, 6200
980 };
981 static const SvxMSDffTextRectangles mso_sptLeftRightUpArrowTextRect[] =     // todo
982 {
983     { { 0, 0 }, { 21600, 21600 } }
984 };
985 static const SvxMSDffHandle mso_sptLeftRightUpArrowHandle[] =
986 {
987     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
988         0x101, 0x102, 10800, 10800, 0x100, 10800, 0, 0x100 },
989     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
990         0x100, 0, 10800, 10800, 0x102, 0x101, 0x80000000, 0x7fffffff }
991 };
992 static const mso_CustomShape msoLeftRightUpArrow =
993 {
994     (SvxMSDffVertPair*)mso_sptLeftRightUpArrowVert, sizeof( mso_sptLeftRightUpArrowVert ) / sizeof( SvxMSDffVertPair ),
995     (sal_uInt16*)mso_sptLeftRightUpArrowSegm, sizeof( mso_sptLeftRightUpArrowSegm ) >> 1,
996     (SvxMSDffCalculationData*)mso_sptLeftRightUpArrowCalc, sizeof( mso_sptLeftRightUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
997     (sal_Int32*)mso_sptLeftRightUpArrowDefault,
998     (SvxMSDffTextRectangles*)mso_sptLeftRightUpArrowTextRect, sizeof( mso_sptLeftRightUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
999     21600, 21600,
1000     0x80000000, 0x80000000,
1001     NULL, 0,
1002     (SvxMSDffHandle*)mso_sptLeftRightUpArrowHandle, sizeof( mso_sptLeftRightUpArrowHandle ) / sizeof( SvxMSDffHandle )      // handles
1003 };
1004 
1005 static const SvxMSDffVertPair mso_sptBentArrowVert[] =  // adjustment1 : x 12427 - 21600
1006 {                                                       // adjustment2 : y 0 - 6079
1007     { 0, 21600 }, { 0, 12160 }, { 12427, 1 MSO_I }, { 0 MSO_I, 1 MSO_I },
1008     { 0 MSO_I, 0 }, { 21600, 6079 }, { 0 MSO_I, 12158 }, { 0 MSO_I, 2 MSO_I },
1009     { 12427, 2 MSO_I }, { 4 MSO_I, 12160 }, { 4 MSO_I, 21600 }
1010 };
1011 static const sal_uInt16 mso_sptBentArrowSegm[] =
1012 {
1013     0x4000, 0x0001, 0xa801, 0x0006, 0xa701, 0x0001, 0x6001, 0x8000
1014 };
1015 static const SvxMSDffCalculationData mso_sptBentArrowCalc[] =
1016 {
1017     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1018     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1019     { 0x8000, { 12158, 0, DFF_Prop_adjust2Value } },
1020     { 0x8000, { 6079, 0, DFF_Prop_adjust2Value } },
1021     { 0x2001, { 0x0403, 2, 1 } }
1022 };
1023 static const sal_Int32 mso_sptBentArrowDefault[] =
1024 {
1025     2, 15100, 2900
1026 };
1027 static const SvxMSDffTextRectangles mso_sptBentArrowTextRect[] =    // todo
1028 {
1029     { { 0, 0 }, { 21600, 21600 } }
1030 };
1031 static const SvxMSDffHandle mso_sptBentArrowHandle[] =
1032 {
1033     {   MSDFF_HANDLE_FLAGS_RANGE,
1034         0x100, 0x101, 10800, 10800, 12427, 21600, 0, 6079 }
1035 };
1036 static const mso_CustomShape msoBentArrow =
1037 {
1038     (SvxMSDffVertPair*)mso_sptBentArrowVert, sizeof( mso_sptBentArrowVert ) / sizeof( SvxMSDffVertPair ),
1039     (sal_uInt16*)mso_sptBentArrowSegm, sizeof( mso_sptBentArrowSegm ) >> 1,
1040     (SvxMSDffCalculationData*)mso_sptBentArrowCalc, sizeof( mso_sptBentArrowCalc ) / sizeof( SvxMSDffCalculationData ),
1041     (sal_Int32*)mso_sptBentArrowDefault,
1042     (SvxMSDffTextRectangles*)mso_sptBentArrowTextRect, sizeof( mso_sptBentArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1043     21600, 21600,
1044     0x80000000, 0x80000000,
1045     NULL, 0,
1046     (SvxMSDffHandle*)mso_sptBentArrowHandle, sizeof( mso_sptBentArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
1047 };
1048 
1049 static const SvxMSDffVertPair mso_sptUturnArrowVert[] =
1050 {
1051     { 0, 21600 }, { 0, 8550 },                                          // pp
1052     { 0, 3540 }, { 4370, 0 }, { 9270, 0 },                              // ccp
1053     { 13890, 0 }, { 18570, 3230 }, { 18600, 8300 },                     // ccp
1054     { 21600, 8300 }, { 15680, 14260 }, { 9700, 8300 }, { 12500, 8300 }, // pppp
1055     { 12320, 6380 }, { 10870, 5850 }, { 9320, 5850 },                   // ccp
1056     { 7770, 5850 }, { 6040, 6410 }, { 6110, 8520 },                     // ccp
1057     { 6110, 21600 }
1058 };
1059 static const sal_uInt16 mso_sptUturnArrowSegm[] =
1060 {
1061     0x4000, 0x0001, 0x2002, 0x0004, 0x2002, 0x0001, 0x6000, 0x8000
1062 };
1063 static const SvxMSDffTextRectangles mso_sptUturnArrowTextRect[] =
1064 {
1065     { { 0, 8280 }, { 6110, 21600 } }
1066 };
1067 static const mso_CustomShape msoUturnArrow =
1068 {
1069     (SvxMSDffVertPair*)mso_sptUturnArrowVert, sizeof( mso_sptUturnArrowVert ) / sizeof( SvxMSDffVertPair ),
1070     (sal_uInt16*)mso_sptUturnArrowSegm, sizeof( mso_sptUturnArrowSegm ) >> 1,
1071     NULL, 0,
1072     NULL,
1073     (SvxMSDffTextRectangles*)mso_sptUturnArrowTextRect, sizeof( mso_sptUturnArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1074     21600, 21600,
1075     0x80000000, 0x80000000,
1076     NULL, 0,
1077     NULL, 0     // handles
1078 };
1079 
1080 static const SvxMSDffVertPair mso_sptLeftUpArrowVert[] =    // adjustment1 : x 0 - 21600, adjustment2 : x 0 - 21600
1081 {                                                           // adjustment3 : y 0 - 21600
1082     { 0, 5 MSO_I }, { 2 MSO_I, 0 MSO_I }, { 2 MSO_I, 7 MSO_I }, { 7 MSO_I, 7 MSO_I },
1083     { 7 MSO_I, 2 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 5 MSO_I, 0 }, { 21600, 2 MSO_I },
1084     { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 21600 }
1085 };
1086 static const sal_uInt16 mso_sptLeftUpArrowSegm[] =
1087 {
1088     0x4000, 0x000b, 0x6001, 0x8000
1089 };
1090 static const SvxMSDffCalculationData mso_sptLeftUpArrowCalc[] =
1091 {
1092     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 0
1093     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },        // 1
1094     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },        // 2
1095     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }, // 3
1096     { 0x2001, { 0x0403, 1, 2 } },                       // 4
1097     { 0x6000, { DFF_Prop_adjustValue, 0x0404, 0 } },    // 5
1098     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },    // 6
1099     { 0x6000, { DFF_Prop_adjustValue, 0x0406, 0 } },    // 7
1100     { 0x8000, { 21600, 0, 0x406 } },                    // 8
1101     { 0xa000, { 0x408, 0, 0x406 } }                 // 9
1102 };
1103 static const sal_Int32 mso_sptLeftUpArrowDefault[] =
1104 {
1105     3, 9340, 18500, 6200
1106 };
1107 static const SvxMSDffTextRectangles mso_sptLeftUpArrowTextRect[] =
1108 {
1109     { { 2 MSO_I, 7 MSO_I }, { 1 MSO_I, 1 MSO_I } },
1110     { { 7 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I } }
1111 };
1112 static const SvxMSDffHandle mso_sptLeftUpArrowHandle[] =
1113 {
1114     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
1115         0x101, 0x102, 10800, 10800, 3 + 5, 21600, 0, 0x100 },
1116     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1117         0x100, 0, 10800, 10800, 0x102, 3 + 9, 0x80000000, 0x7fffffff }
1118 };
1119 static const mso_CustomShape msoLeftUpArrow =
1120 {
1121     (SvxMSDffVertPair*)mso_sptLeftUpArrowVert, sizeof( mso_sptLeftUpArrowVert ) / sizeof( SvxMSDffVertPair ),
1122     (sal_uInt16*)mso_sptLeftUpArrowSegm, sizeof( mso_sptLeftUpArrowSegm ) >> 1,
1123     (SvxMSDffCalculationData*)mso_sptLeftUpArrowCalc, sizeof( mso_sptLeftUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
1124     (sal_Int32*)mso_sptLeftUpArrowDefault,
1125     (SvxMSDffTextRectangles*)mso_sptLeftUpArrowTextRect, sizeof( mso_sptLeftUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1126     21600, 21600,
1127     0x80000000, 0x80000000,
1128     NULL, 0,
1129     (SvxMSDffHandle*)mso_sptLeftUpArrowHandle, sizeof( mso_sptLeftUpArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
1130 };
1131 
1132 static const SvxMSDffVertPair mso_sptBentUpArrowVert[] =    // adjustment1 : x 0 - 21600, adjustment2 : x 0 - 21600
1133 {                                                           // adjustment3 : y 0 - 21600
1134     { 0, 8 MSO_I }, { 7 MSO_I, 8 MSO_I }, { 7 MSO_I, 2 MSO_I }, { 0 MSO_I, 2 MSO_I },
1135     { 5 MSO_I, 0 }, { 21600, 2 MSO_I }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 21600 },
1136     { 0, 21600 }
1137 };
1138 static const sal_uInt16 mso_sptBentUpArrowSegm[] =
1139 {
1140     0x4000, 0x0008, 0x6001, 0x8000
1141 };
1142 static const SvxMSDffCalculationData mso_sptBentUpArrowCalc[] =
1143 {
1144     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 0
1145     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },        // 1
1146     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },        // 2
1147     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }, // 3
1148     { 0x2001, { 0x0403, 1, 2 } },                       // 4
1149     { 0x6000, { DFF_Prop_adjustValue, 0x0404, 0 } },    // 5
1150     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },    // 6
1151     { 0x6000, { DFF_Prop_adjustValue, 0x0406, 0 } },    // 7
1152     { 0x6000, { 0x0407, 0x0406, 0 } },                  // 8
1153     { 0x8000, { 21600, 0, 0x406 } },                    // 9
1154     { 0xa000, { 0x409, 0, 0x406 } }                 // a
1155 };
1156 static const sal_Int32 mso_sptBentUpArrowDefault[] =
1157 {
1158     3, 9340, 18500, 7200
1159 };
1160 static const SvxMSDffTextRectangles mso_sptBentUpArrowTextRect[] =
1161 {
1162     { { 2 MSO_I, 7 MSO_I }, { 1 MSO_I, 1 MSO_I } },
1163     { { 7 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I } }
1164 };
1165 static const SvxMSDffHandle mso_sptBentUpArrowHandle[] =
1166 {
1167     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
1168         0x101, 0x102, 10800, 10800, 3 + 5, 21600, 0, 0x100 },
1169     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1170         0x100, 0, 10800, 10800, 0x102, 3 + 10, 0x80000000, 0x7fffffff }
1171 };
1172 static const mso_CustomShape msoBentUpArrow =
1173 {
1174     (SvxMSDffVertPair*)mso_sptBentUpArrowVert, sizeof( mso_sptBentUpArrowVert ) / sizeof( SvxMSDffVertPair ),
1175     (sal_uInt16*)mso_sptBentUpArrowSegm, sizeof( mso_sptBentUpArrowSegm ) >> 1,
1176     (SvxMSDffCalculationData*)mso_sptBentUpArrowCalc, sizeof( mso_sptBentUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
1177     (sal_Int32*)mso_sptBentUpArrowDefault,
1178     (SvxMSDffTextRectangles*)mso_sptBentUpArrowTextRect, sizeof( mso_sptBentUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1179     21600, 21600,
1180     0x80000000, 0x80000000,
1181     NULL, 0,
1182     (SvxMSDffHandle*)mso_sptBentUpArrowHandle, sizeof( mso_sptBentUpArrowHandle ) / sizeof( SvxMSDffHandle )
1183 };
1184 
1185 static const SvxMSDffVertPair mso_sptCurvedRightVert[] =
1186 {
1187     { 0, 0 }, { 23 MSO_I, 3 MSO_I }, { 22 MSO_I, 0 }, { 0, 4 MSO_I }, { 0, 15 MSO_I }, { 23 MSO_I, 1 MSO_I }, { 0, 7 MSO_I }, { 2 MSO_I, 13 MSO_I },
1188     { 2 MSO_I, 14 MSO_I }, { 22 MSO_I, 8 MSO_I }, { 2 MSO_I, 12 MSO_I },
1189     { 0, 0 }, { 23 MSO_I, 3 MSO_I }, { 2 MSO_I, 11 MSO_I }, { 26 MSO_I, 17 MSO_I }, { 0, 15 MSO_I }, { 23 MSO_I, 1 MSO_I }, { 26 MSO_I, 17 MSO_I }, { 22 MSO_I, 15 MSO_I },
1190     { 0, 0 }, { 23 MSO_I, 3 MSO_I }, { 22 MSO_I, 0 }, { 0, 4 MSO_I },
1191     { 0, 0 }, { 23 MSO_I, 3 MSO_I }, { 0, 4 MSO_I }, { 26 MSO_I, 17 MSO_I },
1192     { 0, 15 MSO_I }, { 23 MSO_I, 1 MSO_I }, { 26 MSO_I, 17 MSO_I }, { 22 MSO_I, 15 MSO_I }
1193 };
1194 static const sal_uInt16 mso_sptCurvedRightSegm[] =
1195 {
1196     0xa408,
1197     0x0003,
1198     0xa508,
1199     0x6000,
1200     0x8000,
1201     0xa404,
1202     0xa304,
1203     0xa504,
1204     0x6000,
1205     0x8000
1206 };
1207 static const SvxMSDffCalculationData mso_sptCurvedRightCalc[] =
1208 {
1209     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1210     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1211     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1212     { 0xa000, { DFF_Prop_adjustValue, 21600, DFF_Prop_adjust2Value } },
1213     { 0x2001, { 0x403, 1, 2 } },
1214     { 0x6000, { DFF_Prop_adjust2Value, DFF_Prop_adjust2Value, 21600 } },
1215     { 0xe000, { 0x405, DFF_Prop_adjust2Value, DFF_Prop_adjustValue } },
1216     { 0x2001, { 0x406, 1, 2 } },
1217     { 0x4002, { 21600, DFF_Prop_adjustValue, 0 } },
1218     { 0x8000, { 21600, 0, DFF_Prop_adjust3Value } },
1219     { 0xa00f, { 0x409, 21600, 0x404 } },
1220     { 0x6000, { 0x404, 0x40a, 0 } },
1221     { 0x6000, { 0x40b, DFF_Prop_adjust2Value, 21600 } },
1222     { 0x6000, { 0x407, 0x40a, 0 } },
1223     { 0xa000, { 0x40c, 21600, DFF_Prop_adjustValue } },
1224     { 0xa000, { 0x405, 0, DFF_Prop_adjustValue } },
1225     { 0x2001, { 0x40f, 1, 2 } },
1226     { 0x6002, { 0x404, 0x407, 0 } },
1227     { 0x6000, { DFF_Prop_adjustValue, DFF_Prop_adjust2Value, 21600 } },
1228     { 0x2001, { 0x412, 1, 2 } },
1229     { 0xa000, { 0x411, 0, 0x413 } },
1230     { 0x0000, { 21600, 0, 0 } },
1231     { 0x0000, { 21600, 0, 0 } },
1232     { 0x0001, { 21600, 2, 1 } },
1233     { 0xa000, { 0x411, 0, 0x404 } },
1234     { 0x600f, { 0x418, 0x404, 21600 } },
1235     { 0x8000, { 21600, 0, 0x419 } },
1236     { 0x2000, { 0x408, 128, 0 } },
1237     { 0x2001, { 0x405, 1, 2 } },
1238     { 0x2000, { 0x405, 0, 128 } },
1239     { 0xe000, { DFF_Prop_adjustValue, 0x411, 0x40c } },
1240     { 0x600f, { 0x414, 0x404, 21600 } },
1241     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
1242     { 0x2001, { 0x420, 1, 2 } },
1243     { 0x0001, { 21600, 21600, 1 } },
1244     { 0x6001, { 0x409, 0x409, 1 } },
1245     { 0xa000, { 0x422, 0, 0x423 } },
1246     { 0x200d, { 0x424, 0, 0 } },
1247     { 0x2000, { 0x425, 21600, 0 } },
1248     { 0x8001, { 21600, 21600, 0x426 } },
1249     { 0x2000, { 0x427, 64, 0 } },
1250     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
1251     { 0x600f, { 0x421, 0x429, 21600 } },
1252     { 0x8000, { 21600, 0, 0x42a } },
1253     { 0x2000, { 0x42b, 64, 0 } },
1254     { 0x2001, { 0x404, 1, 2 } },
1255     { 0xa000, { DFF_Prop_adjust2Value, 0, 0x42d } },
1256     { 0x0001, { 21600, 2195, 16384 } },
1257     { 0x0001, { 21600, 14189, 16384 } }
1258 };
1259 static const sal_Int32 mso_sptCurvedRightDefault[] =
1260 {
1261     3, 12960, 19440, 14400
1262 };
1263 static const SvxMSDffTextRectangles mso_sptCurvedRightTextRect[] =
1264 {
1265     { { 47 MSO_I, 45 MSO_I }, { 48 MSO_I, 46 MSO_I } }
1266 };
1267 static const SvxMSDffVertPair mso_sptCurvedRightGluePoints[] =
1268 {
1269     { 0, 17 MSO_I }, { 2 MSO_I, 14 MSO_I }, { 22 MSO_I, 8 MSO_I }, { 2 MSO_I, 12 MSO_I }, { 22 MSO_I, 16 MSO_I }
1270 };
1271 static const SvxMSDffHandle mso_sptCurvedRightHandles[] =
1272 {
1273     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1274         21600, 0x100, 10800, 10800, 0, 10800, 3 + 40, 3 + 29 },
1275     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1276         21600, 0x101, 10800, 10800, 0, 10800, 3 + 27, 3 + 21 },
1277     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1278         0x102, 21600, 10800, 10800, 3 + 44, 3 + 22, 3375, 21600 }
1279 };
1280 static const mso_CustomShape msoCurvedRightArrow =
1281 {
1282     (SvxMSDffVertPair*)mso_sptCurvedRightVert, sizeof( mso_sptCurvedRightVert ) / sizeof( SvxMSDffVertPair ),
1283     (sal_uInt16*)mso_sptCurvedRightSegm, sizeof( mso_sptCurvedRightSegm ) >> 1,
1284     (SvxMSDffCalculationData*)mso_sptCurvedRightCalc, sizeof( mso_sptCurvedRightCalc ) / sizeof( SvxMSDffCalculationData ),
1285     (sal_Int32*)mso_sptCurvedRightDefault,
1286     (SvxMSDffTextRectangles*)mso_sptCurvedRightTextRect, sizeof( mso_sptCurvedRightTextRect ) / sizeof( SvxMSDffTextRectangles ),
1287     21600, 21600,
1288     0x80000000, 0x80000000,
1289     (SvxMSDffVertPair*)mso_sptCurvedRightGluePoints, sizeof( mso_sptCurvedRightGluePoints ) / sizeof( SvxMSDffVertPair ),
1290     (SvxMSDffHandle*)mso_sptCurvedRightHandles, sizeof( mso_sptCurvedRightHandles ) / sizeof( SvxMSDffHandle )
1291 };
1292 
1293 static const SvxMSDffVertPair mso_sptCurvedDownVert[] =
1294 {
1295     { 0, 0 }, { 3 MSO_I, 23 MSO_I }, { 0, 22 MSO_I }, { 4 MSO_I, 0 },
1296     { 15 MSO_I, 0 }, { 1 MSO_I, 23 MSO_I }, { 7 MSO_I, 0 }, { 13 MSO_I, 2 MSO_I },
1297     { 14 MSO_I, 2 MSO_I }, { 8 MSO_I, 22 MSO_I }, { 12 MSO_I, 2 MSO_I },
1298     { 0, 0 }, { 3 MSO_I, 23 MSO_I }, { 11 MSO_I, 2 MSO_I }, { 17 MSO_I, 26 MSO_I }, { 15 MSO_I, 0 },
1299     { 1 MSO_I, 23 MSO_I }, { 17 MSO_I, 26 MSO_I }, { 15 MSO_I, 22 MSO_I },
1300     { 0, 0 }, { 3 MSO_I, 23 MSO_I }, { 0, 22 MSO_I }, { 4 MSO_I, 0 },
1301     { 0, 0 }, { 3 MSO_I, 23 MSO_I }, { 4 MSO_I, 0 }, { 17 MSO_I, 26 MSO_I },
1302     { 15 MSO_I, 0 }, { 1 MSO_I, 23 MSO_I }, { 17 MSO_I, 26 MSO_I }, { 15 MSO_I, 22 MSO_I }
1303 };
1304 static const sal_uInt16 mso_sptCurvedDownSegm[] =
1305 {
1306     0xa608,
1307     0x0003,
1308     0xa308,
1309     0x6000,
1310     0x8000,
1311     0xa604,
1312     0xa504,
1313     0xa304,
1314     0x6000,
1315     0x8000
1316 };
1317 static const SvxMSDffTextRectangles mso_sptCurvedDownTextRect[] =
1318 {
1319     { { 45 MSO_I, 47 MSO_I }, { 46 MSO_I, 48 MSO_I } }
1320 };
1321 static const SvxMSDffVertPair mso_sptCurvedDownGluePoints[] =
1322 {
1323     { 17 MSO_I, 0 }, { 16 MSO_I, 22 MSO_I }, { 12 MSO_I, 2 MSO_I }, { 8 MSO_I, 22 MSO_I }, { 14 MSO_I, 2 MSO_I }
1324 };
1325 static const SvxMSDffHandle mso_sptCurvedDownHandles[] =
1326 {
1327     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1328         0x100, 21600, 10800, 10800, 3 + 40, 3 + 29, 0, 10800 },
1329     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1330         0x101, 21600, 10800, 10800, 3 + 27, 3 + 21, 0, 10800 },
1331     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1332         21600, 0x102, 10800, 10800, 3375, 21600, 3 + 44, 3 + 22 }
1333 };
1334 
1335 static const mso_CustomShape msoCurvedDownArrow =
1336 {
1337     (SvxMSDffVertPair*)mso_sptCurvedDownVert, sizeof( mso_sptCurvedDownVert ) / sizeof( SvxMSDffVertPair ),
1338     (sal_uInt16*)mso_sptCurvedDownSegm, sizeof( mso_sptCurvedDownSegm ) >> 1,
1339     (SvxMSDffCalculationData*)mso_sptCurvedRightCalc, sizeof( mso_sptCurvedRightCalc ) / sizeof( SvxMSDffCalculationData ),
1340     (sal_Int32*)mso_sptCurvedRightDefault,
1341     (SvxMSDffTextRectangles*)mso_sptCurvedDownTextRect, sizeof( mso_sptCurvedDownTextRect ) / sizeof( SvxMSDffTextRectangles ),
1342     21600, 21600,
1343     0x80000000, 0x80000000,
1344     (SvxMSDffVertPair*)mso_sptCurvedDownGluePoints, sizeof( mso_sptCurvedDownGluePoints ) / sizeof( SvxMSDffVertPair ),
1345     (SvxMSDffHandle*)mso_sptCurvedDownHandles, sizeof( mso_sptCurvedDownHandles ) / sizeof( SvxMSDffHandle )
1346 };
1347 
1348 static const SvxMSDffVertPair mso_sptCurvedUpVert[] =
1349 {
1350     { 0, 22 MSO_I }, { 3 MSO_I, 21 MSO_I }, { 0, 0 }, { 4 MSO_I, 21 MSO_I },
1351     { 14 MSO_I, 22 MSO_I }, { 1 MSO_I, 21 MSO_I }, { 7 MSO_I, 21 MSO_I },
1352     { 12 MSO_I, 2 MSO_I }, { 13 MSO_I, 2 MSO_I }, { 8 MSO_I, 0 }, { 11 MSO_I, 2 MSO_I },
1353     { 0, 22 MSO_I }, { 3 MSO_I, 21 MSO_I }, { 10 MSO_I, 2 MSO_I }, { 16 MSO_I, 24 MSO_I },
1354     { 14 MSO_I, 22 MSO_I }, { 1 MSO_I, 21 MSO_I }, { 16 MSO_I, 24 MSO_I }, { 14 MSO_I, 0 },
1355     { 0, 22 MSO_I }, { 3 MSO_I, 21 MSO_I }, { 0, 0 }, { 4 MSO_I, 21 MSO_I },
1356     { 14 MSO_I, 22 MSO_I }, { 1 MSO_I, 21 MSO_I }, { 7 MSO_I, 21 MSO_I }, { 16 MSO_I, 24 MSO_I },
1357     { 14 MSO_I, 22 MSO_I }, { 1 MSO_I, 21 MSO_I }, { 16 MSO_I, 24 MSO_I }, { 14 MSO_I, 0 }
1358 };
1359 static const sal_uInt16 mso_sptCurvedUpSegm[] =
1360 {
1361     0xa408,
1362     0x0003,
1363     0xa508,
1364     0x6000,
1365     0x8000,
1366     0xa404,
1367     0xa508,
1368     0xa504,
1369     0x6000,
1370     0x8000
1371 };
1372 static const SvxMSDffCalculationData mso_sptCurvedUpCalc[] =
1373 {
1374     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1375     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1376     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1377     { 0xa000, { DFF_Prop_adjustValue, 21600, DFF_Prop_adjust2Value } },
1378     { 0x2001, { 0x403, 1, 2 } },
1379     { 0x6000, { DFF_Prop_adjust2Value, DFF_Prop_adjust2Value, 21600 } },
1380     { 0xe000, { 0x405, DFF_Prop_adjust2Value, DFF_Prop_adjustValue } },
1381     { 0x2001, { 0x406, 1, 2 } },
1382     { 0x4002, { 21600, DFF_Prop_adjustValue, 0 } },
1383     { 0xa00f, { DFF_Prop_adjust3Value, 21600, 0x404 } },
1384     { 0x6000, { 0x404, 0x409, 0 } },
1385     { 0x6000, { 0x40a, DFF_Prop_adjust2Value, 21600 } },
1386     { 0x6000, { 0x407, 0x409, 0 } },
1387     { 0xa000, { 0x40b, 21600, DFF_Prop_adjustValue } },
1388     { 0xa000, { 0x405, 0, DFF_Prop_adjustValue } },
1389     { 0x2001, { 0x40e, 1, 2 } },
1390     { 0x6002, { 0x404, 0x407, 0 } },
1391     { 0x6000, { DFF_Prop_adjustValue, DFF_Prop_adjust2Value, 21600 } },
1392     { 0x2001, { 0x411, 1, 2 } },
1393     { 0xa000, { 0x410, 0, 0x412 } },
1394     { 0x0000, { 21600, 0, 0 } },
1395     { 0x0000, { 21600, 0, 0 } },
1396     { 0x0000, { 0, 0, 21600 } },
1397     { 0xa000, { 0x410, 0, 0x404 } },
1398     { 0x600f, { 0x417, 0x404, 21600 } },
1399     { 0x2000, { 0x408, 128, 0 } },
1400     { 0x2001, { 0x405, 1, 2 } },
1401     { 0x2000, { 0x405, 0, 128 } },
1402     { 0xe000, { DFF_Prop_adjustValue, 0x410, 0x40b } },
1403     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
1404     { 0x2001, { 0x41d, 1, 2 } },
1405     { 0x0001, { 21600, 21600, 1 } },
1406     { 0x6001, { DFF_Prop_adjust3Value, DFF_Prop_adjust3Value, 1 } },
1407     { 0xa000, { 0x41f, 0, 0x420 } },
1408     { 0x200d, { 0x421, 0, 0 } },
1409     { 0x2000, { 0x422, 21600, 0 } },
1410     { 0x8001, { 21600, 21600, 0x423 } },
1411     { 0x2000, { 0x424, 64, 0 } },
1412     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
1413     { 0x600f, { 0x41e, 0x426, 21600 } },
1414     { 0x2000, { 0x427, 0, 64 } },
1415     { 0x2001, { 0x404, 1, 2 } },
1416     { 0xa000, { DFF_Prop_adjust2Value, 0, 0x429 } },
1417     { 0x0001, { 21600, 2195, 16384 } },
1418     { 0x0001, { 21600, 14189, 16384 } }
1419 };
1420 static const sal_Int32 mso_sptCurvedUpDefault[] =
1421 {
1422     3, 12960, 19440, 7200
1423 };
1424 static const SvxMSDffTextRectangles mso_sptCurvedUpTextRect[] =
1425 {
1426     { { 41 MSO_I, 43 MSO_I }, { 42 MSO_I, 44 MSO_I } }
1427 };
1428 static const SvxMSDffVertPair mso_sptCurvedUpGluePoints[] =
1429 {
1430     { 8 MSO_I, 0 }, { 11 MSO_I, 2 MSO_I }, { 15 MSO_I, 0 }, { 16 MSO_I, 21 MSO_I }, { 13 MSO_I, 2 MSO_I }
1431 };
1432 static const SvxMSDffHandle mso_sptCurvedUpHandles[] =
1433 {
1434     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1435         0x100, 0, 10800, 10800, 3 + 37, 3 + 27, 0, 10800 },
1436     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1437         0x101, 0, 10800, 10800, 3 + 25, 3 + 20, 0, 10800 },
1438     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1439         21600, 0x102, 10800, 10800, 3375, 21600, 0, 3 + 40 }
1440 };
1441 static const mso_CustomShape msoCurvedUpArrow =
1442 {
1443     (SvxMSDffVertPair*)mso_sptCurvedUpVert, sizeof( mso_sptCurvedUpVert ) / sizeof( SvxMSDffVertPair ),
1444     (sal_uInt16*)mso_sptCurvedUpSegm, sizeof( mso_sptCurvedUpSegm ) >> 1,
1445     (SvxMSDffCalculationData*)mso_sptCurvedUpCalc, sizeof( mso_sptCurvedUpCalc ) / sizeof( SvxMSDffCalculationData ),
1446     (sal_Int32*)mso_sptCurvedUpDefault,
1447     (SvxMSDffTextRectangles*)mso_sptCurvedUpTextRect, sizeof( mso_sptCurvedUpTextRect ) / sizeof( SvxMSDffTextRectangles ),
1448     21600, 21600,
1449     0x80000000, 0x80000000,
1450     (SvxMSDffVertPair*)mso_sptCurvedUpGluePoints, sizeof( mso_sptCurvedUpGluePoints ) / sizeof( SvxMSDffVertPair ),
1451     (SvxMSDffHandle*)mso_sptCurvedUpHandles, sizeof( mso_sptCurvedUpHandles ) / sizeof( SvxMSDffHandle )
1452 };
1453 
1454 static const SvxMSDffVertPair mso_sptCurvedLeftVert[] =
1455 {
1456     { 22 MSO_I, 0 }, { 21 MSO_I, 3 MSO_I }, { 0, 0 }, { 21 MSO_I, 4 MSO_I },
1457     { 22 MSO_I, 14 MSO_I }, { 21 MSO_I, 1 MSO_I }, { 21 MSO_I, 7 MSO_I }, { 2 MSO_I, 12 MSO_I },
1458     { 2 MSO_I, 13 MSO_I }, { 0, 8 MSO_I }, { 2 MSO_I, 11 MSO_I },
1459     { 22 MSO_I, 0 }, { 21 MSO_I, 3 MSO_I }, { 2 MSO_I, 10 MSO_I }, { 24 MSO_I, 16 MSO_I },
1460     { 22 MSO_I, 14 MSO_I }, { 21 MSO_I, 1 MSO_I }, { 24 MSO_I, 16 MSO_I }, { 0, 14 MSO_I },
1461     { 22 MSO_I, 0 }, { 21 MSO_I, 3 MSO_I }, { 0, 0 }, { 21 MSO_I, 4 MSO_I },
1462     { 22 MSO_I, 14 MSO_I }, { 21 MSO_I, 1 MSO_I }, { 21 MSO_I, 7 MSO_I }, { 24 MSO_I, 16 MSO_I },
1463     { 22 MSO_I, 14 MSO_I }, { 21 MSO_I, 1 MSO_I }, { 24 MSO_I, 16 MSO_I }, { 0, 14 MSO_I }
1464 };
1465 static const sal_uInt16 mso_sptCurvedLeftSegm[] =
1466 {
1467     0xa608,
1468     0x0003,
1469     0xa308,
1470     0x6000,
1471     0x8000,
1472     0xa604,
1473     0xa308,
1474     0x6000,
1475     0x8000
1476 };
1477 static const SvxMSDffTextRectangles mso_sptCurvedLeftTextRect[] =
1478 {
1479     { { 43 MSO_I, 41 MSO_I }, { 44 MSO_I, 42 MSO_I } }
1480 };
1481 static const SvxMSDffVertPair mso_sptCurvedLeftGluePoints[] =
1482 {
1483     { 0, 15 MSO_I }, { 2 MSO_I, 11 MSO_I }, { 0, 8 MSO_I }, { 2 MSO_I, 13 MSO_I }, { 21 MSO_I, 16 MSO_I }
1484 };
1485 static const SvxMSDffHandle mso_sptCurvedLeftHandles[] =
1486 {
1487     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1488         0, 0x100, 10800, 10800, 0, 10800, 3 + 37, 3 + 27 },
1489     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1490         0, 0x101, 10800, 10800, 0, 10800, 3 + 25, 3 + 20 },
1491     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1492         0x102, 21600, 10800, 10800, 0, 3 + 40, 3375, 21600 }
1493 };
1494 static const mso_CustomShape msoCurvedLeftArrow =
1495 {
1496     (SvxMSDffVertPair*)mso_sptCurvedLeftVert, sizeof( mso_sptCurvedLeftVert ) / sizeof( SvxMSDffVertPair ),
1497     (sal_uInt16*)mso_sptCurvedLeftSegm, sizeof( mso_sptCurvedLeftSegm ) >> 1,
1498     (SvxMSDffCalculationData*)mso_sptCurvedUpCalc, sizeof( mso_sptCurvedUpCalc ) / sizeof( SvxMSDffCalculationData ),
1499     (sal_Int32*)mso_sptCurvedUpDefault,
1500     (SvxMSDffTextRectangles*)mso_sptCurvedLeftTextRect, sizeof( mso_sptCurvedLeftTextRect ) / sizeof( SvxMSDffTextRectangles ),
1501     21600, 21600,
1502     0x80000000, 0x80000000,
1503     (SvxMSDffVertPair*)mso_sptCurvedLeftGluePoints, sizeof( mso_sptCurvedLeftGluePoints ) / sizeof( SvxMSDffVertPair ),
1504     (SvxMSDffHandle*)mso_sptCurvedLeftHandles, sizeof( mso_sptCurvedLeftHandles ) / sizeof( SvxMSDffHandle )
1505 };
1506 
1507 static const SvxMSDffVertPair mso_sptStripedRightArrowVert[] =  // adjustment1 : x 3375 - 21600
1508 {                                                               // adjustment2 : y 0 - 10800
1509     { 3375, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 21600, 10800 },
1510     { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 3375, 2 MSO_I }, { 0, 0 MSO_I },
1511     { 675, 0 MSO_I }, { 675, 2 MSO_I }, { 0, 2 MSO_I }, { 1350, 0 MSO_I },
1512     { 2700, 0 MSO_I }, { 2700, 2 MSO_I }, { 1350, 2 MSO_I }
1513 };
1514 static const sal_uInt16 mso_sptStripedRightArrowSegm[] =
1515 {
1516     0x4000, 0x0006, 0x6001, 0x8000,
1517     0x4000, 0x0003, 0x6001, 0x8000,
1518     0x4000, 0x0003, 0x6001, 0x8000
1519 };
1520 static const SvxMSDffCalculationData mso_sptStripedRightArrowCalc[] =
1521 {
1522     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1523     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1524     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },
1525     { 0x8000, { 21600, 0, 0x401 } },
1526     { 0x6001, { 0x403, 0x400, 10800 } },
1527     { 0x6000, { 0x401, 0x404, 0 } }
1528 };
1529 static const SvxMSDffTextRectangles mso_sptStripedRightArrowTextRect[] =
1530 {
1531     { { 3375, 0 MSO_I }, { 5 MSO_I, 2 MSO_I } }
1532 };
1533 static const SvxMSDffHandle mso_sptStripedRightArrowHandle[] =
1534 {
1535     {   MSDFF_HANDLE_FLAGS_RANGE,
1536         0x100, 0x101, 10800, 10800, 3375, 21600, 0, 10800 }
1537 };
1538 static const mso_CustomShape msoStripedRightArrow =
1539 {
1540     (SvxMSDffVertPair*)mso_sptStripedRightArrowVert, sizeof( mso_sptStripedRightArrowVert ) / sizeof( SvxMSDffVertPair ),
1541     (sal_uInt16*)mso_sptStripedRightArrowSegm, sizeof( mso_sptStripedRightArrowSegm ) >> 1,
1542     (SvxMSDffCalculationData*)mso_sptStripedRightArrowCalc, sizeof( mso_sptStripedRightArrowCalc ) / sizeof( SvxMSDffCalculationData ),
1543     (sal_Int32*)mso_sptDefault16200and5400,
1544     (SvxMSDffTextRectangles*)mso_sptStripedRightArrowTextRect, sizeof( mso_sptStripedRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1545     21600, 21600,
1546     0x80000000, 0x80000000,
1547     NULL, 0,
1548     (SvxMSDffHandle*)mso_sptStripedRightArrowHandle, sizeof( mso_sptStripedRightArrowHandle ) / sizeof( SvxMSDffHandle )
1549 };
1550 
1551 static const SvxMSDffVertPair mso_sptNotchedRightArrowVert[] =  // adjustment1 : x 0 - 21600    (default 16200)
1552 {                                                               // adjustment2 : y 0 - 10800    (default 5400)
1553     { 0, 1 MSO_I }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 0 }, { 21600, 10800 },
1554     { 0 MSO_I, 21600 }, { 0 MSO_I, 2 MSO_I }, { 0, 2 MSO_I }, { 5 MSO_I, 10800 }, { 0, 1 MSO_I }
1555 };
1556 static const SvxMSDffCalculationData mso_sptNotchedRightArrowCalc[] =
1557 {
1558     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1559     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1560     { 0x8000, { 21600, 0, DFF_Prop_adjust2Value } },
1561     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
1562     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },
1563     { 0x6001, { 0x403, 0x404, 10800 } }
1564 };
1565 static const SvxMSDffTextRectangles mso_sptNotchedRightArrowTextRect[] =    // todo
1566 {
1567     { { 0, 0 }, { 21600, 21600 } }
1568 };
1569 static const SvxMSDffHandle mso_sptNotchedRightArrowHandle[] =
1570 {
1571     {   MSDFF_HANDLE_FLAGS_RANGE,
1572         0x100, 0x101, 10800, 10800, 0, 21600, 0, 10800 }
1573 };
1574 static const mso_CustomShape msoNotchedRightArrow =
1575 {
1576     (SvxMSDffVertPair*)mso_sptNotchedRightArrowVert, sizeof( mso_sptNotchedRightArrowVert ) / sizeof( SvxMSDffVertPair ),
1577     NULL, 0,
1578     (SvxMSDffCalculationData*)mso_sptNotchedRightArrowCalc, sizeof( mso_sptNotchedRightArrowCalc ) / sizeof( SvxMSDffCalculationData ),
1579     (sal_Int32*)mso_sptDefault16200and5400,
1580     (SvxMSDffTextRectangles*)mso_sptNotchedRightArrowTextRect, sizeof( mso_sptNotchedRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
1581     21600, 21600,
1582     0x80000000, 0x80000000,
1583     NULL, 0,
1584     (SvxMSDffHandle*)mso_sptNotchedRightArrowHandle, sizeof( mso_sptNotchedRightArrowHandle ) / sizeof( SvxMSDffHandle )
1585 };
1586 
1587 static const SvxMSDffVertPair mso_sptHomePlateVert[] =  // adjustment1 : x 0 - 21600
1588 {
1589     { 0, 0 }, { 0 MSO_I, 0 }, { 21600, 10800 }, { 0 MSO_I, 21600 },
1590     { 0, 21600 }
1591 };
1592 static const sal_uInt16 mso_sptHomePlateSegm[] =
1593 {
1594     0x4000, 0x0004, 0x6001, 0x8000
1595 };
1596 static const SvxMSDffCalculationData mso_sptHomePlateCalc[] =
1597 {
1598     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }
1599 };
1600 static const sal_Int32 mso_sptHomePlateDefault[] =
1601 {
1602     1, 16200
1603 };
1604 static const SvxMSDffTextRectangles mso_sptHomePlateTextRect[] =    // todo
1605 {
1606     { { 0, 0 }, { 21600, 21600 } }
1607 };
1608 static const SvxMSDffHandle mso_sptHomePlateHandle[] =
1609 {
1610     {   MSDFF_HANDLE_FLAGS_RANGE,
1611         0x100, 0, 10800, 10800, 0, 21600, 0x80000000, 0x7fffffff }
1612 };
1613 static const mso_CustomShape msoHomePlate =
1614 {
1615     (SvxMSDffVertPair*)mso_sptHomePlateVert, sizeof( mso_sptHomePlateVert ) / sizeof( SvxMSDffVertPair ),
1616     (sal_uInt16*)mso_sptHomePlateSegm, sizeof( mso_sptHomePlateSegm ) >> 1,
1617     (SvxMSDffCalculationData*)mso_sptHomePlateCalc, sizeof( mso_sptHomePlateCalc ) / sizeof( SvxMSDffCalculationData ),
1618     (sal_Int32*)mso_sptHomePlateDefault,
1619     (SvxMSDffTextRectangles*)mso_sptHomePlateTextRect, sizeof( mso_sptHomePlateTextRect ) / sizeof( SvxMSDffTextRectangles ),
1620     21600, 21600,
1621     0x80000000, 0x80000000,
1622     NULL, 0,
1623     (SvxMSDffHandle*)mso_sptHomePlateHandle, sizeof( mso_sptHomePlateHandle ) / sizeof( SvxMSDffHandle )
1624 };
1625 
1626 static const SvxMSDffVertPair mso_sptChevronVert[] =    // adjustment1 : x 0 - 21600
1627 {
1628     { 0, 0 }, { 0 MSO_I, 0 }, { 21600, 10800 }, { 0 MSO_I, 21600 },
1629     { 0, 21600 }, { 1 MSO_I, 10800 }
1630 };
1631 static const sal_uInt16 mso_sptChevronSegm[] =
1632 {
1633     0x4000, 0x0005, 0x6001, 0x8000
1634 };
1635 static const SvxMSDffCalculationData mso_sptChevronCalc[] =
1636 {
1637     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1638     { 0x8000, { 21600, 0, 0x0400 } }
1639 };
1640 static const sal_Int32 mso_sptChevronDefault[] =
1641 {
1642     1, 16200
1643 };
1644 static const SvxMSDffTextRectangles mso_sptChevronTextRect[] =  // todo
1645 {
1646     { { 0, 0 }, { 21600, 21600 } }
1647 };
1648 static const SvxMSDffHandle mso_sptChevronHandle[] =
1649 {
1650     {   MSDFF_HANDLE_FLAGS_RANGE,
1651         0x100, 0, 10800, 10800, 0, 21600, 0x80000000, 0x7fffffff }
1652 };
1653 static const mso_CustomShape msoChevron =
1654 {
1655     (SvxMSDffVertPair*)mso_sptChevronVert, sizeof( mso_sptChevronVert ) / sizeof( SvxMSDffVertPair ),
1656     (sal_uInt16*)mso_sptChevronSegm, sizeof( mso_sptChevronSegm ) >> 1,
1657     (SvxMSDffCalculationData*)mso_sptChevronCalc, sizeof( mso_sptChevronCalc ) / sizeof( SvxMSDffCalculationData ),
1658     (sal_Int32*)mso_sptChevronDefault,
1659     (SvxMSDffTextRectangles*)mso_sptChevronTextRect, sizeof( mso_sptChevronTextRect ) / sizeof( SvxMSDffTextRectangles ),
1660     21600, 21600,
1661     0x80000000, 0x80000000,
1662     NULL, 0,
1663     (SvxMSDffHandle*)mso_sptChevronHandle, sizeof( mso_sptChevronHandle ) / sizeof( SvxMSDffHandle )
1664 };
1665 
1666 static const SvxMSDffVertPair mso_sptRightArrowCalloutVert[] =  // adjustment1 : x 0 - 21000
1667 {                                                               // adjustment2 : y 0 - 10800
1668     { 0, 0 }, { 0 MSO_I, 0 }, { 0 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I },
1669     { 2 MSO_I, 1 MSO_I }, { 21600, 10800 }, { 2 MSO_I, 4 MSO_I }, { 2 MSO_I, 5 MSO_I },
1670     { 0 MSO_I, 5 MSO_I }, { 0 MSO_I, 21600 }, { 0, 21600 }
1671 };
1672 static const sal_uInt16 mso_sptRightArrowCalloutSegm[] =
1673 {
1674     0x4000, 0x000a, 0x6001, 0x8000
1675 };
1676 static const SvxMSDffCalculationData mso_sptRightArrowCalloutCalc[] =
1677 {
1678     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1679     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1680     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1681     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1682     { 0x8000, { 21600, 0, 0x0401 } },
1683     { 0x8000, { 21600, 0, 0x0403 } }
1684 };
1685 static const sal_Int32 mso_sptRightArrowCalloutDefault[] =
1686 {
1687     4, 14400, 5400, 18000, 8100
1688 };
1689 static const SvxMSDffTextRectangles mso_sptRightArrowCalloutTextRect[] =
1690 {
1691     { { 0, 0 }, { 0 MSO_I, 21600 } }
1692 };
1693 static const SvxMSDffHandle mso_sptRightArrowCalloutHandle[] =
1694 {
1695     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1696         0x100, 0, 10800, 10800, 0, 0x102, 0x80000000, 0x7fffffff },
1697     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1698         0x102, 0x103, 10800, 10800, 0x100, 21600, 0x101, 10800 },
1699     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1700         1, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 0x103 }
1701 };
1702 static const mso_CustomShape msoRightArrowCallout =
1703 {
1704     (SvxMSDffVertPair*)mso_sptRightArrowCalloutVert, sizeof( mso_sptRightArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1705     (sal_uInt16*)mso_sptRightArrowCalloutSegm, sizeof( mso_sptRightArrowCalloutSegm ) >> 1,
1706     (SvxMSDffCalculationData*)mso_sptRightArrowCalloutCalc, sizeof( mso_sptRightArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1707     (sal_Int32*)mso_sptRightArrowCalloutDefault,
1708     (SvxMSDffTextRectangles*)mso_sptRightArrowCalloutTextRect, sizeof( mso_sptRightArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1709     21600, 21600,
1710     0x80000000, 0x80000000,
1711     NULL, 0,
1712     (SvxMSDffHandle*)mso_sptRightArrowCalloutHandle, sizeof( mso_sptRightArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1713 };
1714 
1715 static const SvxMSDffVertPair mso_sptLeftArrowCalloutVert[] =   // adjustment1 : x 0 - 21600, adjustment2 : y 0 - 10800
1716 {                                                               // adjustment3 : x 0 - 21600, adjustment4 : y 0 - 10800
1717     { 0 MSO_I, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0 MSO_I, 21600 },
1718     { 0 MSO_I, 5 MSO_I }, { 2 MSO_I, 5 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 0, 10800 },
1719     { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
1720 };
1721 static const sal_uInt16 mso_sptLeftArrowCalloutSegm[] =
1722 {
1723     0x4000, 0x000a, 0x6001, 0x8000
1724 };
1725 static const SvxMSDffCalculationData mso_sptLeftArrowCalloutCalc[] =
1726 {
1727     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1728     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1729     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1730     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1731     { 0x8000, { 21600, 0, 0x0401 } },
1732     { 0x8000, { 21600, 0, 0x0403 } }
1733 };
1734 static const sal_Int32 mso_sptLeftArrowCalloutDefault[] =
1735 {
1736     4, 7200, 5400, 3600, 8100
1737 };
1738 static const SvxMSDffTextRectangles mso_sptLeftArrowCalloutTextRect[] =
1739 {
1740     { { 0 MSO_I, 0 }, { 21600, 21600 } }
1741 };
1742 static const SvxMSDffHandle mso_sptLeftArrowCalloutHandle[] =
1743 {
1744     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
1745         0x100, 0, 10800, 10800, 0x102, 21600, 0x80000000, 0x7fffffff },
1746     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1747         0x102, 0x103, 10800, 10800, 0, 0x100, 0x101, 10800 },
1748     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1749         0, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 0x103 }
1750 };
1751 static const mso_CustomShape msoLeftArrowCallout =
1752 {
1753     (SvxMSDffVertPair*)mso_sptLeftArrowCalloutVert, sizeof( mso_sptLeftArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1754     (sal_uInt16*)mso_sptLeftArrowCalloutSegm, sizeof( mso_sptLeftArrowCalloutSegm ) >> 1,
1755     (SvxMSDffCalculationData*)mso_sptLeftArrowCalloutCalc, sizeof( mso_sptLeftArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1756     (sal_Int32*)mso_sptLeftArrowCalloutDefault,
1757     (SvxMSDffTextRectangles*)mso_sptLeftArrowCalloutTextRect, sizeof( mso_sptLeftArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1758     21600, 21600,
1759     0x80000000, 0x80000000,
1760     NULL, 0,
1761     (SvxMSDffHandle*)mso_sptLeftArrowCalloutHandle, sizeof( mso_sptLeftArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1762 };
1763 
1764 static const SvxMSDffVertPair mso_sptUpArrowCalloutVert[] =
1765 {
1766     { 21600, 0 MSO_I }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 MSO_I },
1767     { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I }, { 10800, 0 },
1768     { 4 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 5 MSO_I, 0 MSO_I }
1769 };
1770 static const sal_uInt16 mso_sptUpArrowCalloutSegm[] =
1771 {
1772     0x4000, 0x000a, 0x6001, 0x8000
1773 };
1774 static const SvxMSDffCalculationData mso_sptUpArrowCalloutCalc[] =
1775 {
1776     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1777     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1778     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1779     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1780     { 0x8000, { 21600, 0, 0x0401 } },
1781     { 0x8000, { 21600, 0, 0x0403 } }
1782 };
1783 static const sal_Int32 mso_sptUpArrowCalloutDefault[] =
1784 {
1785     4, 7200, 5400, 3600, 8100
1786 };
1787 static const SvxMSDffTextRectangles mso_sptUpArrowCalloutTextRect[] =
1788 {
1789     { { 0, 0 MSO_I }, { 21600, 21600 } }
1790 };
1791 static const SvxMSDffHandle mso_sptUpArrowCalloutHandle[] =
1792 {
1793     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1794         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0x102, 21600 },
1795     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1796         0x103, 0x102, 10800, 10800, 0x101, 10800, 0, 0x100 },
1797     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1798         0x101, 0, 10800, 10800, 0, 0x103, 0x80000000, 0x7fffffff }
1799 };
1800 static const mso_CustomShape msoUpArrowCallout =
1801 {
1802     (SvxMSDffVertPair*)mso_sptUpArrowCalloutVert, sizeof( mso_sptUpArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1803     (sal_uInt16*)mso_sptUpArrowCalloutSegm, sizeof( mso_sptUpArrowCalloutSegm ) >> 1,
1804     (SvxMSDffCalculationData*)mso_sptUpArrowCalloutCalc, sizeof( mso_sptUpArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1805     (sal_Int32*)mso_sptUpArrowCalloutDefault,
1806     (SvxMSDffTextRectangles*)mso_sptUpArrowCalloutTextRect, sizeof( mso_sptUpArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1807     21600, 21600,
1808     0x80000000, 0x80000000,
1809     NULL, 0,
1810     (SvxMSDffHandle*)mso_sptUpArrowCalloutHandle, sizeof( mso_sptUpArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1811 };
1812 
1813 static const SvxMSDffVertPair mso_sptDownArrowCalloutVert[] =
1814 {
1815     { 0, 0 MSO_I }, { 0, 0 }, { 21600, 0 }, { 21600, 0 MSO_I },
1816     { 5 MSO_I, 0 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 10800, 21600 },
1817     { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 0 MSO_I }
1818 };
1819 static const sal_uInt16 mso_sptDownArrowCalloutSegm[] =
1820 {
1821     0x4000, 0x000a, 0x6001, 0x8000
1822 };
1823 static const SvxMSDffCalculationData mso_sptDownArrowCalloutCalc[] =
1824 {
1825     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1826     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1827     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1828     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1829     { 0x8000, { 21600, 0, 0x0401 } },
1830     { 0x8000, { 21600, 0, 0x0403 } }
1831 };
1832 static const sal_Int32 mso_sptDownArrowCalloutDefault[] =
1833 {
1834     4, 14400, 5400, 18000, 8100
1835 };
1836 static const SvxMSDffTextRectangles mso_sptDownArrowCalloutTextRect[] =
1837 {
1838     { { 0, 0 }, { 21600, 0 MSO_I } }
1839 };
1840 static const SvxMSDffHandle mso_sptDownArrowCalloutHandle[] =
1841 {
1842     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1843         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 0x102 },
1844     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1845         0x103, 0x102, 10800, 10800, 0x101, 10800, 0x100, 21600 },
1846     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1847         0x101, 1, 10800, 10800, 0, 0x103, 0x80000000, 0x7fffffff }
1848 };
1849 static const mso_CustomShape msoDownArrowCallout =
1850 {
1851     (SvxMSDffVertPair*)mso_sptDownArrowCalloutVert, sizeof( mso_sptDownArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1852     (sal_uInt16*)mso_sptDownArrowCalloutSegm, sizeof( mso_sptDownArrowCalloutSegm ) >> 1,
1853     (SvxMSDffCalculationData*)mso_sptDownArrowCalloutCalc, sizeof( mso_sptDownArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1854     (sal_Int32*)mso_sptDownArrowCalloutDefault,
1855     (SvxMSDffTextRectangles*)mso_sptDownArrowCalloutTextRect, sizeof( mso_sptDownArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1856     21600, 21600,
1857     0x80000000, 0x80000000,
1858     NULL, 0,
1859     (SvxMSDffHandle*)mso_sptDownArrowCalloutHandle, sizeof( mso_sptDownArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1860 };
1861 
1862 static const SvxMSDffVertPair mso_sptLeftRightArrowCalloutVert[] =
1863 {
1864     { 0 MSO_I, 0 }, { 4 MSO_I, 0 }, { 4 MSO_I, 3 MSO_I }, { 6 MSO_I, 3 MSO_I },
1865     { 6 MSO_I, 1 MSO_I }, { 21600, 10800 }, { 6 MSO_I, 5 MSO_I }, { 6 MSO_I, 7 MSO_I },
1866     { 4 MSO_I, 7 MSO_I }, { 4 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0 MSO_I, 7 MSO_I },
1867     { 2 MSO_I, 7 MSO_I }, { 2 MSO_I, 5 MSO_I }, { 0, 10800 }, { 2 MSO_I, 1 MSO_I },
1868     { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
1869 };
1870 static const sal_uInt16 mso_sptLeftRightArrowCalloutSegm[] =
1871 {
1872     0x4000, 0x0011, 0x6001, 0x8000
1873 };
1874 static const SvxMSDffCalculationData mso_sptLeftRightArrowCalloutCalc[] =
1875 {
1876     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1877     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1878     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1879     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1880     { 0x8000, { 21600, 0, 0x0400 } },
1881     { 0x8000, { 21600, 0, 0x0401 } },
1882     { 0x8000, { 21600, 0, 0x0402 } },
1883     { 0x8000, { 21600, 0, 0x0403 } }
1884 };
1885 static const sal_Int32 mso_sptLeftRightArrowCalloutDefault[] =
1886 {
1887     4, 5400, 5500, 2700, 8100
1888 };
1889 static const SvxMSDffTextRectangles mso_sptLeftRightArrowCalloutTextRect[] =
1890 {
1891     { { 0 MSO_I, 0 }, { 4 MSO_I, 21600 } }
1892 };
1893 static const SvxMSDffHandle mso_sptLeftRightArrowCalloutHandle[] =
1894 {
1895     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
1896         0x100, 0, 10800, 10800, 0x102, 10800, 0x80000000, 0x7fffffff },
1897     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1898         0x102, 0x103, 10800, 10800, 0, 0x100, 0x101, 10800 },
1899     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1900         0, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 0x103 }
1901 };
1902 static const mso_CustomShape msoLeftRightArrowCallout =
1903 {
1904     (SvxMSDffVertPair*)mso_sptLeftRightArrowCalloutVert, sizeof( mso_sptLeftRightArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1905     (sal_uInt16*)mso_sptLeftRightArrowCalloutSegm, sizeof( mso_sptLeftRightArrowCalloutSegm ) >> 1,
1906     (SvxMSDffCalculationData*)mso_sptLeftRightArrowCalloutCalc, sizeof( mso_sptLeftRightArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1907     (sal_Int32*)mso_sptLeftRightArrowCalloutDefault,
1908     (SvxMSDffTextRectangles*)mso_sptLeftRightArrowCalloutTextRect, sizeof( mso_sptLeftRightArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1909     21600, 21600,
1910     0x80000000, 0x80000000,
1911     NULL, 0,
1912     (SvxMSDffHandle*)mso_sptLeftRightArrowCalloutHandle, sizeof( mso_sptLeftRightArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1913 };
1914 
1915 static const SvxMSDffVertPair mso_sptUpDownArrowCalloutVert[] =
1916 {
1917     { 0, 0 MSO_I }, { 0, 4 MSO_I }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 6 MSO_I },
1918     { 1 MSO_I, 6 MSO_I }, { 10800, 21600 }, { 5 MSO_I, 6 MSO_I }, { 7 MSO_I, 6 MSO_I },
1919     { 7 MSO_I, 4 MSO_I }, { 21600, 4 MSO_I }, { 21600, 0 MSO_I }, { 7 MSO_I, 0 MSO_I },
1920     { 7 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 10800, 0 }, { 1 MSO_I, 2 MSO_I },
1921     { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 0 MSO_I }
1922 };
1923 static const sal_uInt16 mso_sptUpDownArrowCalloutSegm[] =
1924 {
1925     0x4000, 0x0011, 0x6001, 0x8000
1926 };
1927 static const SvxMSDffCalculationData mso_sptUpDownArrowCalloutCalc[] =
1928 {
1929     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1930     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1931     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1932     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1933     { 0x8000, { 21600, 0, 0x0400 } },
1934     { 0x8000, { 21600, 0, 0x0401 } },
1935     { 0x8000, { 21600, 0, 0x0402 } },
1936     { 0x8000, { 21600, 0, 0x0403 } }
1937 };
1938 static const sal_Int32 mso_sptUpDownArrowCalloutDefault[] =
1939 {
1940     4, 5400, 5500, 2700, 8100
1941 };
1942 static const SvxMSDffTextRectangles mso_sptUpDownArrowCalloutTextRect[] =
1943 {
1944     { { 0, 0 MSO_I }, { 21600, 4 MSO_I } }
1945 };
1946 static const SvxMSDffHandle mso_sptUpDownArrowCalloutHandle[] =
1947 {
1948     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
1949         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0x102, 10800 },
1950     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
1951         0x103, 0x102, 10800, 10800, 0x101, 10800, 0, 0x100 },
1952     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
1953         0x101, 0, 10800, 10800, 0, 0x103, 0x80000000, 0x7fffffff }
1954 };
1955 static const mso_CustomShape msoUpDownArrowCallout =
1956 {
1957     (SvxMSDffVertPair*)mso_sptUpDownArrowCalloutVert, sizeof( mso_sptUpDownArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
1958     (sal_uInt16*)mso_sptUpDownArrowCalloutSegm, sizeof( mso_sptUpDownArrowCalloutSegm ) >> 1,
1959     (SvxMSDffCalculationData*)mso_sptUpDownArrowCalloutCalc, sizeof( mso_sptUpDownArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
1960     (sal_Int32*)mso_sptUpDownArrowCalloutDefault,
1961     (SvxMSDffTextRectangles*)mso_sptUpDownArrowCalloutTextRect, sizeof( mso_sptUpDownArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
1962     21600, 21600,
1963     0x80000000, 0x80000000,
1964     NULL, 0,
1965     (SvxMSDffHandle*)mso_sptUpDownArrowCalloutHandle, sizeof( mso_sptUpDownArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
1966 };
1967 
1968 static const SvxMSDffVertPair mso_sptQuadArrowCalloutVert[] =
1969 {
1970     { 0 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
1971     { 10800, 0 }, { 5 MSO_I, 2 MSO_I }, { 7 MSO_I, 2 MSO_I }, { 7 MSO_I, 0 MSO_I },
1972     { 4 MSO_I, 0 MSO_I }, { 4 MSO_I, 3 MSO_I }, { 6 MSO_I, 3 MSO_I }, { 6 MSO_I, 1 MSO_I },
1973     { 21600, 10800 }, { 6 MSO_I, 5 MSO_I }, { 6 MSO_I, 7 MSO_I }, { 4 MSO_I, 7 MSO_I },
1974     { 4 MSO_I, 4 MSO_I }, { 7 MSO_I, 4 MSO_I }, { 7 MSO_I, 6 MSO_I }, { 5 MSO_I, 6 MSO_I },
1975     { 10800, 21600 }, { 1 MSO_I, 6 MSO_I }, { 3 MSO_I, 6 MSO_I }, { 3 MSO_I, 4 MSO_I },
1976     { 0 MSO_I, 4 MSO_I }, { 0 MSO_I, 7 MSO_I }, { 2 MSO_I, 7 MSO_I }, { 2 MSO_I, 5 MSO_I },
1977     { 0, 10800 }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
1978 };
1979 static const sal_uInt16 mso_sptQuadArrowCalloutSegm[] =
1980 {
1981     0x4000, 0x001f, 0x6001, 0x8000
1982 };
1983 static const SvxMSDffCalculationData mso_sptQuadArrowCalloutCalc[] =
1984 {
1985     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
1986     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
1987     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
1988     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
1989     { 0x8000, { 21600, 0, 0x0400 } },
1990     { 0x8000, { 21600, 0, 0x0401 } },
1991     { 0x8000, { 21600, 0, 0x0402 } },
1992     { 0x8000, { 21600, 0, 0x0403 } }
1993 };
1994 static const sal_Int32 mso_sptQuadArrowCalloutDefault[] =
1995 {
1996     4, 5400, 8100, 2700, 9400
1997 };
1998 static const SvxMSDffTextRectangles mso_sptQuadArrowCalloutTextRect[] =
1999 {
2000     { { 0 MSO_I, 0 MSO_I }, { 4 MSO_I, 4 MSO_I } }
2001 };
2002 static const SvxMSDffHandle mso_sptQuadArrowCalloutHandle[] =
2003 {
2004     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
2005         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0x102, 0x101 },
2006     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
2007         0x101, 0, 10800, 10800, 0x100, 10800, 0x80000000, 0x7fffffff },
2008     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
2009         0x103, 0x102, 10800, 10800, 0x101, 10800, 0, 0x100 }
2010 };
2011 static const mso_CustomShape msoQuadArrowCallout =
2012 {
2013     (SvxMSDffVertPair*)mso_sptQuadArrowCalloutVert, sizeof( mso_sptQuadArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
2014     (sal_uInt16*)mso_sptQuadArrowCalloutSegm, sizeof( mso_sptQuadArrowCalloutSegm ) >> 1,
2015     (SvxMSDffCalculationData*)mso_sptQuadArrowCalloutCalc, sizeof( mso_sptQuadArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
2016     (sal_Int32*)mso_sptQuadArrowCalloutDefault,
2017     (SvxMSDffTextRectangles*)mso_sptQuadArrowCalloutTextRect, sizeof( mso_sptQuadArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
2018     21600, 21600,
2019     0x80000000, 0x80000000,
2020     NULL, 0,
2021     (SvxMSDffHandle*)mso_sptQuadArrowCalloutHandle, sizeof( mso_sptQuadArrowCalloutHandle ) / sizeof( SvxMSDffHandle )
2022 };
2023 
2024 static const SvxMSDffVertPair mso_sptCircularArrowVert[] =
2025 {
2026     { 0x03 MSO_I, 0x03 MSO_I },
2027     { 0x14 MSO_I, 0x14 MSO_I },
2028     { 0x13 MSO_I, 0x12 MSO_I },
2029     { 0x11 MSO_I, 0x10 MSO_I },
2030     { 0, 0 }, { 21600, 21600 },
2031     { 0x09 MSO_I, 0x08 MSO_I },
2032     { 0x0B MSO_I, 0x0A MSO_I },
2033     { 0x18 MSO_I, 0x17 MSO_I },
2034     { 0x2F MSO_I, 0x2E MSO_I },
2035     { 0x1D MSO_I, 0x1C MSO_I }
2036 };
2037 static const sal_uInt16 mso_sptCircularArrowSegm[] =
2038 {
2039     0xa404, 0xa504, 0x0003, 0x6001, 0x8000
2040 };
2041 static const SvxMSDffCalculationData mso_sptCircularArrowCalc[] =
2042 {
2043     { 0x2000, { 0x0147, 0x0000, 0x0000 } },
2044     { 0x2000, { 0x0148, 0x0000, 0x0000 } },
2045     { 0x2000, { 0x0149, 0x0000, 0x0000 } },
2046     { 0x4000, { 0x2A30, 0x0149, 0x0000 } },
2047     { 0x4009, { 0x2A30, 0x0147, 0x0000 } },
2048     { 0x400A, { 0x2A30, 0x0147, 0x0000 } },
2049     { 0x4009, { 0x2A30, 0x0148, 0x0000 } },
2050     { 0x400A, { 0x2A30, 0x0148, 0x0000 } },
2051     { 0x2000, { 0x0404, 0x2A30, 0x0000 } },
2052     { 0x2000, { 0x0405, 0x2A30, 0x0000 } },
2053     { 0x2000, { 0x0406, 0x2A30, 0x0000 } },
2054     { 0x2000, { 0x0407, 0x2A30, 0x0000 } },
2055     { 0x6009, { 0x0403, 0x0147, 0x0000 } },
2056     { 0x600A, { 0x0403, 0x0147, 0x0000 } },
2057     { 0x6009, { 0x0403, 0x0148, 0x0000 } },
2058     { 0x600A, { 0x0403, 0x0148, 0x0000 } },
2059     { 0x2000, { 0x040C, 0x2A30, 0x0000 } },
2060     { 0x2000, { 0x040D, 0x2A30, 0x0000 } },
2061     { 0x2000, { 0x040E, 0x2A30, 0x0000 } },
2062     { 0x2000, { 0x040F, 0x2A30, 0x0000 } },
2063     { 0x8000, { 0x5460, 0x0000, 0x0403 } },
2064     { 0x4009, { 0x34BC, 0x0148, 0x0000 } },
2065     { 0x400A, { 0x34BC, 0x0148, 0x0000 } },
2066     { 0x2000, { 0x0415, 0x2A30, 0x0000 } },
2067     { 0x2000, { 0x0416, 0x2A30, 0x0000 } },
2068     { 0x2000, { 0x0149, 0x0000, 0x0A8C } },
2069     { 0x6009, { 0x0419, 0x0148, 0x0000 } },
2070     { 0x600A, { 0x0419, 0x0148, 0x0000 } },
2071     { 0x2000, { 0x041A, 0x2A30, 0x0000 } },
2072     { 0x2000, { 0x041B, 0x2A30, 0x0000 } },
2073     { 0xA000, { 0x041D, 0x0000, 0x0418 } },
2074     { 0xA000, { 0x041D, 0x0000, 0x0418 } },
2075     { 0x6001, { 0x041E, 0x041F, 0x0001 } },
2076     { 0xA000, { 0x041C, 0x0000, 0x0417 } },
2077     { 0xA000, { 0x041C, 0x0000, 0x0417 } },
2078     { 0x6001, { 0x0421, 0x0422, 0x0001 } },
2079     { 0x6000, { 0x0420, 0x0423, 0x0000 } },
2080     { 0x200D, { 0x0424, 0x0000, 0x0000 } },
2081     { 0x200E, { 0x0148, 0x002D, 0x0000 } },
2082     { 0x6009, { 0x0425, 0x0426, 0x0000 } },
2083     { 0x200E, { 0x0148, 0x002D, 0x0000 } },
2084     { 0x600A, { 0x0425, 0x0428, 0x0000 } },
2085     { 0x000E, { 0x0000, 0x002D, 0x0000 } },
2086     { 0x6009, { 0x0427, 0x042A, 0x0000 } },
2087     { 0x000E, { 0x0000, 0x002D, 0x0000 } },
2088     { 0x6009, { 0x0429, 0x042C, 0x0000 } },
2089     { 0x6000, { 0x041C, 0x042B, 0x0000 } },
2090     { 0x6000, { 0x041D, 0x042D, 0x0000 } }
2091 };
2092 static const sal_Int32 mso_sptCircularArrowDefault[] =
2093 {
2094     3, 180, 0, 5500
2095 };
2096 static const SvxMSDffTextRectangles mso_sptCircularArrowTextRect[] =    // todo
2097 {
2098     { { 0, 0 }, { 21600, 21600 } }
2099 };
2100 static const SvxMSDffHandle mso_sptCircularArrowHandle[] =
2101 {
2102     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
2103         10800, 0x100, 10800, 10800, 10800, 10800, 0xff4c0000, 0x00b40000 },
2104     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
2105         0x102, 0x101, 10800, 10800, 0, 10800, 0xff4c0000, 0x00b40000 }
2106 };
2107 static const mso_CustomShape msoCircularArrow =
2108 {
2109     (SvxMSDffVertPair*)mso_sptCircularArrowVert, sizeof( mso_sptCircularArrowVert ) / sizeof( SvxMSDffVertPair ),
2110     (sal_uInt16*)mso_sptCircularArrowSegm, sizeof( mso_sptCircularArrowSegm ) >> 1,
2111     (SvxMSDffCalculationData*)mso_sptCircularArrowCalc, sizeof( mso_sptCircularArrowCalc ) / sizeof( SvxMSDffCalculationData ),
2112     (sal_Int32*)mso_sptCircularArrowDefault,
2113     (SvxMSDffTextRectangles*)mso_sptCircularArrowTextRect, sizeof( mso_sptCircularArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
2114     21600, 21600,
2115     0x80000000, 0x80000000,
2116     NULL, 0,
2117     (SvxMSDffHandle*)mso_sptCircularArrowHandle, sizeof( mso_sptCircularArrowHandle ) / sizeof( SvxMSDffHandle )        // handles
2118 };
2119 
2120 static const SvxMSDffVertPair mso_sptCubeVert[] =
2121 {
2122     { 0, 12 MSO_I }, { 0, 1 MSO_I }, { 2 MSO_I, 0 }, { 11 MSO_I, 0 }, { 11 MSO_I, 3 MSO_I }, { 4 MSO_I, 12 MSO_I },
2123     { 0, 1 MSO_I }, { 2 MSO_I, 0 }, { 11 MSO_I, 0 }, { 4 MSO_I, 1 MSO_I },
2124     { 4 MSO_I, 12 MSO_I  }, { 4 MSO_I, 1 MSO_I },   { 11 MSO_I, 0 }, { 11 MSO_I, 3 MSO_I }
2125 };
2126 static const sal_uInt16 mso_sptCubeSegm[] =
2127 {
2128     0x4000, 0x0005, 0x6001, 0x8000,
2129     0x4000, 0x0003, 0x6001, 0x8000,
2130     0x4000, 0x0003, 0x6001, 0x8000
2131 };
2132 static const SvxMSDffCalculationData mso_sptCubeCalc[] =
2133 {
2134     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2135     { 0x6000, { DFF_Prop_geoTop, 0x400, 0 } },
2136     { 0x6000, { DFF_Prop_geoLeft, 0x400, 0 } },
2137     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } },
2138     { 0xa000, { DFF_Prop_geoRight, 0, 0x400 } },
2139     { 0xa000, { DFF_Prop_geoRight, 0, 0x402 } },    // 5
2140     { 0x2001, { 0x405, 1, 2 } },                    // 6
2141     { 0x6000, { 0x402, 0x406, 0 } },                // 7
2142     { 0xa000, { DFF_Prop_geoBottom, 0, 0x401 } },   // 8
2143     { 0x2001, { 0x408, 1, 2 } },                    // 9
2144     { 0x6000, { 0x401, 0x409, 0 } },                // 10
2145     { 0x2000, { DFF_Prop_geoRight, 0, 0 } },        // 11
2146     { 0x2000, { DFF_Prop_geoBottom, 0, 0 } }        // 12
2147 };
2148 static const SvxMSDffTextRectangles mso_sptCubeTextRect[] =
2149 {
2150     { { 0, 1 MSO_I }, { 4 MSO_I, 12 MSO_I } }
2151 };
2152 static const SvxMSDffHandle mso_sptCubeHandle[] =
2153 {
2154     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
2155         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 21600 }
2156 };
2157 static const SvxMSDffVertPair mso_sptCubeGluePoints[] =
2158 {
2159     { 7 MSO_I, 0 }, { 6 MSO_I, 1 MSO_I }, { 0, 10 MSO_I }, { 6 MSO_I, 21600 }, { 4 MSO_I, 10 MSO_I }, { 21600, 9 MSO_I }
2160 };
2161 static const mso_CustomShape msoCube =
2162 {
2163     (SvxMSDffVertPair*)mso_sptCubeVert, sizeof( mso_sptCubeVert ) / sizeof( SvxMSDffVertPair ),
2164     (sal_uInt16*)mso_sptCubeSegm, sizeof( mso_sptCubeSegm ) >> 1,
2165     (SvxMSDffCalculationData*)mso_sptCubeCalc, sizeof( mso_sptCubeCalc ) / sizeof( SvxMSDffCalculationData ),
2166     (sal_Int32*)mso_sptDefault5400,
2167     (SvxMSDffTextRectangles*)mso_sptCubeTextRect, sizeof( mso_sptCubeTextRect ) / sizeof( SvxMSDffTextRectangles ),
2168     21600, 21600,
2169     10800, 10800,
2170     (SvxMSDffVertPair*)mso_sptCubeGluePoints, sizeof( mso_sptCubeGluePoints ) / sizeof( SvxMSDffVertPair ),
2171     (SvxMSDffHandle*)mso_sptCubeHandle, sizeof( mso_sptCubeHandle ) / sizeof( SvxMSDffHandle )
2172 };
2173 
2174 static const SvxMSDffVertPair mso_sptBevelVert[] =
2175 {
2176     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2177     { 0, 0 }, { 21600, 0 }, { 1 MSO_I, 0 MSO_I }, { 0 MSO_I, 0 MSO_I },
2178     { 21600, 0 }, { 21600, 21600 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 0 MSO_I },
2179     { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2180     { 0, 21600 }, { 0, 0 }, { 0 MSO_I, 0 MSO_I }, { 0 MSO_I, 2 MSO_I }
2181 };
2182 static const sal_uInt16 mso_sptBevelSegm[] =
2183 {
2184     0x4000, 0x0003, 0x6001, 0x8000,
2185     0x4000, 0x0003, 0x6001, 0x8000,
2186     0x4000, 0x0003, 0x6001, 0x8000,
2187     0x4000, 0x0003, 0x6001, 0x8000,
2188     0x4000, 0x0003, 0x6001, 0x8000
2189 };
2190 static const SvxMSDffCalculationData mso_sptBevelCalc[] =
2191 {
2192     { 0x2001, { DFF_Prop_adjustValue, 21599, 21600 } },
2193     { 0xa000, { DFF_Prop_geoRight, 0, 0x400 } },
2194     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } }
2195 };
2196 
2197 static const SvxMSDffTextRectangles mso_sptBevelTextRect[] =
2198 {
2199     { { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 2 MSO_I } }
2200 };
2201 static const SvxMSDffHandle mso_sptBevelHandle[] =
2202 {
2203     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
2204         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
2205 };
2206 static const mso_CustomShape msoBevel =
2207 {
2208     (SvxMSDffVertPair*)mso_sptBevelVert, sizeof( mso_sptBevelVert ) / sizeof( SvxMSDffVertPair ),
2209     (sal_uInt16*)mso_sptBevelSegm, sizeof( mso_sptBevelSegm ) >> 1,
2210     (SvxMSDffCalculationData*)mso_sptBevelCalc, sizeof( mso_sptBevelCalc ) / sizeof( SvxMSDffCalculationData ),
2211     (sal_Int32*)mso_sptDefault2700,
2212     (SvxMSDffTextRectangles*)mso_sptBevelTextRect, sizeof( mso_sptBevelTextRect ) / sizeof( SvxMSDffTextRectangles ),
2213     21600, 21600,
2214     10800, 10800,
2215     NULL, 0,
2216     (SvxMSDffHandle*)mso_sptBevelHandle, sizeof( mso_sptBevelHandle ) / sizeof( SvxMSDffHandle )
2217 };
2218 
2219 static const SvxMSDffVertPair mso_sptFoldedCornerVert[] =   // adjustment1 : x 10800 - 21600
2220 {
2221     { 0, 0 }, { 21600, 0 }, { 21600, 0 MSO_I }, { 0 MSO_I, 21600 },
2222     { 0, 21600 }, { 0 MSO_I, 21600 }, { 3 MSO_I, 0 MSO_I }, { 8 MSO_I, 9 MSO_I },
2223     { 10 MSO_I, 11 MSO_I }, { 21600, 0 MSO_I }
2224 };
2225 static const sal_uInt16 mso_sptFoldedCornerSegm[] =
2226 {
2227     0x4000, 0x0004, 0x6001, 0x8000,
2228     0x4000, 0x0001, 0x2001, 0x6001, 0x8000
2229 };
2230 static const SvxMSDffCalculationData mso_sptFoldedCornerCalc[] =
2231 {
2232     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2233     { 0x8000, { 21600, 0, 0x400 } },
2234     { 0x2001, { 0x0401, 8000, 10800 } },
2235     { 0x8000, { 21600, 0, 0x0402 } },
2236     { 0x2001, { 0x0401, 1, 2 } },
2237     { 0x2001, { 0x0401, 1, 4 } },
2238     { 0x2001, { 0x0401, 1, 7 } },
2239     { 0x2001, { 0x0401, 1, 16 } },
2240     { 0x6000, { 0x0403, 0x405, 0 } },
2241     { 0x6000, { 0x0400, 0x406, 0 } },
2242     { 0x8000, { 21600, 0, 0x404 } },
2243     { 0x6000, { 0x400, 0x407, 0 } }
2244 };
2245 static const sal_Int32 mso_sptFoldedCornerDefault[] =
2246 {
2247     1, 18900
2248 };
2249 static const SvxMSDffTextRectangles mso_sptFoldedCornerTextRect[] =
2250 {
2251     { { 0, 0 }, { 21600, 11 MSO_I } }
2252 };
2253 static const SvxMSDffHandle mso_sptFoldedCornerHandle[] =
2254 {
2255     {   MSDFF_HANDLE_FLAGS_RANGE,
2256         0x100, 1, 10800, 10800, 10800, 21600, 0x80000000, 0x7fffffff }
2257 };
2258 static const mso_CustomShape msoFoldedCorner =
2259 {
2260     (SvxMSDffVertPair*)mso_sptFoldedCornerVert, sizeof( mso_sptFoldedCornerVert ) / sizeof( SvxMSDffVertPair ),
2261     (sal_uInt16*)mso_sptFoldedCornerSegm, sizeof( mso_sptFoldedCornerSegm ) >> 1,
2262     (SvxMSDffCalculationData*)mso_sptFoldedCornerCalc, sizeof( mso_sptFoldedCornerCalc ) / sizeof( SvxMSDffCalculationData ),
2263     (sal_Int32*)mso_sptFoldedCornerDefault,
2264     (SvxMSDffTextRectangles*)mso_sptFoldedCornerTextRect, sizeof( mso_sptFoldedCornerTextRect ) / sizeof( SvxMSDffTextRectangles ),
2265     21600, 21600,
2266     0x80000000, 0x80000000,
2267     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
2268     (SvxMSDffHandle*)mso_sptFoldedCornerHandle, sizeof( mso_sptFoldedCornerHandle ) / sizeof( SvxMSDffHandle )
2269 };
2270 
2271 static const SvxMSDffVertPair mso_sptActionButtonBlankVert[] =
2272 {
2273     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2274     { 0, 0 }, { 21600, 0 }, { 1 MSO_I, 0 MSO_I }, { 0 MSO_I, 0 MSO_I },
2275     { 21600, 0 }, { 21600, 21600 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 0 MSO_I },
2276     { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2277     { 0, 21600 }, { 0, 0 }, { 0 MSO_I, 0 MSO_I }, { 0 MSO_I, 2 MSO_I }
2278 };
2279 static const sal_uInt16 mso_sptActionButtonBlankSegm[] =
2280 {
2281     0x4000, 0x0003, 0x6001, 0x8000,
2282     0x4000, 0x0003, 0x6001, 0x8000,
2283     0x4000, 0x0003, 0x6001, 0x8000,
2284     0x4000, 0x0003, 0x6001, 0x8000,
2285     0x4000, 0x0003, 0x6001, 0x8000
2286 };
2287 static const SvxMSDffCalculationData mso_sptActionButtonBlankCalc[] =
2288 {
2289     { 0x2001, { DFF_Prop_adjustValue, 21599, 21600 } },
2290     { 0xa000, { DFF_Prop_geoRight, 0, 0x400 } },
2291     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } }
2292 };
2293 static const SvxMSDffTextRectangles mso_sptActionButtonBlankTextRect[] =
2294 {
2295     { { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 2 MSO_I } }
2296 };
2297 static const SvxMSDffHandle mso_sptButtonHandle[] =
2298 {
2299     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
2300         0x100, 0, 10800, 10800, 0, 5400, 0x80000000, 0x7fffffff }
2301 };
2302 static const mso_CustomShape msoActionButtonBlank =
2303 {
2304     (SvxMSDffVertPair*)mso_sptActionButtonBlankVert, sizeof( mso_sptActionButtonBlankVert ) / sizeof( SvxMSDffVertPair ),
2305     (sal_uInt16*)mso_sptActionButtonBlankSegm, sizeof( mso_sptActionButtonBlankSegm ) >> 1,
2306     (SvxMSDffCalculationData*)mso_sptActionButtonBlankCalc, sizeof( mso_sptActionButtonBlankCalc ) / sizeof( SvxMSDffCalculationData ),
2307     (sal_Int32*)mso_sptDefault1400,
2308     (SvxMSDffTextRectangles*)mso_sptActionButtonBlankTextRect, sizeof( mso_sptActionButtonBlankTextRect ) / sizeof( SvxMSDffTextRectangles ),
2309     21600, 21600,
2310     10800, 10800,
2311     NULL, 0,
2312     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2313 };
2314 
2315 static const SvxMSDffTextRectangles mso_sptActionButtonTextRect[] =
2316 {
2317     { { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 4 MSO_I } }
2318 };
2319 static const SvxMSDffVertPair mso_sptActionButtonHomeVert[] =
2320 {
2321     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2322     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2323     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2324     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2325     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2326 
2327     { 7 MSO_I, 0xa MSO_I }, { 0xc MSO_I, 0xe MSO_I }, { 0xc MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I },
2328     { 0x12 MSO_I, 0x14 MSO_I }, { 0x16 MSO_I, 8 MSO_I }, { 0x18 MSO_I, 8 MSO_I }, { 0x18 MSO_I, 0x1a MSO_I },
2329     { 0x1c MSO_I, 0x1a MSO_I }, { 0x1c MSO_I, 8 MSO_I }, { 0x1e MSO_I, 8 MSO_I },
2330 
2331     { 0xc MSO_I, 0xe MSO_I }, { 0xc MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I },{ 0x12 MSO_I, 0x14 MSO_I },
2332 
2333     { 0x20 MSO_I, 0x24 MSO_I }, { 0x22 MSO_I, 0x24 MSO_I }, { 0x22 MSO_I, 0x1a MSO_I }, { 0x18 MSO_I, 0x1a MSO_I },
2334     { 0x18 MSO_I, 8 MSO_I }, { 0x1c MSO_I, 8 MSO_I }, { 0x1c MSO_I, 0x1a MSO_I }, { 0x20 MSO_I, 0x1a MSO_I }
2335 
2336 };
2337 static const sal_uInt16 mso_sptActionButtonHomeSegm[] =
2338 {
2339     0x4000, 0x0003, 0x6001, 0x8000,
2340     0x4000, 0x0003, 0x6001, 0x8000,
2341     0x4000, 0x0003, 0x6001, 0x8000,
2342     0x4000, 0x0003, 0x6001, 0x8000,
2343     0x4000, 0x0003, 0x6001, 0x8000,
2344     0x4000, 0x000a, 0x6001, 0x8000,
2345     0x4000, 0x0003, 0x6001, 0x8000,
2346     0x4000, 0x0007, 0x6001, 0x8000
2347 };
2348 static const SvxMSDffCalculationData mso_sptActionButtonHomeCalc[] =    // adj value 0 - 5400
2349 {
2350     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2351     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2352     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2353     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2354     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2355     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2356     { 0x2001, { 0x0405, 1, 10800 } },                           // scaling   6
2357     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2358     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2359 
2360     { 0x4001, { -8000, 0x0406, 1 } },   // 9
2361     { 0x6000, { 0x0409, 0x0408, 0 } },  // a
2362     { 0x4001, { 2960, 0x0406, 1 } },    // b
2363     { 0x6000, { 0x040b, 0x0407, 0 } },  // c
2364     { 0x4001, { -5000, 0x0406, 1 } },   // d
2365     { 0x6000, { 0x040d, 0x0408, 0 } },  // e
2366     { 0x4001, { -7000, 0x0406, 1 } },   // f
2367     { 0x6000, { 0x040f, 0x0408, 0 } },  // 10
2368     { 0x4001, { 5000, 0x0406, 1 } },    // 11
2369     { 0x6000, { 0x0411, 0x0407, 0 } },  // 12
2370     { 0x4001, { -2960, 0x0406, 1 } },   // 13
2371     { 0x6000, { 0x0413, 0x0408, 0 } },  // 14
2372     { 0x4001, { 8000, 0x0406, 1 } },    // 15
2373     { 0x6000, { 0x0415,0x0407, 0 } },   // 16
2374     { 0x4001, { 6100, 0x0406, 1 } },    // 17
2375     { 0x6000, { 0x0417,0x0407, 0 } },   // 18
2376     { 0x4001, { 8260, 0x0406, 1 } },    // 19
2377     { 0x6000, { 0x0419, 0x0408, 0 } },  // 1a
2378     { 0x4001, { -6100, 0x0406, 1 } },   // 1b
2379     { 0x6000, { 0x041b, 0x0407, 0 } },  // 1c
2380     { 0x4001, { -8000, 0x0406, 1 } },   // 1d
2381     { 0x6000, { 0x041d, 0x0407, 0 } },  // 1e
2382     { 0x4001, { -1060, 0x0406, 1 } },   // 1f
2383     { 0x6000, { 0x041f, 0x0407, 0 } },  // 20
2384     { 0x4001, { 1060, 0x0406, 1 } },    // 21
2385     { 0x6000, { 0x0421, 0x0407, 0 } },  // 22
2386     { 0x4001, { 4020, 0x0406, 1 } },    // 23
2387     { 0x6000, { 0x0423, 0x0408, 0 } }   // 24
2388 
2389 };
2390 static const mso_CustomShape msoActionButtonHome =
2391 {
2392     (SvxMSDffVertPair*)mso_sptActionButtonHomeVert, sizeof( mso_sptActionButtonHomeVert ) / sizeof( SvxMSDffVertPair ),
2393     (sal_uInt16*)mso_sptActionButtonHomeSegm, sizeof( mso_sptActionButtonHomeSegm ) >> 1,
2394     (SvxMSDffCalculationData*)mso_sptActionButtonHomeCalc, sizeof( mso_sptActionButtonHomeCalc ) / sizeof( SvxMSDffCalculationData ),
2395     (sal_Int32*)mso_sptDefault1400,
2396     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2397     21600, 21600,
2398     10800, 10800,
2399     NULL, 0,
2400     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2401 };
2402 
2403 static const SvxMSDffVertPair mso_sptActionButtonHelpVert[] =
2404 {
2405     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2406     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2407     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2408     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2409     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I,4 MSO_I },
2410     { 7 MSO_I, 0xc MSO_I }, { 0xa MSO_I, 0x3e MSO_I }, { 7 MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 0x3e MSO_I }, { 7 MSO_I, 0xc MSO_I },
2411     { 0x12 MSO_I, 0x14 MSO_I }, { 0x12 MSO_I, 0x16 MSO_I },                             // pp
2412     { 0x12 MSO_I, 0x18 MSO_I }, { 0x1a MSO_I, 8 MSO_I }, { 0x1c MSO_I, 8 MSO_I },       // ccp
2413     { 0x1e MSO_I, 8 MSO_I }, { 0x20 MSO_I, 0x22 MSO_I }, { 0x20 MSO_I, 0x24 MSO_I },    // ccp
2414     { 0x20 MSO_I, 0x26 MSO_I }, { 0x28 MSO_I, 0x2a MSO_I }, { 7 MSO_I, 0x2a MSO_I },    // ccp
2415     { 0x2c MSO_I, 0x2a MSO_I }, { 0x2e MSO_I, 0x26 MSO_I }, { 0x2e MSO_I, 0x24 MSO_I }, // ccp
2416     { 0x30 MSO_I, 0x24 MSO_I }, { 0x30 MSO_I, 0x32 MSO_I }, { 0x34 MSO_I, 0x36 MSO_I }, // ccp
2417     { 7 MSO_I, 0x36 MSO_I },                                                            // p
2418     { 0x12 MSO_I, 0x36 MSO_I }, { 0x1c MSO_I, 0x32 MSO_I }, { 0x1c MSO_I, 0x24 MSO_I }, // ccp
2419     { 0x1c MSO_I, 0x38 MSO_I }, { 0x3a MSO_I, 0x3c MSO_I }, { 0x12 MSO_I, 0x3c MSO_I }, // ccp
2420     { 7 MSO_I, 0x3c MSO_I }, { 0x34 MSO_I, 8 MSO_I }, { 0x34 MSO_I, 0x16 MSO_I },       // ccp
2421     { 0x34 MSO_I, 0x14 MSO_I }
2422 };
2423 static const sal_uInt16 mso_sptActionButtonHelpSegm[] =
2424 {
2425     0x4000, 0x0003, 0x6001, 0x8000,
2426     0x4000, 0x0003, 0x6001, 0x8000,
2427     0x4000, 0x0003, 0x6001, 0x8000,
2428     0x4000, 0x0003, 0x6001, 0x8000,
2429     0x4000, 0x0003, 0x6001, 0x8000,
2430     0x4000, 0xa704, 0x6000, 0x8000,
2431     0x4000, 0x0001, 0x2004, 0x0001, 0x2004, 0x0001, 0x6001, 0x8000
2432 };
2433 static const SvxMSDffCalculationData mso_sptActionButtonHelpCalc[] =    // adj value 0 - 5400
2434 {
2435     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2436     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2437     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2438     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2439     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2440     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2441     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2442     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2443     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2444 
2445     { 0x4001, { -1690, 0x0406, 1 } },   // 9
2446     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2447     { 0x4001, { 4600, 0x0406, 1 } },    // b
2448     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2449     { 0x4001, { 1690, 0x0406, 1 } },    // d
2450     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2451     { 0x4001, { 7980, 0x0406, 1 } },    // f
2452     { 0x6000, { 0x040f, 0x0408, 0 } },  // 10
2453     { 0x4001, { 1270, 0x0406, 1 } },    // 11
2454     { 0x6000, { 0x0411, 0x0407, 0 } },  // 12
2455     { 0x4001, { 4000, 0x0406, 1 } },    // 13
2456     { 0x6000, { 0x0413, 0x0408, 0 } },  // 14
2457     { 0x4001, { 1750, 0x0406, 1 } },    // 15
2458     { 0x6000, { 0x0415, 0x0408, 0 } },  // 16
2459     { 0x4001, { 800, 0x0406, 1 } },     // 17
2460     { 0x6000, { 0x0417, 0x0408, 0 } },  // 18
2461     { 0x4001, { 1650, 0x0406, 1 } },    // 19
2462     { 0x6000, { 0x0419, 0x0407, 0 } },  // 1a
2463     { 0x4001, { 2340, 0x0406, 1 } },    // 1b
2464     { 0x6000, { 0x041b, 0x0407, 0 } },  // 1c
2465     { 0x4001, { 3640, 0x0406, 1 } },    // 1d
2466     { 0x6000, { 0x041d, 0x0407, 0 } },  // 1e
2467     { 0x4001, { 4670, 0x0406, 1 } },    // 1f
2468     { 0x6000, { 0x041f, 0x0407, 0 } },  // 20
2469     { 0x4001, { -1570, 0x0406, 1 } },   // 21
2470     { 0x6000, { 0x0421, 0x0408, 0 } },  // 22
2471     { 0x4001, { -3390, 0x0406, 1 } },   // 23
2472     { 0x6000, { 0x0423, 0x0408, 0 } },  // 24
2473     { 0x4001, { -6050, 0x0406, 1 } },   // 25
2474     { 0x6000, { 0x0425, 0x0408, 0 } },  // 26
2475     { 0x4001, { 2540, 0x0406, 1 } },    // 27
2476     { 0x6000, { 0x0427, 0x0407, 0 } },  // 28
2477     { 0x4001, { -8050, 0x0406, 1 } },   // 29
2478     { 0x6000, { 0x0429, 0x0408, 0 } },  // 2a
2479     { 0x4001, { -2540, 0x0406, 1 } },   // 2b
2480     { 0x6000, { 0x042b, 0x0407, 0 } },  // 2c
2481     { 0x4001, { -4460, 0x0406, 1 } },   // 2d
2482     { 0x6000, { 0x042d, 0x0407, 0 } },  // 2e
2483     { 0x4001, { -2330, 0x0406, 1 } },   // 2f
2484     { 0x6000, { 0x042f, 0x0407, 0 } },  // 30
2485     { 0x4001, { -4700, 0x0406, 1 } },   // 31
2486     { 0x6000, { 0x0431, 0x0408, 0 } },  // 32
2487     { 0x4001, { -1270, 0x0406, 1 } },   // 33
2488     { 0x6000, { 0x0433, 0x0407, 0 } },  // 34
2489     { 0x4001, { -5720, 0x0406, 1 } },   // 35
2490     { 0x6000, { 0x0435, 0x0408, 0 } },  // 36
2491     { 0x4001, { -2540, 0x0406, 1 } },   // 37
2492     { 0x6000, { 0x0437, 0x0408, 0 } },  // 38
2493     { 0x4001, { 1800, 0x0406, 1 } },    // 39
2494     { 0x6000, { 0x0439, 0x0407, 0 } },  // 3a
2495     { 0x4001, { -1700, 0x0406, 1 } },   // 3b
2496     { 0x6000, { 0x043b, 0x0408, 0 } },  // 3c
2497     { 0x4001, { 6290, 0x0406, 1 } },    // 3d
2498     { 0x6000, { 0x043d, 0x0408, 0 } }   // 3e
2499 };
2500 static const mso_CustomShape msoActionButtonHelp =
2501 {
2502     (SvxMSDffVertPair*)mso_sptActionButtonHelpVert, sizeof( mso_sptActionButtonHelpVert ) / sizeof( SvxMSDffVertPair ),
2503     (sal_uInt16*)mso_sptActionButtonHelpSegm, sizeof( mso_sptActionButtonHelpSegm ) >> 1,
2504     (SvxMSDffCalculationData*)mso_sptActionButtonHelpCalc, sizeof( mso_sptActionButtonHelpCalc ) / sizeof( SvxMSDffCalculationData ),
2505     (sal_Int32*)mso_sptDefault1400,
2506     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2507     21600, 21600,
2508     10800, 10800,
2509     NULL, 0,
2510     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2511 };
2512 
2513 static const SvxMSDffVertPair mso_sptActionButtonInformationVert[] =
2514 {
2515     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2516     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2517     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2518     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2519     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2520     { 0x7 MSO_I, 0xc MSO_I }, { 0xa MSO_I, 0x8 MSO_I }, { 0x7 MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 8 MSO_I }, { 0x7 MSO_I, 0xc MSO_I },
2521     { 0x7 MSO_I, 0x14 MSO_I }, { 0x12 MSO_I, 0x2a MSO_I }, { 0x7 MSO_I, 0x18 MSO_I }, { 0x16 MSO_I, 0x2a MSO_I }, { 0x7 MSO_I, 0x14 MSO_I },
2522     { 0x1a MSO_I, 0x1c MSO_I }, { 0x1e MSO_I, 0x1c MSO_I }, { 0x1e MSO_I, 0x20 MSO_I }, { 0x22 MSO_I, 0x20 MSO_I },
2523     { 0x22 MSO_I, 0x24 MSO_I }, { 0x1a MSO_I, 0x24 MSO_I }, { 0x1a MSO_I, 0x20 MSO_I }, { 0x26 MSO_I, 0x20 MSO_I },
2524     { 0x26 MSO_I, 0x28 MSO_I }, { 0x1a MSO_I, 0x28 MSO_I }
2525 };
2526 static const sal_uInt16 mso_sptActionButtonInformationSegm[] =
2527 {
2528     0x4000, 0x0003, 0x6001, 0x8000,
2529     0x4000, 0x0003, 0x6001, 0x8000,
2530     0x4000, 0x0003, 0x6001, 0x8000,
2531     0x4000, 0x0003, 0x6001, 0x8000,
2532     0x4000, 0x0003, 0x6001, 0x8000,
2533     0x4000, 0xa704, 0x6000, 0x8000,
2534     0x4000, 0xa704, 0x6000, 0x8000,
2535     0x4000, 0x0009, 0x6001, 0x8000
2536 };
2537 static const SvxMSDffCalculationData mso_sptActionButtonInformationCalc[] = // adj value 0 - 5400
2538 {
2539     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2540     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2541     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2542     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2543     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2544     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2545     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2546     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2547     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2548 
2549     { 0x4001, { -8050, 0x0406, 1 } },   // 9
2550     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2551     { 0x4001, { -8050, 0x0406, 1 } },   // b
2552     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2553     { 0x4001, { 8050, 0x0406, 1 } },    // d
2554     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2555     { 0x4001, { 8050, 0x0406, 1 } },    // f
2556     { 0x6000, { 0x040f, 0x0408, 0 } },  // 10
2557 
2558     { 0x4001, { -2060, 0x0406, 1 } },   // 11
2559     { 0x6000, { 0x0411, 0x0407, 0 } },  // 12
2560     { 0x4001, { -7620, 0x0406, 1 } },   // 13
2561     { 0x6000, { 0x0413, 0x0408, 0 } },  // 14
2562     { 0x4001, { 2060, 0x0406, 1 } },    // 15
2563     { 0x6000, { 0x0415, 0x0407, 0 } },  // 16
2564     { 0x4001, { -3500, 0x0406, 1 } },   // 17
2565     { 0x6000, { 0x0417, 0x0408, 0 } },  // 18
2566 
2567     { 0x4001, { -2960, 0x0406, 1 } },   // 19
2568     { 0x6000, { 0x0419, 0x0407, 0 } },  // 1a
2569     { 0x4001, { -2960, 0x0406, 1 } },   // 1b
2570     { 0x6000, { 0x041b, 0x0408, 0 } },  // 1c
2571     { 0x4001, { 1480, 0x0406, 1 } },    // 1d
2572     { 0x6000, { 0x041d, 0x0407, 0 } },  // 1e
2573     { 0x4001, { 5080, 0x0406, 1 } },    // 1f
2574     { 0x6000, { 0x041f, 0x0408, 0 } },  // 20
2575     { 0x4001, { 2960, 0x0406, 1 } },    // 21
2576     { 0x6000, { 0x0421, 0x0407, 0 } },  // 22
2577     { 0x4001, { 6140, 0x0406, 1 } },    // 23
2578     { 0x6000, { 0x0423, 0x0408, 0 } },  // 24
2579     { 0x4001, { -1480, 0x0406, 1 } },   // 25
2580     { 0x6000, { 0x0425, 0x0407, 0 } },  // 26
2581     { 0x4001, { -1920, 0x0406, 1 } },   // 27
2582     { 0x6000, { 0x0427, 0x0408, 0 } },  // 28
2583 
2584     { 0x4001, { -5560, 0x0406, 1 } },   // 29
2585     { 0x6000, { 0x0429, 0x0408, 0 } },  // 2a
2586 
2587 };
2588 static const mso_CustomShape msoActionButtonInformation =
2589 {
2590     (SvxMSDffVertPair*)mso_sptActionButtonInformationVert, sizeof( mso_sptActionButtonInformationVert ) / sizeof( SvxMSDffVertPair ),
2591     (sal_uInt16*)mso_sptActionButtonInformationSegm, sizeof( mso_sptActionButtonInformationSegm ) >> 1,
2592     (SvxMSDffCalculationData*)mso_sptActionButtonInformationCalc, sizeof( mso_sptActionButtonInformationCalc ) / sizeof( SvxMSDffCalculationData ),
2593     (sal_Int32*)mso_sptDefault1400,
2594     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2595     21600, 21600,
2596     10800, 10800,
2597     NULL, 0,
2598     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2599 };
2600 
2601 static const SvxMSDffVertPair mso_sptActionButtonBackPreviousVert[] =
2602 {
2603     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2604     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2605     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2606     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I,4 MSO_I },
2607     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2608 
2609     { 0xa MSO_I, 8 MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I }
2610 };
2611 static const sal_uInt16 mso_sptActionButtonForwardBackSegm[] =
2612 {
2613     0x4000, 0x0003, 0x6001, 0x8000,
2614     0x4000, 0x0003, 0x6001, 0x8000,
2615     0x4000, 0x0003, 0x6001, 0x8000,
2616     0x4000, 0x0003, 0x6001, 0x8000,
2617     0x4000, 0x0003, 0x6001, 0x8000,
2618     0x4000, 0x0002, 0x6001, 0x8000
2619 };
2620 static const SvxMSDffCalculationData mso_sptActionButtonForwardBackCalc[] = // adj value 0 - 5400
2621 {
2622     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2623     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2624     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2625     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2626     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2627     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2628     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2629     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2630     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2631 
2632     { 0x4001, { -8050, 0x0406, 1 } },   // 9
2633     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2634     { 0x4001, { -8050, 0x0406, 1 } },   // b
2635     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2636     { 0x4001, { 8050, 0x0406, 1 } },    // d
2637     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2638     { 0x4001, { 8050, 0x0406, 1 } },    // f
2639     { 0x6000, { 0x040f, 0x0408, 0 } }   // 10
2640 };
2641 static const mso_CustomShape msoActionButtonBackPrevious =
2642 {
2643     (SvxMSDffVertPair*)mso_sptActionButtonBackPreviousVert, sizeof( mso_sptActionButtonBackPreviousVert ) / sizeof( SvxMSDffVertPair ),
2644     (sal_uInt16*)mso_sptActionButtonForwardBackSegm, sizeof( mso_sptActionButtonForwardBackSegm ) >> 1,
2645     (SvxMSDffCalculationData*)mso_sptActionButtonForwardBackCalc, sizeof( mso_sptActionButtonForwardBackCalc ) / sizeof( SvxMSDffCalculationData ),
2646     (sal_Int32*)mso_sptDefault1400,
2647     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2648     21600, 21600,
2649     10800, 10800,
2650     NULL, 0,
2651     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2652 };
2653 
2654 static const SvxMSDffVertPair mso_sptActionButtonForwardNextVert[] =
2655 {
2656     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2657     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2658     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2659     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2660     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2661 
2662     { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 8 MSO_I }, { 0xa MSO_I, 0x10 MSO_I }
2663 };
2664 static const mso_CustomShape msoActionButtonForwardNext =
2665 {
2666     (SvxMSDffVertPair*)mso_sptActionButtonForwardNextVert, sizeof( mso_sptActionButtonForwardNextVert ) / sizeof( SvxMSDffVertPair ),
2667     (sal_uInt16*)mso_sptActionButtonForwardBackSegm, sizeof( mso_sptActionButtonForwardBackSegm ) >> 1,
2668     (SvxMSDffCalculationData*)mso_sptActionButtonForwardBackCalc, sizeof( mso_sptActionButtonForwardBackCalc ) / sizeof( SvxMSDffCalculationData ),
2669     (sal_Int32*)mso_sptDefault1400,
2670     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2671     21600, 21600,
2672     10800, 10800,
2673     NULL, 0,
2674     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2675 };
2676 
2677 static const SvxMSDffVertPair mso_sptActionButtonBeginningVert[] =
2678 {
2679     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2680     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2681     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2682     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2683     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2684 
2685     { 0xa MSO_I, 8 MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0xc MSO_I },
2686     { 0x14 MSO_I, 0xc MSO_I }, { 0x14 MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I }
2687 };
2688 static const sal_uInt16 mso_sptActionButtonBeginningEndSegm[] =
2689 {
2690     0x4000, 0x0003, 0x6001, 0x8000,
2691     0x4000, 0x0003, 0x6001, 0x8000,
2692     0x4000, 0x0003, 0x6001, 0x8000,
2693     0x4000, 0x0003, 0x6001, 0x8000,
2694     0x4000, 0x0003, 0x6001, 0x8000,
2695 
2696     0x4000, 0x0002, 0x6001, 0x8000,
2697     0x4000, 0x0003, 0x6001, 0x8000
2698 };
2699 static const SvxMSDffCalculationData mso_sptActionButtonBeginningEndCalc[] =    // adj value 0 - 5400
2700 {
2701     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2702     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2703     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2704     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2705     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2706     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2707     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2708     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2709     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2710 
2711     { 0x4001, { -4020, 0x0406, 1 } },   // 9
2712     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2713     { 0x4001, { -8050, 0x0406, 1 } },   // b
2714     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2715     { 0x4001, { 8050, 0x0406, 1 } },    // d
2716     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2717     { 0x4001, { 8050, 0x0406, 1 } },    // f
2718     { 0x6000, { 0x040f, 0x0408, 0 } },  // 10
2719 
2720     { 0x4001, { -8050, 0x0406, 1 } },   // 11
2721     { 0x6000, { 0x0411, 0x0407, 0 } },  // 12
2722     { 0x4001, { -6140, 0x0406, 1 } },   // 13
2723     { 0x6000, { 0x0413, 0x0407, 0 } },  // 14
2724 
2725 
2726     { 0x4001, { 4020, 0x0406, 1 } },    // 15
2727     { 0x6000, { 0x0415, 0x0407, 0 } },  // 16
2728     { 0x4001, { 6140, 0x0406, 1 } },    // 17
2729     { 0x6000, { 0x0417, 0x0407, 0 } }   // 18
2730 };
2731 static const mso_CustomShape msoActionButtonBeginning =
2732 {
2733     (SvxMSDffVertPair*)mso_sptActionButtonBeginningVert, sizeof( mso_sptActionButtonBeginningVert ) / sizeof( SvxMSDffVertPair ),
2734     (sal_uInt16*)mso_sptActionButtonBeginningEndSegm, sizeof( mso_sptActionButtonBeginningEndSegm ) >> 1,
2735     (SvxMSDffCalculationData*)mso_sptActionButtonBeginningEndCalc, sizeof( mso_sptActionButtonBeginningEndCalc ) / sizeof( SvxMSDffCalculationData ),
2736     (sal_Int32*)mso_sptDefault1400,
2737     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2738     21600, 21600,
2739     10800, 10800,
2740     NULL, 0,
2741     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2742 };
2743 
2744 static const SvxMSDffVertPair mso_sptActionButtonEndVert[] =
2745 {
2746     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2747     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2748     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2749     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2750     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2751 
2752     { 0x16 MSO_I, 8 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0xc MSO_I },
2753 
2754     { 0x18 MSO_I, 0xc MSO_I }, { 0x18 MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 0xc MSO_I }
2755 };
2756 static const mso_CustomShape msoActionButtonEnd =
2757 {
2758     (SvxMSDffVertPair*)mso_sptActionButtonEndVert, sizeof( mso_sptActionButtonEndVert ) / sizeof( SvxMSDffVertPair ),
2759     (sal_uInt16*)mso_sptActionButtonBeginningEndSegm, sizeof( mso_sptActionButtonBeginningEndSegm ) >> 1,
2760     (SvxMSDffCalculationData*)mso_sptActionButtonBeginningEndCalc, sizeof( mso_sptActionButtonBeginningEndCalc ) / sizeof( SvxMSDffCalculationData ),
2761     (sal_Int32*)mso_sptDefault1400,
2762     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2763     21600, 21600,
2764     10800, 10800,
2765     NULL, 0,
2766     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2767 };
2768 
2769 static const SvxMSDffVertPair mso_sptActionButtonReturnVert[] =
2770 {
2771     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2772     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2773     { 21600, 0 }, { 21600,  21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2774     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2775     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2776 
2777     { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I },                          // ppp
2778     { 0xe MSO_I, 0x12 MSO_I }, { 0x14 MSO_I, 0x16 MSO_I }, { 0x18 MSO_I, 0x16 MSO_I },                      // ccp
2779     { 7 MSO_I, 0x16 MSO_I },                                                                                // p
2780     { 0x1a MSO_I, 0x16 MSO_I }, { 0x1c MSO_I, 0x12 MSO_I }, { 0x1c MSO_I, 0x10 MSO_I },                     // ccp
2781     { 0x1c MSO_I, 0xc MSO_I }, { 7 MSO_I, 0xc MSO_I }, { 0x1e MSO_I, 0x20 MSO_I }, { 0x22 MSO_I, 0xc MSO_I },// pppp
2782     { 0x24 MSO_I, 0xc MSO_I }, { 0x24 MSO_I, 0x10 MSO_I },                                                  // pp
2783     { 0x24 MSO_I, 0x26 MSO_I }, { 0x28 MSO_I, 0x2a MSO_I }, { 7 MSO_I, 0x2a MSO_I },                        // ccp
2784     { 0x18 MSO_I, 0x2a MSO_I },                                                                             // p
2785     { 0x2c MSO_I, 0x2a MSO_I }, { 0xa MSO_I, 0x26 MSO_I }, { 0xa MSO_I, 0x10 MSO_I }                        // ccp
2786 };
2787 static const sal_uInt16 mso_sptActionButtonReturnSegm[] =
2788 {
2789     0x4000, 0x0003, 0x6001, 0x8000,
2790     0x4000, 0x0003, 0x6001, 0x8000,
2791     0x4000, 0x0003, 0x6001, 0x8000,
2792     0x4000, 0x0003, 0x6001, 0x8000,
2793     0x4000, 0x0003, 0x6001, 0x8000,
2794     0x4000, 0x0002, 0x2001, 0x0001, 0x2001, 0x0006,0x2001, 0x0001, 0x2001, 0x6001, 0x8000
2795 };
2796 static const SvxMSDffCalculationData mso_sptActionButtonReturnCalc[] =  // adj value 0 - 5400
2797 {
2798     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2799     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2800     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2801     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2802     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2803     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2804     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2805     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2806     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2807 
2808     { 0x4001, { -8050, 0x0406, 1 } },   // 9
2809     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2810     { 0x4001, { -3800, 0x0406, 1 } },   // b
2811     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2812     { 0x4001, { -4020, 0x0406, 1 } },   // d
2813     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2814     { 0x4001, { 2330, 0x0406, 1 } },    // f
2815     { 0x6000, { 0x040f, 0x0408, 0 } },  // 10
2816     { 0x4001, { 3390, 0x0406, 1 } },    // 11
2817     { 0x6000, { 0x0411, 0x0408, 0 } },  // 12
2818     { 0x4001, { -3100, 0x0406, 1 } },   // 13
2819     { 0x6000, { 0x0413, 0x0407, 0 } },  // 14
2820     { 0x4001, { 4230, 0x0406, 1 } },    // 15
2821     { 0x6000, { 0x0415, 0x0408, 0 } },  // 16
2822     { 0x4001, { -1910, 0x0406, 1 } },   // 17
2823     { 0x6000, { 0x0417, 0x0407, 0 } },  // 18
2824     { 0x4001, { 1190, 0x0406, 1 } },    // 19
2825     { 0x6000, { 0x0419, 0x0407, 0 } },  // 1a
2826     { 0x4001, { 2110, 0x0406, 1 } },    // 1b
2827     { 0x6000, { 0x041b, 0x0407, 0 } },  // 1c
2828     { 0x4001, { 4030, 0x0406, 1 } },    // 1d
2829     { 0x6000, { 0x041d, 0x0407, 0 } },  // 1e
2830     { 0x4001, { -7830, 0x0406, 1 } },   // 1f
2831     { 0x6000, { 0x041f, 0x0408, 0 } },  // 20
2832     { 0x4001, { 8250, 0x0406, 1 } },    // 21
2833     { 0x6000, { 0x0421, 0x0407, 0 } },  // 22
2834     { 0x4001, { 6140, 0x0406, 1 } },    // 23
2835     { 0x6000, { 0x0423, 0x0407, 0 } },  // 24
2836     { 0x4001, { 5510, 0x0406, 1 } },    // 25
2837     { 0x6000, { 0x0425, 0x0408, 0 } },  // 26
2838     { 0x4001, { 3180, 0x0406, 1 } },    // 27
2839     { 0x6000, { 0x0427, 0x0407, 0 } },  // 28
2840     { 0x4001, { 8450, 0x0406, 1 } },    // 29
2841     { 0x6000, { 0x0429, 0x0408, 0 } },  // 2a
2842     { 0x4001, { -5090, 0x0406, 1 } },   // 2b
2843     { 0x6000, { 0x042b, 0x0407, 0 } }   // 2c
2844 };
2845 static const mso_CustomShape msoActionButtonReturn =
2846 {
2847     (SvxMSDffVertPair*)mso_sptActionButtonReturnVert, sizeof( mso_sptActionButtonReturnVert ) / sizeof( SvxMSDffVertPair ),
2848     (sal_uInt16*)mso_sptActionButtonReturnSegm, sizeof( mso_sptActionButtonReturnSegm ) >> 1,
2849     (SvxMSDffCalculationData*)mso_sptActionButtonReturnCalc, sizeof( mso_sptActionButtonReturnCalc ) / sizeof( SvxMSDffCalculationData ),
2850     (sal_Int32*)mso_sptDefault1400,
2851     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2852     21600, 21600,
2853     10800, 10800,
2854     NULL, 0,
2855     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2856 };
2857 
2858 static const SvxMSDffVertPair mso_sptActionButtonDocumentVert[] =
2859 {
2860     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2861     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2862     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2863     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2864     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2865 
2866     { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x10 MSO_I, 0x14 MSO_I },
2867     { 0xa MSO_I, 0x14 MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0xe MSO_I, 0x12 MSO_I }
2868 };
2869 static const sal_uInt16 mso_sptActionButtonDocumentSegm[] =
2870 {
2871     0x4000, 0x0003, 0x6001, 0x8000,
2872     0x4000, 0x0003, 0x6001, 0x8000,
2873     0x4000, 0x0003, 0x6001, 0x8000,
2874     0x4000, 0x0003, 0x6001, 0x8000,
2875     0x4000, 0x0003, 0x6001, 0x8000,
2876 
2877     0x4000, 0x0004, 0x6001, 0x8000,
2878     0x4000, 0x0002, 0x6001, 0x8000
2879 };
2880 static const SvxMSDffCalculationData mso_sptActionButtonDocumentCalc[] =    // adj value 0 - 5400
2881 {
2882     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2883     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2884     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2885     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2886     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2887     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2888     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2889     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2890     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2891 
2892     { 0x4001, { -6350, 0x0406, 1 } },   // 9
2893     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2894     { 0x4001, { -7830, 0x0406, 1 } },   // b
2895     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2896     { 0x4001, { 1690, 0x0406, 1 } },    // d
2897     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2898     { 0x4001, { 6350, 0x0406, 1 } },    // f
2899     { 0x6000, { 0x040f, 0x0407, 0 } },  // 10
2900     { 0x4001, { -3810, 0x0406, 1 } },   // 11
2901     { 0x6000, { 0x0411, 0x0408, 0 } },  // 12
2902     { 0x4001, { 7830, 0x0406, 1 } },    // 13
2903     { 0x6000, { 0x0413, 0x0408, 0 } }   // 14
2904 };
2905 static const mso_CustomShape msoActionButtonDocument =
2906 {
2907     (SvxMSDffVertPair*)mso_sptActionButtonDocumentVert, sizeof( mso_sptActionButtonDocumentVert ) / sizeof( SvxMSDffVertPair ),
2908     (sal_uInt16*)mso_sptActionButtonDocumentSegm, sizeof( mso_sptActionButtonDocumentSegm ) >> 1,
2909     (SvxMSDffCalculationData*)mso_sptActionButtonDocumentCalc, sizeof( mso_sptActionButtonDocumentCalc ) / sizeof( SvxMSDffCalculationData ),
2910     (sal_Int32*)mso_sptDefault1400,
2911     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2912     21600, 21600,
2913     10800, 10800,
2914     NULL, 0,
2915     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2916 };
2917 
2918 static const SvxMSDffVertPair mso_sptActionButtonSoundVert[] =
2919 {
2920     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2921     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2922     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2923     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
2924     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
2925 
2926     { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x10 MSO_I, 0x14 MSO_I },
2927     { 0xe MSO_I, 0x16 MSO_I }, { 0xa MSO_I, 0x16 MSO_I }, { 0x18 MSO_I, 8 MSO_I }, { 0x1a MSO_I, 8 MSO_I },
2928 
2929     { 0x18 MSO_I, 0xc MSO_I }, { 0x1a MSO_I, 0x1c MSO_I },
2930 
2931     { 0x18 MSO_I, 0x16 MSO_I }, { 0x1a MSO_I, 0x1e MSO_I }
2932 };
2933 static const sal_uInt16 mso_sptActionButtonSoundSegm[] =
2934 {
2935     0x4000, 0x0003, 0x6001, 0x8000,
2936     0x4000, 0x0003, 0x6001, 0x8000,
2937     0x4000, 0x0003, 0x6001, 0x8000,
2938     0x4000, 0x0003, 0x6001, 0x8000,
2939     0x4000, 0x0003, 0x6001, 0x8000,
2940 
2941     0x4000, 0x0005, 0x6001, 0x8000,
2942     0x4000, 0x0001, 0x8000,
2943     0x4000, 0x0001, 0x8000,
2944     0x4000, 0x0001, 0x8000
2945 };
2946 static const SvxMSDffCalculationData mso_sptActionButtonSoundCalc[] =   // adj value 0 - 5400
2947 {
2948     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
2949     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
2950     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
2951     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
2952     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
2953     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
2954     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
2955     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
2956     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
2957 
2958     { 0x4001, { -8050, 0x0406, 1 } },   // 9
2959     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
2960     { 0x4001, { -2750, 0x0406, 1 } },   // b
2961     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
2962     { 0x4001, { -2960, 0x0406, 1 } },   // d
2963     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
2964     { 0x4001, { 2120, 0x0406, 1 } },    // f
2965     { 0x6000, { 0x040f, 0x0407, 0 } },  // 10
2966     { 0x4001, { -8050, 0x0406, 1 } },   // 11
2967     { 0x6000, { 0x0411, 0x0408, 0 } },  // 12
2968     { 0x4001, { 8050, 0x0406, 1 } },    // 13
2969     { 0x6000, { 0x0413, 0x0408, 0 } },  // 14
2970     { 0x4001, { 2750, 0x0406, 1 } },    // 15
2971     { 0x6000, { 0x0415, 0x0408, 0 } },  // 16
2972     { 0x4001, { 4020, 0x0406, 1 } },    // 17
2973     { 0x6000, { 0x0417, 0x0407, 0 } },  // 18
2974     { 0x4001, { 8050, 0x0406, 1 } },    // 19
2975     { 0x6000, { 0x0419, 0x0407, 0 } },  // 1a
2976     { 0x4001, { -5930, 0x0406, 1 } },   // 1b
2977     { 0x6000, { 0x041b, 0x0408, 0 } },  // 1c
2978     { 0x4001, { 5930, 0x0406, 1 } },    // 1d
2979     { 0x6000, { 0x041d, 0x0408, 0 } }   // 1e
2980 };
2981 static const mso_CustomShape msoActionButtonSound =
2982 {
2983     (SvxMSDffVertPair*)mso_sptActionButtonSoundVert, sizeof( mso_sptActionButtonSoundVert ) / sizeof( SvxMSDffVertPair ),
2984     (sal_uInt16*)mso_sptActionButtonSoundSegm, sizeof( mso_sptActionButtonSoundSegm ) >> 1,
2985     (SvxMSDffCalculationData*)mso_sptActionButtonSoundCalc, sizeof( mso_sptActionButtonSoundCalc ) / sizeof( SvxMSDffCalculationData ),
2986     (sal_Int32*)mso_sptDefault1400,
2987     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
2988     21600, 21600,
2989     10800, 10800,
2990     NULL, 0,
2991     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
2992 };
2993 
2994 static const SvxMSDffVertPair mso_sptActionButtonMovieVert[] =
2995 {
2996     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
2997     { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
2998     { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
2999     { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
3000     { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
3001 
3002     { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x14 MSO_I, 0x12 MSO_I },
3003     { 0x16 MSO_I, 0x18 MSO_I }, { 0x16 MSO_I, 0x1a MSO_I }, { 0x1c MSO_I, 0x1a MSO_I }, { 0x1e MSO_I, 0x18 MSO_I },
3004     { 0x20 MSO_I, 0x18 MSO_I }, { 0x20 MSO_I, 0x22 MSO_I }, { 0x1e MSO_I, 0x22 MSO_I }, { 0x1c MSO_I, 0x24 MSO_I },
3005     { 0x16 MSO_I, 0x24 MSO_I }, { 0x16 MSO_I, 0x26 MSO_I }, { 0x2a MSO_I, 0x26 MSO_I }, { 0x2a MSO_I, 0x28 MSO_I },
3006     { 0x10 MSO_I, 0x28 MSO_I }, { 0xe MSO_I, 0x2c MSO_I }, { 0xa MSO_I, 0x2c MSO_I }
3007 };
3008 static const sal_uInt16 mso_sptActionButtonMovieSegm[] =
3009 {
3010     0x4000, 0x0003, 0x6001, 0x8000,
3011     0x4000, 0x0003, 0x6001, 0x8000,
3012     0x4000, 0x0003, 0x6001, 0x8000,
3013     0x4000, 0x0003, 0x6001, 0x8000,
3014     0x4000, 0x0003, 0x6001, 0x8000,
3015     0x4000, 0x0012, 0x6001, 0x8000
3016 };
3017 static const SvxMSDffCalculationData mso_sptActionButtonMovieCalc[] =   // adj value 0 - 5400
3018 {
3019     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
3020     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
3021     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
3022     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
3023     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
3024     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },
3025     { 0x2001, { 0x0405, 1, 10800 } },           // scaling   6
3026     { 0x2001, { DFF_Prop_geoRight, 1, 2 } },    // lr center 7
3027     { 0x2001, { DFF_Prop_geoBottom, 1, 2 } },   // ul center 8
3028 
3029     { 0x4001, { -8050, 0x0406, 1 } },   // 9
3030     { 0x6000, { 0x0409, 0x0407, 0 } },  // a
3031     { 0x4001, { -4020, 0x0406, 1 } },   // b
3032     { 0x6000, { 0x040b, 0x0408, 0 } },  // c
3033     { 0x4001, { -7000, 0x0406, 1 } },   // d
3034     { 0x6000, { 0x040d, 0x0407, 0 } },  // e
3035     { 0x4001, { -6560, 0x0406, 1 } },   // f
3036     { 0x6000, { 0x040f, 0x0407, 0 } },  // 10
3037     { 0x4001, { -3600, 0x0406, 1 } },   // 11
3038     { 0x6000, { 0x0411, 0x0408, 0 } },  // 12
3039     { 0x4001, { 4020, 0x0406, 1 } },    // 13
3040     { 0x6000, { 0x0413, 0x0407, 0 } },  // 14
3041     { 0x4001, { 4660, 0x0406, 1 } },    // 15
3042     { 0x6000, { 0x0415, 0x0407, 0 } },  // 16
3043     { 0x4001, { -2960, 0x0406, 1 } },   // 17
3044     { 0x6000, { 0x0417, 0x0408, 0 } },  // 18
3045     { 0x4001, { -2330, 0x0406, 1 } },   // 19
3046     { 0x6000, { 0x0419, 0x0408, 0 } },  // 1a
3047     { 0x4001, { 6780, 0x0406, 1 } },    // 1b
3048     { 0x6000, { 0x041b, 0x0407, 0 } },  // 1c
3049     { 0x4001, { 7200, 0x0406, 1 } },    // 1d
3050     { 0x6000, { 0x041d, 0x0407, 0 } },  // 1e
3051     { 0x4001, { 8050, 0x0406, 1 } },    // 1f
3052     { 0x6000, { 0x041f, 0x0407, 0 } },  // 20
3053     { 0x4001, { 2960, 0x0406, 1 } },    // 21
3054     { 0x6000, { 0x0421, 0x0408, 0 } },  // 22
3055     { 0x4001, { 2330, 0x0406, 1 } },    // 23
3056     { 0x6000, { 0x0423, 0x0408, 0 } },  // 24
3057     { 0x4001, { 3800, 0x0406, 1 } },    // 25
3058     { 0x6000, { 0x0425, 0x0408, 0 } },  // 26
3059     { 0x4001, { -1060, 0x0406, 1 } },   // 27
3060     { 0x6000, { 0x0427, 0x0408, 0 } },  // 28
3061     { 0x4001, { -6350, 0x0406, 1 } },   // 29
3062     { 0x6000, { 0x0429, 0x0407, 0 } },  // 2a
3063     { 0x4001, { -640, 0x0406, 1 } },    // 2b
3064     { 0x6000, { 0x042b, 0x0408, 0 } }   // 2c
3065 };
3066 static const mso_CustomShape msoActionButtonMovie =
3067 {
3068     (SvxMSDffVertPair*)mso_sptActionButtonMovieVert, sizeof( mso_sptActionButtonMovieVert ) / sizeof( SvxMSDffVertPair ),
3069     (sal_uInt16*)mso_sptActionButtonMovieSegm, sizeof( mso_sptActionButtonMovieSegm ) >> 1,
3070     (SvxMSDffCalculationData*)mso_sptActionButtonMovieCalc, sizeof( mso_sptActionButtonMovieCalc ) / sizeof( SvxMSDffCalculationData ),
3071     (sal_Int32*)mso_sptDefault1400,
3072     (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
3073     21600, 21600,
3074     10800, 10800,
3075     NULL, 0,
3076     (SvxMSDffHandle*)mso_sptButtonHandle, sizeof( mso_sptButtonHandle ) / sizeof( SvxMSDffHandle )
3077 };
3078 
3079 static const SvxMSDffVertPair mso_sptSmileyFaceVert[] = // adj value 15510 - 17520
3080 {
3081     { 10800, 10800 }, { 10800, 10800 }, { 0, 360 },
3082     { 7305, 7515 }, { 1165, 1165 }, { 0, 360 },
3083     { 14295, 7515 }, { 1165, 1165 }, { 0, 360 },
3084     { 4870, 1 MSO_I }, { 8680, 2 MSO_I }, { 12920, 2 MSO_I }, { 16730, 1 MSO_I }
3085 };
3086 static const sal_uInt16 mso_sptSmileyFaceSegm[] =
3087 {
3088     0xa203, 0x6000, 0x8000,
3089     0xa203, 0x6000, 0x8000,
3090     0xa203, 0x6000, 0x8000,
3091     0x4000, 0x2001, 0xaa00, 0x8000
3092 };
3093 static const SvxMSDffCalculationData mso_sptSmileyFaceCalc[] =
3094 {
3095     { 0x2000, { DFF_Prop_adjustValue, 0, 15510 } },
3096     { 0x8000, { 17520, 0, 0x400 } },
3097     { 0x4000, { 15510, 0x400, 0 } }
3098 };
3099 
3100 static const SvxMSDffTextRectangles mso_sptSmileyFaceTextRect[] =
3101 {
3102     { { 0, 1 MSO_I }, { 4 MSO_I, 21600 } }
3103 };
3104 static const sal_Int32 mso_sptSmileyFaceDefault[] =
3105 {
3106     1, 17520
3107 };
3108 static const SvxMSDffHandle mso_sptSmileyHandle[] =
3109 {
3110     {   MSDFF_HANDLE_FLAGS_RANGE,
3111         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 15510, 17520 }
3112 };
3113 static const mso_CustomShape msoSmileyFace =
3114 {
3115     (SvxMSDffVertPair*)mso_sptSmileyFaceVert, sizeof( mso_sptSmileyFaceVert ) / sizeof( SvxMSDffVertPair ),
3116     (sal_uInt16*)mso_sptSmileyFaceSegm, sizeof( mso_sptSmileyFaceSegm ) >> 1,
3117     (SvxMSDffCalculationData*)mso_sptSmileyFaceCalc, sizeof( mso_sptSmileyFaceCalc ) / sizeof( SvxMSDffCalculationData ),
3118     (sal_Int32*)mso_sptSmileyFaceDefault,
3119     (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
3120     21600, 21600,
3121     0x80000000, 0x80000000,
3122     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
3123     (SvxMSDffHandle*)mso_sptSmileyHandle, sizeof( mso_sptSmileyHandle ) / sizeof( SvxMSDffHandle )      // handles
3124 };
3125 
3126 static const SvxMSDffVertPair mso_sptDonutVert[] =  // adj value 0 - 10800
3127 {
3128     { 10800, 10800 }, { 10800, 10800 }, { 0, 360 },
3129     { 10800, 10800 }, { 1 MSO_I, 1 MSO_I }, { 0, 360 }
3130 };
3131 static const sal_uInt16 mso_sptDonutSegm[] =
3132 {
3133     0xa203, 0x6000, 0xa203, 0x8000
3134 };
3135 static const SvxMSDffCalculationData mso_sptDonutCalc[] =
3136 {
3137     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
3138     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } }
3139 };
3140 static const SvxMSDffHandle mso_sptDonutHandle[] =
3141 {
3142     {   MSDFF_HANDLE_FLAGS_RANGE,
3143         0x100, 10800, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
3144 };
3145 static const mso_CustomShape msoDonut =
3146 {
3147     (SvxMSDffVertPair*)mso_sptDonutVert, sizeof( mso_sptDonutVert ) / sizeof( SvxMSDffVertPair ),
3148     (sal_uInt16*)mso_sptDonutSegm, sizeof( mso_sptDonutSegm ) >> 1,
3149     (SvxMSDffCalculationData*)mso_sptDonutCalc, sizeof( mso_sptDonutCalc ) / sizeof( SvxMSDffCalculationData ),
3150     (sal_Int32*)mso_sptDefault5400,
3151     (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
3152     21600, 21600,
3153     0x80000000, 0x80000000,
3154     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
3155     (SvxMSDffHandle*)mso_sptDonutHandle, sizeof( mso_sptDonutHandle ) / sizeof( SvxMSDffHandle )        // handles
3156 };
3157 
3158 static const SvxMSDffVertPair mso_sptNoSmokingVert[] =  // adj value 0 - 7200
3159 {
3160     { 10800, 10800 },  { 10800, 10800 }, { 0, 360 },
3161     { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I },
3162     { 9 MSO_I, 0xa MSO_I }, { 0xb MSO_I, 0xc MSO_I }, { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I },
3163     { 0xd MSO_I, 0xe MSO_I }, { 0xf MSO_I, 0x10 MSO_I }
3164 };
3165 static const sal_uInt16 mso_sptNoSmokingSegm[] =
3166 {
3167     0xa203, 0x6000, 0xa404, 0x6000, 0xa404, 0x6000, 0x8000
3168 };
3169 static const SvxMSDffCalculationData mso_sptNoSmokingCalc[] =
3170 {
3171     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },         // 0
3172     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },     // 1
3173     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },     // 2
3174     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },         // 3
3175     { 0xa080, { 0x403, 0, 0x402 } },                    // 4
3176     { 0x8000, { 10800, 0, 0x403 } },                    // 5 x1
3177     { 0x4000, { 10800, 0x403, 0 } },                    // 6 x2
3178     { 0x8000, { 10800, 0, 0x404 } },                    // 7 y1
3179     { 0x4000, { 10800, 0x404, 0 } },                    // 8 y2
3180     { 0x6081, { 0x405, 0x407, 45 } },                   // 9
3181     { 0x6082, { 0x405, 0x407, 45 } },                   // a
3182     { 0x6081, { 0x405, 0x408, 45 } },                   // b
3183     { 0x6082, { 0x405, 0x408, 45 } },                   // c
3184     { 0x6081, { 0x406, 0x408, 45 } },                   // d
3185     { 0x6082, { 0x406, 0x408, 45 } },                   // e
3186     { 0x6081, { 0x406, 0x407, 45 } },                   // f
3187     { 0x6082, { 0x406, 0x407, 45 } }                    // 10
3188 };
3189 static const SvxMSDffHandle mso_sptNoSmokingHandle[] =
3190 {
3191     {   MSDFF_HANDLE_FLAGS_RANGE,
3192         0x100, 10800, 10800, 10800, 0, 7200, 0x80000000, 0x7fffffff }
3193 };
3194 static const mso_CustomShape msoNoSmoking =
3195 {
3196     (SvxMSDffVertPair*)mso_sptNoSmokingVert, sizeof( mso_sptNoSmokingVert ) / sizeof( SvxMSDffVertPair ),
3197     (sal_uInt16*)mso_sptNoSmokingSegm, sizeof( mso_sptNoSmokingSegm ) >> 1,
3198     (SvxMSDffCalculationData*)mso_sptNoSmokingCalc, sizeof( mso_sptNoSmokingCalc ) / sizeof( SvxMSDffCalculationData ),
3199     (sal_Int32*)mso_sptDefault2700,
3200     (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
3201     21600, 21600,
3202     0x80000000, 0x80000000,
3203     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
3204     (SvxMSDffHandle*)mso_sptNoSmokingHandle, sizeof( mso_sptNoSmokingHandle ) / sizeof( SvxMSDffHandle )        // handles
3205 };
3206 
3207 static const SvxMSDffVertPair mso_sptBlockArcVert[] =   // adj value 0 (degrees)
3208 {                                                       // adj value 1: 0 -> 10800;
3209     { 0, 0 }, { 21600, 21600 }, { 4 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I },
3210     { 5 MSO_I, 5 MSO_I }, { 6 MSO_I, 6 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I }
3211 };
3212 static const sal_uInt16 mso_sptBlockArcSegm[] =
3213 {
3214     0xA404, 0xa504, 0x6001, 0x8000
3215 };
3216 static const sal_Int32 mso_sptBlockArcDefault[] =
3217 {
3218     2, 180, 5400
3219 };
3220 static const SvxMSDffCalculationData mso_sptBlockArcCalc[] =
3221 {
3222     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
3223     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
3224     { 0x2000, { 0x400, 10800, 0 } },
3225     { 0x2000, { 0x401, 10800, 0 } },
3226     { 0x8000, { 21600, 0, 0x402 } },
3227     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },
3228     { 0x4000, { 10800, DFF_Prop_adjust2Value, 0 } },
3229     { 0x600a, { 0x405, DFF_Prop_adjustValue, 0 } },
3230     { 0x6009, { 0x405, DFF_Prop_adjustValue, 0 } }
3231 };
3232 static const SvxMSDffHandle mso_sptBlockArcHandle[] =
3233 {
3234     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
3235         0x101, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
3236 };
3237 static const mso_CustomShape msoBlockArc =
3238 {
3239     (SvxMSDffVertPair*)mso_sptBlockArcVert, sizeof( mso_sptBlockArcVert ) / sizeof( SvxMSDffVertPair ),
3240     (sal_uInt16*)mso_sptBlockArcSegm, sizeof( mso_sptBlockArcSegm ) >> 1,
3241     (SvxMSDffCalculationData*)mso_sptBlockArcCalc, sizeof( mso_sptBlockArcCalc ) / sizeof( SvxMSDffCalculationData ),
3242     (sal_Int32*)mso_sptBlockArcDefault,
3243     NULL, 0,
3244     21600, 21600,
3245     0x80000000, 0x80000000,
3246     NULL, 0,
3247     (SvxMSDffHandle*)mso_sptBlockArcHandle, sizeof( mso_sptBlockArcHandle ) / sizeof( SvxMSDffHandle )      // handles
3248 };
3249 
3250 // aware : control points are always part of the bounding box
3251 static const SvxMSDffVertPair mso_sptHeartVert[] =
3252 {
3253     { 10800, 21599 }, { 321, 6886 }, { 70, 6036 },      // ppp
3254     { -9, 5766 }, { -1, 5474 }, { 2, 5192 },            // ccp
3255     { 6, 4918 }, { 43, 4641 }, { 101, 4370 },           // ccp
3256     { 159, 4103 }, { 245, 3837 }, { 353, 3582 },        // ccp
3257     { 460, 3326 }, { 591, 3077 }, { 741, 2839 },        // ccp
3258     { 892, 2598 }, { 1066, 2369 }, { 1253, 2155 },      // ccp
3259     { 1443, 1938 }, { 1651, 1732 }, { 1874, 1543 },     // ccp
3260     { 2097, 1351 }, { 2337, 1174 }, { 2587, 1014 },     // ccp
3261     { 2839, 854 }, { 3106, 708 }, { 3380, 584 },        // ccp
3262     { 3656, 459 }, { 3945, 350 }, { 4237, 264 },        // ccp
3263     { 4533, 176 }, { 4838, 108 }, { 5144, 66 },         // ccp
3264     { 5454, 22 }, { 5771, 1 }, { 6086, 3 },             // ccp
3265     { 6407, 7 }, { 6731, 35 }, { 7048, 89 },            // ccp
3266     { 7374, 144 }, { 7700, 226 }, { 8015, 335 },        // ccp
3267     { 8344, 447 }, { 8667, 590 }, { 8972, 756 },        // ccp
3268     { 9297, 932 }, { 9613, 1135 }, { 9907, 1363 },      // ccp
3269     { 10224, 1609 }, { 10504, 1900 }, { 10802, 2169 },  // ccp
3270     { 11697, 1363 },                                    // p
3271     { 11971, 1116 }, { 12304, 934 }, { 12630, 756 },    // ccp
3272     { 12935, 590 }, { 13528, 450 }, { 13589, 335 },     // ccp
3273     { 13901, 226 }, { 14227, 144 }, { 14556, 89 },      // ccp
3274     { 14872, 35 }, { 15195, 7 }, { 15517, 3 },          // ccp
3275     { 15830, 0 }, { 16147, 22 }, { 16458, 66 },         // ccp
3276     { 16764, 109 }, { 17068, 177 }, { 17365, 264 },     // ccp
3277     { 17658, 349 }, { 17946, 458 }, { 18222, 584 },     // ccp
3278     { 18496, 708 }, { 18762, 854 }, { 19015, 1014 },    // ccp
3279     { 19264, 1172 }, { 19504, 1349 }, { 19730, 1543 },  // ccp
3280     { 19950, 1731 }, { 20158, 1937 }, { 20350, 2155 },  // ccp
3281     { 20536, 2369 }, { 20710, 2598 }, { 20861, 2839 },  // ccp
3282     { 21010, 3074 }, { 21143, 3323 }, { 21251, 3582 },  // ccp
3283     { 21357, 3835 }, { 21443, 4099 }, { 21502, 4370 },  // ccp
3284     { 21561, 4639 }, { 21595, 4916 }, { 21600, 5192 },  // ccp
3285     { 21606, 5474 }, { 21584, 5760 }, { 21532, 6036 },  // ccp
3286     { 21478, 6326 }, { 21366, 6603 }, { 21282, 6887 },  // ccp
3287     { 10802, 21602 }                                    // p
3288 };
3289 static const sal_uInt16 mso_sptHeartSegm[] =
3290 {
3291     0x4000, 0x0002, 0x2010, 0x0001, 0x2010, 0x0001, 0x6001, 0x8000
3292 };
3293 static const SvxMSDffTextRectangles mso_sptHeartTextRect[] =
3294 {
3295     { { 5080, 2540 }, { 16520, 13550 } }
3296 };
3297 static const SvxMSDffVertPair mso_sptHeartGluePoints[] =
3298 {
3299     { 10800, 2180 }, { 3090, 10800 }, { 10800, 21600 }, { 18490, 10800 }
3300 };
3301 static const mso_CustomShape msoHeart =
3302 {
3303     (SvxMSDffVertPair*)mso_sptHeartVert, sizeof( mso_sptHeartVert ) / sizeof( SvxMSDffVertPair ),
3304     (sal_uInt16*)mso_sptHeartSegm, sizeof( mso_sptHeartSegm ) >> 1,
3305     NULL, 0,
3306     NULL,
3307     (SvxMSDffTextRectangles*)mso_sptHeartTextRect, sizeof( mso_sptHeartTextRect ) / sizeof( SvxMSDffTextRectangles ),
3308     21615, 21602,
3309     0x80000000, 0x80000000,
3310     (SvxMSDffVertPair*)mso_sptHeartGluePoints, sizeof( mso_sptHeartGluePoints ) / sizeof( SvxMSDffVertPair ),
3311     NULL, 0     // handles
3312 };
3313 
3314 static const SvxMSDffVertPair mso_sptLightningBoldVert[] =
3315 {
3316     { 8458, 0 }, { 0, 3923 }, { 7564, 8416 }, { 4993, 9720 },
3317     { 12197, 13904 }, { 9987, 14934 }, { 21600, 21600 }, { 14768, 12911 },
3318     { 16558, 12016 }, { 11030, 6840 }, { 12831, 6120 }, { 8458, 0 }
3319 };
3320 static const SvxMSDffTextRectangles mso_sptLightningBoldTextRect[] =
3321 {
3322     { { 8680, 7410 }, { 13970, 14190 } }
3323 };
3324 static const SvxMSDffVertPair mso_sptLightningBoldGluePoints[] =
3325 {
3326     { 8458, 0 }, { 0, 3923 }, { 4993, 9720 }, { 9987, 14934 }, { 21600, 21600 },
3327     { 16558, 12016 }, { 12831, 6120 }
3328 };
3329 static const mso_CustomShape msoLightningBold =
3330 {
3331     (SvxMSDffVertPair*)mso_sptLightningBoldVert, sizeof( mso_sptLightningBoldVert ) / sizeof( SvxMSDffVertPair ),
3332     NULL, 0,
3333     NULL, 0,
3334     NULL,
3335     (SvxMSDffTextRectangles*)mso_sptLightningBoldTextRect, sizeof( mso_sptLightningBoldTextRect ) / sizeof( SvxMSDffTextRectangles ),
3336     21600, 21600,
3337     0x80000000, 0x80000000,
3338     (SvxMSDffVertPair*)mso_sptLightningBoldGluePoints, sizeof( mso_sptLightningBoldGluePoints ) / sizeof( SvxMSDffVertPair ),
3339     NULL, 0     // handles
3340 };
3341 
3342 static const SvxMSDffVertPair mso_sptSunVert[] =    // adj value 2700 -> 10125
3343 {
3344     { 0, 10800 },               { 4 MSO_I, 8 MSO_I },       { 4 MSO_I, 9 MSO_I },
3345     { 0x0a MSO_I, 0x0b MSO_I }, { 0x0c MSO_I, 0x0d MSO_I }, { 0x0e MSO_I, 0x0f MSO_I },
3346     { 0x10 MSO_I, 0x11 MSO_I }, { 0x12 MSO_I, 0x13 MSO_I }, { 0x14 MSO_I, 0x15 MSO_I },
3347     { 0x16 MSO_I, 0x17 MSO_I }, { 0x18 MSO_I, 0x19 MSO_I }, { 0x1a MSO_I, 0x1b MSO_I },
3348     { 0x1c MSO_I, 0x1d MSO_I }, { 0x1e MSO_I, 0x1f MSO_I }, { 0x20 MSO_I, 0x21 MSO_I },
3349     { 0x22 MSO_I, 0x23 MSO_I }, { 0x24 MSO_I, 0x25 MSO_I }, { 0x26 MSO_I, 0x27 MSO_I },
3350     { 0x28 MSO_I, 0x29 MSO_I }, { 0x2a MSO_I, 0x2b MSO_I }, { 0x2c MSO_I, 0x2d MSO_I },
3351     { 0x2e MSO_I, 0x2f MSO_I }, { 0x30 MSO_I, 0x31 MSO_I }, { 0x32 MSO_I, 0x33 MSO_I },
3352     { 10800, 10800 }, { 0x36 MSO_I, 0x36 MSO_I },   { 0, 360 }
3353 };
3354 static const sal_uInt16 mso_sptSunSegm[] =
3355 {
3356     0x4000, 0x0002, 0x6001, 0x8000,
3357     0x4000, 0x0002, 0x6001, 0x8000,
3358     0x4000, 0x0002, 0x6001, 0x8000,
3359     0x4000, 0x0002, 0x6001, 0x8000,
3360     0x4000, 0x0002, 0x6001, 0x8000,
3361     0x4000, 0x0002, 0x6001, 0x8000,
3362     0x4000, 0x0002, 0x6001, 0x8000,
3363     0x4000, 0x0002, 0x6001, 0x8000,
3364     0xa203, 0x6000, 0x8000
3365 };
3366 static const SvxMSDffCalculationData mso_sptSunCalc[] =
3367 {
3368     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
3369     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
3370     { 0x2000, { DFF_Prop_adjustValue, 0, 2700 } },
3371     { 0x2001, { 0x402, 5080, 7425 } },
3372     { 0x2000, { 0x403, 2540, 0 } },
3373     { 0x8000, { 10125, 0, DFF_Prop_adjustValue } },
3374     { 0x2001, { 0x405, 2120, 7425 } },
3375     { 0x2000, { 0x406, 210, 0 } },
3376     { 0x4000, { 10800, 0x407, 0 } },    // y1 (0x8)
3377     { 0x8000, { 10800, 0, 0x407 } },    // y2 (0x9)
3378     { 0x0081, { 0, 10800, 45 } },       // 0xa
3379     { 0x0082, { 0, 10800, 45 } },       // 0xb
3380     { 0x6081, { 0x404, 0x408, 45 } },   // 0xc
3381     { 0x6082, { 0x404, 0x408, 45 } },   // 0xd
3382     { 0x6081, { 0x404, 0x409, 45 } },   // 0xe
3383     { 0x6082, { 0x404, 0x409, 45 } },   // 0xf
3384     { 0x0081, { 0, 10800, 90 } },       // 0x10
3385     { 0x0082, { 0, 10800, 90 } },       // 0x11
3386     { 0x6081, { 0x404, 0x408, 90 } },   // 0x12
3387     { 0x6082, { 0x404, 0x408, 90 } },   // 0x13
3388     { 0x6081, { 0x404, 0x409, 90 } },   // 0x14
3389     { 0x6082, { 0x404, 0x409, 90 } },   // 0x15
3390     { 0x0081, { 0, 10800, 135 } },      // 0x16
3391     { 0x0082, { 0, 10800, 135 } },      // 0x17
3392     { 0x6081, { 0x404, 0x408, 135 } },  // 0x18
3393     { 0x6082, { 0x404, 0x408, 135 } },  // 0x19
3394     { 0x6081, { 0x404, 0x409, 135 } },  // 0x1a
3395     { 0x6082, { 0x404, 0x409, 135 } },  // 0x1b
3396     { 0x0081, { 0, 10800, 180 } },      // 0x1c
3397     { 0x0082, { 0, 10800, 180 } },      // 0x1d
3398     { 0x6081, { 0x404, 0x408, 180 } },  // 0x1e
3399     { 0x6082, { 0x404, 0x408, 180 } },  // 0x1f
3400     { 0x6081, { 0x404, 0x409, 180 } },  // 0x20
3401     { 0x6082, { 0x404, 0x409, 180 } },  // 0x21
3402     { 0x0081, { 0, 10800, 225 } },      // 0x22
3403     { 0x0082, { 0, 10800, 225 } },      // 0x23
3404     { 0x6081, { 0x404, 0x408, 225 } },  // 0x24
3405     { 0x6082, { 0x404, 0x408, 225 } },  // 0x25
3406     { 0x6081, { 0x404, 0x409, 225 } },  // 0x26
3407     { 0x6082, { 0x404, 0x409, 225 } },  // 0x27
3408     { 0x0081, { 0, 10800, 270 } },      // 0x28
3409     { 0x0082, { 0, 10800, 270 } },      // 0x29
3410     { 0x6081, { 0x404, 0x408, 270 } },  // 0x2a
3411     { 0x6082, { 0x404, 0x408, 270 } },  // 0x2b
3412     { 0x6081, { 0x404, 0x409, 270 } },  // 0x2c
3413     { 0x6082, { 0x404, 0x409, 270 } },  // 0x2d
3414     { 0x0081, { 0, 10800, 315 } },      // 0x2e
3415     { 0x0082, { 0, 10800, 315 } },      // 0x2f
3416     { 0x6081, { 0x404, 0x408, 315 } },  // 0x30
3417     { 0x6082, { 0x404, 0x408, 315 } },  // 0x31
3418     { 0x6081, { 0x404, 0x409, 315 } },  // 0x32
3419     { 0x6082, { 0x404, 0x409, 315 } },  // 0x33
3420     { 0x2081, { DFF_Prop_adjustValue, 10800, 45 } },    // 0x34 ( textbox )
3421     { 0x2081, { DFF_Prop_adjustValue, 10800, 225 } },   // 0x35
3422     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } }
3423 };
3424 static const SvxMSDffTextRectangles mso_sptSunTextRect[] =
3425 {
3426     { { 0x34 MSO_I, 0x34 MSO_I }, { 0x35 MSO_I, 0x35 MSO_I } }
3427 };
3428 static const SvxMSDffHandle mso_sptSunHandle[] =
3429 {
3430     {   MSDFF_HANDLE_FLAGS_RANGE,
3431         0x100, 10800, 10800, 10800, 2700, 10125, 0x80000000, 0x7fffffff }
3432 };
3433 static const mso_CustomShape msoSun =
3434 {
3435     (SvxMSDffVertPair*)mso_sptSunVert, sizeof( mso_sptSunVert ) / sizeof( SvxMSDffVertPair ),
3436     (sal_uInt16*)mso_sptSunSegm, sizeof( mso_sptSunSegm ) >> 1,
3437     (SvxMSDffCalculationData*)mso_sptSunCalc, sizeof( mso_sptSunCalc ) / sizeof( SvxMSDffCalculationData ),
3438     (sal_Int32*)mso_sptDefault5400,
3439     (SvxMSDffTextRectangles*)mso_sptSunTextRect, sizeof( mso_sptSunTextRect ) / sizeof( SvxMSDffTextRectangles ),
3440     21600, 21600,
3441     0x80000000, 0x80000000,
3442     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
3443     (SvxMSDffHandle*)mso_sptSunHandle, sizeof( mso_sptSunHandle ) / sizeof( SvxMSDffHandle )        // handles
3444 };
3445 
3446 static const SvxMSDffVertPair mso_sptMoonVert[] =   // adj value 0 -> 18900
3447 {
3448     { 21600, 0 },
3449     { 3 MSO_I, 4 MSO_I },   { 0 MSO_I, 5080 },      { 0 MSO_I, 10800 }, // ccp
3450     { 0 MSO_I, 16520 },     { 3 MSO_I, 5 MSO_I },   { 21600, 21600 },   // ccp
3451     { 9740, 21600 },        { 0, 16730 },           { 0, 10800 },       // ccp
3452     { 0, 4870 },            { 9740, 0 },            { 21600, 0  }       // ccp
3453 };
3454 static const sal_uInt16 mso_sptMoonSegm[] =
3455 {
3456     0x4000, 0x2004, 0x6000, 0x8000
3457 };
3458 static const SvxMSDffCalculationData mso_sptMoonCalc[] =
3459 {
3460     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
3461     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
3462     { 0x2001, { 0x401, 1, 2 } },
3463     { 0x6000, { 0x402, DFF_Prop_adjustValue, 0 } },
3464     { 0x2001, { DFF_Prop_adjustValue, 1794, 10000 } },
3465     { 0x8000, { 21600, 0, 0x0404 } },
3466     { 0x2001, { DFF_Prop_adjustValue, 400, 18900 } },
3467     { 0x8081, { 0, 10800, 0x406 } },
3468     { 0x8082, { 0, 10800, 0x406 } },
3469     { 0x6000, { 0x407, 0x407, 0 } },
3470     { 0x8000, { 21600, 0, 0x408 } }
3471 };
3472 static const SvxMSDffTextRectangles mso_sptMoonTextRect[] =
3473 {
3474     { { 9 MSO_I, 8 MSO_I }, { 0 MSO_I, 0xa MSO_I } }
3475 };
3476 static const SvxMSDffVertPair mso_sptMoonGluePoints[] =
3477 {
3478     { 21600, 0 }, { 0, 10800 }, { 21600, 21600 }, { 0 MSO_I, 10800 }
3479 };
3480 static const SvxMSDffHandle mso_sptMoonHandle[] =
3481 {
3482     {   MSDFF_HANDLE_FLAGS_RANGE,
3483         0x100, 10800, 10800, 10800, 0, 18900, 0x80000000, 0x7fffffff }
3484 };
3485 static const mso_CustomShape msoMoon =
3486 {
3487     (SvxMSDffVertPair*)mso_sptMoonVert, sizeof( mso_sptMoonVert ) / sizeof( SvxMSDffVertPair ),
3488     (sal_uInt16*)mso_sptMoonSegm, sizeof( mso_sptMoonSegm ) >> 1,
3489     (SvxMSDffCalculationData*)mso_sptMoonCalc, sizeof( mso_sptMoonCalc ) / sizeof( SvxMSDffCalculationData ),
3490     (sal_Int32*)mso_sptDefault10800,
3491     (SvxMSDffTextRectangles*)mso_sptMoonTextRect, sizeof( mso_sptMoonTextRect ) / sizeof( SvxMSDffTextRectangles ),
3492     21600, 21600,
3493     0x80000000, 0x80000000,
3494     (SvxMSDffVertPair*)mso_sptMoonGluePoints, sizeof( mso_sptMoonGluePoints ) / sizeof( SvxMSDffVertPair ),
3495     (SvxMSDffHandle*)mso_sptMoonHandle, sizeof( mso_sptMoonHandle ) / sizeof( SvxMSDffHandle )      // handles
3496 };
3497 
3498 static const SvxMSDffVertPair mso_sptBracketPairVert[] =    // adj value 0 -> 10800
3499 {
3500     { 0 MSO_I, 0 },     { 0, 1 MSO_I },     // left top alignment
3501     { 0, 2 MSO_I },     { 0 MSO_I, 21600 }, // left  bottom "
3502     { 3 MSO_I, 21600 }, { 21600, 2 MSO_I }, // right bottom "
3503     { 21600, 1 MSO_I }, { 3 MSO_I, 0 }      // right top    "
3504 };
3505 static const sal_uInt16 mso_sptBracketPairSegm[] =
3506 {
3507     0x4000, 0xa701, 0x0001, 0xa801, 0x8000,
3508     0x4000, 0xa701, 0x0001, 0xa801, 0x8000
3509 };
3510 static const SvxMSDffCalculationData mso_sptBracketPairCalc[] =
3511 {
3512     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
3513     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
3514     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
3515     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
3516     { 0x2082, { DFF_Prop_adjustValue, 0, 45 } },
3517     { 0x2000, { 0x404, 0, 10800 } },
3518     { 0x8000, { 0, 0, DFF_Prop_adjustValue } },
3519     { 0xa000, { 0x406, 0, 0x405 } },
3520     { 0xa000, { DFF_Prop_geoLeft, 0, 0x407 } },
3521     { 0xa000, { DFF_Prop_geoTop, 0, 0x407 } },
3522     { 0x6000, { DFF_Prop_geoRight, 0x407, 0 } },
3523     { 0x6000, { DFF_Prop_geoBottom, 0x407, 0 } },
3524     { 0xa000, { DFF_Prop_geoLeft, 0, 0x405 } },
3525     { 0xa000, { DFF_Prop_geoTop, 0, 0x405 } },
3526     { 0x6000, { DFF_Prop_geoRight, 0x405, 0 } },
3527     { 0x6000, { DFF_Prop_geoBottom, 0x405, 0 } }
3528 };
3529 static const SvxMSDffTextRectangles mso_sptBracketPairTextRect[] =
3530 {
3531     { { 8 MSO_I, 9 MSO_I }, { 0xa MSO_I, 0xb MSO_I } }
3532 };
3533 static const SvxMSDffHandle mso_sptBracketPairHandle[] =
3534 {
3535     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
3536         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
3537 };
3538 static const mso_CustomShape msoBracketPair =
3539 {
3540     (SvxMSDffVertPair*)mso_sptBracketPairVert, sizeof( mso_sptBracketPairVert ) / sizeof( SvxMSDffVertPair ),
3541     (sal_uInt16*)mso_sptBracketPairSegm, sizeof( mso_sptBracketPairSegm ) >> 1,
3542     (SvxMSDffCalculationData*)mso_sptBracketPairCalc, sizeof( mso_sptBracketPairCalc ) / sizeof( SvxMSDffCalculationData ),
3543     (sal_Int32*)mso_sptDefault3700,
3544     (SvxMSDffTextRectangles*)mso_sptBracketPairTextRect, sizeof( mso_sptBracketPairTextRect ) / sizeof( SvxMSDffTextRectangles ),
3545     21600, 21600,
3546     10800, 0x80000000,
3547     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
3548     (SvxMSDffHandle*)mso_sptBracketPairHandle, sizeof( mso_sptBracketPairHandle ) / sizeof( SvxMSDffHandle )        // handles
3549 };
3550 
3551 static const sal_uInt16 mso_sptPlaqueSegm[] =
3552 {
3553     0x4000, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x6000, 0x8000
3554 };
3555 static const SvxMSDffTextRectangles mso_sptPlaqueTextRect[] =
3556 {
3557     { { 0xc MSO_I, 0xd MSO_I }, { 0xe MSO_I, 0xf MSO_I } }
3558 };
3559 static const SvxMSDffHandle mso_sptPlaqueHandle[] =
3560 {
3561     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
3562         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
3563 };
3564 static const mso_CustomShape msoPlaque =
3565 {
3566     (SvxMSDffVertPair*)mso_sptBracketPairVert, sizeof( mso_sptBracketPairVert ) / sizeof( SvxMSDffVertPair ),
3567     (sal_uInt16*)mso_sptPlaqueSegm, sizeof( mso_sptPlaqueSegm ) >> 1,
3568     (SvxMSDffCalculationData*)mso_sptBracketPairCalc, sizeof( mso_sptBracketPairCalc ) / sizeof( SvxMSDffCalculationData ),
3569     (sal_Int32*)mso_sptDefault3600,
3570     (SvxMSDffTextRectangles*)mso_sptPlaqueTextRect, sizeof( mso_sptPlaqueTextRect ) / sizeof( SvxMSDffTextRectangles ),
3571     21600, 21600,
3572     10800, 10800,
3573     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
3574     (SvxMSDffHandle*)mso_sptPlaqueHandle, sizeof( mso_sptPlaqueHandle ) / sizeof( SvxMSDffHandle )      // handles
3575 };
3576 
3577 static const SvxMSDffVertPair mso_sptBracePairVert[] =  // adj value 0 -> 5400
3578 {
3579     { 4 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 6 MSO_I }, { 0 ,10800 },           // left bracket
3580     { 0 MSO_I, 7 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 4 MSO_I, 21600 },
3581     { 8 MSO_I, 21600 }, { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 7 MSO_I }, { 21600, 10800 },   // right bracket
3582     { 3 MSO_I, 6 MSO_I }, { 3 MSO_I, 1 MSO_I }, { 8 MSO_I, 0 }
3583 };
3584 static const sal_uInt16 mso_sptBracePairSegm[] =
3585 {
3586     0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000,
3587     0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000
3588 };
3589 static const SvxMSDffCalculationData mso_sptBracePairCalc[] =
3590 {
3591     { 0x6000, { DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 } },
3592     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
3593     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
3594     { 0xa000, { DFF_Prop_geoRight, 0, DFF_Prop_adjustValue } },
3595     { 0x2001, { 0x400, 2, 1 } },                                    //  4
3596     { 0x2001, { DFF_Prop_adjustValue, 2, 1 } },                     //  5
3597     { 0x8000, { 10800, 0, DFF_Prop_adjustValue } },                 //  6
3598     { 0x8000, { 21600, 0, 0x406 } },                                //  7
3599     { 0xa000, { DFF_Prop_geoRight, 0, 0x405 } },                    //  8
3600     { 0x2001, { DFF_Prop_adjustValue, 1, 3 } },                     //  9
3601     { 0x6000, { 0x409, DFF_Prop_adjustValue, 0 } },                 // xa
3602     { 0x6000, { DFF_Prop_geoLeft, 0x40a, 0 } },                     // xb
3603     { 0x6000, { DFF_Prop_geoTop, 0x409, 0 } },                      // xc
3604     { 0xa000, { DFF_Prop_geoRight, 0, 0x40a } },                    // xd
3605     { 0xa000, { DFF_Prop_geoBottom, 0, 0x409 } }                    // xe
3606 };
3607 static const SvxMSDffTextRectangles mso_sptBracePairTextRect[] =
3608 {
3609     { { 0xb MSO_I, 0xc MSO_I }, { 0xd MSO_I, 0xe MSO_I } }
3610 };
3611 static const SvxMSDffHandle mso_sptBracePairHandle[] =
3612 {
3613     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_SWITCHED,
3614         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 5400 }
3615 };
3616 static const mso_CustomShape msoBracePair =
3617 {
3618     (SvxMSDffVertPair*)mso_sptBracePairVert, sizeof( mso_sptBracePairVert ) / sizeof( SvxMSDffVertPair ),
3619     (sal_uInt16*)mso_sptBracePairSegm, sizeof( mso_sptBracePairSegm ) >> 1,
3620     (SvxMSDffCalculationData*)mso_sptBracePairCalc, sizeof( mso_sptBracePairCalc ) / sizeof( SvxMSDffCalculationData ),
3621     (sal_Int32*)mso_sptDefault1800,
3622     (SvxMSDffTextRectangles*)mso_sptBracePairTextRect, sizeof( mso_sptBracePairTextRect ) / sizeof( SvxMSDffTextRectangles ),
3623     21600, 21600,
3624     10800, 0x80000000,
3625     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
3626     (SvxMSDffHandle*)mso_sptBracePairHandle, sizeof( mso_sptBracePairHandle ) / sizeof( SvxMSDffHandle )        // handles
3627 };
3628 
3629 static const SvxMSDffCalculationData mso_sptBracketCalc[] =
3630 {
3631     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
3632     { 0x6000, { DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 } },
3633     { 0xa000, { DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue } },
3634     { 0x6000, { DFF_Prop_geoTop, 0x400, 0 } },
3635     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } }
3636 };
3637 static const sal_uInt16 mso_sptBracketSegm[] =
3638 {
3639     0x4000, 0x2001, 0x0001, 0x2001, 0x8000
3640 };
3641 static const SvxMSDffVertPair mso_sptLeftBracketVert[] =    // adj value 0 -> 10800
3642 {
3643     { 21600, 0 }, { 10800,  0 }, { 0, 3 MSO_I }, { 0, 1 MSO_I },
3644     { 0, 2 MSO_I }, { 0, 4 MSO_I }, { 10800, 21600 }, { 21600, 21600 }
3645 };
3646 static const SvxMSDffTextRectangles mso_sptLeftBracketTextRect[] =
3647 {
3648     { { 6350, 3 MSO_I }, { 21600, 4 MSO_I } }
3649 };
3650 static const SvxMSDffVertPair mso_sptLeftBracketGluePoints[] =
3651 {
3652     { 21600, 0 }, { 0, 10800 }, { 21600, 21600 }
3653 };
3654 static const SvxMSDffHandle mso_sptLeftBracketHandle[] =
3655 {
3656     {   MSDFF_HANDLE_FLAGS_RANGE,
3657         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
3658 };
3659 static const mso_CustomShape msoLeftBracket =
3660 {
3661     (SvxMSDffVertPair*)mso_sptLeftBracketVert, sizeof( mso_sptLeftBracketVert ) / sizeof( SvxMSDffVertPair ),
3662     (sal_uInt16*)mso_sptBracketSegm, sizeof( mso_sptBracketSegm ) >> 1,
3663     (SvxMSDffCalculationData*)mso_sptBracketCalc, sizeof( mso_sptBracketCalc ) / sizeof( SvxMSDffCalculationData ),
3664     (sal_Int32*)mso_sptDefault1800,
3665     (SvxMSDffTextRectangles*)mso_sptLeftBracketTextRect, sizeof( mso_sptLeftBracketTextRect ) / sizeof( SvxMSDffTextRectangles ),
3666     21600, 21600,
3667     0x80000000, 0x80000000,
3668     (SvxMSDffVertPair*)mso_sptLeftBracketGluePoints, sizeof( mso_sptLeftBracketGluePoints ) / sizeof( SvxMSDffVertPair ),
3669     (SvxMSDffHandle*)mso_sptLeftBracketHandle, sizeof( mso_sptLeftBracketHandle ) / sizeof( SvxMSDffHandle )        // handles
3670 };
3671 static const SvxMSDffVertPair mso_sptRightBracketVert[] =   // adj value 0 -> 10800
3672 {
3673     { 0, 0 }, { 10800, 0 }, { 21600, 3 MSO_I }, { 21600, 1 MSO_I },
3674     { 21600, 2 MSO_I }, { 21600, 4 MSO_I }, { 10800, 21600 }, { 0, 21600 }
3675 };
3676 static const SvxMSDffTextRectangles mso_sptRightBracketTextRect[] =
3677 {
3678     { { 0, 3 MSO_I }, { 15150, 4 MSO_I } }
3679 };
3680 static const SvxMSDffVertPair mso_sptRightBracketGluePoints[] =
3681 {
3682     { 0, 0 }, { 0, 21600 }, { 21600, 10800 }
3683 };
3684 static const SvxMSDffHandle mso_sptRightBracketHandle[] =
3685 {
3686     {   MSDFF_HANDLE_FLAGS_RANGE,
3687         1, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
3688 };
3689 static const mso_CustomShape msoRightBracket =
3690 {
3691     (SvxMSDffVertPair*)mso_sptRightBracketVert, sizeof( mso_sptRightBracketVert ) / sizeof( SvxMSDffVertPair ),
3692     (sal_uInt16*)mso_sptBracketSegm, sizeof( mso_sptBracketSegm ) >> 1,
3693     (SvxMSDffCalculationData*)mso_sptBracketCalc, sizeof( mso_sptBracketCalc ) / sizeof( SvxMSDffCalculationData ),
3694     (sal_Int32*)mso_sptDefault1800,
3695     (SvxMSDffTextRectangles*)mso_sptRightBracketTextRect, sizeof( mso_sptRightBracketTextRect ) / sizeof( SvxMSDffTextRectangles ),
3696     21600, 21600,
3697     0x80000000, 0x80000000,
3698     (SvxMSDffVertPair*)mso_sptRightBracketGluePoints, sizeof( mso_sptRightBracketGluePoints ) / sizeof( SvxMSDffVertPair ),
3699     (SvxMSDffHandle*)mso_sptRightBracketHandle, sizeof( mso_sptRightBracketHandle ) / sizeof( SvxMSDffHandle )      // handles
3700 };
3701 
3702 static const SvxMSDffCalculationData mso_sptBraceCalc[] =
3703 {
3704     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
3705     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
3706     { 0xa000, { 0x404, 0, DFF_Prop_adjustValue } },
3707     { 0xa000, { 0x404, 0, 0x400 } },
3708     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
3709     { 0x6000, { 0x404, 0x400, 0 } },
3710     { 0x6000, { 0x404, DFF_Prop_adjustValue, 0 } },
3711     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
3712     { 0x8000, { 21600, 0, 0x400 } },
3713     { 0x2001, { DFF_Prop_adjustValue, 10000, 31953 } },
3714     { 0x8000, { 21600, 0, 0x409 } }
3715 };
3716 static const sal_uInt16 mso_sptBraceSegm[] =
3717 {
3718     0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x8000
3719 };
3720 static const sal_Int32 mso_sptBraceDefault[] =
3721 {
3722     2, 1800, 10800
3723 };
3724 static const SvxMSDffVertPair mso_sptLeftBraceVert[] =
3725 {
3726     { 21600, 0 },                                               // p
3727     { 16200, 0 }, { 10800, 0 MSO_I }, { 10800, 1 MSO_I },       // ccp
3728     { 10800, 2 MSO_I },                                         // p
3729     { 10800, 3 MSO_I }, { 5400, 4 MSO_I }, { 0, 4 MSO_I },      // ccp
3730     { 5400, 4 MSO_I },  { 10800, 5 MSO_I }, { 10800, 6 MSO_I }, // ccp
3731     { 10800, 7 MSO_I },                                         // p
3732     { 10800, 8 MSO_I }, { 16200, 21600 }, { 21600, 21600 }      // ccp
3733 };
3734 static const SvxMSDffTextRectangles mso_sptLeftBraceTextRect[] =
3735 {
3736     { { 13800, 9 MSO_I }, { 21600, 10 MSO_I } }
3737 };
3738 static const SvxMSDffHandle mso_sptLeftBraceHandle[] =
3739 {
3740     {   MSDFF_HANDLE_FLAGS_RANGE,
3741         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 5400 },
3742     {   MSDFF_HANDLE_FLAGS_RANGE,
3743         0, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 21600 }
3744 };
3745 static const mso_CustomShape msoLeftBrace =     // adj value0 0 -> 5400
3746 {                                               // adj value1 0 -> 21600
3747     (SvxMSDffVertPair*)mso_sptLeftBraceVert, sizeof( mso_sptLeftBraceVert ) / sizeof( SvxMSDffVertPair ),
3748     (sal_uInt16*)mso_sptBraceSegm, sizeof( mso_sptBraceSegm ) >> 1,
3749     (SvxMSDffCalculationData*)mso_sptBraceCalc, sizeof( mso_sptBraceCalc ) / sizeof( SvxMSDffCalculationData ),
3750     (sal_Int32*)mso_sptBraceDefault,
3751     (SvxMSDffTextRectangles*)mso_sptLeftBraceTextRect, sizeof( mso_sptLeftBraceTextRect ) / sizeof( SvxMSDffTextRectangles ),
3752     21600, 21600,
3753     0x80000000, 0x80000000,
3754     (SvxMSDffVertPair*)mso_sptLeftBracketGluePoints, sizeof( mso_sptLeftBracketGluePoints ) / sizeof( SvxMSDffVertPair ),
3755     (SvxMSDffHandle*)mso_sptLeftBraceHandle, sizeof( mso_sptLeftBraceHandle ) / sizeof( SvxMSDffHandle )        // handles
3756 };
3757 static const SvxMSDffVertPair mso_sptRightBraceVert[] =
3758 {
3759     { 0, 0 },                                                   // p
3760     { 5400, 0 }, { 10800, 0 MSO_I }, { 10800, 1 MSO_I },        // ccp
3761     { 10800, 2 MSO_I },                                         // p
3762     { 10800, 3 MSO_I }, { 16200, 4 MSO_I }, { 21600, 4 MSO_I }, // ccp
3763     { 16200, 4 MSO_I }, { 10800, 5 MSO_I }, { 10800, 6 MSO_I }, // ccp
3764     { 10800, 7 MSO_I },                                         // p
3765     { 10800, 8 MSO_I }, { 5400, 21600 }, { 0, 21600 }           // ccp
3766 };
3767 static const SvxMSDffTextRectangles mso_sptRightBraceTextRect[] =
3768 {
3769     { { 0, 9 MSO_I }, { 7800, 10 MSO_I } }
3770 };
3771 static const SvxMSDffHandle mso_sptRightBraceHandle[] =
3772 {
3773     {   MSDFF_HANDLE_FLAGS_RANGE,
3774         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 5400 },
3775     {   MSDFF_HANDLE_FLAGS_RANGE,
3776         1, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 21600 }
3777 };
3778 static const mso_CustomShape msoRightBrace =        // adj value0 0 -> 5400
3779 {                                               // adj value1 0 -> 21600
3780     (SvxMSDffVertPair*)mso_sptRightBraceVert, sizeof( mso_sptRightBraceVert ) / sizeof( SvxMSDffVertPair ),
3781     (sal_uInt16*)mso_sptBraceSegm, sizeof( mso_sptBraceSegm ) >> 1,
3782     (SvxMSDffCalculationData*)mso_sptBraceCalc, sizeof( mso_sptBraceCalc ) / sizeof( SvxMSDffCalculationData ),
3783     (sal_Int32*)mso_sptBraceDefault,
3784     (SvxMSDffTextRectangles*)mso_sptRightBraceTextRect, sizeof( mso_sptRightBraceTextRect ) / sizeof( SvxMSDffTextRectangles ),
3785     21600, 21600,
3786     0x80000000, 0x80000000,
3787     (SvxMSDffVertPair*)mso_sptRightBracketGluePoints, sizeof( mso_sptRightBracketGluePoints ) / sizeof( SvxMSDffVertPair ),
3788     (SvxMSDffHandle*)mso_sptRightBraceHandle, sizeof( mso_sptRightBraceHandle ) / sizeof( SvxMSDffHandle )      // handles
3789 };
3790 
3791 static const SvxMSDffVertPair mso_sptIrregularSeal1Vert[] =
3792 {
3793     { 10901, 5905 }, { 8458, 2399 }, { 7417, 6425 }, { 476, 2399 },
3794     { 4732, 7722 }, { 106, 8718 }, { 3828, 11880 }, { 243, 14689 },
3795     { 5772, 14041 }, { 4868, 17719 }, { 7819, 15730 }, { 8590, 21600 },
3796     { 10637, 15038 }, { 13349, 19840 }, { 14125, 14561 }, { 18248, 18195 },
3797     { 16938, 13044 }, { 21600, 13393 }, { 17710, 10579 }, { 21198, 8242 },
3798     { 16806, 7417 }, { 18482, 4560 }, { 14257, 5429 }, { 14623, 106 }, { 10901, 5905 }
3799 };
3800 static const SvxMSDffTextRectangles mso_sptIrregularSeal1TextRect[] =
3801 {
3802     { { 4680, 6570 }, { 16140, 13280 } }
3803 };
3804 static const SvxMSDffVertPair mso_sptIrregularSeal1GluePoints[] =
3805 {
3806     { 14623, 106 }, { 106, 8718 }, { 8590, 21600 }, { 21600, 13393 }
3807 };
3808 static const mso_CustomShape msoIrregularSeal1 =
3809 {
3810     (SvxMSDffVertPair*)mso_sptIrregularSeal1Vert, sizeof( mso_sptIrregularSeal1Vert ) / sizeof( SvxMSDffVertPair ),
3811     NULL, 0,
3812     NULL, 0,
3813     NULL,
3814     (SvxMSDffTextRectangles*)mso_sptIrregularSeal1TextRect, sizeof( mso_sptIrregularSeal1TextRect ) / sizeof( SvxMSDffTextRectangles ),
3815     21600, 21600,
3816     0x80000000, 0x80000000,
3817     (SvxMSDffVertPair*)mso_sptIrregularSeal1GluePoints, sizeof( mso_sptIrregularSeal1GluePoints ) / sizeof( SvxMSDffVertPair ),
3818     NULL, 0     // handles
3819 };
3820 
3821 static const SvxMSDffVertPair mso_sptIrregularSeal2Vert[] =
3822 {
3823     { 11464, 4340 }, { 9722, 1887 }, { 8548, 6383 }, { 4503, 3626 },
3824     { 5373, 7816 }, { 1174, 8270 }, { 3934, 11592 }, { 0, 12875 },
3825     { 3329, 15372 }, { 1283, 17824 }, { 4804, 18239 }, { 4918, 21600 },
3826     { 7525, 18125 }, { 8698, 19712 }, { 9871, 17371 }, { 11614, 18844 },
3827     { 12178, 15937 }, { 14943, 17371 }, { 14640, 14348 }, { 18878, 15632 },
3828     { 16382, 12311 }, { 18270, 11292 }, { 16986, 9404 }, { 21600, 6646 },
3829     { 16382, 6533 }, { 18005, 3172 }, { 14524, 5778 }, { 14789, 0 },
3830     { 11464, 4340 }
3831 };
3832 static const SvxMSDffTextRectangles mso_sptIrregularSeal2TextRect[] =
3833 {
3834     { { 5400, 6570 }, { 14160, 15290 } }
3835 };
3836 static const SvxMSDffVertPair mso_sptIrregularSeal2GluePoints[] =
3837 {
3838     { 9722, 1887 }, { 0, 12875 }, { 11614, 18844 }, { 21600, 6646 }
3839 };
3840 static const mso_CustomShape msoIrregularSeal2 =
3841 {
3842     (SvxMSDffVertPair*)mso_sptIrregularSeal2Vert, sizeof( mso_sptIrregularSeal2Vert ) / sizeof( SvxMSDffVertPair ),
3843     NULL, 0,
3844     NULL, 0,
3845     NULL,
3846     (SvxMSDffTextRectangles*)mso_sptIrregularSeal2TextRect, sizeof( mso_sptIrregularSeal2TextRect ) / sizeof( SvxMSDffTextRectangles ),
3847     21600, 21600,
3848     0x80000000, 0x80000000,
3849     (SvxMSDffVertPair*)mso_sptIrregularSeal2GluePoints, sizeof( mso_sptIrregularSeal2GluePoints ) / sizeof( SvxMSDffVertPair ),
3850     NULL, 0     // handles
3851 };
3852 
3853 static const SvxMSDffVertPair mso_sptSeal4Vert[] =      // adjustment1 : 0 - 10800
3854 {
3855     { 0, 10800 }, { 4 MSO_I, 4 MSO_I }, { 10800, 0 }, { 3 MSO_I, 4 MSO_I },
3856     { 21600, 10800 }, { 3 MSO_I, 3 MSO_I }, { 10800, 21600 }, { 4 MSO_I, 3 MSO_I },
3857     { 0, 10800 }
3858 };
3859 static const SvxMSDffCalculationData mso_sptSeal4Calc[] =
3860 {
3861     { 0x0000, { 7600, 0, 0 } },
3862     { 0x6001, { 0x400, DFF_Prop_adjustValue, 10800 } },
3863     { 0xa000, { 0x400, 0, 0x401 } },
3864     { 0x4000, { 10800, 0x402, 0 } },
3865     { 0x8000, { 10800, 0, 0x402 } }
3866 };
3867 static const SvxMSDffTextRectangles mso_sptSeal4TextRect[] =
3868 {
3869     { { 4 MSO_I, 4 MSO_I }, { 3 MSO_I, 3 MSO_I } }
3870 };
3871 static const SvxMSDffHandle mso_sptSealHandle[] =
3872 {
3873     {   MSDFF_HANDLE_FLAGS_RANGE,
3874         0x100, 10800, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
3875 };
3876 static const mso_CustomShape msoSeal4 =
3877 {
3878     (SvxMSDffVertPair*)mso_sptSeal4Vert, sizeof( mso_sptSeal4Vert ) / sizeof( SvxMSDffVertPair ),
3879     NULL, 0,
3880     (SvxMSDffCalculationData*)mso_sptSeal4Calc, sizeof( mso_sptSeal4Calc ) / sizeof( SvxMSDffCalculationData ),
3881     (sal_Int32*)mso_sptDefault8100,
3882     (SvxMSDffTextRectangles*)mso_sptSeal4TextRect, sizeof( mso_sptSeal4TextRect ) / sizeof( SvxMSDffTextRectangles ),
3883     21600, 21600,
3884     0x80000000, 0x80000000,
3885     NULL, 0,
3886     (SvxMSDffHandle*)mso_sptSealHandle, sizeof( mso_sptSealHandle ) / sizeof( SvxMSDffHandle )      // handles
3887 };
3888 
3889 static const SvxMSDffVertPair mso_sptStarVert[] =
3890 {
3891     { 10797, 0 }, { 8278, 8256 }, { 0, 8256 }, { 6722, 13405 },
3892     { 4198, 21600 }, { 10797, 16580 }, { 17401, 21600 }, { 14878, 13405 },
3893     { 21600, 8256 }, { 13321, 8256 }, { 10797, 0 }
3894 };
3895 static const SvxMSDffTextRectangles mso_sptStarTextRect[] =
3896 {
3897     { { 6722, 8256 }, { 14878, 15460 } }
3898 };
3899 static const mso_CustomShape msoStar =
3900 {
3901     (SvxMSDffVertPair*)mso_sptStarVert, sizeof( mso_sptStarVert ) / sizeof( SvxMSDffVertPair ),
3902     NULL, 0,
3903     NULL, 0,
3904     NULL,
3905     (SvxMSDffTextRectangles*)mso_sptStarTextRect, sizeof( mso_sptStarTextRect ) / sizeof( SvxMSDffTextRectangles ),
3906     21600, 21600,
3907     0x80000000, 0x80000000,
3908     NULL, 0,
3909     NULL, 0     // handles
3910 };
3911 
3912 static const SvxMSDffCalculationData mso_sptSeal24Calc[] =
3913 {
3914     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 0x00
3915     { 0x2081, { 0x400, 10800, 315 } },              // 0x01 ( textframe )
3916     { 0x2082, { 0x400, 10800, 315 } },              // 0x02
3917     { 0x2081, { 0x400, 10800, 135 } },              // 0x03
3918     { 0x2082, { 0x400, 10800, 135 } },              // 0x04
3919     { 0x0081, { 0,   10800, 0 } },
3920     { 0x0082, { 0,   10800, 0 } },
3921     { 0x2081, { 0x400, 10800, 7 } },
3922     { 0x2082, { 0x400, 10800, 7 } },
3923     { 0x0081, { 0,   10800, 15 } },
3924     { 0x0082, { 0,   10800, 15 } },
3925     { 0x2081, { 0x400, 10800, 22 } },
3926     { 0x2082, { 0x400, 10800, 22 } },
3927     { 0x0081, { 0,   10800, 30 } },
3928     { 0x0082, { 0,   10800, 30 } },
3929     { 0x2081, { 0x400, 10800, 37 } },
3930     { 0x2082, { 0x400, 10800, 37 } },
3931     { 0x0081, { 0,   10800, 45 } },
3932     { 0x0082, { 0,   10800, 45 } },
3933     { 0x2081, { 0x400, 10800, 52 } },
3934     { 0x2082, { 0x400, 10800, 52 } },
3935     { 0x0081, { 0,   10800, 60 } },
3936     { 0x0082, { 0,   10800, 60 } },
3937     { 0x2081, { 0x400, 10800, 67 } },
3938     { 0x2082, { 0x400, 10800, 67 } },
3939     { 0x0081, { 0,   10800, 75 } },
3940     { 0x0082, { 0,   10800, 75 } },
3941     { 0x2081, { 0x400, 10800, 82 } },
3942     { 0x2082, { 0x400, 10800, 82 } },
3943     { 0x0081, { 0,   10800, 90 } },
3944     { 0x0082, { 0,   10800, 90 } },
3945     { 0x2081, { 0x400, 10800, 97 } },
3946     { 0x2082, { 0x400, 10800, 97 } },
3947     { 0x0081, { 0,   10800, 105 } },
3948     { 0x0082, { 0,   10800, 105 } },
3949     { 0x2081, { 0x400, 10800, 112 } },
3950     { 0x2082, { 0x400, 10800, 112 } },
3951     { 0x0081, { 0,   10800, 120 } },
3952     { 0x0082, { 0,   10800, 120 } },
3953     { 0x2081, { 0x400, 10800, 127 } },
3954     { 0x2082, { 0x400, 10800, 127 } },
3955     { 0x0081, { 0,   10800, 135 } },
3956     { 0x0082, { 0,   10800, 135 } },
3957     { 0x2081, { 0x400, 10800, 142 } },
3958     { 0x2082, { 0x400, 10800, 142 } },
3959     { 0x0081, { 0,   10800, 150 } },
3960     { 0x0082, { 0,   10800, 150 } },
3961     { 0x2081, { 0x400, 10800, 157 } },
3962     { 0x2082, { 0x400, 10800, 157 } },
3963     { 0x0081, { 0,   10800, 165 } },
3964     { 0x0082, { 0,   10800, 165 } },
3965     { 0x2081, { 0x400, 10800, 172 } },
3966     { 0x2082, { 0x400, 10800, 172 } },
3967     { 0x0081, { 0,   10800, 180 } },
3968     { 0x0082, { 0,   10800, 180 } },
3969     { 0x2081, { 0x400, 10800, 187 } },
3970     { 0x2082, { 0x400, 10800, 187 } },
3971     { 0x0081, { 0,   10800, 195 } },
3972     { 0x0082, { 0,   10800, 195 } },
3973     { 0x2081, { 0x400, 10800, 202 } },
3974     { 0x2082, { 0x400, 10800, 202 } },
3975     { 0x0081, { 0,   10800, 210 } },
3976     { 0x0082, { 0,   10800, 210 } },
3977     { 0x2081, { 0x400, 10800, 217 } },
3978     { 0x2082, { 0x400, 10800, 217 } },
3979     { 0x0081, { 0,   10800, 225 } },
3980     { 0x0082, { 0,   10800, 225 } },
3981     { 0x2081, { 0x400, 10800, 232 } },
3982     { 0x2082, { 0x400, 10800, 232 } },
3983     { 0x0081, { 0,   10800, 240 } },
3984     { 0x0082, { 0,   10800, 240 } },
3985     { 0x2081, { 0x400, 10800, 247 } },
3986     { 0x2082, { 0x400, 10800, 247 } },
3987     { 0x0081, { 0,   10800, 255 } },
3988     { 0x0082, { 0,   10800, 255 } },
3989     { 0x2081, { 0x400, 10800, 262 } },
3990     { 0x2082, { 0x400, 10800, 262 } },
3991     { 0x0081, { 0,   10800, 270 } },
3992     { 0x0082, { 0,   10800, 270 } },
3993     { 0x2081, { 0x400, 10800, 277 } },
3994     { 0x2082, { 0x400, 10800, 277 } },
3995     { 0x0081, { 0,   10800, 285 } },
3996     { 0x0082, { 0,   10800, 285 } },
3997     { 0x2081, { 0x400, 10800, 292 } },
3998     { 0x2082, { 0x400, 10800, 292 } },
3999     { 0x0081, { 0,   10800, 300 } },
4000     { 0x0082, { 0,   10800, 300 } },
4001     { 0x2081, { 0x400, 10800, 307 } },
4002     { 0x2082, { 0x400, 10800, 307 } },
4003     { 0x0081, { 0,   10800, 315 } },
4004     { 0x0082, { 0,   10800, 315 } },
4005     { 0x2081, { 0x400, 10800, 322 } },
4006     { 0x2082, { 0x400, 10800, 322 } },
4007     { 0x0081, { 0,   10800, 330 } },
4008     { 0x0082, { 0,   10800, 330 } },
4009     { 0x2081, { 0x400, 10800, 337 } },
4010     { 0x2082, { 0x400, 10800, 337 } },
4011     { 0x0081, { 0,   10800, 345 } },
4012     { 0x0082, { 0,   10800, 345 } },
4013     { 0x2081, { 0x400, 10800, 352 } },
4014     { 0x2082, { 0x400, 10800, 352 } }
4015 };
4016 static const SvxMSDffVertPair mso_sptSeal8Vert[] =  // adj value 0 -> 10800
4017 {
4018     { 5 MSO_I, 6 MSO_I }, { 11 MSO_I, 12 MSO_I }, { 17 MSO_I, 18 MSO_I }, { 23 MSO_I, 24 MSO_I },
4019     { 29 MSO_I, 30 MSO_I }, { 35 MSO_I, 36 MSO_I }, { 41 MSO_I, 42 MSO_I }, { 47 MSO_I, 48 MSO_I },
4020     { 53 MSO_I, 54 MSO_I }, { 59 MSO_I, 60 MSO_I }, { 65 MSO_I, 66 MSO_I }, { 71 MSO_I, 72 MSO_I },
4021     { 77 MSO_I, 78 MSO_I }, { 83 MSO_I, 84 MSO_I }, { 89 MSO_I, 90 MSO_I }, { 95 MSO_I, 96 MSO_I },
4022     { 5 MSO_I, 6 MSO_I }
4023 };
4024 static const SvxMSDffTextRectangles mso_sptSealTextRect[] =
4025 {
4026     { { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 4 MSO_I } }
4027 };
4028 static const mso_CustomShape msoSeal8 =
4029 {
4030     (SvxMSDffVertPair*)mso_sptSeal8Vert, sizeof( mso_sptSeal8Vert ) / sizeof( SvxMSDffVertPair ),
4031     NULL, 0,
4032     (SvxMSDffCalculationData*)mso_sptSeal24Calc, sizeof( mso_sptSeal24Calc ) / sizeof( SvxMSDffCalculationData ),
4033     (sal_Int32*)mso_sptDefault2500,
4034     (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
4035     21600, 21600,
4036     0x80000000, 0x80000000,
4037     NULL, 0,
4038     (SvxMSDffHandle*)mso_sptSealHandle, sizeof( mso_sptSealHandle ) / sizeof( SvxMSDffHandle )      // handles
4039 };
4040 static const SvxMSDffVertPair mso_sptSeal16Vert[] = // adj value 0 -> 10800
4041 {
4042     { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
4043     { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
4044     { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
4045     { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
4046     { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
4047     { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
4048     { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
4049     { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
4050     { 0x05 MSO_I, 0x06 MSO_I }
4051 };
4052 static const SvxMSDffCalculationData mso_sptSeal16Calc[] =
4053 {
4054     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 0x00
4055     { 0x2081, { 0x400, 10800, 315 } },              // 0x01 ( textframe )
4056     { 0x2082, { 0x400, 10800, 315 } },              // 0x02
4057     { 0x2081, { 0x400, 10800, 135 } },              // 0x03
4058     { 0x2082, { 0x400, 10800, 135 } },              // 0x04
4059     { 0x0081, { 0,   10800, 0 } },
4060     { 0x0082, { 0,   10800, 0 } },
4061     { 0x2081, { 0x400, 10800, 11 } },
4062     { 0x2082, { 0x400, 10800, 11 } },
4063     { 0x0081, { 0,   10800, 22 } },
4064     { 0x0082, { 0,   10800, 22 } },
4065     { 0x2081, { 0x400, 10800, 33 } },
4066     { 0x2082, { 0x400, 10800, 33 } },
4067     { 0x0081, { 0,   10800, 45 } },
4068     { 0x0082, { 0,   10800, 45 } },
4069     { 0x2081, { 0x400, 10800, 56 } },
4070     { 0x2082, { 0x400, 10800, 56 } },
4071     { 0x0081, { 0,   10800, 67 } },
4072     { 0x0082, { 0,   10800, 67 } },
4073     { 0x2081, { 0x400, 10800, 78 } },
4074     { 0x2082, { 0x400, 10800, 78 } },
4075     { 0x0081, { 0,   10800, 90 } },
4076     { 0x0082, { 0,   10800, 90 } },
4077     { 0x2081, { 0x400, 10800, 101 } },
4078     { 0x2082, { 0x400, 10800, 101 } },
4079     { 0x0081, { 0,   10800, 112 } },
4080     { 0x0082, { 0,   10800, 112 } },
4081     { 0x2081, { 0x400, 10800, 123 } },
4082     { 0x2082, { 0x400, 10800, 123 } },
4083     { 0x0081, { 0,   10800, 135 } },
4084     { 0x0082, { 0,   10800, 135 } },
4085     { 0x2081, { 0x400, 10800, 146 } },
4086     { 0x2082, { 0x400, 10800, 146 } },
4087     { 0x0081, { 0,   10800, 157 } },
4088     { 0x0082, { 0,   10800, 157 } },
4089     { 0x2081, { 0x400, 10800, 168 } },
4090     { 0x2082, { 0x400, 10800, 168 } },
4091     { 0x0081, { 0,   10800, 180 } },
4092     { 0x0082, { 0,   10800, 180 } },
4093     { 0x2081, { 0x400, 10800, 191 } },
4094     { 0x2082, { 0x400, 10800, 191 } },
4095     { 0x0081, { 0,   10800, 202 } },
4096     { 0x0082, { 0,   10800, 202 } },
4097     { 0x2081, { 0x400, 10800, 213 } },
4098     { 0x2082, { 0x400, 10800, 213 } },
4099     { 0x0081, { 0,   10800, 225 } },
4100     { 0x0082, { 0,   10800, 225 } },
4101     { 0x2081, { 0x400, 10800, 236 } },
4102     { 0x2082, { 0x400, 10800, 236 } },
4103     { 0x0081, { 0,   10800, 247 } },
4104     { 0x0082, { 0,   10800, 247 } },
4105     { 0x2081, { 0x400, 10800, 258 } },
4106     { 0x2082, { 0x400, 10800, 258 } },
4107     { 0x0081, { 0,   10800, 270 } },
4108     { 0x0082, { 0,   10800, 270 } },
4109     { 0x2081, { 0x400, 10800, 281 } },
4110     { 0x2082, { 0x400, 10800, 281 } },
4111     { 0x0081, { 0,   10800, 292 } },
4112     { 0x0082, { 0,   10800, 292 } },
4113     { 0x2081, { 0x400, 10800, 303 } },
4114     { 0x2082, { 0x400, 10800, 303 } },
4115     { 0x0081, { 0,   10800, 315 } },
4116     { 0x0082, { 0,   10800, 315 } },
4117     { 0x2081, { 0x400, 10800, 326 } },
4118     { 0x2082, { 0x400, 10800, 326 } },
4119     { 0x0081, { 0,   10800, 337 } },
4120     { 0x0082, { 0,   10800, 337 } },
4121     { 0x2081, { 0x400, 10800, 348 } },
4122     { 0x2082, { 0x400, 10800, 348 } }
4123 };
4124 static const mso_CustomShape msoSeal16 =
4125 {
4126     (SvxMSDffVertPair*)mso_sptSeal16Vert, sizeof( mso_sptSeal16Vert ) / sizeof( SvxMSDffVertPair ),
4127     NULL, 0,
4128     (SvxMSDffCalculationData*)mso_sptSeal16Calc, sizeof( mso_sptSeal16Calc ) / sizeof( SvxMSDffCalculationData ),
4129     (sal_Int32*)mso_sptDefault2500,
4130     (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
4131     21600, 21600,
4132     0x80000000, 0x80000000,
4133     NULL, 0,
4134     (SvxMSDffHandle*)mso_sptSealHandle, sizeof( mso_sptSealHandle ) / sizeof( SvxMSDffHandle )      // handles
4135 };
4136 static const SvxMSDffVertPair mso_sptSeal24Vert[] =
4137 {
4138     { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
4139     { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
4140     { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
4141     { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
4142     { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
4143     { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
4144     { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
4145     { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
4146     { 0x45 MSO_I, 0x46 MSO_I }, { 0x47 MSO_I, 0x48 MSO_I }, { 0x49 MSO_I, 0x4a MSO_I }, { 0x4b MSO_I, 0x4c MSO_I },
4147     { 0x4d MSO_I, 0x4e MSO_I }, { 0x4f MSO_I, 0x50 MSO_I }, { 0x51 MSO_I, 0x52 MSO_I }, { 0x53 MSO_I, 0x54 MSO_I },
4148     { 0x55 MSO_I, 0x56 MSO_I }, { 0x57 MSO_I, 0x58 MSO_I }, { 0x59 MSO_I, 0x5a MSO_I }, { 0x5b MSO_I, 0x5c MSO_I },
4149     { 0x5d MSO_I, 0x5e MSO_I }, { 0x5f MSO_I, 0x60 MSO_I }, { 0x61 MSO_I, 0x62 MSO_I }, { 0x63 MSO_I, 0x64 MSO_I },
4150     { 0x05 MSO_I, 0x06 MSO_I }
4151 };
4152 static const mso_CustomShape msoSeal24 =
4153 {
4154     (SvxMSDffVertPair*)mso_sptSeal24Vert, sizeof( mso_sptSeal24Vert ) / sizeof( SvxMSDffVertPair ),
4155     NULL, 0,
4156     (SvxMSDffCalculationData*)mso_sptSeal24Calc, sizeof( mso_sptSeal24Calc ) / sizeof( SvxMSDffCalculationData ),
4157     (sal_Int32*)mso_sptDefault2500,
4158     (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
4159     21600, 21600,
4160     0x80000000, 0x80000000,
4161     NULL, 0,
4162     (SvxMSDffHandle*)mso_sptSealHandle, sizeof( mso_sptSealHandle ) / sizeof( SvxMSDffHandle )      // handles
4163 };
4164 static const SvxMSDffCalculationData mso_sptSeal32Calc[] =
4165 {
4166     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 0x00
4167     { 0x2081, { 0x400, 10800, 315 } },              // 0x01 ( textframe )
4168     { 0x2082, { 0x400, 10800, 315 } },              // 0x02
4169     { 0x2081, { 0x400, 10800, 135 } },              // 0x03
4170     { 0x2082, { 0x400, 10800, 135 } },              // 0x04
4171     { 0x0081, { 0,   10800, 0 } },
4172     { 0x0082, { 0,   10800, 0 } },
4173     { 0x2081, { 0x400, 10800, 5 } },
4174     { 0x2082, { 0x400, 10800, 5 } },
4175     { 0x0081, { 0,   10800, 11 } },
4176     { 0x0082, { 0,   10800, 11 } },
4177     { 0x2081, { 0x400, 10800, 16 } },
4178     { 0x2082, { 0x400, 10800, 16 } },
4179     { 0x0081, { 0,   10800, 22 } },
4180     { 0x0082, { 0,   10800, 22 } },
4181     { 0x2081, { 0x400, 10800, 28 } },
4182     { 0x2082, { 0x400, 10800, 28 } },
4183     { 0x0081, { 0,   10800, 33 } },
4184     { 0x0082, { 0,   10800, 33 } },
4185     { 0x2081, { 0x400, 10800, 39 } },
4186     { 0x2082, { 0x400, 10800, 39 } },
4187     { 0x0081, { 0,   10800, 45 } },
4188     { 0x0082, { 0,   10800, 45 } },
4189     { 0x2081, { 0x400, 10800, 50 } },
4190     { 0x2082, { 0x400, 10800, 50 } },
4191     { 0x0081, { 0,   10800, 56 } },
4192     { 0x0082, { 0,   10800, 56 } },
4193     { 0x2081, { 0x400, 10800, 61 } },
4194     { 0x2082, { 0x400, 10800, 61 } },
4195     { 0x0081, { 0,   10800, 67 } },
4196     { 0x0082, { 0,   10800, 67 } },
4197     { 0x2081, { 0x400, 10800, 73 } },
4198     { 0x2082, { 0x400, 10800, 73 } },
4199     { 0x0081, { 0,   10800, 78 } },
4200     { 0x0082, { 0,   10800, 78 } },
4201     { 0x2081, { 0x400, 10800, 84 } },
4202     { 0x2082, { 0x400, 10800, 84 } },
4203     { 0x0081, { 0,   10800, 90 } },
4204     { 0x0082, { 0,   10800, 90 } },
4205     { 0x2081, { 0x400, 10800, 95 } },
4206     { 0x2082, { 0x400, 10800, 95 } },
4207     { 0x0081, { 0,   10800, 101 } },
4208     { 0x0082, { 0,   10800, 101 } },
4209     { 0x2081, { 0x400, 10800, 106 } },
4210     { 0x2082, { 0x400, 10800, 106 } },
4211     { 0x0081, { 0,   10800, 112 } },
4212     { 0x0082, { 0,   10800, 112 } },
4213     { 0x2081, { 0x400, 10800, 118 } },
4214     { 0x2082, { 0x400, 10800, 118 } },
4215     { 0x0081, { 0,   10800, 123 } },
4216     { 0x0082, { 0,   10800, 123 } },
4217     { 0x2081, { 0x400, 10800, 129 } },
4218     { 0x2082, { 0x400, 10800, 129 } },
4219     { 0x0081, { 0,   10800, 135 } },
4220     { 0x0082, { 0,   10800, 135 } },
4221     { 0x2081, { 0x400, 10800, 140 } },
4222     { 0x2082, { 0x400, 10800, 140 } },
4223     { 0x0081, { 0,   10800, 146 } },
4224     { 0x0082, { 0,   10800, 146 } },
4225     { 0x2081, { 0x400, 10800, 151 } },
4226     { 0x2082, { 0x400, 10800, 151 } },
4227     { 0x0081, { 0,   10800, 157 } },
4228     { 0x0082, { 0,   10800, 157 } },
4229     { 0x2081, { 0x400, 10800, 163 } },
4230     { 0x2082, { 0x400, 10800, 163 } },
4231     { 0x0081, { 0,   10800, 168 } },
4232     { 0x0082, { 0,   10800, 168 } },
4233     { 0x2081, { 0x400, 10800, 174 } },
4234     { 0x2082, { 0x400, 10800, 174 } },
4235     { 0x0081, { 0,   10800, 180 } },
4236     { 0x0082, { 0,   10800, 180 } },
4237     { 0x2081, { 0x400, 10800, 185 } },
4238     { 0x2082, { 0x400, 10800, 185 } },
4239     { 0x0081, { 0,   10800, 191 } },
4240     { 0x0082, { 0,   10800, 191 } },
4241     { 0x2081, { 0x400, 10800, 196 } },
4242     { 0x2082, { 0x400, 10800, 196 } },
4243     { 0x0081, { 0,   10800, 202 } },
4244     { 0x0082, { 0,   10800, 202 } },
4245     { 0x2081, { 0x400, 10800, 208 } },
4246     { 0x2082, { 0x400, 10800, 208 } },
4247     { 0x0081, { 0,   10800, 213 } },
4248     { 0x0082, { 0,   10800, 213 } },
4249     { 0x2081, { 0x400, 10800, 219 } },
4250     { 0x2082, { 0x400, 10800, 219 } },
4251     { 0x0081, { 0,   10800, 225 } },
4252     { 0x0082, { 0,   10800, 225 } },
4253     { 0x2081, { 0x400, 10800, 230 } },
4254     { 0x2082, { 0x400, 10800, 230 } },
4255     { 0x0081, { 0,   10800, 236 } },
4256     { 0x0082, { 0,   10800, 236 } },
4257     { 0x2081, { 0x400, 10800, 241 } },
4258     { 0x2082, { 0x400, 10800, 241 } },
4259     { 0x0081, { 0,   10800, 247 } },
4260     { 0x0082, { 0,   10800, 247 } },
4261     { 0x2081, { 0x400, 10800, 253 } },
4262     { 0x2082, { 0x400, 10800, 253 } },
4263     { 0x0081, { 0,   10800, 258 } },
4264     { 0x0082, { 0,   10800, 258 } },
4265     { 0x2081, { 0x400, 10800, 264 } },
4266     { 0x2082, { 0x400, 10800, 264 } },
4267     { 0x0081, { 0,   10800, 270 } },
4268     { 0x0082, { 0,   10800, 270 } },
4269     { 0x2081, { 0x400, 10800, 275 } },
4270     { 0x2082, { 0x400, 10800, 275 } },
4271     { 0x0081, { 0,   10800, 281 } },
4272     { 0x0082, { 0,   10800, 281 } },
4273     { 0x2081, { 0x400, 10800, 286 } },
4274     { 0x2082, { 0x400, 10800, 286 } },
4275     { 0x0081, { 0,   10800, 292 } },
4276     { 0x0082, { 0,   10800, 292 } },
4277     { 0x2081, { 0x400, 10800, 298 } },
4278     { 0x2082, { 0x400, 10800, 298 } },
4279     { 0x0081, { 0,   10800, 303 } },
4280     { 0x0082, { 0,   10800, 303 } },
4281     { 0x2081, { 0x400, 10800, 309 } },
4282     { 0x2082, { 0x400, 10800, 309 } },
4283     { 0x0081, { 0,   10800, 315 } },
4284     { 0x0082, { 0,   10800, 315 } },
4285     { 0x2081, { 0x400, 10800, 320 } },
4286     { 0x2082, { 0x400, 10800, 320 } },
4287     { 0x0081, { 0,   10800, 326 } },
4288     { 0x0082, { 0,   10800, 326 } },
4289     { 0x2081, { 0x400, 10800, 331 } },
4290     { 0x2082, { 0x400, 10800, 331 } },
4291     { 0x0081, { 0,   10800, 337 } },
4292     { 0x0082, { 0,   10800, 337 } },
4293     { 0x2081, { 0x400, 10800, 343 } },
4294     { 0x2082, { 0x400, 10800, 343 } },
4295     { 0x0081, { 0,   10800, 348 } },
4296     { 0x0082, { 0,   10800, 348 } },
4297     { 0x2081, { 0x400, 10800, 354 } },
4298     { 0x2082, { 0x400, 10800, 354 } }
4299 };
4300 static const SvxMSDffVertPair mso_sptSeal32Vert[] =
4301 {
4302     { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
4303     { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
4304     { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
4305     { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
4306     { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
4307     { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
4308     { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
4309     { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
4310     { 0x45 MSO_I, 0x46 MSO_I }, { 0x47 MSO_I, 0x48 MSO_I }, { 0x49 MSO_I, 0x4a MSO_I }, { 0x4b MSO_I, 0x4c MSO_I },
4311     { 0x4d MSO_I, 0x4e MSO_I }, { 0x4f MSO_I, 0x50 MSO_I }, { 0x51 MSO_I, 0x52 MSO_I }, { 0x53 MSO_I, 0x54 MSO_I },
4312     { 0x55 MSO_I, 0x56 MSO_I }, { 0x57 MSO_I, 0x58 MSO_I }, { 0x59 MSO_I, 0x5a MSO_I }, { 0x5b MSO_I, 0x5c MSO_I },
4313     { 0x5d MSO_I, 0x5e MSO_I }, { 0x5f MSO_I, 0x60 MSO_I }, { 0x61 MSO_I, 0x62 MSO_I }, { 0x63 MSO_I, 0x64 MSO_I },
4314     { 0x65 MSO_I, 0x66 MSO_I }, { 0x67 MSO_I, 0x68 MSO_I }, { 0x69 MSO_I, 0x6a MSO_I }, { 0x6b MSO_I, 0x6c MSO_I },
4315     { 0x6d MSO_I, 0x6e MSO_I }, { 0x6f MSO_I, 0x70 MSO_I }, { 0x71 MSO_I, 0x72 MSO_I }, { 0x73 MSO_I, 0x74 MSO_I },
4316     { 0x75 MSO_I, 0x76 MSO_I }, { 0x77 MSO_I, 0x78 MSO_I }, { 0x79 MSO_I, 0x7a MSO_I }, { 0x7b MSO_I, 0x7c MSO_I },
4317     { 0x7d MSO_I, 0x7e MSO_I }, { 0x7f MSO_I, 0x80 MSO_I }, { 0x81 MSO_I, 0x82 MSO_I }, { 0x83 MSO_I, 0x84 MSO_I },
4318     { 0x05 MSO_I, 0x06 MSO_I }
4319 };
4320 static const mso_CustomShape msoSeal32 =
4321 {
4322     (SvxMSDffVertPair*)mso_sptSeal32Vert, sizeof( mso_sptSeal32Vert ) / sizeof( SvxMSDffVertPair ),
4323     NULL, 0,
4324     (SvxMSDffCalculationData*)mso_sptSeal32Calc, sizeof( mso_sptSeal32Calc ) / sizeof( SvxMSDffCalculationData ),
4325     (sal_Int32*)mso_sptDefault2500,
4326     (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
4327     21600, 21600,
4328     0x80000000, 0x80000000,
4329     NULL, 0,
4330     (SvxMSDffHandle*)mso_sptSealHandle, sizeof( mso_sptSealHandle ) / sizeof( SvxMSDffHandle )
4331 };
4332 
4333 static const SvxMSDffVertPair mso_sptRibbon2Vert[] =    // adjustment1 : x 2700  - 8100     def 5400
4334 {                                                       // adjustment2 : y 14400 - 21600    def 18900
4335     { 12 MSO_I, 1 MSO_I }, { 12 MSO_I, 13 MSO_I },                                      // pp
4336     { 12 MSO_I, 14 MSO_I }, { 15 MSO_I, 21600 }, { 16 MSO_I, 21600 },                   // ccp
4337     { 0, 21600 }, { 2750, 7 MSO_I }, { 0, 2 MSO_I }, { 0 MSO_I, 2 MSO_I },              // pppp
4338     { 0 MSO_I, 4 MSO_I },                                                               // p
4339     { 0 MSO_I, 5 MSO_I }, { 10 MSO_I, 0 }, { 11 MSO_I, 0 },                             // ccp
4340     { 17 MSO_I, 0 },                                                                    // p
4341     { 18 MSO_I, 0 }, { 19 MSO_I, 5 MSO_I }, { 19 MSO_I, 4 MSO_I },                      // ccp
4342     { 19 MSO_I, 2 MSO_I }, { 21600, 2 MSO_I }, { 18850, 7 MSO_I }, { 21600, 21600 },    // pppp
4343     { 20 MSO_I, 21600 },                                                                // p
4344     { 21 MSO_I, 21600 }, { 22 MSO_I, 14 MSO_I }, { 22 MSO_I, 13 MSO_I },                // ccp
4345     { 22 MSO_I, 1 MSO_I }, { 12 MSO_I, 1 MSO_I }, { 12 MSO_I, 13 MSO_I },               // ppp
4346     { 12 MSO_I, 23 MSO_I }, { 15 MSO_I, 24 MSO_I }, { 16 MSO_I, 24 MSO_I },             // ccp
4347     { 11 MSO_I, 24 MSO_I },                                                             // p
4348     { 10 MSO_I, 24 MSO_I }, { 0 MSO_I, 26 MSO_I }, { 0 MSO_I, 25 MSO_I },               // ccp
4349     { 0 MSO_I, 27 MSO_I }, { 10 MSO_I, 1 MSO_I }, { 11 MSO_I, 1 MSO_I },                // ccp
4350 
4351     { 22 MSO_I, 1 MSO_I }, { 22 MSO_I, 13 MSO_I },                                      // pp
4352     { 22 MSO_I, 23 MSO_I }, { 21 MSO_I, 24 MSO_I }, { 20 MSO_I, 24 MSO_I },             // ccp
4353     { 17 MSO_I, 24 MSO_I },                                                             // p
4354     { 18 MSO_I, 24 MSO_I }, { 19 MSO_I, 26 MSO_I }, { 19 MSO_I, 25 MSO_I },             // ccp
4355     { 19 MSO_I, 27 MSO_I }, { 18 MSO_I, 1 MSO_I }, { 17 MSO_I, 1 MSO_I },               // ccp
4356 
4357     { 0 MSO_I, 25 MSO_I }, { 0 MSO_I, 2 MSO_I },                                        // pp
4358 
4359     { 19 MSO_I, 25 MSO_I }, { 19 MSO_I, 2 MSO_I }                                       // pp
4360 };
4361 static const sal_uInt16 mso_sptRibbon2Segm[] =
4362 {
4363     0x4000, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x6001, 0x8000,
4364     0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000,
4365     0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000,
4366     0x4000, 0x0001, 0x8000,
4367     0x4000, 0x0001, 0x8000
4368 };
4369 static const SvxMSDffCalculationData mso_sptRibbon2Calc[] =
4370 {
4371     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },             // 00
4372     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },            // 01
4373     { 0x8000, { 21600, 0, 0x401 } },                        // 02
4374     { 0x2001, { 0x402, 1, 2 } },                            // 03
4375     { 0x2001, { 0x403, 1, 2 } },                            // 04
4376     { 0x2001, { 0x404, 1, 2 } },                            // 05
4377     { 0x2001, { 0x401, 1, 2 } },                            // 06
4378     { 0x8000, { 21600, 0, 0x406 } },                        // 07
4379     { 0x0000, { 420, 0, 0 } },                              // 08
4380     { 0x2001, { 0x408, 2, 1 } },                            // 09
4381     { 0x6000, { 0x400, 0x408, 0 } },                        // 10
4382     { 0x6000, { 0x400, 0x409, 0 } },                        // 11
4383     { 0x2000, { 0x400, 2700, 0 } },                         // 12
4384     { 0x8000, { 21600, 0, 0x404 } },                        // 13
4385     { 0x8000, { 21600, 0, 0x405 } },                        // 14
4386     { 0xa000, { 0x40c, 0, 0x408 } },                        // 15
4387     { 0xa000, { 0x40c, 0, 0x409 } },                        // 16
4388 
4389     { 0x8000, { 21600, 0, 0x40b } },                        // 17
4390     { 0x8000, { 21600, 0, 0x40a } },                        // 18
4391     { 0x8000, { 21600, 0, 0x400 } },                        // 19
4392     { 0x8000, { 21600, 0, 0x410 } },                        // 20
4393     { 0x8000, { 21600, 0, 0x40f } },                        // 21
4394     { 0x8000, { 21600, 0, 0x40c } },                        // 22
4395 
4396     { 0xa000, { 0x40d, 0, 0x405 } },                        // 23
4397     { 0x6000, { 0x401, 0x403, 0 } },                        // 24
4398     { 0x6000, { 0x401, 0x404, 0 } },                        // 25
4399     { 0x6000, { 0x419, 0x405, 0 } },                        // 26
4400     { 0xa000, { 0x419, 0, 0x405 } }                         // 27
4401 };
4402 static const sal_Int32 mso_sptRibbon2Default[] =
4403 {
4404     2, 5400, 18900
4405 };
4406 static const SvxMSDffTextRectangles mso_sptRibbon2TextRect[] =
4407 {
4408     { { 0 MSO_I, 0 }, { 19 MSO_I, 1 MSO_I } }
4409 };
4410 static const SvxMSDffHandle mso_sptRibbon2Handle[] =
4411 {
4412     {   MSDFF_HANDLE_FLAGS_RANGE,
4413         0x100, 0, 10800, 10800, 2700, 8100, 0x80000000, 0x7fffffff },
4414     {   MSDFF_HANDLE_FLAGS_RANGE,
4415         10800, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 14400, 21600 }
4416 };
4417 static const mso_CustomShape msoRibbon2 =
4418 {
4419     (SvxMSDffVertPair*)mso_sptRibbon2Vert, sizeof( mso_sptRibbon2Vert ) / sizeof( SvxMSDffVertPair ),
4420     (sal_uInt16*)mso_sptRibbon2Segm, sizeof( mso_sptRibbon2Segm ) >> 1,
4421     (SvxMSDffCalculationData*)mso_sptRibbon2Calc, sizeof( mso_sptRibbon2Calc ) / sizeof( SvxMSDffCalculationData ),
4422     (sal_Int32*)mso_sptRibbon2Default,
4423     (SvxMSDffTextRectangles*)mso_sptRibbon2TextRect, sizeof( mso_sptRibbon2TextRect ) / sizeof( SvxMSDffTextRectangles ),
4424     21600, 21600,
4425     0x80000000, 0x80000000,
4426     NULL, 0,
4427     (SvxMSDffHandle*)mso_sptRibbon2Handle, sizeof( mso_sptRibbon2Handle ) / sizeof( SvxMSDffHandle )
4428 };
4429 
4430 static const SvxMSDffVertPair mso_sptRibbonVert[] =
4431 {
4432     { 0, 0 }, { 3 MSO_I, 0 },
4433     { 4 MSO_I, 11 MSO_I }, { 4 MSO_I, 10 MSO_I }, { 5 MSO_I, 10 MSO_I }, { 5 MSO_I, 11 MSO_I },
4434     { 6 MSO_I, 0 }, { 21600, 0 }, { 18 MSO_I, 14 MSO_I }, { 21600, 15 MSO_I }, { 9 MSO_I, 15 MSO_I }, { 9 MSO_I, 16 MSO_I }, { 8 MSO_I, 21600 }, { 1 MSO_I, 21600 },
4435     { 0 MSO_I, 16 MSO_I }, { 0 MSO_I, 15 MSO_I }, { 0, 15 MSO_I }, { 2700, 14 MSO_I },
4436 
4437     { 4 MSO_I, 11 MSO_I },
4438     { 3 MSO_I, 12 MSO_I }, { 1 MSO_I, 12 MSO_I },
4439     { 0 MSO_I, 13 MSO_I }, { 1 MSO_I, 10 MSO_I }, { 4 MSO_I, 10 MSO_I },
4440     { 5 MSO_I, 11 MSO_I },
4441     { 6 MSO_I, 12 MSO_I }, { 8 MSO_I, 12 MSO_I },
4442     { 9 MSO_I, 13 MSO_I }, { 8 MSO_I, 10 MSO_I }, { 5 MSO_I, 10 MSO_I },
4443     { 0 MSO_I, 13 MSO_I },
4444     { 0 MSO_I, 15 MSO_I },
4445     { 9 MSO_I, 13 MSO_I },
4446     { 9 MSO_I, 15 MSO_I }
4447 };
4448 static const sal_uInt16 mso_sptRibbonSegm[] =
4449 {
4450     0x4000, 0x0001, 0xa701, 0x0003, 0xa801, 0x0005, 0xa801, 0x0001, 0xa701, 0x0003, 0x6000, 0x8000,
4451     0x4000, 0xaa00, 0xa801, 0x0001, 0xa702, 0x0001, 0x8000,
4452     0x4000, 0xaa00, 0xa801, 0x0001, 0xa702, 0x0001, 0x8000,
4453     0x4000, 0xaa00, 0x0001, 0x8000,
4454     0x4000, 0xaa00, 0x0001, 0x8000
4455 };
4456 static const SvxMSDffCalculationData mso_sptRibbonCalc[] =
4457 {
4458     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },             // 00
4459     { 0x2000, { 0x400, 675, 0 } },                          // 01
4460     { 0x2000, { 0x401, 675, 0 } },                          // 02
4461     { 0x2000, { 0x402, 675, 0 } },                          // 03
4462     { 0x2000, { 0x403, 675, 0 } },                          // 04
4463     { 0x8000, { 21600, 0, 0x404 } },                        // 05
4464     { 0x8000, { 21600, 0, 0x403 } },                        // 06
4465     { 0x8000, { 21600, 0, 0x402 } },                        // 07
4466     { 0x8000, { 21600, 0, 0x401 } },                        // 08
4467     { 0x8000, { 21600, 0, 0x400 } },                        // 09
4468     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },            // 10
4469     { 0x2001, { 0x40a, 1, 4 } },                            // 11
4470     { 0x2001, { 0x40b, 2, 1 } },                            // 12
4471     { 0x2001, { 0x40b, 3, 1 } },                            // 13
4472     { 0x8000, { 10800, 0, 0x40c } },                        // 14
4473     { 0x8000, { 21600, 0, 0x40a } },                        // 15
4474     { 0x8000, { 21600, 0, 0x40b } },                        // 16
4475     { 0x0001, { 21600, 1, 2 } },                            // 17
4476     { 0x0000, { 21600, 0, 2700 } },                         // 18
4477     { 0x2000, { 0x411, 0, 2700 } }                          // 19
4478 };
4479 static const sal_Int32 mso_sptRibbonDefault[] =
4480 {
4481     2, 5400, 2700
4482 };
4483 static const SvxMSDffTextRectangles mso_sptRibbonTextRect[] =
4484 {
4485     { { 0 MSO_I, 10 MSO_I }, { 9 MSO_I, 21600 } }
4486 };
4487 static const SvxMSDffVertPair mso_sptRibbonGluePoints[] =
4488 {
4489     { 17 MSO_I, 10 MSO_I }, { 2700, 14 MSO_I }, { 17 MSO_I, 21600 }, { 18 MSO_I, 14 MSO_I }
4490 };
4491 static const SvxMSDffHandle mso_sptRibbonHandle[] =
4492 {
4493     {   MSDFF_HANDLE_FLAGS_RANGE,
4494         0x100, 0, 10800, 10800, 2700, 8100, 0x80000000, 0x7fffffff },
4495     {   MSDFF_HANDLE_FLAGS_RANGE,
4496         10800, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0, 7200 }
4497 };
4498 static const mso_CustomShape msoRibbon =
4499 {
4500     (SvxMSDffVertPair*)mso_sptRibbonVert, sizeof( mso_sptRibbonVert ) / sizeof( SvxMSDffVertPair ),
4501     (sal_uInt16*)mso_sptRibbonSegm, sizeof( mso_sptRibbonSegm ) >> 1,
4502     (SvxMSDffCalculationData*)mso_sptRibbonCalc, sizeof( mso_sptRibbonCalc ) / sizeof( SvxMSDffCalculationData ),
4503     (sal_Int32*)mso_sptRibbonDefault,
4504     (SvxMSDffTextRectangles*)mso_sptRibbonTextRect, sizeof( mso_sptRibbonTextRect ) / sizeof( SvxMSDffTextRectangles ),
4505     21600, 21600,
4506     0x80000000, 0x80000000,
4507     (SvxMSDffVertPair*)mso_sptRibbonGluePoints, sizeof( mso_sptRibbonGluePoints ) / sizeof( SvxMSDffVertPair ),
4508     (SvxMSDffHandle*)mso_sptRibbonHandle, sizeof( mso_sptRibbonHandle ) / sizeof( SvxMSDffHandle )
4509 };
4510 //msosptEllipseRibbon
4511 //svg path = ar@9@38@8@37,0@27@0@26@9@13@8@4@0@25@22@25@9@38@8@37@22@26@3@27l@7@40@3,wa@9@35@8@10@3,0@21@33@9@36@8@1@21@31@20@31@9@35@8@10@20@33,,l@5@40xewr@9@36@8@1@20@31@0@32nfl@20@33ear@9@36@8@1@21@31@22@32nfl@21@33em@0@26nfl@0@32em@22@26nfl@22@32e
4512 //odp path = A ?f9 ?f38 ?f8 ?f37 0 ?f27 ?f0 ?f26 ?f9 ?f13 ?f8 ?f4 ?f0 ?f25 ?f22 ?f25 ?f9 ?f38 ?f8 ?f37 ?f22 ?f26 ?f3 ?f27 L ?f7 ?f40 ?f3 0 W ?f9 ?f35 ?f8 ?f10 ?f3 0 ?f21 ?f33 ?f9 ?f36 ?f8 ?f1 ?f21 ?f31 ?f20 ?f31 ?f9 ?f35 ?f8 ?f10 ?f20 ?f33 0 0 L ?f5 ?f40 Z N W ?f9 ?f36 ?f8 ?f1 ?f20 ?f31 ?f0 ?f32 F L ?f20 ?f33 N A ?f9 ?f36 ?f8 ?f1 ?f21 ?f31 ?f22 ?f32 F L ?f21 ?f33 N M ?f0 ?f26 F L ?f0 ?f32 N M ?f22 ?f26 F L ?f22 ?f32 N
4513 static const SvxMSDffVertPair mso_sptEllipseRibbonVert[] =
4514 {
4515     { 9 MSO_I , 38 MSO_I },
4516     { 8 MSO_I , 37 MSO_I },
4517     { 0 , 27 MSO_I },
4518     { 0 MSO_I , 26 MSO_I },
4519     { 9 MSO_I , 13 MSO_I },
4520     { 8 MSO_I , 4 MSO_I },
4521     { 0 MSO_I , 25 MSO_I },
4522     { 22 MSO_I , 25 MSO_I },
4523     { 9 MSO_I , 38 MSO_I },
4524     { 8 MSO_I , 37 MSO_I },
4525     { 22 MSO_I , 26 MSO_I },
4526     { 3 MSO_I , 27 MSO_I },
4527     { 7 MSO_I , 40 MSO_I },
4528     { 3 MSO_I , 0 },
4529     { 9 MSO_I , 35 MSO_I },
4530     { 8 MSO_I , 10 MSO_I },
4531     { 3 MSO_I , 0 },
4532     { 21 MSO_I , 33 MSO_I },
4533     { 9 MSO_I , 36 MSO_I },
4534     { 8 MSO_I , 1 MSO_I },
4535     { 21 MSO_I , 31 MSO_I },
4536     { 20 MSO_I , 31 MSO_I },
4537     { 9 MSO_I , 35 MSO_I },
4538     { 8 MSO_I , 10 MSO_I },
4539     { 20 MSO_I , 33 MSO_I },
4540     { 0 , 0 },
4541     { 5 MSO_I , 40 MSO_I },
4542     { 9 MSO_I , 36 MSO_I },
4543     { 8 MSO_I , 1 MSO_I },
4544     { 20 MSO_I , 31 MSO_I },
4545     { 0 MSO_I , 32 MSO_I },
4546     { 20 MSO_I , 33 MSO_I },
4547     { 9 MSO_I , 36 MSO_I },
4548     { 8 MSO_I , 1 MSO_I },
4549     { 21 MSO_I , 31 MSO_I },
4550     { 22 MSO_I , 32 MSO_I },
4551     { 21 MSO_I , 33 MSO_I },
4552     { 0 MSO_I , 26 MSO_I },
4553     { 0 MSO_I , 32 MSO_I },
4554     { 22 MSO_I , 26 MSO_I },
4555     { 22 MSO_I , 32 MSO_I }
4556 };
4557 
4558 static const sal_uInt16 mso_sptEllipseRibbonSegm[] =
4559 {
4560     0xa30c /*ar*/,0x0002/*l*/,0xa50c/*wa*/,0x0001/*l*/,
4561     0x6001/*x*/, 0x8000/*e*/,0xa504/*wr*/,0xaa00/*nf*/,
4562     0x0001/*l*/, 0x8000/*e*/,0xa304/*ar*/,0xaa00/*nf*/,
4563     0x0001/*l*/, 0x8000/*e*/,0x4000/*m*/,0xaa00/*nf*/,
4564     0x0001/*l*/, 0x8000/*e*/,0x4000/*m*/,0xaa00/*nf*/,
4565     0x0001/*l*/, 0x8000/*e*/
4566 };
4567 
4568 static const SvxMSDffCalculationData mso_sptEllipseRibbonCalc[] =
4569 {
4570     { 0x2000 , { DFF_Prop_adjustValue , 0 , 0 } }, //val #0
4571     { 0x2000 , { DFF_Prop_adjust2Value , 0 , 0 } }, //val #1
4572     { 0x2000 , { DFF_Prop_adjust3Value , 0 , 0 } }, //val #2
4573     { 0x2000 , { DFF_Prop_geoRight , 0 , 0 } }, //val width
4574     { 0x2000 , { DFF_Prop_geoBottom , 0 , 0 } }, //val height
4575     { 0x2001 , { DFF_Prop_geoRight , 1 , 8 } }, //prod width 1 8
4576     { 0x2001 , { DFF_Prop_geoRight , 1 , 2 } }, //prod width 1 2
4577     { 0x2001 , { DFF_Prop_geoRight , 7 , 8 } }, //prod width 7 8
4578     { 0x2001 , { DFF_Prop_geoRight , 3 , 2 } }, //prod width 3 2
4579     { 0x8000 , { 0 , 0 , 0x406 } }, //sum 0 0 @6
4580     { 0xa000 , { DFF_Prop_geoBottom , 0 , DFF_Prop_adjust3Value } }, //sum height 0 #2
4581     { 0x2001 , { 0x40a , 30573 , 4096 } }, //prod @10 30573 4096
4582     { 0x2001 , { 0x40b , 2 , 1 } }, //prod @11 2 1
4583     { 0xa000 , { DFF_Prop_geoBottom , 0 , 0x40c } }, //sum height 0 @12
4584     { 0x6000 , { 0x40b , DFF_Prop_adjust3Value , 0 } }, //sum @11 #2 0
4585     { 0xe000 , { 0x40b , DFF_Prop_geoBottom , DFF_Prop_adjust2Value } }, //sum @11 height #1
4586     { 0xa000 , { DFF_Prop_geoBottom , 0 , DFF_Prop_adjust2Value } }, //sum height 0 #1
4587     { 0x2001 , { 0x410 , 1 , 2 } }, //prod @16 1 2
4588     { 0x6000 , { 0x40b , 0x411 , 0 } }, //sum @11 @17 0
4589     { 0xe000 , { 0x40e , DFF_Prop_adjust2Value , DFF_Prop_geoBottom } }, //sum @14 #1 height
4590     { 0x6000 , { DFF_Prop_adjustValue , 0x405 , 0 } }, //sum #0 @5 0
4591     { 0xa000 , { DFF_Prop_geoRight , 0 , 0x414 } }, //sum width 0 @20
4592     { 0xa000 , { DFF_Prop_geoRight , 0 , DFF_Prop_adjustValue } }, //sum width 0 #0
4593     { 0xa000 , { 0x406 , 0 , DFF_Prop_adjustValue } }, //sum @6 0 #0
4594     { 0xe00f , { 0x417 , DFF_Prop_geoRight , 0x40b } }, //ellipse @23 width @11
4595     { 0xe000 , { 0x418 , DFF_Prop_geoBottom , 0x40b } }, //sum @24 height @11
4596     { 0xe000 , { 0x419 , 0x40b , 0x413 } }, //sum @25 @11 @19
4597     { 0xe000 , { DFF_Prop_adjust3Value , 0x40b , 0x413 } }, //sum #2 @11 @19
4598     { 0x2001 , { 0x40b , 2391 , 32768 } }, //prod @11 2391 32768
4599     { 0xa000 , { 0x406 , 0 , 0x414 } }, //sum @6 0 @20
4600     { 0xe00f , { 0x41d , DFF_Prop_geoRight , 0x40b } }, //ellipse @29 width @11
4601     { 0xe000 , { DFF_Prop_adjust2Value , 0x41e , 0x40b } }, //sum #1 @30 @11
4602     { 0xe000 , { 0x419 , DFF_Prop_adjust2Value , DFF_Prop_geoBottom } }, //sum @25 #1 height
4603     { 0xe000 , { DFF_Prop_geoBottom , 0x41e , 0x40e } }, //sum height @30 @14
4604     { 0x6000 , { 0x40b , 0x40e , 0 } }, //sum @11 @14 0
4605     { 0xa000 , { DFF_Prop_geoBottom , 0 , 0x422 } }, //sum height 0 @34
4606     { 0xe000 , { 0x423 , 0x413 , 0x40b } }, //sum @35 @19 @11
4607     { 0xe000 , { 0x40a , 0x40f , 0x40b } }, //sum @10 @15 @11
4608     { 0xe000 , { 0x423 , 0x40f , 0x40b } }, //sum @35 @15 @11
4609     { 0xe000 , { 0x41c , 0x40e , 0x412 } }, //sum @28 @14 @18
4610     { 0xa000 , { DFF_Prop_geoBottom , 0 , 0x427 } }, //sum height 0 @39
4611     { 0xa000 , { 0x413 , 0 , 0x412 } }, //sum @19 0 @18
4612     { 0x2001 , { 0x429 , 2 , 3 } }, //prod @41 2 3
4613     { 0xa000 , { DFF_Prop_adjust2Value , 0 , 0x42a } }, //sum #1 0 @42
4614     { 0xa000 , { DFF_Prop_adjust3Value , 0 , 0x42a } }, //sum #2 0 @42
4615     { 0x2004 , { 0x42c , 20925 , 0 } }, //min @44 20925
4616     { 0x2001 , { DFF_Prop_geoRight , 3 , 8 } }, //prod width 3 8
4617     { 0x2000 , { 0x42e , 0 , 4 } }, //sum @46 0 4
4618 };
4619 
4620 static const SvxMSDffTextRectangles mso_sptEllipseRibbonTextRect[] =
4621 {//@0,@1,@22,@25
4622     { { 0 MSO_I, 1 MSO_I }, { 22 MSO_I, 25 MSO_I } }
4623 };
4624 
4625 static const sal_Int32 mso_sptEllipseRibbonDefault[] =
4626 {
4627     3,5400,5400,18900
4628 };
4629 
4630 static const SvxMSDffHandle mso_sptEllipseRibbonHandle[] =
4631 {
4632 //position="#0,bottomRight" xrange="@5,@47
4633 //position="center,#1" yrange="@10,@43
4634 //position="topLeft,#2" yrange="@27,@45
4635     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL| MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
4636         0x100, 21600, 0, 0, 0x8/*5+3*/, 0x32/*47+3*/, 0x80000000, 0x7fffffff },
4637     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
4638         10800, 0x101, 0, 0, 0x80000000, 0x7fffffff,0xd/*10+3*/, 0x2e /*43+3*/ },
4639     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
4640         0, 0x102, 0, 0, 0x80000000, 0x7fffffff,0x1e/*27+3*/, 0x30 /*45+3*/ }
4641 };
4642 
4643 static const mso_CustomShape msosptEllipseRibbon =
4644 {
4645     (SvxMSDffVertPair*)mso_sptEllipseRibbonVert, sizeof( mso_sptEllipseRibbonVert ) / sizeof( SvxMSDffVertPair ),
4646     (sal_uInt16*)mso_sptEllipseRibbonSegm, sizeof( mso_sptEllipseRibbonSegm ) >> 1,
4647     (SvxMSDffCalculationData*)mso_sptEllipseRibbonCalc, sizeof( mso_sptEllipseRibbonCalc ) / sizeof( SvxMSDffCalculationData ),
4648     (sal_Int32*)mso_sptEllipseRibbonDefault,
4649     (SvxMSDffTextRectangles*)mso_sptEllipseRibbonTextRect, sizeof( mso_sptEllipseRibbonTextRect ) / sizeof( SvxMSDffTextRectangles ),
4650     21600, 21600,
4651     0x80000000, 0x80000000,
4652     NULL, 0,
4653     (SvxMSDffHandle*)mso_sptEllipseRibbonHandle, sizeof( mso_sptEllipseRibbonHandle ) / sizeof( SvxMSDffHandle )
4654 };
4655 
4656 //msosptEllipseRibbon2
4657 //svg path = wr@9@34@8@35,0@24@0@23@9,0@8@11@0@22@19@22@9@34@8@35@19@23@3@24l@7@36@3@4at@9@31@8@32@3@4@18@30@9@1@8@33@18@28@17@28@9@31@8@32@17@30,0@4l@5@36xear@9@1@8@33@17@28@0@29nfl@17@30ewr@9@1@8@33@18@28@19@29nfl@18@30em@0@23nfl@0@29em@19@23nfl@19@29e
4658 static const SvxMSDffVertPair mso_sptEllipseRibbon2Vert[] =
4659 {
4660     { 9 MSO_I , 34 MSO_I },
4661     { 8 MSO_I , 35 MSO_I },
4662     { 0 , 24 MSO_I },
4663     { 0 MSO_I , 23 MSO_I },
4664     { 9 MSO_I , 0 },
4665     { 8 MSO_I , 11 MSO_I },
4666     { 0 MSO_I , 22 MSO_I },
4667     { 19 MSO_I , 22 MSO_I },
4668     { 9 MSO_I , 34 MSO_I },
4669     { 8 MSO_I , 35 MSO_I },
4670     { 19 MSO_I , 23 MSO_I },
4671     { 3 MSO_I , 24 MSO_I },
4672     { 7 MSO_I , 36 MSO_I },
4673     { 3 MSO_I , 4 MSO_I },
4674     { 9 MSO_I , 31 MSO_I },
4675     { 8 MSO_I , 32 MSO_I },
4676     { 3 MSO_I , 4 MSO_I },
4677     { 18 MSO_I , 30 MSO_I },
4678     { 9 MSO_I , 1 MSO_I },
4679     { 8 MSO_I , 33 MSO_I },
4680     { 18 MSO_I , 28 MSO_I },
4681     { 17 MSO_I , 28 MSO_I },
4682     { 9 MSO_I , 31 MSO_I },
4683     { 8 MSO_I , 32 MSO_I },
4684     { 17 MSO_I , 30 MSO_I },
4685     { 0 , 4l MSO_I },
4686     { 5 MSO_I , 36 MSO_I },
4687     { 9 MSO_I , 1 MSO_I },
4688     { 8 MSO_I , 33 MSO_I },
4689     { 17 MSO_I , 28 MSO_I },
4690     { 0 MSO_I , 29 MSO_I },
4691     { 17 MSO_I , 30 MSO_I },
4692     { 9 MSO_I , 1 MSO_I },
4693     { 8 MSO_I , 33 MSO_I },
4694     { 18 MSO_I , 28 MSO_I },
4695     { 19 MSO_I , 29 MSO_I },
4696     { 18 MSO_I , 30 MSO_I },
4697     { 0 MSO_I , 23 MSO_I },
4698     { 0 MSO_I , 29 MSO_I },
4699     { 19 MSO_I , 23 MSO_I },
4700     { 19 MSO_I , 29 MSO_I }
4701 };
4702 static const sal_uInt16 mso_sptEllipseRibbon2Segm[] =
4703 {
4704     0xa50c/*wr*/,0x0002/*l*/,0xa30c/*at*/,0x0001/*l*/,
4705     0x6001/*x*/, 0x8000/*e*/,0xa304/*ar*/,0xaa00/*nf*/,
4706     0x0001/*l*/, 0x8000/*e*/,0xa504/*wr*/,0xaa00/*nf*/,
4707     0x0001/*l*/, 0x8000/*e*/,0x4000/*m*/,0xaa00/*nf*/,
4708     0x0001/*l*/, 0x8000/*e*/,0x4000/*m*/,0xaa00/*nf*/,
4709     0x0001/*l*/, 0x8000/*e*/
4710 };
4711 
4712 static const SvxMSDffCalculationData mso_sptEllipseRibbon2Calc[] =
4713 {
4714     { 0x2000 , { DFF_Prop_adjustValue , 0 , 0 } }, //val #0
4715     { 0x2000 , { DFF_Prop_adjust2Value , 0 , 0 } }, //val #1
4716     { 0x2000 , { DFF_Prop_adjust3Value , 0 , 0 } }, //val #2
4717     { 0x2000 , { DFF_Prop_geoRight , 0 , 0 } }, //val width
4718     { 0x2000 , { DFF_Prop_geoBottom , 0 , 0 } }, //val height
4719     { 0x2001 , { DFF_Prop_geoRight , 1 , 8 } }, //prod width 1 8
4720     { 0x2001 , { DFF_Prop_geoRight , 1 , 2 } }, //prod width 1 2
4721     { 0x2001 , { DFF_Prop_geoRight , 7 , 8 } }, //prod width 7 8
4722     { 0x2001 , { DFF_Prop_geoRight , 3 , 2 } }, //prod width 3 2
4723     { 0x8000 , { 0 , 0 , 0x406 } }, //sum 0 0 @6
4724     { 0x2001 , { DFF_Prop_adjust3Value , 30573 , 4096 } }, //prod #2 30573 4096
4725     { 0x2001 , { 0x40a , 2 , 1 } }, //prod @10 2 1
4726     { 0xe000 , { 0x40a , DFF_Prop_geoBottom , DFF_Prop_adjust3Value } }, //sum @10 height #2
4727     { 0x6000 , { 0x40a , DFF_Prop_adjust2Value , 0 } }, //sum @10 #1 0
4728     { 0x2001 , { DFF_Prop_adjust2Value , 1 , 2 } }, //prod #1 1 2
4729     { 0x6000 , { 0x40a , 0x40e , 0 } }, //sum @10 @14 0
4730     { 0xa000 , { 0x40c , 0 , DFF_Prop_adjust2Value } }, //sum @12 0 #1
4731     { 0x6000 , { DFF_Prop_adjustValue , 0x405 , 0 } }, //sum #0 @5 0
4732     { 0xa000 , { DFF_Prop_geoRight , 0 , 0x411 } }, //sum width 0 @17
4733     { 0xa000 , { DFF_Prop_geoRight , 0 , DFF_Prop_adjustValue } }, //sum width 0 #0
4734     { 0xa000 , { 0x406 , 0 , DFF_Prop_adjustValue } }, //sum @6 0 #0
4735     { 0xe00f , { 0x414 , DFF_Prop_geoRight , 0x40a } }, //ellipse @20 width @10
4736     { 0xa000 , { 0x40a , 0 , 0x415 } }, //sum @10 0 @21
4737     { 0xe000 , { 0x416 , 0x410 , 0x40a } }, //sum @22 @16 @10
4738     { 0xe000 , { DFF_Prop_adjust3Value , 0x410 , 0x40a } }, //sum #2 @16 @10
4739     { 0x2001 , { 0x40a , 2391 , 32768 } }, //prod @10 2391 32768
4740     { 0xa000 , { 0x406 , 0 , 0x411 } }, //sum @6 0 @17
4741     { 0xe00f , { 0x41a , DFF_Prop_geoRight , 0x40a } }, //ellipse @26 width @10
4742     { 0xe000 , { 0x40a , DFF_Prop_adjust2Value , 0x41b } }, //sum @10 #1 @27
4743     { 0x6000 , { 0x416 , DFF_Prop_adjust2Value , 0 } }, //sum @22 #1 0
4744     { 0xa000 , { 0x40c , 0 , 0x41b } }, //sum @12 0 @27
4745     { 0xa000 , { DFF_Prop_geoBottom , 0 , DFF_Prop_adjust3Value } }, //sum height 0 #2
4746     { 0x6000 , { 0x40a , 0x40c , 0 } }, //sum @10 @12 0
4747     { 0xe000 , { 0x420 , 0x40a , 0x410 } }, //sum @32 @10 @16
4748     { 0xe000 , { 0x41f , 0x40a , 0x40d } }, //sum @31 @10 @13
4749     { 0xe000 , { 0x420 , 0x40a , 0x40d } }, //sum @32 @10 @13
4750     { 0xe000 , { 0x419 , 0x40c , 0x40f } }, //sum @25 @12 @15
4751     { 0xa000 , { 0x410 , 0 , 0x40f } }, //sum @16 0 @15
4752     { 0x2001 , { 0x425 , 2 , 3 } }, //prod @37 2 3
4753     { 0x6000 , { 0x401 , 0x426 , 0 } }, //sum @1 @38 0
4754     { 0x6000 , { DFF_Prop_adjust3Value , 0x426 , 0 } }, //sum #2 @38 0
4755     { 0x2005 , { 0x428 , 675 , 0 } }, //max @40 675
4756     { 0x2001 , { DFF_Prop_geoRight , 3 , 8 } }, //prod width 3 8
4757     { 0x2000 , { 0x42a , 0 , 4 } } //sum @42 0 4
4758 };
4759 
4760 static const SvxMSDffTextRectangles mso_sptEllipseRibbon2TextRect[] =
4761 {//@0,@22,@19,@1
4762     { { 0 MSO_I, 22 MSO_I }, { 19 MSO_I, 1 MSO_I } }
4763 };
4764 
4765 static const sal_Int32 mso_sptEllipseRibbon2Default[] =
4766 {
4767     3,5400,16200,2700
4768 };
4769 
4770 static const SvxMSDffHandle mso_sptEllipseRibbon2Handle[] =
4771 {
4772 //position="#0,topLeft" xrange="@5,@43
4773 //position="center,#1" yrange="@39,@31
4774 //position="topLeft,#2" yrange="@41,@24
4775     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL| MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL,
4776         0x100, 0, 0, 0, 0x8/*5+3*/, 0x2e/*43+3*/, 0x80000000, 0x7fffffff },
4777     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
4778         10800, 0x101, 0, 0, 0x80000000, 0x7fffffff,0x2a/*39+3*/, 0x22 /*31+3*/ },
4779     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
4780         0, 0x102, 0, 0, 0x80000000, 0x7fffffff,0x2c/*41+3*/, 0x1b /*24+3*/ }
4781 };
4782 
4783 static const mso_CustomShape msosptEllipseRibbon2 =
4784 {
4785     (SvxMSDffVertPair*)mso_sptEllipseRibbon2Vert, sizeof( mso_sptEllipseRibbon2Vert ) / sizeof( SvxMSDffVertPair ),
4786     (sal_uInt16*)mso_sptEllipseRibbon2Segm, sizeof( mso_sptEllipseRibbon2Segm ) >> 1,
4787     (SvxMSDffCalculationData*)mso_sptEllipseRibbon2Calc, sizeof( mso_sptEllipseRibbon2Calc ) / sizeof( SvxMSDffCalculationData ),
4788     (sal_Int32*)mso_sptEllipseRibbon2Default,
4789     (SvxMSDffTextRectangles*)mso_sptEllipseRibbon2TextRect, sizeof( mso_sptEllipseRibbon2TextRect ) / sizeof( SvxMSDffTextRectangles ),
4790     21600, 21600,
4791     0x80000000, 0x80000000,
4792     NULL, 0,
4793     (SvxMSDffHandle*)mso_sptEllipseRibbon2Handle, sizeof( mso_sptEllipseRibbon2Handle ) / sizeof( SvxMSDffHandle )
4794 };
4795 // End
4796 static const SvxMSDffVertPair mso_sptVerticalScrollVert[] = // adjustment1 : 0 - 5400
4797 {
4798     { 1 MSO_I, 21600 }, { 0, 11 MSO_I }, { 1 MSO_I, 12 MSO_I }, { 0 MSO_I, 12 MSO_I },
4799     { 0 MSO_I, 1 MSO_I }, { 4 MSO_I, 0 }, { 2 MSO_I, 0 }, { 21600, 1 MSO_I },
4800     { 2 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 11 MSO_I }, { 5 MSO_I, 21600 },
4801 
4802     { 6 MSO_I, 1 MSO_I }, { 4 MSO_I, 0 MSO_I }, { 8 MSO_I, 9 MSO_I }, { 4 MSO_I, 1 MSO_I },
4803 
4804     { 0 MSO_I, 11 MSO_I }, { 1 MSO_I, 21600 }, { 0, 11 MSO_I }, { 1 MSO_I, 12 MSO_I },
4805     { 9 MSO_I, 10 MSO_I }, { 1 MSO_I, 11 MSO_I },
4806 
4807     { 4 MSO_I, 0 }, { 6 MSO_I, 1 MSO_I },
4808 
4809     { 0 MSO_I, 12 MSO_I }, { 0 MSO_I, 11 MSO_I },
4810 
4811     { 4 MSO_I, 0 MSO_I },
4812     { 2 MSO_I, 0 MSO_I }
4813 };
4814 static const sal_uInt16 mso_sptVerticalScrollSegm[] =
4815 {
4816     0x4000, 0xa702, 0x0002, 0xa801, 0x0001, 0xa702, 0x0002, 0xa801, 0x6001, 0x8000,
4817     0x4000, 0xa801, 0xa702, 0x6000, 0x8000,
4818     0x4000, 0xa803, 0xa702, 0x6001, 0x8000,
4819     0x4000, 0xa701, 0x8000,
4820     0x4000, 0x0001, 0x8000,
4821     0x4000, 0x0001, 0x8000
4822 };
4823 static const SvxMSDffCalculationData mso_sptScrollCalc[] =
4824 {
4825     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
4826     { 0x2001, { 0x400, 1, 2 } },
4827     { 0xa000, { DFF_Prop_geoRight, 0, 0x401 } },
4828     { 0xa000, { DFF_Prop_geoRight, 0, 0x400 } },
4829     { 0x6000, { 0x400, 0x401, 0 } },
4830     { 0xa000, { DFF_Prop_geoRight, 0, 0x404 } },
4831     { 0x2001, { 0x400, 2, 1 } },
4832     { 0x2001, { 0x401, 1, 2 } },
4833     { 0x6000, { 0x400, 0x407, 0 } },
4834     { 0x6000, { 0x401, 0x407, 0 } },
4835     { 0xa000, { DFF_Prop_geoBottom, 0, 0x409 } },
4836     { 0xa000, { DFF_Prop_geoBottom, 0, 0x401 } },
4837     { 0xa000, { DFF_Prop_geoBottom, 0, 0x400 } },
4838     { 0xa000, { DFF_Prop_geoBottom, 0, 0x404 } }
4839 };
4840 static const SvxMSDffTextRectangles mso_sptScrollTextRect[] =
4841 {
4842     { { 0 MSO_I, 0 MSO_I }, { 3 MSO_I, 12 MSO_I } }
4843 };
4844 static const SvxMSDffHandle mso_sptVerticalScrollHandle[] =
4845 {
4846     {   MSDFF_HANDLE_FLAGS_RANGE,
4847         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 5400 }
4848 };
4849 static const mso_CustomShape msoVerticalScroll =
4850 {
4851     (SvxMSDffVertPair*)mso_sptVerticalScrollVert, sizeof( mso_sptVerticalScrollVert ) / sizeof( SvxMSDffVertPair ),
4852     (sal_uInt16*)mso_sptVerticalScrollSegm, sizeof( mso_sptVerticalScrollSegm ) >> 1,
4853     (SvxMSDffCalculationData*)mso_sptScrollCalc, sizeof( mso_sptScrollCalc ) / sizeof( SvxMSDffCalculationData ),
4854     (sal_Int32*)mso_sptDefault2700,
4855     (SvxMSDffTextRectangles*)mso_sptScrollTextRect, sizeof( mso_sptScrollTextRect ) / sizeof( SvxMSDffTextRectangles ),
4856     21600, 21600,
4857     11000, 10800,
4858     NULL, 0,
4859     (SvxMSDffHandle*)mso_sptVerticalScrollHandle, sizeof( mso_sptVerticalScrollHandle ) / sizeof( SvxMSDffHandle )
4860 };
4861 static const SvxMSDffVertPair mso_sptHorizontalScrollVert[] =   // adjustment1 : 0 - 5400
4862 {
4863     { 0, 4 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 1 MSO_I },
4864     { 2 MSO_I, 0 }, { 21600, 1 MSO_I }, { 21600, 13 MSO_I }, { 2 MSO_I, 12 MSO_I },
4865     { 0 MSO_I, 12 MSO_I }, { 0 MSO_I, 11 MSO_I }, { 1 MSO_I, 21600 }, { 0, 11 MSO_I },
4866 
4867     { 1 MSO_I, 4 MSO_I }, { 9 MSO_I, 8 MSO_I }, { 0 MSO_I, 4 MSO_I }, { 1 MSO_I, 6 MSO_I },
4868 
4869     { 2 MSO_I, 1 MSO_I }, { 3 MSO_I, 9 MSO_I }, { 3 MSO_I, 1 MSO_I }, { 2 MSO_I, 0 },
4870     { 21600, 1 MSO_I }, { 2 MSO_I, 0 MSO_I },
4871 
4872     { 1 MSO_I, 6 MSO_I },
4873     { 0, 4 MSO_I },
4874 
4875     { 2 MSO_I, 0 MSO_I },
4876     { 3 MSO_I, 0 MSO_I },
4877 
4878     { 0 MSO_I, 4 MSO_I },
4879     { 0 MSO_I, 11 MSO_I }
4880 };
4881 static const sal_uInt16 mso_sptHorizontalScrollSegm[] =
4882 {
4883     0x4000, 0xa801, 0x0002, 0xa802, 0x0001, 0xa801, 0x0002, 0xa802, 0x6001, 0x8000,
4884     0x4000, 0xa803, 0x6000, 0x8000,
4885     0x4000, 0xa803, 0xa702, 0x6000, 0x8000,
4886     0x4000, 0xa701, 0x8000,
4887     0x4000, 0x0001, 0x8000,
4888     0x4000, 0x0001, 0x8000
4889 };
4890 static const SvxMSDffHandle mso_sptHorizontalScrollHandle[] =
4891 {
4892     {   MSDFF_HANDLE_FLAGS_RANGE,
4893         0x100, 0, 10800, 10800, 0, 5400, 0x80000000, 0x7fffffff }
4894 };
4895 static const mso_CustomShape msoHorizontalScroll =
4896 {
4897     (SvxMSDffVertPair*)mso_sptHorizontalScrollVert, sizeof( mso_sptHorizontalScrollVert ) / sizeof( SvxMSDffVertPair ),
4898     (sal_uInt16*)mso_sptHorizontalScrollSegm, sizeof( mso_sptHorizontalScrollSegm ) >> 1,
4899     (SvxMSDffCalculationData*)mso_sptScrollCalc, sizeof( mso_sptScrollCalc ) / sizeof( SvxMSDffCalculationData ),
4900     (sal_Int32*)mso_sptDefault2700,
4901     (SvxMSDffTextRectangles*)mso_sptScrollTextRect, sizeof( mso_sptScrollTextRect ) / sizeof( SvxMSDffTextRectangles ),
4902     21600, 21600,
4903     10800, 11000,
4904     NULL, 0,
4905     (SvxMSDffHandle*)mso_sptHorizontalScrollHandle, sizeof( mso_sptHorizontalScrollHandle ) / sizeof( SvxMSDffHandle )
4906 };
4907 
4908 static const SvxMSDffVertPair mso_sptFlowChartProcessVert[] =
4909 {
4910     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
4911 };
4912 static const mso_CustomShape msoFlowChartProcess =
4913 {
4914     (SvxMSDffVertPair*)mso_sptFlowChartProcessVert, sizeof( mso_sptFlowChartProcessVert ) / sizeof( SvxMSDffVertPair ),
4915     NULL, 0,
4916     NULL, 0,
4917     NULL,
4918     NULL, 0,
4919     21600, 21600,
4920     0x80000000, 0x80000000,
4921     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
4922     NULL, 0     // handles
4923 };
4924 
4925 static const SvxMSDffVertPair mso_sptFlowChartAlternateProcessVert[] =
4926 {
4927     { 0, 2 MSO_I }, { 0 MSO_I, 0 }, { 1 MSO_I, 0 }, { 21600, 2 MSO_I },
4928     { 21600, 3 MSO_I }, { 1 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0, 3 MSO_I }
4929 };
4930 static const sal_uInt16 mso_sptFlowChartAlternateProcessSegm[] =
4931 {
4932     0x4000, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x6000, 0x8000
4933 };
4934 static const SvxMSDffCalculationData mso_sptFlowChartAlternateProcessCalc[] =
4935 {
4936     { 0x2000, { DFF_Prop_geoLeft, 2540, 0 } },
4937     { 0x2000, { DFF_Prop_geoRight, 0, 2540 } },
4938     { 0x2000, { DFF_Prop_geoTop, 2540, 0 } },
4939     { 0x2000, { DFF_Prop_geoBottom, 0, 2540 } },
4940     { 0x2000, { DFF_Prop_geoLeft, 800, 0 } },
4941     { 0x2000, { DFF_Prop_geoRight, 0, 800 } },
4942     { 0x2000, { DFF_Prop_geoTop, 800, 0 } },
4943     { 0x2000, { DFF_Prop_geoBottom,0, 800 } }
4944 };
4945 static const SvxMSDffTextRectangles mso_sptFlowChartAlternateProcessTextRect[] =
4946 {
4947     { { 4 MSO_I, 6 MSO_I }, { 5 MSO_I, 7 MSO_I } }
4948 };
4949 static const mso_CustomShape msoFlowChartAlternateProcess =
4950 {
4951     (SvxMSDffVertPair*)mso_sptFlowChartAlternateProcessVert, sizeof( mso_sptFlowChartAlternateProcessVert ) / sizeof( SvxMSDffVertPair ),
4952     (sal_uInt16*)mso_sptFlowChartAlternateProcessSegm, sizeof( mso_sptFlowChartAlternateProcessSegm ) >> 1,
4953     (SvxMSDffCalculationData*)mso_sptFlowChartAlternateProcessCalc, sizeof( mso_sptFlowChartAlternateProcessCalc ) / sizeof( SvxMSDffCalculationData ),
4954     NULL,
4955     (SvxMSDffTextRectangles*)mso_sptFlowChartAlternateProcessTextRect, sizeof( mso_sptFlowChartAlternateProcessTextRect ) / sizeof( SvxMSDffTextRectangles ),
4956     21600, 21600,
4957     0x80000000, 0x80000000,
4958     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
4959     NULL, 0     // handles
4960 };
4961 
4962 static const SvxMSDffVertPair mso_sptFlowChartDecisionVert[] =
4963 {
4964     { 0, 10800 }, { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 10800 }
4965 };
4966 static const SvxMSDffTextRectangles mso_sptFlowChartDecisionTextRect[] =
4967 {
4968     { { 5400, 5400 }, { 16200, 16200 } }
4969 };
4970 static const mso_CustomShape msoFlowChartDecision =
4971 {
4972     (SvxMSDffVertPair*)mso_sptFlowChartDecisionVert, sizeof( mso_sptFlowChartDecisionVert ) / sizeof( SvxMSDffVertPair ),
4973     NULL, 0,
4974     NULL, 0,
4975     NULL,
4976     (SvxMSDffTextRectangles*)mso_sptFlowChartDecisionTextRect, sizeof( mso_sptFlowChartDecisionTextRect ) / sizeof( SvxMSDffTextRectangles ),
4977     21600, 21600,
4978     0x80000000, 0x80000000,
4979     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
4980     NULL, 0     // handles
4981 };
4982 
4983 static const SvxMSDffVertPair mso_sptFlowChartInputOutputVert[] =
4984 {
4985     { 4230, 0 }, { 21600, 0 }, { 17370, 21600 }, { 0, 21600 }, { 4230, 0 }
4986 };
4987 static const SvxMSDffTextRectangles mso_sptFlowChartInputOutputTextRect[] =
4988 {
4989     { { 4230, 0 }, { 17370, 21600 } }
4990 };
4991 static const SvxMSDffVertPair mso_sptFlowChartInputOutputGluePoints[] =
4992 {
4993     { 12960, 0 }, { 10800, 0 }, { 2160, 10800 }, { 8600, 21600 }, { 10800, 21600 }, { 19400, 10800 }
4994 };
4995 static const mso_CustomShape msoFlowChartInputOutput =
4996 {
4997     (SvxMSDffVertPair*)mso_sptFlowChartInputOutputVert, sizeof( mso_sptFlowChartInputOutputVert ) / sizeof( SvxMSDffVertPair ),
4998     NULL, 0,
4999     NULL, 0,
5000     NULL,
5001     (SvxMSDffTextRectangles*)mso_sptFlowChartInputOutputTextRect, sizeof( mso_sptFlowChartInputOutputTextRect ) / sizeof( SvxMSDffTextRectangles ),
5002     21600, 21600,
5003     0x80000000, 0x80000000,
5004     (SvxMSDffVertPair*)mso_sptFlowChartInputOutputGluePoints, sizeof( mso_sptFlowChartInputOutputGluePoints ) / sizeof( SvxMSDffVertPair ),
5005     NULL, 0     // handles
5006 };
5007 
5008 static const SvxMSDffVertPair mso_sptFlowChartPredefinedProcessVert[] =
5009 {
5010     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
5011 
5012     { 2540, 0 }, { 2540, 21600 },
5013 
5014     { 21600 - 2540, 0 }, { 21600 - 2540, 21600 }
5015 };
5016 static const sal_uInt16 mso_sptFlowChartPredefinedProcessSegm[] =
5017 {
5018     0x4000, 0x0003, 0x6000, 0x8000,
5019     0x4000, 0x0001, 0x8000,
5020     0x4000, 0x0001, 0x8000
5021 };
5022 static const SvxMSDffTextRectangles mso_sptFlowChartPredefinedProcessTextRect[] =
5023 {
5024     { { 2540, 0 }, { 21600 - 2540, 21600 } }
5025 };
5026 static const mso_CustomShape msoFlowChartPredefinedProcess =
5027 {
5028     (SvxMSDffVertPair*)mso_sptFlowChartPredefinedProcessVert, sizeof( mso_sptFlowChartPredefinedProcessVert ) / sizeof( SvxMSDffVertPair ),
5029     (sal_uInt16*)mso_sptFlowChartPredefinedProcessSegm, sizeof( mso_sptFlowChartPredefinedProcessSegm ) >> 1,
5030     NULL, 0,
5031     NULL,
5032     (SvxMSDffTextRectangles*)mso_sptFlowChartPredefinedProcessTextRect, sizeof( mso_sptFlowChartPredefinedProcessTextRect ) / sizeof( SvxMSDffTextRectangles ),
5033     21600, 21600,
5034     0x80000000, 0x80000000,
5035     NULL, 0,
5036     NULL, 0     // handles
5037 };
5038 
5039 static const SvxMSDffVertPair mso_sptFlowChartInternalStorageVert[] =
5040 {
5041     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
5042 
5043     { 4230, 0 }, { 4230, 21600 },
5044 
5045     { 0, 4230 }, { 21600, 4230 }
5046 };
5047 static const sal_uInt16 mso_sptFlowChartInternalStorageSegm[] =
5048 {
5049     0x4000, 0x0003, 0x6000, 0x8000,
5050     0x4000, 0x0001, 0x8000,
5051     0x4000, 0x0001, 0x8000
5052 };
5053 static const SvxMSDffTextRectangles mso_sptFlowChartInternalStorageTextRect[] =
5054 {
5055     { { 4230, 4230 }, { 21600, 21600 } }
5056 };
5057 static const mso_CustomShape msoFlowChartInternalStorage =
5058 {
5059     (SvxMSDffVertPair*)mso_sptFlowChartInternalStorageVert, sizeof( mso_sptFlowChartInternalStorageVert ) / sizeof( SvxMSDffVertPair ),
5060     (sal_uInt16*)mso_sptFlowChartInternalStorageSegm, sizeof( mso_sptFlowChartInternalStorageSegm ) >> 1,
5061     NULL, 0,
5062     NULL,
5063     (SvxMSDffTextRectangles*)mso_sptFlowChartInternalStorageTextRect, sizeof( mso_sptFlowChartInternalStorageTextRect ) / sizeof( SvxMSDffTextRectangles ),
5064     21600, 21600,
5065     0x80000000, 0x80000000,
5066     NULL, 0,
5067     NULL, 0     // handles
5068 };
5069 
5070 static const SvxMSDffVertPair mso_sptFlowChartDocumentVert[] =
5071 {
5072     { 0, 0 }, { 21600, 0 }, { 21600, 17360 },
5073     { 13050, 17220 }, { 13340, 20770 }, { 5620, 21600 },    // ccp
5074     { 2860, 21100 }, { 1850, 20700 }, { 0,  20120 }         // ccp
5075 };
5076 static const sal_uInt16 mso_sptFlowChartDocumentSegm[] =
5077 {
5078     0x4000, 0x0002, 0x2002, 0x6000, 0x8000
5079 };
5080 static const SvxMSDffTextRectangles mso_sptFlowChartDocumentTextRect[] =
5081 {
5082     { { 0, 0 }, { 21600, 17360 } }
5083 };
5084 static const SvxMSDffVertPair mso_sptFlowChartDocumentGluePoints[] =
5085 {
5086     { 10800, 0 }, { 0, 10800 }, { 10800, 20320 }, { 21600, 10800 }
5087 };
5088 static const mso_CustomShape msoFlowChartDocument =
5089 {
5090     (SvxMSDffVertPair*)mso_sptFlowChartDocumentVert, sizeof( mso_sptFlowChartDocumentVert ) / sizeof( SvxMSDffVertPair ),
5091     (sal_uInt16*)mso_sptFlowChartDocumentSegm, sizeof( mso_sptFlowChartDocumentSegm ) >> 1,
5092     NULL, 0,
5093     NULL,
5094     (SvxMSDffTextRectangles*)mso_sptFlowChartDocumentTextRect, sizeof( mso_sptFlowChartDocumentTextRect ) / sizeof( SvxMSDffTextRectangles ),
5095     21600, 21600,
5096     0x80000000, 0x80000000,
5097     (SvxMSDffVertPair*)mso_sptFlowChartDocumentGluePoints, sizeof( mso_sptFlowChartDocumentGluePoints ) / sizeof( SvxMSDffVertPair ),
5098     NULL, 0     // handles
5099 };
5100 
5101 static const SvxMSDffVertPair mso_sptFlowChartMultidocumentVert[] =
5102 {
5103     { 0, 3600 }, { 1500, 3600 }, { 1500, 1800 }, { 3000, 1800 },
5104     { 3000, 0 }, { 21600, 0 }, { 21600, 14409 }, { 21600 - 1500, 14409 },
5105     { 21600 - 1500, 14409 + 1800 }, { 21600 - 3000, 14409 + 1800 }, { 21600 - 3000, 14409 + 3600 },
5106     { 11610, 14293 + 3600 }, { 11472, 17239 + 3600 }, { 4833, 17928 + 3600 },                       // ccp
5107     { 2450, 17513 + 3600 }, { 1591, 17181 + 3600 }, { 0, 16700 + 3600 },                            // ccp
5108 
5109     { 1500, 3600 }, { 21600 - 3000, 3600 }, { 21600 - 3000, 14409 + 1800 },
5110 
5111     { 3000, 1800 }, { 21600 - 1500, 1800 }, { 21600 - 1500, 14409 }
5112 };
5113 static const sal_uInt16 mso_sptFlowChartMultidocumentSegm[] =
5114 {
5115     0x4000, 0x000a, 0x2002, 0x6000, 0x8000,
5116     0x4000, 0xaa00, 0x0002, 0x8000,         // NO FILL
5117     0x4000, 0xaa00, 0x0002, 0x8000          // NO FILL
5118 };
5119 static const SvxMSDffTextRectangles mso_sptFlowChartMultidocumentTextRect[] =
5120 {
5121     { { 0, 3600 }, { 21600 - 3000, 14409 + 3600 } }
5122 };
5123 static const SvxMSDffVertPair mso_sptFlowChartMultidocumentGluePoints[] =
5124 {
5125     { 10800, 0 }, { 0, 10800 }, { 10800, 19890 }, { 21600, 10800 }
5126 };
5127 static const mso_CustomShape msoFlowChartMultidocument =
5128 {
5129     (SvxMSDffVertPair*)mso_sptFlowChartMultidocumentVert, sizeof( mso_sptFlowChartMultidocumentVert ) / sizeof( SvxMSDffVertPair ),
5130     (sal_uInt16*)mso_sptFlowChartMultidocumentSegm, sizeof( mso_sptFlowChartMultidocumentSegm ) >> 1,
5131     NULL, 0,
5132     NULL,
5133     (SvxMSDffTextRectangles*)mso_sptFlowChartMultidocumentTextRect, sizeof( mso_sptFlowChartMultidocumentTextRect ) / sizeof( SvxMSDffTextRectangles ),
5134     21600, 21600,
5135     0x80000000, 0x80000000,
5136     (SvxMSDffVertPair*)mso_sptFlowChartMultidocumentGluePoints, sizeof( mso_sptFlowChartMultidocumentGluePoints ) / sizeof( SvxMSDffVertPair ),
5137     NULL, 0     // handles
5138 };
5139 
5140 static const SvxMSDffVertPair mso_sptFlowChartTerminatorVert[] =
5141 {
5142     { 3470, 21600 }, { 0, 10800 }, { 3470, 0 }, { 18130, 0 },
5143     { 21600, 10800 }, { 18130, 21600 }
5144 };
5145 static const sal_uInt16 mso_sptFlowChartTerminatorSegm[] =
5146 {
5147     0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
5148 };
5149 static const SvxMSDffTextRectangles mso_sptFlowChartTerminatorTextRect[] =
5150 {
5151     { { 1060, 3180 }, { 20540, 18420 } }
5152 };
5153 static const mso_CustomShape msoFlowChartTerminator =
5154 {
5155     (SvxMSDffVertPair*)mso_sptFlowChartTerminatorVert, sizeof( mso_sptFlowChartTerminatorVert ) / sizeof( SvxMSDffVertPair ),
5156     (sal_uInt16*)mso_sptFlowChartTerminatorSegm, sizeof( mso_sptFlowChartTerminatorSegm ) >> 1,
5157     NULL, 0,
5158     NULL,
5159     (SvxMSDffTextRectangles*)mso_sptFlowChartTerminatorTextRect, sizeof( mso_sptFlowChartTerminatorTextRect ) / sizeof( SvxMSDffTextRectangles ),
5160     21600, 21600,
5161     0x80000000, 0x80000000,
5162     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5163     NULL, 0     // handles
5164 };
5165 
5166 static const SvxMSDffVertPair mso_sptFlowChartPreparationVert[] =
5167 {
5168     { 4350, 0 }, { 17250, 0 }, { 21600, 10800 }, { 17250, 21600 },
5169     { 4350, 21600 }, { 0, 10800 }, { 4350, 0 }
5170 };
5171 static const SvxMSDffTextRectangles mso_sptFlowChartPreparationTextRect[] =
5172 {
5173     { { 4350, 0 }, { 17250, 21600 } }
5174 };
5175 static const mso_CustomShape msoFlowChartPreparation =
5176 {
5177     (SvxMSDffVertPair*)mso_sptFlowChartPreparationVert, sizeof( mso_sptFlowChartPreparationVert ) / sizeof( SvxMSDffVertPair ),
5178     NULL, 0,
5179     NULL, 0,
5180     NULL,
5181     (SvxMSDffTextRectangles*)mso_sptFlowChartPreparationTextRect, sizeof( mso_sptFlowChartPreparationTextRect ) / sizeof( SvxMSDffTextRectangles ),
5182     21600, 21600,
5183     0x80000000, 0x80000000,
5184     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5185     NULL, 0     // handles
5186 };
5187 
5188 static const SvxMSDffVertPair mso_sptFlowChartManualInputVert[] =
5189 {
5190     { 0, 4300 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 4300 }
5191 };
5192 static const SvxMSDffTextRectangles mso_sptFlowChartManualInputTextRect[] =
5193 {
5194     { { 0, 4300 }, { 21600, 21600 } }
5195 };
5196 static const SvxMSDffVertPair mso_sptFlowChartManualInputGluePoints[] =
5197 {
5198     { 10800, 2150 }, { 0, 10800 }, { 10800, 19890 }, { 21600, 10800 }
5199 };
5200 static const mso_CustomShape msoFlowChartManualInput =
5201 {
5202     (SvxMSDffVertPair*)mso_sptFlowChartManualInputVert, sizeof( mso_sptFlowChartManualInputVert ) / sizeof( SvxMSDffVertPair ),
5203     NULL, 0,
5204     NULL, 0,
5205     NULL,
5206     (SvxMSDffTextRectangles*)mso_sptFlowChartManualInputTextRect, sizeof( mso_sptFlowChartManualInputTextRect ) / sizeof( SvxMSDffTextRectangles ),
5207     21600, 21600,
5208     0x80000000, 0x80000000,
5209     (SvxMSDffVertPair*)mso_sptFlowChartManualInputGluePoints, sizeof( mso_sptFlowChartManualInputGluePoints ) / sizeof( SvxMSDffVertPair ),
5210     NULL, 0     // handles
5211 };
5212 
5213 static const SvxMSDffVertPair mso_sptFlowChartManualOperationVert[] =
5214 {
5215     { 0, 0 }, { 21600, 0 }, { 17250, 21600 }, { 4350, 21600 }, { 0, 0 }
5216 };
5217 static const SvxMSDffTextRectangles mso_sptFlowChartManualOperationTextRect[] =
5218 {
5219     { { 4350, 0 }, { 17250, 21600 } }
5220 };
5221 static const SvxMSDffVertPair mso_sptFlowChartManualOperationGluePoints[] =
5222 {
5223     { 10800, 0 }, { 2160, 10800 }, { 10800, 21600 }, { 19440, 10800 }
5224 };
5225 static const mso_CustomShape msoFlowChartManualOperation =
5226 {
5227     (SvxMSDffVertPair*)mso_sptFlowChartManualOperationVert, sizeof( mso_sptFlowChartManualOperationVert ) / sizeof( SvxMSDffVertPair ),
5228     NULL, 0,
5229     NULL, 0,
5230     NULL,
5231     (SvxMSDffTextRectangles*)mso_sptFlowChartManualOperationTextRect, sizeof( mso_sptFlowChartManualOperationTextRect ) / sizeof( SvxMSDffTextRectangles ),
5232     21600, 21600,
5233     0x80000000, 0x80000000,
5234     (SvxMSDffVertPair*)mso_sptFlowChartManualOperationGluePoints, sizeof( mso_sptFlowChartManualOperationGluePoints ) / sizeof( SvxMSDffVertPair ),
5235     NULL, 0     // handles
5236 };
5237 
5238 static const SvxMSDffVertPair mso_sptFlowChartConnectorVert[] =
5239 {
5240     { 10800, 10800 }, { 10800, 10800 },  { 0, 360 }
5241 };
5242 static const sal_uInt16 mso_sptFlowChartConnectorSegm[] =
5243 {
5244     0xa203, 0x6000, 0x8000
5245 };
5246 static const SvxMSDffTextRectangles mso_sptFlowChartConnectorTextRect[] =
5247 {
5248     { { 3180, 3180 }, { 18420, 18420 } }
5249 };
5250 static const mso_CustomShape msoFlowChartConnector =
5251 {
5252     (SvxMSDffVertPair*)mso_sptFlowChartConnectorVert, sizeof( mso_sptFlowChartConnectorVert ) / sizeof( SvxMSDffVertPair ),
5253     (sal_uInt16*)mso_sptFlowChartConnectorSegm, sizeof( mso_sptFlowChartConnectorSegm ) >> 1,
5254     NULL, 0,
5255     NULL,
5256     (SvxMSDffTextRectangles*)mso_sptFlowChartConnectorTextRect, sizeof( mso_sptFlowChartConnectorTextRect ) / sizeof( SvxMSDffTextRectangles ),
5257     21600, 21600,
5258     0x80000000, 0x80000000,
5259     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
5260     NULL, 0     // handles
5261 };
5262 
5263 static const SvxMSDffVertPair mso_sptFlowChartOffpageConnectorVert[] =
5264 {
5265     { 0, 0 }, { 21600, 0 }, { 21600, 17150 }, { 10800, 21600 },
5266     { 0, 17150 }, { 0, 0 }
5267 };
5268 static const SvxMSDffTextRectangles mso_sptFlowChartOffpageConnectorTextRect[] =
5269 {
5270     { { 0, 0 }, { 21600, 17150 } }
5271 };
5272 static const mso_CustomShape msoFlowChartOffpageConnector =
5273 {
5274     (SvxMSDffVertPair*)mso_sptFlowChartOffpageConnectorVert, sizeof( mso_sptFlowChartOffpageConnectorVert ) / sizeof( SvxMSDffVertPair ),
5275     NULL, 0,
5276     NULL, 0,
5277     NULL,
5278     (SvxMSDffTextRectangles*)mso_sptFlowChartOffpageConnectorTextRect, sizeof( mso_sptFlowChartOffpageConnectorTextRect ) / sizeof( SvxMSDffTextRectangles ),
5279     21600, 21600,
5280     0x80000000, 0x80000000,
5281     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5282     NULL, 0     // handles
5283 };
5284 
5285 static const SvxMSDffVertPair mso_sptFlowChartPunchedCardVert[] =
5286 {
5287     { 4300, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
5288     { 0, 4300 }, { 4300, 0 }
5289 };
5290 static const SvxMSDffTextRectangles mso_sptFlowChartPunchedCardTextRect[] =
5291 {
5292     { { 0, 4300 }, { 21600, 21600 } }
5293 };
5294 static const mso_CustomShape msoFlowChartPunchedCard =
5295 {
5296     (SvxMSDffVertPair*)mso_sptFlowChartPunchedCardVert, sizeof( mso_sptFlowChartPunchedCardVert ) / sizeof( SvxMSDffVertPair ),
5297     NULL, 0,
5298     NULL, 0,
5299     NULL,
5300     (SvxMSDffTextRectangles*)mso_sptFlowChartPunchedCardTextRect, sizeof( mso_sptFlowChartPunchedCardTextRect ) / sizeof( SvxMSDffTextRectangles ),
5301     21600, 21600,
5302     0x80000000, 0x80000000,
5303     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5304     NULL, 0     // handles
5305 };
5306 
5307 static const SvxMSDffVertPair mso_sptFlowChartPunchedTapeVert[] =
5308 {
5309     { 0, 2230 },                                            // p
5310     { 820, 3990 }, { 3410, 3980 }, { 5370, 4360 },          // ccp
5311     { 7430, 4030 }, { 10110, 3890 }, { 10690, 2270 },       // ccp
5312     { 11440, 300 }, { 14200, 160 }, { 16150, 0 },           // ccp
5313     { 18670, 170 }, {  20690, 390 }, { 21600, 2230 },       // ccp
5314     { 21600, 19420 },                                       // p
5315     { 20640, 17510 }, { 18320, 17490 }, { 16140, 17240 },   // ccp
5316     { 14710, 17370 }, { 11310, 17510 }, { 10770, 19430 },   // ccp
5317     { 10150, 21150 }, { 7380, 21290 }, { 5290, 21600 },     // ccp
5318     { 3220, 21250 }, { 610, 21130 }, { 0, 19420 }           // ccp
5319 };
5320 static const sal_uInt16 mso_sptFlowChartPunchedTapeSegm[] =
5321 {
5322     0x4000, 0x2004, 0x0001, 0x2004, 0x6000, 0x8000
5323 };
5324 static const SvxMSDffTextRectangles mso_sptFlowChartPunchedTapeTextRect[] =
5325 {
5326     { { 0, 4360 }, { 21600, 17240 } }
5327 };
5328 static const SvxMSDffVertPair mso_sptFlowChartPunchedTapeGluePoints[] =
5329 {
5330     { 10800, 2020 }, { 0, 10800 }, { 10800, 19320 }, { 21600, 10800 }
5331 };
5332 static const mso_CustomShape msoFlowChartPunchedTape =
5333 {
5334     (SvxMSDffVertPair*)mso_sptFlowChartPunchedTapeVert, sizeof( mso_sptFlowChartPunchedTapeVert ) / sizeof( SvxMSDffVertPair ),
5335     (sal_uInt16*)mso_sptFlowChartPunchedTapeSegm, sizeof( mso_sptFlowChartPunchedTapeSegm ) >> 1,
5336     NULL, 0,
5337     NULL,
5338     (SvxMSDffTextRectangles*)mso_sptFlowChartPunchedTapeTextRect, sizeof( mso_sptFlowChartPunchedTapeTextRect ) / sizeof( SvxMSDffTextRectangles ),
5339     21600, 21600,
5340     0x80000000, 0x80000000,
5341     (SvxMSDffVertPair*)mso_sptFlowChartPunchedTapeGluePoints, sizeof( mso_sptFlowChartPunchedTapeGluePoints ) / sizeof( SvxMSDffVertPair ),
5342     NULL, 0     // handles
5343 };
5344 
5345 static const SvxMSDffVertPair mso_sptFlowChartSummingJunctionVert[] =
5346 {
5347     { 10800, 10800 }, { 10800, 10800 }, { 0, 360 },
5348 
5349     { 3100, 3100 },
5350     { 18500, 18500 },
5351 
5352     { 3100, 18500 },
5353     { 18500, 3100 }
5354 };
5355 static const sal_uInt16 mso_sptFlowChartSummingJunctionSegm[] =
5356 {
5357     0xa203, 0x6000, 0x8000,
5358     0x4000, 0x0001, 0x8000,
5359     0x4000, 0x0001, 0x8000
5360 };
5361 static const SvxMSDffTextRectangles mso_sptFlowChartSummingJunctionTextRect[] =
5362 {
5363     { { 3100, 3100 }, { 18500, 18500 } }
5364 };
5365 static const mso_CustomShape msoFlowChartSummingJunction =
5366 {
5367     (SvxMSDffVertPair*)mso_sptFlowChartSummingJunctionVert, sizeof( mso_sptFlowChartSummingJunctionVert ) / sizeof( SvxMSDffVertPair ),
5368     (sal_uInt16*)mso_sptFlowChartSummingJunctionSegm, sizeof( mso_sptFlowChartSummingJunctionSegm ) >> 1,
5369     NULL, 0,
5370     NULL,
5371     (SvxMSDffTextRectangles*)mso_sptFlowChartSummingJunctionTextRect, sizeof( mso_sptFlowChartSummingJunctionTextRect ) / sizeof( SvxMSDffTextRectangles ),
5372     21600, 21600,
5373     0x80000000, 0x80000000,
5374     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
5375     NULL, 0     // handles
5376 };
5377 
5378 static const SvxMSDffVertPair mso_sptFlowChartOrVert[] =
5379 {
5380     { 10800, 10800 }, { 10800, 10800 }, { 0, 360 },
5381 
5382     { 0, 10800 }, { 21600, 10800 },
5383 
5384     { 10800, 0 }, { 10800, 21600 }
5385 };
5386 static const sal_uInt16 mso_sptFlowChartOrSegm[] =
5387 {
5388     0xa203, 0x6000, 0x8000,
5389     0x4000, 0x0001, 0x8000,
5390     0x4000, 0x0001, 0x8000
5391 };
5392 static const SvxMSDffTextRectangles mso_sptFlowChartOrTextRect[] =
5393 {
5394     { { 3100, 3100 }, { 18500, 18500 } }
5395 };
5396 static const mso_CustomShape msoFlowChartOr =
5397 {
5398     (SvxMSDffVertPair*)mso_sptFlowChartOrVert, sizeof( mso_sptFlowChartOrVert ) / sizeof( SvxMSDffVertPair ),
5399     (sal_uInt16*)mso_sptFlowChartOrSegm, sizeof( mso_sptFlowChartOrSegm ) >> 1,
5400     NULL, 0,
5401     NULL,
5402     (SvxMSDffTextRectangles*)mso_sptFlowChartOrTextRect, sizeof( mso_sptFlowChartOrTextRect ) / sizeof( SvxMSDffTextRectangles ),
5403     21600, 21600,
5404     0x80000000, 0x80000000,
5405     (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair ),
5406     NULL, 0     // handles
5407 };
5408 
5409 static const SvxMSDffVertPair mso_sptFlowChartCollateVert[] =
5410 {
5411     { 0, 0 }, { 21600, 21600 }, { 0, 21600 }, { 21600, 0 }, { 0, 0 }
5412 };
5413 static const SvxMSDffTextRectangles mso_sptFlowChartCollateTextRect[] =
5414 {
5415     { { 5400, 5400 }, { 16200, 16200 } }
5416 };
5417 static const SvxMSDffVertPair mso_sptFlowChartCollateGluePoints[] =
5418 {
5419     { 10800, 0 }, { 10800, 10800 }, { 10800, 21600 }
5420 };
5421 static const mso_CustomShape msoFlowChartCollate =
5422 {
5423     (SvxMSDffVertPair*)mso_sptFlowChartCollateVert, sizeof( mso_sptFlowChartCollateVert ) / sizeof( SvxMSDffVertPair ),
5424     NULL, 0,
5425     NULL, 0,
5426     NULL,
5427     (SvxMSDffTextRectangles*)mso_sptFlowChartCollateTextRect, sizeof( mso_sptFlowChartCollateTextRect ) / sizeof( SvxMSDffTextRectangles ),
5428     21600, 21600,
5429     0x80000000, 0x80000000,
5430     (SvxMSDffVertPair*)mso_sptFlowChartCollateGluePoints, sizeof( mso_sptFlowChartCollateGluePoints ) / sizeof( SvxMSDffVertPair ),
5431     NULL, 0     // handles
5432 };
5433 
5434 static const SvxMSDffVertPair mso_sptFlowChartSortVert[] =
5435 {
5436     { 0, 10800 }, { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 },
5437 
5438     { 0, 10800 }, { 21600, 10800 }
5439 };
5440 static const sal_uInt16 mso_sptFlowChartSortSegm[] =
5441 {
5442     0x4000, 0x0003, 0x6000, 0x8000,
5443     0x4000, 0x0001, 0x8000
5444 };
5445 static const SvxMSDffTextRectangles mso_sptFlowChartSortTextRect[] =
5446 {
5447     { { 5400, 5400 }, { 16200, 16200 } }
5448 };
5449 static const mso_CustomShape msoFlowChartSort =
5450 {
5451     (SvxMSDffVertPair*)mso_sptFlowChartSortVert, sizeof( mso_sptFlowChartSortVert ) / sizeof( SvxMSDffVertPair ),
5452     (sal_uInt16*)mso_sptFlowChartSortSegm, sizeof( mso_sptFlowChartSortSegm ) >> 1,
5453     NULL, 0,
5454     NULL,
5455     (SvxMSDffTextRectangles*)mso_sptFlowChartSortTextRect, sizeof( mso_sptFlowChartSortTextRect ) / sizeof( SvxMSDffTextRectangles ),
5456     21600, 21600,
5457     0x80000000, 0x80000000,
5458     NULL, 0,
5459     NULL, 0     // handles
5460 };
5461 
5462 static const SvxMSDffVertPair mso_sptFlowChartExtractVert[] =
5463 {
5464     { 10800, 0 }, { 21600, 21600 }, { 0, 21600 }, { 10800, 0 }
5465 };
5466 static const SvxMSDffTextRectangles mso_sptFlowChartExtractTextRect[] =
5467 {
5468     { { 5400, 10800 }, { 16200, 21600 } }
5469 };
5470 static const SvxMSDffVertPair mso_sptFlowChartExtractGluePoints[] =
5471 {
5472     { 10800, 0 }, { 5400, 10800 }, { 10800, 21600 }, { 16200, 10800 }
5473 };
5474 static const mso_CustomShape msoFlowChartExtract =
5475 {
5476     (SvxMSDffVertPair*)mso_sptFlowChartExtractVert, sizeof( mso_sptFlowChartExtractVert ) / sizeof( SvxMSDffVertPair ),
5477     NULL, 0,
5478     NULL, 0,
5479     NULL,
5480     (SvxMSDffTextRectangles*)mso_sptFlowChartExtractTextRect, sizeof( mso_sptFlowChartExtractTextRect ) / sizeof( SvxMSDffTextRectangles ),
5481     21600, 21600,
5482     0x80000000, 0x80000000,
5483     (SvxMSDffVertPair*)mso_sptFlowChartExtractGluePoints, sizeof( mso_sptFlowChartExtractGluePoints ) / sizeof( SvxMSDffVertPair ),
5484     NULL, 0     // handles
5485 };
5486 
5487 static const SvxMSDffVertPair mso_sptFlowChartMergeVert[] =
5488 {
5489     { 0, 0 }, { 21600, 0 }, { 10800, 21600 }, { 0, 0 }
5490 };
5491 static const SvxMSDffTextRectangles mso_sptFlowChartMergeTextRect[] =
5492 {
5493     { { 5400, 0 }, { 16200, 10800 } }
5494 };
5495 static const mso_CustomShape msoFlowChartMerge =
5496 {
5497     (SvxMSDffVertPair*)mso_sptFlowChartMergeVert, sizeof( mso_sptFlowChartMergeVert ) / sizeof( SvxMSDffVertPair ),
5498     NULL, 0,
5499     NULL, 0,
5500     NULL,
5501     (SvxMSDffTextRectangles*)mso_sptFlowChartMergeTextRect, sizeof( mso_sptFlowChartMergeTextRect ) / sizeof( SvxMSDffTextRectangles ),
5502     21600, 21600,
5503     0x80000000, 0x80000000,
5504     (SvxMSDffVertPair*)mso_sptFlowChartExtractGluePoints, sizeof( mso_sptFlowChartExtractGluePoints ) / sizeof( SvxMSDffVertPair ),
5505     NULL, 0     // handles
5506 };
5507 
5508 static const SvxMSDffVertPair mso_sptFlowChartOnlineStorageVert[] =
5509 {
5510     { 3600, 21600 }, { 0, 10800 }, { 3600, 0 }, { 21600, 0 },
5511     { 18000, 10800 }, { 21600, 21600 }
5512 };
5513 static const sal_uInt16 mso_sptFlowChartOnlineStorageSegm[] =
5514 {
5515     0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
5516 };
5517 static const SvxMSDffTextRectangles mso_sptFlowChartOnlineStorageTextRect[] =
5518 {
5519     { { 3600, 0 }, { 18000, 21600 } }
5520 };
5521 static const SvxMSDffVertPair mso_sptFlowChartOnlineStorageGluePoints[] =
5522 {
5523     { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 18000, 10800 }
5524 };
5525 static const mso_CustomShape msoFlowChartOnlineStorage =
5526 {
5527     (SvxMSDffVertPair*)mso_sptFlowChartOnlineStorageVert, sizeof( mso_sptFlowChartOnlineStorageVert ) / sizeof( SvxMSDffVertPair ),
5528     (sal_uInt16*)mso_sptFlowChartOnlineStorageSegm, sizeof( mso_sptFlowChartOnlineStorageSegm ) >> 1,
5529     NULL, 0,
5530     NULL,
5531     (SvxMSDffTextRectangles*)mso_sptFlowChartOnlineStorageTextRect, sizeof( mso_sptFlowChartOnlineStorageTextRect ) / sizeof( SvxMSDffTextRectangles ),
5532     21600, 21600,
5533     0x80000000, 0x80000000,
5534     (SvxMSDffVertPair*)mso_sptFlowChartOnlineStorageGluePoints, sizeof( mso_sptFlowChartOnlineStorageGluePoints ) / sizeof( SvxMSDffVertPair ),
5535     NULL, 0     // handles
5536 };
5537 
5538 static const SvxMSDffVertPair mso_sptFlowChartDelayVert[] =
5539 {
5540     { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 21600 },
5541     { 0, 0 }
5542 };
5543 static const sal_uInt16 mso_sptFlowChartDelaySegm[] =
5544 {
5545     0x4000, 0xa702, 0x0002, 0x6000, 0x8000
5546 };
5547 static const SvxMSDffTextRectangles mso_sptFlowChartDelayTextRect[] =
5548 {
5549     { { 0, 3100 }, { 18500, 18500 } }
5550 };
5551 static const mso_CustomShape msoFlowChartDelay =
5552 {
5553     (SvxMSDffVertPair*)mso_sptFlowChartDelayVert, sizeof( mso_sptFlowChartDelayVert ) / sizeof( SvxMSDffVertPair ),
5554     (sal_uInt16*)mso_sptFlowChartDelaySegm, sizeof( mso_sptFlowChartDelaySegm ) >> 1,
5555     NULL, 0,
5556     NULL,
5557     (SvxMSDffTextRectangles*)mso_sptFlowChartDelayTextRect, sizeof( mso_sptFlowChartDelayTextRect ) / sizeof( SvxMSDffTextRectangles ),
5558     21600, 21600,
5559     0x80000000, 0x80000000,
5560     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5561     NULL, 0     // handles
5562 };
5563 
5564 static const SvxMSDffVertPair mso_sptFlowChartMagneticTapeVert[] =
5565 {
5566     { 20980, 18150 }, { 20980, 21600 }, { 10670, 21600 },
5567     { 4770, 21540 }, { 0, 16720 }, { 0, 10800 },            // ccp
5568     { 0, 4840 }, { 4840, 0 }, { 10800, 0 },                 // ccp
5569     { 16740, 0 }, { 21600, 4840 }, { 21600, 10800 },        // ccp
5570     { 21600, 13520 }, { 20550, 16160 }, { 18670, 18170 }    // ccp
5571 };
5572 static const sal_uInt16 mso_sptFlowChartMagneticTapeSegm[] =
5573 {
5574     0x4000, 0x0002, 0x2004, 0x6000, 0x8000
5575 };
5576 static const SvxMSDffTextRectangles mso_sptFlowChartMagneticTapeTextRect[] =
5577 {
5578     { { 3100, 3100 }, { 18500, 18500 } }
5579 };
5580 static const mso_CustomShape msoFlowChartMagneticTape =
5581 {
5582     (SvxMSDffVertPair*)mso_sptFlowChartMagneticTapeVert, sizeof( mso_sptFlowChartMagneticTapeVert ) / sizeof( SvxMSDffVertPair ),
5583     (sal_uInt16*)mso_sptFlowChartMagneticTapeSegm, sizeof( mso_sptFlowChartMagneticTapeSegm ) >> 1,
5584     NULL, 0,
5585     NULL,
5586     (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticTapeTextRect, sizeof( mso_sptFlowChartMagneticTapeTextRect ) / sizeof( SvxMSDffTextRectangles ),
5587     21600, 21600,
5588     0x80000000, 0x80000000,
5589     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5590     NULL, 0     // handles
5591 };
5592 
5593 static const SvxMSDffVertPair mso_sptFlowChartMagneticDiskVert[] =
5594 {
5595     { 0, 3400 }, { 10800, 0 }, { 21600, 3400 }, { 21600, 18200 },
5596     { 10800, 21600 }, { 0, 18200 },
5597 
5598     { 0, 3400 }, { 10800, 6800 }, { 21600, 3400 }
5599 };
5600 static const sal_uInt16 mso_sptFlowChartMagneticDiskSegm[] =
5601 {
5602     0x4000, 0xa802, 0x0001, 0xa802, 0x6000, 0x8000,
5603     0x4000, 0xa802, 0x8000
5604 };
5605 static const SvxMSDffTextRectangles mso_sptFlowChartMagneticDiskTextRect[] =
5606 {
5607     { { 0, 6800 }, { 21600, 18200 } }
5608 };
5609 static const SvxMSDffVertPair mso_sptFlowChartMagneticDiskGluePoints[] =
5610 {
5611     { 10800, 6800 }, { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 21600, 10800 }
5612 };
5613 static const mso_CustomShape msoFlowChartMagneticDisk =
5614 {
5615     (SvxMSDffVertPair*)mso_sptFlowChartMagneticDiskVert, sizeof( mso_sptFlowChartMagneticDiskVert ) / sizeof( SvxMSDffVertPair ),
5616     (sal_uInt16*)mso_sptFlowChartMagneticDiskSegm, sizeof( mso_sptFlowChartMagneticDiskSegm ) >> 1,
5617     NULL, 0,
5618     NULL,
5619     (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticDiskTextRect, sizeof( mso_sptFlowChartMagneticDiskTextRect ) / sizeof( SvxMSDffTextRectangles ),
5620     21600, 21600,
5621     0x80000000, 0x80000000,
5622     (SvxMSDffVertPair*)mso_sptFlowChartMagneticDiskGluePoints, sizeof( mso_sptFlowChartMagneticDiskGluePoints ) / sizeof( SvxMSDffVertPair ),
5623     NULL, 0     // handles
5624 };
5625 
5626 static const SvxMSDffVertPair mso_sptFlowChartMagneticDrumVert[] =
5627 {
5628     { 18200, 0 }, { 21600, 10800 }, { 18200, 21600 }, { 3400, 21600 },
5629     { 0, 10800 }, { 3400, 0 },
5630 
5631     { 18200, 0 }, { 14800, 10800 }, { 18200, 21600 }
5632 };
5633 static const sal_uInt16 mso_sptFlowChartMagneticDrumSegm[] =
5634 {
5635     0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000,
5636     0x4000, 0xa702, 0x8000
5637 };
5638 static const SvxMSDffTextRectangles mso_sptFlowChartMagneticDrumTextRect[] =
5639 {
5640     { { 3400, 0 }, { 14800, 21600 } }
5641 };
5642 static const SvxMSDffVertPair mso_sptFlowChartMagneticDrumGluePoints[] =
5643 {
5644     { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 14800, 10800 }, { 21600, 10800 }
5645 };
5646 static const mso_CustomShape msoFlowChartMagneticDrum =
5647 {
5648     (SvxMSDffVertPair*)mso_sptFlowChartMagneticDrumVert, sizeof( mso_sptFlowChartMagneticDrumVert ) / sizeof( SvxMSDffVertPair ),
5649     (sal_uInt16*)mso_sptFlowChartMagneticDrumSegm, sizeof( mso_sptFlowChartMagneticDrumSegm ) >> 1,
5650     NULL, 0,
5651     NULL,
5652     (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticDrumTextRect, sizeof( mso_sptFlowChartMagneticDrumTextRect ) / sizeof( SvxMSDffTextRectangles ),
5653     21600, 21600,
5654     0x80000000, 0x80000000,
5655     (SvxMSDffVertPair*)mso_sptFlowChartMagneticDrumGluePoints, sizeof( mso_sptFlowChartMagneticDrumGluePoints ) / sizeof( SvxMSDffVertPair ),
5656     NULL, 0     // handles
5657 };
5658 
5659 static const SvxMSDffVertPair mso_sptFlowChartDisplayVert[] =
5660 {
5661     { 3600, 0 }, { 17800, 0 }, { 21600, 10800 }, { 17800, 21600 },
5662     { 3600, 21600 }, { 0, 10800 }
5663 };
5664 static const sal_uInt16 mso_sptFlowChartDisplaySegm[] =
5665 {
5666     0x4000, 0x0001, 0xa702, 0x0002, 0x6000, 0x8000
5667 };
5668 static const SvxMSDffTextRectangles mso_sptFlowChartDisplayTextRect[] =
5669 {
5670     { { 3600, 0 }, { 17800, 21600 } }
5671 };
5672 static const mso_CustomShape msoFlowChartDisplay =
5673 {
5674     (SvxMSDffVertPair*)mso_sptFlowChartDisplayVert, sizeof( mso_sptFlowChartDisplayVert ) / sizeof( SvxMSDffVertPair ),
5675     (sal_uInt16*)mso_sptFlowChartDisplaySegm, sizeof( mso_sptFlowChartDisplaySegm ) >> 1,
5676     NULL, 0,
5677     NULL,
5678     (SvxMSDffTextRectangles*)mso_sptFlowChartDisplayTextRect, sizeof( mso_sptFlowChartDisplayTextRect ) / sizeof( SvxMSDffTextRectangles ),
5679     21600, 21600,
5680     0x80000000, 0x80000000,
5681     (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair ),
5682     NULL, 0     // handles
5683 };
5684 
5685 static const SvxMSDffVertPair mso_sptWedgeRectCalloutVert[] =
5686 {
5687     { 0, 0 },
5688     { 0, 3590 }, { 2 MSO_I, 3 MSO_I }, { 0, 8970 },
5689     { 0, 12630 },{ 4 MSO_I, 5 MSO_I }, { 0, 18010 },
5690     { 0, 21600 },
5691     { 3590, 21600 }, { 6 MSO_I, 7 MSO_I }, { 8970, 21600 },
5692     { 12630, 21600 }, { 8 MSO_I, 9 MSO_I }, { 18010, 21600 },
5693     { 21600, 21600 },
5694     { 21600, 18010 }, { 10 MSO_I, 11 MSO_I }, { 21600, 12630 },
5695     { 21600, 8970 }, { 12 MSO_I, 13 MSO_I }, { 21600, 3590 },
5696     { 21600, 0 },
5697     { 18010, 0 }, { 14 MSO_I, 15 MSO_I }, { 12630, 0 },
5698     { 8970, 0 }, { 16 MSO_I, 17 MSO_I }, { 3590, 0 },
5699     { 0, 0 }
5700 };
5701 static const SvxMSDffCalculationData mso_sptWedgeRectCalloutCalc[] =
5702 {
5703     { 0x2000, { DFF_Prop_adjustValue, 0, 10800 } },     //0x400
5704     { 0x2000, { DFF_Prop_adjust2Value, 0,10800 } },
5705     { 0x6006, { 0x412, DFF_Prop_adjustValue, 0 } },     //0x402
5706     { 0x6006, { 0x412, DFF_Prop_adjust2Value, 6280 } },
5707     { 0x6006, { 0x417, DFF_Prop_adjustValue, 0 } },     //0x404
5708     { 0x6006, { 0x417, DFF_Prop_adjust2Value, 15320 } },
5709     { 0x6006, { 0x41a, DFF_Prop_adjustValue, 6280 } },  //0x406
5710     { 0x6006, { 0x41a, DFF_Prop_adjust2Value, 21600 } },
5711     { 0x6006, { 0x41d, DFF_Prop_adjustValue, 15320 } }, //0x408
5712     { 0x6006, { 0x41d, DFF_Prop_adjust2Value, 21600 } },
5713     { 0x6006, { 0x420, DFF_Prop_adjustValue, 21600 } }, //0x40a
5714     { 0x6006, { 0x420, DFF_Prop_adjust2Value, 15320 } },
5715     { 0x6006, { 0x422, DFF_Prop_adjustValue, 21600 } }, //0x40c
5716     { 0x6006, { 0x422, DFF_Prop_adjust2Value, 6280 } },
5717     { 0x6006, { 0x424, DFF_Prop_adjustValue, 15320 } }, //0x40e
5718     { 0x6006, { 0x424, DFF_Prop_adjust2Value, 0 } },
5719     { 0x6006, { 0x426, DFF_Prop_adjustValue, 6280 } },  //0x410
5720     { 0x6006, { 0x426, DFF_Prop_adjust2Value, 0 } },
5721     { 0xa006, { DFF_Prop_adjustValue, -1, 0x413 } },    //0x412
5722     { 0xa006, { 0x401, -1, 0x416 } },
5723     { 0x2003, { 0x400, 0, 0 } },                        //0x414
5724     { 0x2003, { 0x401, 0, 0 } },
5725     { 0xa000, { 0x414, 0, 0x415 } },                    //0x416
5726     { 0xa006, { DFF_Prop_adjustValue, -1, 0x418 } },
5727     { 0x6006, { 0x401, 0x416, -1 } },                   //0x418
5728     { 0x2000, { DFF_Prop_adjust2Value, 0, 21600 } },
5729     { 0x6006, { 0x419, 0x41b, -1 } },                   //0x41a
5730     { 0xa006, { 0x400, -1, 0x41c } },
5731     { 0xa000, { 0x415, 0, 0x414 } },                    //0x41c
5732     { 0x6006, { 0x419, 0x41e, -1 } },
5733     { 0x6006, { 0x400, 0x41c, -1 } },                   //0x41e
5734     { 0x2000, { DFF_Prop_adjustValue, 0, 21600 } },
5735     { 0x6006, { 0x41f, 0x421, -1 } },                   //0x420
5736     { 0x6006, { 0x401, 0x416, -1 } },
5737     { 0x6006, { 0x41f, 0x423, -1 } },                   //0x422
5738     { 0xa006, { 0x401, -1, 0x416 } },
5739     { 0xa006, { DFF_Prop_adjust2Value, -1, 0x425 } },   //0x424
5740     { 0x6006, { 0x400, 0x41c, -1 } },
5741     { 0xa006, { DFF_Prop_adjust2Value, -1, 0x427 } },   //0x426
5742     { 0xa006, { 0x400, -1, 0x41c } },
5743     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },         //0x428
5744     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } }
5745 };
5746 static const sal_Int32 mso_sptWedgeRectCalloutDefault[] =
5747 {
5748     2, 1400, 25920
5749 };
5750 static const SvxMSDffTextRectangles mso_sptWedgeRectCalloutTextRect[] =
5751 {
5752     { { 0, 0 }, { 21600, 21600 } }
5753 };
5754 static const SvxMSDffVertPair mso_sptWedgeRectCalloutGluePoints[] =
5755 {
5756     { 10800, 0 }, { 0, 10800 },  { 10800, 21600 }, { 21600, 10800 }, { 40 MSO_I, 41 MSO_I }
5757 };
5758 static const SvxMSDffHandle mso_sptCalloutHandle[] =
5759 {
5760     {
5761         0,
5762         0x100, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff
5763     }
5764 };
5765 static const mso_CustomShape msoWedgeRectCallout =
5766 {
5767     (SvxMSDffVertPair*)mso_sptWedgeRectCalloutVert, sizeof( mso_sptWedgeRectCalloutVert ) / sizeof( SvxMSDffVertPair ),
5768     NULL, 0,
5769     (SvxMSDffCalculationData*)mso_sptWedgeRectCalloutCalc, sizeof( mso_sptWedgeRectCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
5770     (sal_Int32*)mso_sptWedgeRectCalloutDefault,
5771     (SvxMSDffTextRectangles*)mso_sptWedgeRectCalloutTextRect, sizeof( mso_sptWedgeRectCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
5772     21600, 21600,
5773     0x80000000, 0x80000000,
5774     (SvxMSDffVertPair*)mso_sptWedgeRectCalloutGluePoints, sizeof( mso_sptWedgeRectCalloutGluePoints ) / sizeof( SvxMSDffVertPair ),
5775     (SvxMSDffHandle*)mso_sptCalloutHandle, sizeof( mso_sptCalloutHandle ) / sizeof( SvxMSDffHandle )        // handles
5776 };
5777 static const SvxMSDffVertPair mso_sptWedgeRRectCalloutVert[] =
5778 {
5779     { 3590, 0 },
5780     { 0, 3590 },
5781     { 2 MSO_I, 3 MSO_I }, { 0, 8970 },
5782     { 0, 12630 },{ 4 MSO_I, 5 MSO_I }, { 0, 18010 },
5783     { 3590, 21600 },
5784     { 6 MSO_I, 7 MSO_I }, { 8970, 21600 },
5785     { 12630, 21600 }, { 8 MSO_I, 9 MSO_I }, { 18010, 21600 },
5786     { 21600, 18010 },
5787     { 10 MSO_I, 11 MSO_I }, { 21600, 12630 },
5788     { 21600, 8970 }, { 12 MSO_I, 13 MSO_I }, { 21600, 3590 },
5789     { 18010, 0 },
5790     { 14 MSO_I, 15 MSO_I }, { 12630, 0 },
5791     { 8970, 0 }, { 16 MSO_I, 17 MSO_I }
5792 };
5793 static const sal_uInt16 mso_sptWedgeRRectCalloutSegm[] =
5794 {
5795     0x4000, 0xa701, 0x0005, 0xa801, 0x0005, 0xa701, 0x0005, 0xa801, 0x0004, 0x6001, 0x8000
5796 };
5797 static const SvxMSDffTextRectangles mso_sptWedgeRRectCalloutTextRect[] =
5798 {
5799     { { 800, 800 }, { 20800, 20800 } }
5800 };
5801 static const mso_CustomShape msoWedgeRRectCallout =
5802 {
5803     (SvxMSDffVertPair*)mso_sptWedgeRRectCalloutVert, sizeof( mso_sptWedgeRRectCalloutVert ) / sizeof( SvxMSDffVertPair ),
5804     (sal_uInt16*)mso_sptWedgeRRectCalloutSegm, sizeof( mso_sptWedgeRRectCalloutSegm ) >> 1,
5805     (SvxMSDffCalculationData*)mso_sptWedgeRectCalloutCalc, sizeof( mso_sptWedgeRectCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
5806     (sal_Int32*)mso_sptWedgeRectCalloutDefault,
5807     (SvxMSDffTextRectangles*)mso_sptWedgeRRectCalloutTextRect, sizeof( mso_sptWedgeRRectCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
5808     21600, 21600,
5809     0x80000000, 0x80000000,
5810     NULL, 0,
5811     (SvxMSDffHandle*)mso_sptCalloutHandle, sizeof( mso_sptCalloutHandle ) / sizeof( SvxMSDffHandle )        // handles
5812 };
5813 static const SvxMSDffVertPair mso_sptBalloonVert[] =
5814 {
5815     { 3590, 0 },
5816     { 0, 3590 },
5817     { 0, 14460 },
5818     { 3590, 18050 },
5819     { 40 MSO_I, 21600 }, { 5420, 18050 },
5820     { 18010, 18050 },
5821     { 21600, 14460 },
5822     { 21600, 3590 },
5823     { 18010, 0 }
5824 };
5825 static const sal_uInt16 mso_sptBalloonSegm[] =
5826 {
5827     0x4000, 0xa701, 0x0001, 0xa801, 0x0003, 0xa701, 0x0001, 0xa801, 0x6001, 0x8000
5828 };
5829 static const SvxMSDffHandle mso_sptBalloonHandle[] =
5830 {
5831     {
5832         MSDFF_HANDLE_FLAGS_RANGE,
5833         0x100, 1, 10800, 10800, 0, 8990, 0x80000000, 0x7fffffff
5834     }
5835 };
5836 static const SvxMSDffTextRectangles mso_sptBalloonTextRect[] =
5837 {
5838     { { 800, 800 }, { 20800, 17250 } }
5839 };
5840 static const mso_CustomShape msoBalloon =
5841 {
5842     (SvxMSDffVertPair*)mso_sptBalloonVert, sizeof( mso_sptBalloonVert ) / sizeof( SvxMSDffVertPair ),
5843     (sal_uInt16*)mso_sptBalloonSegm, sizeof( mso_sptBalloonSegm ) >> 1,
5844     (SvxMSDffCalculationData*)mso_sptWedgeRectCalloutCalc, sizeof( mso_sptWedgeRectCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
5845     (sal_Int32*)mso_sptWedgeRectCalloutDefault,
5846     (SvxMSDffTextRectangles*)mso_sptBalloonTextRect, sizeof( mso_sptBalloonTextRect ) / sizeof( SvxMSDffTextRectangles ),
5847     21600, 21600,
5848     0x80000000, 0x80000000,
5849     NULL, 0,
5850     (SvxMSDffHandle*)mso_sptBalloonHandle, sizeof( mso_sptBalloonHandle ) / sizeof( SvxMSDffHandle )        // handles
5851 };
5852 static const SvxMSDffVertPair mso_sptWedgeEllipseCalloutVert[] =
5853 {
5854     { 0, 0 }, { 21600, 21600 }, { 0x16 MSO_I, 0x17 MSO_I }, { 0x12 MSO_I, 0x13 MSO_I }, { 0xe MSO_I, 0xf MSO_I }
5855 };
5856 static const sal_uInt16 mso_sptWedgeEllipseCalloutSegm[] =
5857 {
5858     0xa504, 0x0001, 0x6001, 0x8000
5859 };
5860 static const SvxMSDffCalculationData mso_sptWedgeEllipseCalloutCalc[] =
5861 {
5862     { 0x2000, { DFF_Prop_adjustValue, 0, 10800 } },     // 00 rad x
5863     { 0x2000, { DFF_Prop_adjust2Value, 0, 10800 } },    // 01 rad y
5864     { 0x6001, { 0x400, 0x400, 1 } },                    // 02 rad x^2
5865     { 0x6001, { 0x401, 0x401, 1 } },                    // 03 rad y^2
5866     { 0x6000, { 0x402, 0x403, 0 } },                    // 04
5867     { 0x200d, { 0x404, 0, 0 } },                        // 05
5868     { 0x2000, { 0x405, 0, 10800 } },                    // 06 > 0 ? spur needs to be drawn : 10800
5869     { 0x6008, { 0x400, 0x401, 0 } },                    // 07 atan2 -> angle
5870     { 0x2000, { 0x407, 0, 10 } },                       // 08
5871     { 0x2000, { 0x407, 10, 0 } },                       // 09
5872     { 0x400a, { 10800, 0x407, 0 } },                    // 0a
5873     { 0x4009, { 10800, 0x407, 0 } },                    // 0b
5874     { 0x2000, { 0x40a, 10800, 0 } },                    // 0c
5875     { 0x2000, { 0x40b, 10800, 0 } },                    // 0d
5876     { 0xe006, { 0x406, DFF_Prop_adjustValue, 0x40c } }, // 0e
5877     { 0xe006, { 0x406, DFF_Prop_adjust2Value, 0x40d } },// 0f
5878     { 0x400a, { 10800, 0x408, 0 } },                    // 10
5879     { 0x4009, { 10800, 0x408, 0 } },                    // 11
5880     { 0x2000, { 0x410, 10800, 0 } },                    // 12
5881     { 0x2000, { 0x411, 10800, 0 } },                    // 13
5882     { 0x400a, { 10800, 0x409, 0 } },                    // 14
5883     { 0x4009, { 10800, 0x409, 0 } },                    // 15
5884     { 0x2000, { 0x414, 10800, 0 } },                    // 16
5885     { 0x2000, { 0x415, 10800, 0 } }                     // 17
5886 };
5887 static const sal_Int32 mso_sptWedgeEllipseCalloutDefault[] =
5888 {
5889     2, 1350, 25920
5890 };
5891 static const SvxMSDffVertPair mso_sptWedgeEllipseCalloutGluePoints[] =
5892 {
5893     { 10800, 0 }, { 3160, 3160 }, { 0, 10800 }, { 3160, 18440 }, { 10800, 21600 }, { 18440, 18440 }, { 21600, 10800 }, { 18440, 3160 }, { 0xe MSO_I, 0xf MSO_I }
5894 };
5895 static const SvxMSDffTextRectangles mso_sptWedgeEllipseCalloutTextRect[] =
5896 {
5897     { { 3200, 3200 }, { 18400, 18400 } }
5898 };
5899 static const mso_CustomShape msoWedgeEllipseCallout =
5900 {
5901     (SvxMSDffVertPair*)mso_sptWedgeEllipseCalloutVert, sizeof( mso_sptWedgeEllipseCalloutVert ) / sizeof( SvxMSDffVertPair ),
5902     (sal_uInt16*)mso_sptWedgeEllipseCalloutSegm, sizeof( mso_sptWedgeEllipseCalloutSegm ) >> 1,
5903     (SvxMSDffCalculationData*)mso_sptWedgeEllipseCalloutCalc, sizeof( mso_sptWedgeEllipseCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
5904     (sal_Int32*)mso_sptWedgeEllipseCalloutDefault,
5905     (SvxMSDffTextRectangles*)mso_sptWedgeEllipseCalloutTextRect, sizeof( mso_sptWedgeEllipseCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
5906     21600, 21600,
5907     0x80000000, 0x80000000,
5908     (SvxMSDffVertPair*)mso_sptWedgeEllipseCalloutGluePoints, sizeof( mso_sptWedgeEllipseCalloutGluePoints ) / sizeof( SvxMSDffVertPair ),
5909     (SvxMSDffHandle*)mso_sptCalloutHandle, sizeof( mso_sptCalloutHandle ) / sizeof( SvxMSDffHandle )        // handles
5910 };
5911 
5912 static const SvxMSDffVertPair mso_sptCloudCalloutVert[] =
5913 {
5914     { 1930,7160 },                                      // p
5915     { 1530,4490 }, { 3400,1970 }, { 5270,1970 },        // ccp
5916     { 5860,1950 }, { 6470,2210 }, { 6970,2600 },        // ccp
5917     { 7450,1390 }, { 8340,650 }, { 9340,650 },          // ccp
5918     { 10004,690 }, { 10710,1050 }, { 11210,1700 },      // ccp
5919     { 11570,630 }, { 12330,0 }, { 13150,0 },            // ccp
5920     { 13840,0 }, { 14470,460 }, { 14870,1160 },         // ccp
5921     { 15330,440 }, { 16020,0 }, { 16740,0 },            // ccp
5922     { 17910,0 }, { 18900,1130 }, { 19110,2710 },        // ccp
5923     { 20240,3150 }, { 21060,4580 }, { 21060,6220 },     // ccp
5924     { 21060,6720 }, { 21000,7200 }, { 20830,7660 },     // ccp
5925     { 21310,8460 }, { 21600,9450 }, { 21600,10460 },    // ccp
5926     { 21600,12750 }, { 20310,14680 }, { 18650,15010 },  // ccp
5927     { 18650,17200 }, { 17370,18920 }, { 15770,18920 },  // ccp
5928     { 15220,18920 }, { 14700,18710 }, { 14240,18310 },  // ccp
5929     { 13820,20240 }, { 12490,21600 }, { 11000,21600 },  // ccp
5930     { 9890,21600 }, { 8840,20790 }, { 8210,19510 },     // ccp
5931     { 7620,20000 }, { 7930,20290 }, { 6240,20290 },     // ccp
5932     { 4850,20290 }, { 3570,19280 }, { 2900,17640 },     // ccp
5933     { 1300,17600 }, { 480,16300 }, { 480,14660 },       // ccp
5934     { 480,13900 }, { 690,13210 }, { 1070,12640 },       // ccp
5935     { 380,12160 }, { 0,11210 }, { 0,10120 },            // ccp
5936     { 0,8590 }, { 840,7330 }, { 1930,7160 },            // ccp
5937 
5938     { 1930, 7160 }, { 1950, 7410 }, { 2040, 7690 }, { 2090, 7920 },         // pccp
5939     { 6970, 2600 }, { 7200, 2790 }, { 7480, 3050 }, { 7670, 3310 },         // pccp
5940     { 11210, 1700 }, { 11130, 1910 }, { 11080, 2160 }, { 11030, 2400 },     // pccp
5941     { 14870, 1160 }, { 14720, 1400 }, { 14640, 1720 }, { 14540, 2010 },     // pccp
5942     { 19110, 2710 }, { 19130, 2890 }, { 19230, 3290 }, { 19190, 3380 },     // pccp
5943     { 20830, 7660 }, { 20660, 8170 }, { 20430, 8620 }, { 20110, 8990 },     // pccp
5944     { 18660, 15010 }, { 18740, 14200 }, { 18280, 12200 }, { 17000, 11450 }, // pccp
5945     { 14240, 18310 }, { 14320, 17980 }, { 14350, 17680 }, { 14370, 17360 }, // pccp
5946     { 8220, 19510 }, { 8060, 19250 }, { 7960, 18950 }, { 7860, 18640 },     // pccp
5947     { 2900, 17640 }, { 3090, 17600 }, { 3280, 17540 }, { 3460, 17450 },     // pccp
5948     { 1070, 12640 }, { 1400, 12900 }, { 1780, 13130 }, { 2330, 13040 },     // pccp
5949 
5950     { 0x11 MSO_I, 0x12 MSO_I }, { 1800, 1800 }, { 0, 360 },                 // circ1
5951     { 0x13 MSO_I, 0x14 MSO_I }, { 1200, 1200 }, { 0, 360 },                 // circ2
5952     { 0xd MSO_I, 0xe MSO_I }, { 700, 700 }, { 0, 360 }                      // circ3
5953 };
5954 static const sal_uInt16 mso_sptCloudCalloutSegm[] =
5955 {
5956     0x4000, 0x2016, 0x6001, 0x8000,
5957     0x4000, 0x2001, 0xaa00, 0x8000,
5958     0x4000, 0x2001, 0xaa00, 0x8000,
5959     0x4000, 0x2001, 0xaa00, 0x8000,
5960     0x4000, 0x2001, 0xaa00, 0x8000,
5961     0x4000, 0x2001, 0xaa00, 0x8000,
5962     0x4000, 0x2001, 0xaa00, 0x8000,
5963     0x4000, 0x2001, 0xaa00, 0x8000,
5964     0x4000, 0x2001, 0xaa00, 0x8000,
5965     0x4000, 0x2001, 0xaa00, 0x8000,
5966     0x4000, 0x2001, 0xaa00, 0x8000,
5967     0x4000, 0x2001, 0xaa00, 0x8000,
5968     0xa203, 0x6001, 0x8000,
5969     0xa203, 0x6001, 0x8000,
5970     0xa203, 0x6001, 0x8000
5971 };
5972 static const SvxMSDffCalculationData mso_sptCloudCalloutCalc[] =
5973 {
5974     { 0x2000, { DFF_Prop_adjustValue, 0, 10800 } },
5975     { 0x2000, { DFF_Prop_adjust2Value, 0, 10800 } },
5976     { 0x6008, { 0x400, 0x401, 0 } },
5977     { 0x400a, { 10800, 0x402, 0 } },                    // 3
5978     { 0x4009, { 10800, 0x402, 0 } },                    // 4
5979     { 0x2000, { 0x403, 10800, 0 } },                    // 5
5980     { 0x2000, { 0x404, 10800, 0 } },                    // 6
5981     { 0xa000, { DFF_Prop_adjustValue, 0, 0x405 } },     // 7
5982     { 0xa000, { DFF_Prop_adjust2Value,0, 0x406 } },     // 8
5983     { 0x2001, { 0x407, 1, 3 } },                        // 9
5984     { 0x2001, { 0x408, 1, 3 } },                        // 0xa
5985     { 0x2001, { 0x407, 2, 3 } },                        // 0xb
5986     { 0x2001, { 0x408, 2, 3 } },                        // 0xc
5987     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },         // 0xd
5988     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },        // 0xe
5989     { 0x2001, { 0x403, 1, 10800 / 900 } },              // 0xf  taking half x distance of the radius from the first bobble
5990     { 0x2001, { 0x404, 1, 10800 / 900 } },              // 0x10
5991     { 0xe000, { 0x409, 0x405, 0x40f } },                // 0x11
5992     { 0xe000, { 0x40a, 0x406, 0x410 } },                // 0x12
5993     { 0x6000, { 0x40b, 0x405, 0 } },                    // 0x13
5994     { 0x6000, { 0x40c, 0x406, 0 } }                     // 0x14
5995 };
5996 static const sal_Int32 mso_sptCloudCalloutDefault[] =
5997 {
5998     2, 1350, 25920
5999 };
6000 static const SvxMSDffTextRectangles mso_sptCloudCalloutTextRect[] =
6001 {
6002     { { 3000, 3320 }, { 17110, 17330 } }
6003 };
6004 static const mso_CustomShape msoCloudCallout =
6005 {
6006     (SvxMSDffVertPair*)mso_sptCloudCalloutVert, sizeof( mso_sptCloudCalloutVert ) / sizeof( SvxMSDffVertPair ),
6007     (sal_uInt16*)mso_sptCloudCalloutSegm, sizeof( mso_sptCloudCalloutSegm ) >> 1,
6008     (SvxMSDffCalculationData*)mso_sptCloudCalloutCalc, sizeof( mso_sptCloudCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
6009     (sal_Int32*)mso_sptCloudCalloutDefault,
6010     (SvxMSDffTextRectangles*)mso_sptCloudCalloutTextRect, sizeof( mso_sptCloudCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
6011     21600, 21600,
6012     0x80000000, 0x80000000,
6013     NULL, 0,
6014     (SvxMSDffHandle*)mso_sptCalloutHandle, sizeof( mso_sptCalloutHandle ) / sizeof( SvxMSDffHandle )        // handles
6015 };
6016 
6017 static const SvxMSDffVertPair mso_sptWaveVert[] =   // adjustment1 : 0 - 4460
6018 {                                                   // adjustment2 : 8640 - 12960
6019     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
6020     { 24 MSO_I, 1 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 29 MSO_I, 1 MSO_I }
6021 };
6022 static const SvxMSDffCalculationData mso_sptWaveCalc[] =
6023 {
6024     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, //400 (vert.adj)
6025     { 0x8000, { 21600, 0, 0x400 } },            //401
6026     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },//402 (horz.adj)
6027     { 0x2000, { 0x402, 0, 10800 } },            //403 -2160 -> 2160 (horz.adj)
6028     { 0x2001, { 0x403, 2, 1 } },                //404 -4320 -> 4320 (horz.adj)
6029     { 0x2003, { 0x404, 0, 0 } },                //405 abs( 0x404 )  (horz.adj)
6030     { 0x8000, { 4320, 0, 0x405 } },             //406
6031     { 0xa006, { 0x403, 0, 0x405 } },            //407
6032     { 0x4001, { 15800, 0x400, 4460 } },         //408 0 -> 15800    (vert.adj)
6033     { 0xa000, { 0x400, 0, 0x408 } },            //409
6034     { 0x6000, { 0x400, 0x408, 0 } },            //40a
6035     { 0x8000, { 21600, 0, 0x404 } },            //40b
6036     { 0x6006, { 0x403, 0x40b, 21600 } },        //40c
6037     { 0xa000, { 0x40c, 0, 0x407 } },            //40d width between p0 and p1
6038     { 0x2001, { 0x405, 1, 2 } },                //40e
6039     { 0xa000, { 0x407, 7200, 0x40e } },         //40f
6040     { 0x6000, { 0x40c, 0x40e, 7200 } },         //410
6041     { 0x2001, { 0x40d, 1, 2 } },                //411 1/2 width
6042     { 0x6000, { 0x407, 0x411, 0 } },            //412 top center glue xpos
6043     { 0x8000, { 21600, 0, 0x412 } },            //413 bottom center glue xpos
6044     { 0x2001, { 0x405, 1, 2 } },                //414 left glue x pos
6045     { 0x8000, { 21600, 0, 0x414 } },            //415 right glue x pos
6046     { 0x2001, { 0x400, 2, 1 } },                //416 y1 (textbox)
6047     { 0x8000, { 21600, 0, 0x416 } },            //417 y2 (textbox)
6048 
6049     { 0x8000, { 21600, 0, 0x407 } },            //418 p2
6050 
6051     { 0x8000, { 21600, 0, 0x40f } },            //419 c
6052     { 0x6000, { 0x401, 0x408, 0 } },            //41a
6053 
6054     { 0x8000, { 21600, 0, 0x410 } },            //41b c
6055     { 0xa000, { 0x401, 0, 0x408 } },            //41c
6056 
6057     { 0x8000, { 21600, 0, 0x40c } }             //41d p3
6058 };
6059 static const SvxMSDffVertPair mso_sptWaveGluePoints[] =
6060 {
6061     { 0x12 MSO_I, 0 MSO_I }, { 0x14 MSO_I, 10800 }, { 0x13 MSO_I, 1 MSO_I }, { 0x15 MSO_I, 10800 }
6062 };
6063 static const sal_uInt16 mso_sptWaveSegm[] =
6064 {
6065     0x4000, 0x2001, 0x0001, 0x2001, 0x6000, 0x8000
6066 };
6067 static const SvxMSDffHandle mso_sptWaveHandle[] =
6068 {
6069     {   MSDFF_HANDLE_FLAGS_RANGE,
6070         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 4460 },
6071     {   MSDFF_HANDLE_FLAGS_RANGE,
6072         0x101, 21600, 10800, 10800, 8640, 12960, 0x80000000, 0x7fffffff }
6073 };
6074 static const sal_Int32 mso_sptWaveDefault[] =
6075 {
6076     2, 1400, 10800
6077 };
6078 static const SvxMSDffTextRectangles mso_sptWaveTextRect[] =
6079 {
6080     { { 5 MSO_I, 22 MSO_I }, { 11 MSO_I, 23 MSO_I } }
6081 };
6082 static const mso_CustomShape msoWave =
6083 {
6084     (SvxMSDffVertPair*)mso_sptWaveVert, sizeof( mso_sptWaveVert ) / sizeof( SvxMSDffVertPair ),
6085     (sal_uInt16*)mso_sptWaveSegm, sizeof( mso_sptWaveSegm ) >> 1,
6086     (SvxMSDffCalculationData*)mso_sptWaveCalc, sizeof( mso_sptWaveCalc ) / sizeof( SvxMSDffCalculationData ),
6087     (sal_Int32*)mso_sptWaveDefault,
6088     (SvxMSDffTextRectangles*)mso_sptWaveTextRect, sizeof( mso_sptWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
6089     21600, 21600,
6090     0x80000000, 0x80000000,
6091     (SvxMSDffVertPair*)mso_sptWaveGluePoints, sizeof( mso_sptWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
6092     (SvxMSDffHandle*)mso_sptWaveHandle, sizeof( mso_sptWaveHandle ) / sizeof( SvxMSDffHandle )
6093 };
6094 
6095 static const SvxMSDffVertPair mso_sptDoubleWaveVert[] = // adjustment1 : 0 - 2230
6096 {                                                       // adjustment2 : 8640 - 12960
6097     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 0x1e MSO_I, 10 MSO_I }, { 0x12 MSO_I, 0 MSO_I }, { 0x1f MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
6098     { 24 MSO_I, 1 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 0x21 MSO_I, 28 MSO_I }, { 0x13 MSO_I, 1 MSO_I }, { 0x20 MSO_I, 26 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 29 MSO_I, 1 MSO_I }
6099 };
6100 static const SvxMSDffCalculationData mso_sptDoubleWaveCalc[] =
6101 {
6102     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, //400 (vert.adj)
6103     { 0x8000, { 21600, 0, 0x400 } },            //401
6104     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },//402 (horz.adj)
6105     { 0x2000, { 0x402, 0, 10800 } },            //403 -2160 -> 2160 (horz.adj)
6106     { 0x2001, { 0x403, 2, 1 } },                //404 -4320 -> 4320 (horz.adj)
6107     { 0x2003, { 0x404, 0, 0 } },                //405 abs( 0x404 )  (horz.adj)
6108     { 0x8000, { 4320, 0, 0x405 } },             //406 -> not used
6109     { 0xa006, { 0x403, 0, 0x405 } },            //407
6110     { 0x4001, { 7900, 0x400, 2230 } },          //408 0 -> 7900 (vert.adj)
6111     { 0xa000, { 0x400, 0, 0x408 } },            //409
6112     { 0x6000, { 0x400, 0x408, 0 } },            //40a
6113     { 0x8000, { 21600, 0, 0x404 } },            //40b
6114     { 0x6006, { 0x403, 0x40b, 21600 } },        //40c
6115     { 0xa000, { 0x40c, 0, 0x407 } },            //40d width between p0 and p1
6116     { 0x2001, { 0x405, 1, 2 } },                //40e
6117     { 0xa000, { 0x407, 3600, 0x40e } },         //40f
6118     { 0x6000, { 0x40c, 0x40e, 3600 } },         //410
6119     { 0x2001, { 0x40d, 1, 2 } },                //411 1/2 width
6120     { 0x6000, { 0x407, 0x411, 0 } },            //412 top center glue xpos
6121     { 0x8000, { 21600, 0, 0x412 } },            //413 bottom center glue xpos
6122     { 0x2001, { 0x405, 1, 2 } },                //414 left glue x pos
6123     { 0x8000, { 21600, 0, 0x414 } },            //415 right glue x pos
6124     { 0x2001, { 0x400, 2, 1 } },                //416 y1 (textbox)
6125     { 0x8000, { 21600, 0, 0x416 } },            //417 y2 (textbox)
6126 
6127     { 0x8000, { 21600, 0, 0x407 } },            //418 p2
6128 
6129     { 0x8000, { 21600, 0, 0x40f } },            //419 c
6130     { 0x6000, { 0x401, 0x408, 0 } },            //41a
6131 
6132     { 0x8000, { 21600, 0, 0x410 } },            //41b c
6133     { 0xa000, { 0x401, 0, 0x408 } },            //41c
6134 
6135     { 0x8000, { 21600, 0, 0x40c } },            //41d p3
6136     { 0xa000, { 0x412, 0, 0x40e } },            //41e
6137     { 0x6000, { 0x412, 0x40e, 0 } },            //41f
6138     { 0xa000, { 0x413, 0, 0x40e } },            //420
6139     { 0x6000, { 0x413, 0x40e, 0 } }             //421
6140 };
6141 static const SvxMSDffVertPair mso_sptDoubleWaveGluePoints[] =
6142 {
6143     { 0x12 MSO_I, 0 MSO_I }, { 0x14 MSO_I, 10800 }, { 0x13 MSO_I, 1 MSO_I }, { 0x15 MSO_I, 10800 }
6144 };
6145 static const sal_uInt16 mso_sptDoubleWaveSegm[] =
6146 {
6147     0x4000, 0x2002, 0x0001, 0x2002, 0x6000, 0x8000
6148 };
6149 static const SvxMSDffHandle mso_sptDoubleWaveHandle[] =
6150 {
6151     {   MSDFF_HANDLE_FLAGS_RANGE,
6152         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 2230 },
6153     {   MSDFF_HANDLE_FLAGS_RANGE,
6154         0x101, 21600, 10800, 10800, 8640, 12960, 0x80000000, 0x7fffffff }
6155 };
6156 static const sal_Int32 mso_sptDoubleWaveDefault[] =
6157 {
6158     2, 1400, 10800
6159 };
6160 static const SvxMSDffTextRectangles mso_sptDoubleWaveTextRect[] =
6161 {
6162     { { 5 MSO_I, 22 MSO_I }, { 11 MSO_I, 23 MSO_I } }
6163 };
6164 static const mso_CustomShape msoDoubleWave =
6165 {
6166     (SvxMSDffVertPair*)mso_sptDoubleWaveVert, sizeof( mso_sptDoubleWaveVert ) / sizeof( SvxMSDffVertPair ),
6167     (sal_uInt16*)mso_sptDoubleWaveSegm, sizeof( mso_sptDoubleWaveSegm ) >> 1,
6168     (SvxMSDffCalculationData*)mso_sptDoubleWaveCalc, sizeof( mso_sptDoubleWaveCalc ) / sizeof( SvxMSDffCalculationData ),
6169     (sal_Int32*)mso_sptDoubleWaveDefault,
6170     (SvxMSDffTextRectangles*)mso_sptDoubleWaveTextRect, sizeof( mso_sptDoubleWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
6171     21600, 21600,
6172     0x80000000, 0x80000000,
6173     (SvxMSDffVertPair*)mso_sptDoubleWaveGluePoints, sizeof( mso_sptDoubleWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
6174     (SvxMSDffHandle*)mso_sptDoubleWaveHandle, sizeof( mso_sptDoubleWaveHandle ) / sizeof( SvxMSDffHandle )
6175 };
6176 
6177 // for each shapetype a bit of 1 is indicating that the shape is NOT filled by default
6178 static const sal_uInt16 mso_DefaultFillingTable[] =
6179 {
6180     0x0000, 0x0018, 0x01ff, 0x0000, 0x0c00, 0x01e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000
6181 };
6182 sal_Bool IsCustomShapeFilledByDefault( MSO_SPT eSpType )
6183 {
6184     sal_Bool bIsFilledByDefault = sal_True;
6185     sal_uInt32 i = (sal_uInt32)eSpType;
6186     if ( i < 0x100 )
6187         bIsFilledByDefault = ( mso_DefaultFillingTable[ i >> 4 ] & ( 1 << ( i & 0xf ) ) ) == 0;
6188     return bIsFilledByDefault;
6189 }
6190 sal_Int16 GetCustomShapeConnectionTypeDefault( MSO_SPT eSpType )
6191 {
6192     sal_Int16 nGluePointType = com::sun::star::drawing::EnhancedCustomShapeGluePointType::SEGMENTS;
6193     const mso_CustomShape* pDefCustomShape = GetCustomShapeContent( eSpType );
6194     if ( pDefCustomShape && pDefCustomShape->nGluePoints )
6195         nGluePointType = com::sun::star::drawing::EnhancedCustomShapeGluePointType::CUSTOM;
6196     else
6197     {
6198         switch( eSpType )
6199         {
6200             case mso_sptRectangle :
6201             case mso_sptRoundRectangle :
6202             case mso_sptPictureFrame :
6203             case mso_sptFlowChartProcess :
6204             case mso_sptFlowChartPredefinedProcess :
6205             case mso_sptFlowChartInternalStorage :
6206             case mso_sptTextPlainText :
6207             case mso_sptTextBox :
6208             case mso_sptVerticalScroll :
6209             case mso_sptHorizontalScroll :
6210                 nGluePointType = com::sun::star::drawing::EnhancedCustomShapeGluePointType::RECT;
6211             default: break;
6212         }
6213     }
6214     return nGluePointType;
6215 }
6216 
6217 // for each shapetype a bit of 1 is indicating that the shape is NOT stroked by default
6218 // #i28269#
6219 static const sal_uInt16 mso_DefaultStrokingTable[] =
6220 {
6221     0x0000, 0x0000, 0x0000, 0x0000,
6222     0x0800, 0x0000, 0x0000, 0x0000, // #i28269# Added shape 75 (mso_sptPictureFrame)
6223     0x0000, 0x0000, 0x0000, 0x0000,
6224     0x0000, 0x0000, 0x0000, 0x0000
6225 };
6226 // #i28269#
6227 sal_Bool IsCustomShapeStrokedByDefault( MSO_SPT eSpType )
6228 {
6229     sal_Bool bIsStrokedByDefault = sal_True;
6230     sal_uInt32 i = (sal_uInt32)eSpType;
6231     if ( i < 0x100 )
6232         bIsStrokedByDefault = ( mso_DefaultStrokingTable[ i >> 4 ] & ( 1 << ( i & 0xf ) ) ) == 0;
6233     return bIsStrokedByDefault;
6234 }
6235 
6236 static const sal_uInt16 msoSortFilledObjectsToBackTable[] =
6237 {
6238     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
6239 };
6240 sal_Bool SortFilledObjectsToBackByDefault( MSO_SPT eSpType )
6241 {
6242     sal_Bool bSortFilledObjectsToBackByDefault = sal_True;
6243     sal_uInt32 i = (sal_uInt32)eSpType;
6244     if ( i < 0x100 )
6245         bSortFilledObjectsToBackByDefault = ( msoSortFilledObjectsToBackTable[ i >> 4 ] & ( 1 << ( i & 0xf ) ) ) != 0;
6246     return bSortFilledObjectsToBackByDefault;
6247 }
6248 
6249 static const SvxMSDffVertPair mso_sptFontWorkVert[] =
6250 {
6251     { 0, 0 }, { 21600, 0 }, { 0, 21600 }, { 21600, 21600 }
6252 };
6253 static const sal_uInt16 mso_sptFontWorkSegm[] =
6254 {
6255     0x4000, 0x0001, 0x8000,
6256     0x4000, 0x0001, 0x8000
6257 };
6258 static const SvxMSDffTextRectangles mso_sptFontWorkTextRect[] =
6259 {
6260     { { 0, 0 }, { 21600, 21600 } }
6261 };
6262 static const mso_CustomShape msoFontWork =
6263 {
6264     (SvxMSDffVertPair*)mso_sptFontWorkVert, sizeof( mso_sptFontWorkVert ) / sizeof( SvxMSDffVertPair ),
6265     (sal_uInt16*)mso_sptFontWorkSegm, sizeof( mso_sptFontWorkSegm ) >> 1,
6266     NULL, 0,
6267     NULL,
6268     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6269     21600, 21600,
6270     0x80000000, 0x80000000,
6271     NULL, 0,
6272     NULL, 0 // Handles
6273 };
6274 
6275 static const SvxMSDffVertPair mso_sptTextPlainTextVert[] =
6276 {
6277     { 3 MSO_I, 0 }, { 5 MSO_I, 0 }, { 6 MSO_I, 21600 }, { 7 MSO_I, 21600 }
6278 };
6279 static const SvxMSDffCalculationData mso_sptTextPlainTextCalc[] =   // adjustment1 : 6629 - 14971
6280 {
6281     { 0x2000, { DFF_Prop_adjustValue, 0, 10800 } },
6282     { 0x2001, { 0x400, 2, 1 } },
6283     { 0x2003, { 0x401, 0, 0 } },
6284     { 0xa006, { 0x401, 0, 0x402 } },        // x1(3)
6285     { 0x8000, { 21600, 0, 0x402 } },
6286     { 0x6006, { 0x401, 0x404, 21600 } },    // x2(5)
6287     { 0x6006, { 0x401, 0x402, 0 } },        // x2
6288     { 0xa006, { 0x401, 21600, 0x404 } }     // x3(7)
6289 };
6290 static const sal_uInt16 mso_sptTextPlainTextSegm[] =
6291 {
6292     0x4000, 0x0001, 0x8000,
6293     0x4000, 0x0001, 0x8000
6294 };
6295 static const SvxMSDffHandle mso_sptTextPlainTextHandle[] =
6296 {
6297     {   MSDFF_HANDLE_FLAGS_RANGE,
6298         0x100, 21600, 10800, 10800, 6629, 14971, 0x80000000, 0x7fffffff }
6299 };
6300 static const mso_CustomShape msoTextPlainText =
6301 {
6302     (SvxMSDffVertPair*)mso_sptTextPlainTextVert, sizeof( mso_sptTextPlainTextVert ) / sizeof( SvxMSDffVertPair ),
6303     (sal_uInt16*)mso_sptTextPlainTextSegm, sizeof( mso_sptTextPlainTextSegm ) >> 1,
6304     (SvxMSDffCalculationData*)mso_sptTextPlainTextCalc, sizeof( mso_sptTextPlainTextCalc ) / sizeof( SvxMSDffCalculationData ),
6305     (sal_Int32*)mso_sptDefault10800,
6306     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6307     21600, 21600,
6308     0x80000000, 0x80000000,
6309     NULL, 0,
6310     (SvxMSDffHandle*)mso_sptTextPlainTextHandle, sizeof( mso_sptTextPlainTextHandle ) / sizeof( SvxMSDffHandle )
6311 };
6312 
6313 static const SvxMSDffVertPair mso_sptTextStopVert[] =
6314 {
6315     { 0, 0 MSO_I }, { 7200, 0 }, { 14400, 0 }, { 21600, 0 MSO_I },
6316     { 0, 1 MSO_I }, { 7200, 21600 }, { 14400, 21600 }, { 21600, 1 MSO_I }
6317 };
6318 static const SvxMSDffCalculationData mso_sptTextStopCalc[] =    // adjustment1 : 3080 - 10800
6319 {
6320     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
6321     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }
6322 };
6323 static const sal_uInt16 mso_sptTextStopSegm[] =
6324 {
6325     0x4000, 0x0003, 0x8000,
6326     0x4000, 0x0003, 0x8000
6327 };
6328 static const sal_Int32 mso_sptTextStopDefault[] =
6329 {
6330     1, 2700
6331 };
6332 static const SvxMSDffHandle mso_sptTextStopHandle[] =
6333 {
6334     {   MSDFF_HANDLE_FLAGS_RANGE,
6335         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 3080, 10800 }
6336 };
6337 static const mso_CustomShape msoTextStop =
6338 {
6339     (SvxMSDffVertPair*)mso_sptTextStopVert, sizeof( mso_sptTextStopVert ) / sizeof( SvxMSDffVertPair ),
6340     (sal_uInt16*)mso_sptTextStopSegm, sizeof( mso_sptTextStopSegm ) >> 1,
6341     (SvxMSDffCalculationData*)mso_sptTextStopCalc, sizeof( mso_sptTextStopCalc ) / sizeof( SvxMSDffCalculationData ),
6342     (sal_Int32*)mso_sptTextStopDefault,
6343     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6344     21600, 21600,
6345     0x80000000, 0x80000000,
6346     NULL, 0,
6347     (SvxMSDffHandle*)mso_sptTextStopHandle, sizeof( mso_sptTextStopHandle ) / sizeof( SvxMSDffHandle )
6348 };
6349 
6350 static const SvxMSDffVertPair mso_sptTextTriangleVert[] =
6351 {
6352     { 0, 0 MSO_I }, { 10800, 0 }, { 21600, 0 MSO_I }, { 0, 21600 }, { 21600, 21600 }
6353 };
6354 static const SvxMSDffCalculationData mso_sptTextTriangleCalc[] =    // adjustment1 : 6629 - 14971
6355 {
6356     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }
6357 };
6358 static const sal_uInt16 mso_sptTextTriangleSegm[] =
6359 {
6360     0x4000, 0x0002, 0x8000,
6361     0x4000, 0x0001, 0x8000
6362 };
6363 static const SvxMSDffHandle mso_sptTextTriangleHandle[] =
6364 {
6365     {   MSDFF_HANDLE_FLAGS_RANGE,
6366         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 21600 }
6367 };
6368 static const mso_CustomShape msoTextTriangle =
6369 {
6370     (SvxMSDffVertPair*)mso_sptTextTriangleVert, sizeof( mso_sptTextTriangleVert ) / sizeof( SvxMSDffVertPair ),
6371     (sal_uInt16*)mso_sptTextTriangleSegm, sizeof( mso_sptTextTriangleSegm ) >> 1,
6372     (SvxMSDffCalculationData*)mso_sptTextTriangleCalc, sizeof( mso_sptTextTriangleCalc ) / sizeof( SvxMSDffCalculationData ),
6373     (sal_Int32*)mso_sptDefault10800,
6374     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6375     21600, 21600,
6376     0x80000000, 0x80000000,
6377     NULL, 0,
6378     (SvxMSDffHandle*)mso_sptTextTriangleHandle, sizeof( mso_sptTextTriangleHandle ) / sizeof( SvxMSDffHandle )
6379 };
6380 static const SvxMSDffVertPair mso_sptTextTriangleInvertedVert[] =
6381 {
6382     { 0, 0 }, { 21600, 0 }, { 0, 0 MSO_I }, { 10800, 21600 }, { 21600, 0 MSO_I }
6383 };
6384 static const sal_uInt16 mso_sptTextTriangleInvertedSegm[] =
6385 {
6386     0x4000, 0x0001, 0x8000,
6387     0x4000, 0x0002, 0x8000
6388 };
6389 static const mso_CustomShape msoTextTriangleInverted =
6390 {
6391     (SvxMSDffVertPair*)mso_sptTextTriangleInvertedVert, sizeof( mso_sptTextTriangleInvertedVert ) / sizeof( SvxMSDffVertPair ),
6392     (sal_uInt16*)mso_sptTextTriangleInvertedSegm, sizeof( mso_sptTextTriangleInvertedSegm ) >> 1,
6393     (SvxMSDffCalculationData*)mso_sptTextTriangleCalc, sizeof( mso_sptTextTriangleCalc ) / sizeof( SvxMSDffCalculationData ),
6394     (sal_Int32*)mso_sptDefault10800,
6395     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6396     21600, 21600,
6397     0x80000000, 0x80000000,
6398     NULL, 0,
6399     (SvxMSDffHandle*)mso_sptTextTriangleHandle, sizeof( mso_sptTextTriangleHandle ) / sizeof( SvxMSDffHandle )
6400 };
6401 
6402 static const SvxMSDffVertPair mso_sptTextChevronVert[] =
6403 {
6404     { 0, 0 MSO_I }, { 10800, 0 }, { 21600, 0 MSO_I }, { 0, 21600 }, { 10800, 1 MSO_I }, { 21600, 21600 }
6405 };
6406 static const SvxMSDffCalculationData mso_sptTextChevronCalc[] = // adjustment1 : 6629 - 14971
6407 {
6408     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
6409     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }
6410 };
6411 static const sal_uInt16 mso_sptTextChevronSegm[] =
6412 {
6413     0x4000, 0x0002, 0x8000,
6414     0x4000, 0x0002, 0x8000
6415 };
6416 static const SvxMSDffHandle mso_sptTextChevronHandle[] =
6417 {
6418     {   MSDFF_HANDLE_FLAGS_RANGE,
6419         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
6420 };
6421 static const mso_CustomShape msoTextChevron =
6422 {
6423     (SvxMSDffVertPair*)mso_sptTextChevronVert, sizeof( mso_sptTextChevronVert ) / sizeof( SvxMSDffVertPair ),
6424     (sal_uInt16*)mso_sptTextChevronSegm, sizeof( mso_sptTextChevronSegm ) >> 1,
6425     (SvxMSDffCalculationData*)mso_sptTextChevronCalc, sizeof( mso_sptTextChevronCalc ) / sizeof( SvxMSDffCalculationData ),
6426     (sal_Int32*)mso_sptDefault5400,
6427     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6428     21600, 21600,
6429     0x80000000, 0x80000000,
6430     NULL, 0,
6431     (SvxMSDffHandle*)mso_sptTextChevronHandle, sizeof( mso_sptTextChevronHandle ) / sizeof( SvxMSDffHandle )
6432 };
6433 
6434 static const SvxMSDffVertPair mso_sptTextChevronInvertedVert[] =
6435 {
6436     { 0, 0 }, { 10800, 1 MSO_I }, { 21600, 0 }, { 0, 0 MSO_I }, { 10800, 21600 }, { 21600, 0 MSO_I }
6437 };
6438 static const SvxMSDffCalculationData mso_sptTextChevronInvertedCalc[] = // adjustment1 : 6629 - 14971
6439 {
6440     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
6441     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }
6442 };
6443 static const sal_uInt16 mso_sptTextChevronInvertedSegm[] =
6444 {
6445     0x4000, 0x0002, 0x8000,
6446     0x4000, 0x0002, 0x8000
6447 };
6448 static const SvxMSDffHandle mso_sptTextChevronInvertedHandle[] =
6449 {
6450     {   MSDFF_HANDLE_FLAGS_RANGE,
6451         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 10800, 21600 }
6452 };
6453 static const mso_CustomShape msoTextChevronInverted =
6454 {
6455     (SvxMSDffVertPair*)mso_sptTextChevronInvertedVert, sizeof( mso_sptTextChevronInvertedVert ) / sizeof( SvxMSDffVertPair ),
6456     (sal_uInt16*)mso_sptTextChevronInvertedSegm, sizeof( mso_sptTextChevronInvertedSegm ) >> 1,
6457     (SvxMSDffCalculationData*)mso_sptTextChevronInvertedCalc, sizeof( mso_sptTextChevronInvertedCalc ) / sizeof( SvxMSDffCalculationData ),
6458     (sal_Int32*)mso_sptDefault16200,
6459     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6460     21600, 21600,
6461     0x80000000, 0x80000000,
6462     NULL, 0,
6463     (SvxMSDffHandle*)mso_sptTextChevronInvertedHandle, sizeof( mso_sptTextChevronInvertedHandle ) / sizeof( SvxMSDffHandle )
6464 };
6465 //V 0 0 21600 ?f2 0 ?f0 21600 ?f0
6466 //W 0 0 21600 ?f2 21600 ?f0 0 ?f0 N
6467 //V 0 ?f3 21600 21600 0 ?f1 21600 ?f1
6468 //W 0 ?f3 21600 21600 21600 ?f1 0 ?f1 N
6469 //mso_sptTextRingInside
6470 static const SvxMSDffVertPair mso_sptTextRingInsideVert[] =
6471 {
6472     { 0, 0 }, { 21600, 2 MSO_I }, { 0, 0 MSO_I },{ 21600, 0 MSO_I },//V
6473     { 0, 0 }, { 21600, 2 MSO_I }, { 21600, 0 MSO_I },{ 0, 0 MSO_I },//W
6474     { 0, 3 MSO_I }, { 21600, 21600 }, { 0, 1 MSO_I },{ 21600, 1 MSO_I },//V
6475     { 0, 3 MSO_I }, { 21600, 21600 }, { 21600, 1 MSO_I },{ 0, 1 MSO_I }//W
6476 };
6477 static const SvxMSDffCalculationData mso_sptTextRingInsideCalc[] =  // adjustment1 : 6629 - 14971
6478 {
6479     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
6480     { 0x8000, { 21600, 0, 0x400 } },
6481     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, //$0
6482     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }//21600-$0
6483 };
6484 static const sal_uInt16 mso_sptTextRingInsideSegm[] =
6485 {
6486     0xa604, 0xa504,0x8000,
6487     0xa604, 0xa504,0x8000
6488 };
6489 static const SvxMSDffHandle mso_sptTextRingInsideHandle[] =
6490 {
6491     {   MSDFF_HANDLE_FLAGS_RANGE| MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
6492         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 10800, 21600 }
6493 };
6494 static const mso_CustomShape msoTextRingInside =
6495 {
6496     (SvxMSDffVertPair*)mso_sptTextRingInsideVert, sizeof( mso_sptTextRingInsideVert ) / sizeof( SvxMSDffVertPair ),
6497     (sal_uInt16*)mso_sptTextRingInsideSegm, sizeof( mso_sptTextRingInsideSegm ) >> 1,
6498     (SvxMSDffCalculationData*)mso_sptTextRingInsideCalc, sizeof( mso_sptTextRingInsideCalc ) / sizeof( SvxMSDffCalculationData ),
6499     (sal_Int32*)mso_sptDefault13500,
6500     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6501     21600, 21600,
6502     0x80000000, 0x80000000,
6503     NULL, 0,
6504     (SvxMSDffHandle*)mso_sptTextRingInsideHandle, sizeof( mso_sptTextRingInsideHandle ) / sizeof( SvxMSDffHandle )
6505 };
6506 //mso_sptTextRingOutside
6507 //path = U 10800 ?f0 21600 ?f2 180 539 N U 10800 ?f1 21600 ?f2 180 539 N
6508 static const SvxMSDffVertPair mso_sptTextRingOutsideVert[] =
6509 {
6510     { 10800, 0 MSO_I }, { 21600, 2 MSO_I }, { 180, 539},//U
6511     { 10800, 1 MSO_I }, { 21600, 2 MSO_I }, { 180, 539 }//U
6512     //{ 10800, 0 MSO_I }, { 10800, 0 MSO_I }, { 180, 359 },
6513     //{ 10800, 1 MSO_I }, { 10800, 0 MSO_I }, { 180, 359 }
6514 };
6515 static const SvxMSDffCalculationData mso_sptTextRingOutsideCalc[] = // adjustment1 : 6629 - 14971
6516 {
6517     { 0x2001, { DFF_Prop_adjustValue, 1, 2 } },
6518     { 0x8000, { 21600, 0, 0x400 } },
6519     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, //$0
6520     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }//21600-$0
6521 };
6522 static const sal_uInt16 mso_sptTextRingOutsideSegm[] =
6523 {
6524     0xA203, 0x8000,
6525     0xA203, 0x8000
6526 };
6527 static const SvxMSDffHandle mso_sptTextRingOutsideHandle[] =
6528 {
6529     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL,
6530         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 10800, 21600 }
6531 };
6532 static const mso_CustomShape msoTextRingOutside =
6533 {
6534     (SvxMSDffVertPair*)mso_sptTextRingOutsideVert, sizeof( mso_sptTextRingOutsideVert ) / sizeof( SvxMSDffVertPair ),
6535     (sal_uInt16*)mso_sptTextRingOutsideSegm, sizeof( mso_sptTextRingOutsideSegm ) >> 1,
6536     (SvxMSDffCalculationData*)mso_sptTextRingOutsideCalc, sizeof( mso_sptTextRingOutsideCalc ) / sizeof( SvxMSDffCalculationData ),
6537     (sal_Int32*)mso_sptDefault13500,
6538     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6539     21600, 21600,
6540     0x80000000, 0x80000000,
6541     NULL, 0,
6542     (SvxMSDffHandle*)mso_sptTextRingOutsideHandle, sizeof( mso_sptTextRingOutsideHandle ) / sizeof( SvxMSDffHandle )
6543 };
6544 
6545 static const SvxMSDffVertPair mso_sptTextFadeRightVert[] =
6546 {
6547     { 0, 0 }, { 21600, 0 MSO_I }, { 0, 21600 }, { 21600, 1 MSO_I }
6548 };
6549 static const SvxMSDffCalculationData mso_sptTextFadeCalc[] =
6550 {
6551     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
6552     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }
6553 };
6554 static const sal_uInt16 mso_sptTextFadeSegm[] =
6555 {
6556     0x4000, 0x0001, 0x8000,
6557     0x4000, 0x0001, 0x8000
6558 };
6559 static const SvxMSDffHandle mso_sptTextFadeRightHandle[] =
6560 {
6561     {   MSDFF_HANDLE_FLAGS_RANGE,
6562         21600, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
6563 };
6564 static const mso_CustomShape msoTextFadeRight =
6565 {
6566     (SvxMSDffVertPair*)mso_sptTextFadeRightVert, sizeof( mso_sptTextFadeRightVert ) / sizeof( SvxMSDffVertPair ),
6567     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6568     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6569     (sal_Int32*)mso_sptDefault7200,
6570     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6571     21600, 21600,
6572     0x80000000, 0x80000000,
6573     NULL, 0,
6574     (SvxMSDffHandle*)mso_sptTextFadeRightHandle, sizeof( mso_sptTextFadeRightHandle ) / sizeof( SvxMSDffHandle )
6575 };
6576 
6577 static const SvxMSDffVertPair mso_sptTextFadeLeftVert[] =
6578 {
6579     { 0, 0 MSO_I }, { 21600, 0 }, { 0, 1 MSO_I }, { 21600, 21600 }
6580 };
6581 static const SvxMSDffHandle mso_sptTextFadeLeftHandle[] =
6582 {
6583     {   MSDFF_HANDLE_FLAGS_RANGE,
6584         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10800 }
6585 };
6586 static const mso_CustomShape msoTextFadeLeft =
6587 {
6588     (SvxMSDffVertPair*)mso_sptTextFadeLeftVert, sizeof( mso_sptTextFadeLeftVert ) / sizeof( SvxMSDffVertPair ),
6589     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6590     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6591     (sal_Int32*)mso_sptDefault7200,
6592     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6593     21600, 21600,
6594     0x80000000, 0x80000000,
6595     NULL, 0,
6596     (SvxMSDffHandle*)mso_sptTextFadeLeftHandle, sizeof( mso_sptTextFadeLeftHandle ) / sizeof( SvxMSDffHandle )
6597 };
6598 
6599 static const SvxMSDffVertPair mso_sptTextFadeUpVert[] =
6600 {
6601     { 0 MSO_I, 0 }, { 1 MSO_I, 0 }, { 0, 21600 }, { 21600, 21600 }
6602 };
6603 static const SvxMSDffHandle mso_sptTextFadeUpHandle[] =
6604 {
6605     {   MSDFF_HANDLE_FLAGS_RANGE,
6606         0x100, 0, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6607 };
6608 static const mso_CustomShape msoTextFadeUp =
6609 {
6610     (SvxMSDffVertPair*)mso_sptTextFadeUpVert, sizeof( mso_sptTextFadeUpVert ) / sizeof( SvxMSDffVertPair ),
6611     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6612     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6613     (sal_Int32*)mso_sptDefault7200,
6614     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6615     21600, 21600,
6616     0x80000000, 0x80000000,
6617     NULL, 0,
6618     (SvxMSDffHandle*)mso_sptTextFadeUpHandle, sizeof( mso_sptTextFadeUpHandle ) / sizeof( SvxMSDffHandle )
6619 };
6620 
6621 static const SvxMSDffVertPair mso_sptTextFadeDownVert[] =
6622 {
6623     { 0, 0 }, { 21600, 0 }, { 0 MSO_I, 21600 }, { 1 MSO_I, 21600 }
6624 };
6625 static const SvxMSDffHandle mso_sptTextFadeDownHandle[] =
6626 {
6627     {   MSDFF_HANDLE_FLAGS_RANGE,
6628         0x100, 21600, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6629 };
6630 static const mso_CustomShape msoTextFadeDown =
6631 {
6632     (SvxMSDffVertPair*)mso_sptTextFadeDownVert, sizeof( mso_sptTextFadeDownVert ) / sizeof( SvxMSDffVertPair ),
6633     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6634     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6635     (sal_Int32*)mso_sptDefault7200,
6636     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6637     21600, 21600,
6638     0x80000000, 0x80000000,
6639     NULL, 0,
6640     (SvxMSDffHandle*)mso_sptTextFadeDownHandle, sizeof( mso_sptTextFadeDownHandle ) / sizeof( SvxMSDffHandle )
6641 };
6642 
6643 static const SvxMSDffVertPair mso_sptTextSlantUpVert[] =
6644 {
6645     { 0, 0 MSO_I }, { 21600, 0 }, { 0, 21600 }, { 21600, 1 MSO_I }
6646 };
6647 static const SvxMSDffHandle mso_sptTextSlantUpHandle[] =
6648 {
6649     {   MSDFF_HANDLE_FLAGS_RANGE,
6650         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 15400 }
6651 };
6652 static const mso_CustomShape msoTextSlantUp =
6653 {
6654     (SvxMSDffVertPair*)mso_sptTextSlantUpVert, sizeof( mso_sptTextSlantUpVert ) / sizeof( SvxMSDffVertPair ),
6655     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6656     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6657     (sal_Int32*)mso_sptDefault12000,
6658     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6659     21600, 21600,
6660     0x80000000, 0x80000000,
6661     NULL, 0,
6662     (SvxMSDffHandle*)mso_sptTextSlantUpHandle, sizeof( mso_sptTextSlantUpHandle ) / sizeof( SvxMSDffHandle )
6663 };
6664 
6665 static const SvxMSDffVertPair mso_sptTextSlantDownVert[] =
6666 {
6667     { 0, 0 }, { 21600, 1 MSO_I }, { 0, 0 MSO_I }, { 21600, 21600 }
6668 };
6669 static const SvxMSDffHandle mso_sptTextSlantDownHandle[] =
6670 {
6671     {   MSDFF_HANDLE_FLAGS_RANGE,
6672         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 6200, 21600 }
6673 };
6674 static const mso_CustomShape msoTextSlantDown =
6675 {
6676     (SvxMSDffVertPair*)mso_sptTextSlantDownVert, sizeof( mso_sptTextSlantDownVert ) / sizeof( SvxMSDffVertPair ),
6677     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6678     (SvxMSDffCalculationData*)mso_sptTextFadeCalc, sizeof( mso_sptTextFadeCalc ) / sizeof( SvxMSDffCalculationData ),
6679     (sal_Int32*)mso_sptDefault12000,
6680     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6681     21600, 21600,
6682     0x80000000, 0x80000000,
6683     NULL, 0,
6684     (SvxMSDffHandle*)mso_sptTextSlantDownHandle, sizeof( mso_sptTextSlantDownHandle ) / sizeof( SvxMSDffHandle )
6685 };
6686 
6687 static const SvxMSDffVertPair mso_sptTextCascadeUpVert[] =
6688 {
6689     { 0, 2 MSO_I }, { 21600, 0 }, { 0, 21600 }, { 21600, 0 MSO_I }
6690 };
6691 static const SvxMSDffCalculationData mso_sptTextCascadeCalc[] =
6692 {
6693     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
6694     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } },
6695     { 0x2001, { 0x401, 1, 4 } }
6696 };
6697 static const SvxMSDffHandle mso_sptTextCascadeUpHandle[] =
6698 {
6699     {   MSDFF_HANDLE_FLAGS_RANGE,
6700         21600, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 6200, 21600 }
6701 };
6702 static const mso_CustomShape msoTextCascadeUp =
6703 {
6704     (SvxMSDffVertPair*)mso_sptTextCascadeUpVert, sizeof( mso_sptTextCascadeUpVert ) / sizeof( SvxMSDffVertPair ),
6705     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6706     (SvxMSDffCalculationData*)mso_sptTextCascadeCalc, sizeof( mso_sptTextCascadeCalc ) / sizeof( SvxMSDffCalculationData ),
6707     (sal_Int32*)mso_sptDefault9600,
6708     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6709     21600, 21600,
6710     0x80000000, 0x80000000,
6711     NULL, 0,
6712     (SvxMSDffHandle*)mso_sptTextCascadeUpHandle, sizeof( mso_sptTextCascadeUpHandle ) / sizeof( SvxMSDffHandle )
6713 };
6714 
6715 static const SvxMSDffVertPair mso_sptTextCascadeDownVert[] =
6716 {
6717     { 0, 0 }, { 21600, 2 MSO_I }, { 0, 0 MSO_I }, { 21600, 21600 }
6718 };
6719 static const SvxMSDffHandle mso_sptTextCascadeDownHandle[] =
6720 {
6721     {   MSDFF_HANDLE_FLAGS_RANGE,
6722         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 6200, 21600 }
6723 };
6724 static const mso_CustomShape msoTextCascadeDown =
6725 {
6726     (SvxMSDffVertPair*)mso_sptTextCascadeDownVert, sizeof( mso_sptTextCascadeDownVert ) / sizeof( SvxMSDffVertPair ),
6727     (sal_uInt16*)mso_sptTextFadeSegm, sizeof( mso_sptTextFadeSegm ) >> 1,
6728     (SvxMSDffCalculationData*)mso_sptTextCascadeCalc, sizeof( mso_sptTextCascadeCalc ) / sizeof( SvxMSDffCalculationData ),
6729     (sal_Int32*)mso_sptDefault9600,
6730     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6731     21600, 21600,
6732     0x80000000, 0x80000000,
6733     NULL, 0,
6734     (SvxMSDffHandle*)mso_sptTextCascadeDownHandle, sizeof( mso_sptTextCascadeDownHandle ) / sizeof( SvxMSDffHandle )
6735 };
6736 
6737 static const SvxMSDffVertPair mso_sptTextArchUpCurveVert[] =
6738 {
6739     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I }
6740 };
6741 static const SvxMSDffCalculationData mso_sptTextArchCurveCalc[] =
6742 {
6743     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
6744     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
6745     { 0x2000, { 0x400, 10800, 0 } },
6746     { 0x2000, { 0x401, 10800, 0 } },
6747     { 0x8000, { 21600, 0, 0x402 } }
6748 };
6749 static const sal_uInt16 mso_sptTextArchUpCurveSegm[] =
6750 {
6751     0xA504, 0x8000      // clockw�se arc
6752 };
6753 static const SvxMSDffHandle mso_sptTextArchUpCurveHandle[] =
6754 {
6755     {   MSDFF_HANDLE_FLAGS_POLAR,
6756         10800, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6757 };
6758 static const sal_Int32 mso_sptTextArchUpCurveDefault[] =
6759 {
6760     1, 180
6761 };
6762 static const mso_CustomShape msoTextArchUpCurve =
6763 {
6764     (SvxMSDffVertPair*)mso_sptTextArchUpCurveVert, sizeof( mso_sptTextArchUpCurveVert ) / sizeof( SvxMSDffVertPair ),
6765     (sal_uInt16*)mso_sptTextArchUpCurveSegm, sizeof( mso_sptTextArchUpCurveSegm ) >> 1,
6766     (SvxMSDffCalculationData*)mso_sptTextArchCurveCalc, sizeof( mso_sptTextArchCurveCalc ) / sizeof( SvxMSDffCalculationData ),
6767     (sal_Int32*)mso_sptTextArchUpCurveDefault,
6768     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6769     21600, 21600,
6770     0x80000000, 0x80000000,
6771     NULL, 0,
6772     (SvxMSDffHandle*)mso_sptTextArchUpCurveHandle, sizeof( mso_sptTextArchUpCurveHandle ) / sizeof( SvxMSDffHandle )
6773 };
6774 
6775 static const SvxMSDffVertPair mso_sptTextArchDownCurveVert[] =
6776 {
6777     { 0, 0 }, { 21600, 21600 }, { 4 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I }
6778 };
6779 static const sal_uInt16 mso_sptTextArchDownCurveSegm[] =
6780 {
6781     0xA304, 0x8000      // counter clockwise arc to
6782 };
6783 static const SvxMSDffHandle mso_sptTextArchDownCurveHandle[] =
6784 {
6785     {   MSDFF_HANDLE_FLAGS_POLAR,
6786         10800, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6787 };
6788 static const sal_Int32 mso_sptTextArchDownCurveDefault[] =
6789 {
6790     1, 0
6791 };
6792 static const mso_CustomShape msoTextArchDownCurve =
6793 {
6794     (SvxMSDffVertPair*)mso_sptTextArchDownCurveVert, sizeof( mso_sptTextArchDownCurveVert ) / sizeof( SvxMSDffVertPair ),
6795     (sal_uInt16*)mso_sptTextArchDownCurveSegm, sizeof( mso_sptTextArchDownCurveSegm ) >> 1,
6796     (SvxMSDffCalculationData*)mso_sptTextArchCurveCalc, sizeof( mso_sptTextArchCurveCalc ) / sizeof( SvxMSDffCalculationData ),
6797     (sal_Int32*)mso_sptTextArchDownCurveDefault,
6798     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6799     21600, 21600,
6800     0x80000000, 0x80000000,
6801     NULL, 0,
6802     (SvxMSDffHandle*)mso_sptTextArchDownCurveHandle, sizeof( mso_sptTextArchDownCurveHandle ) / sizeof( SvxMSDffHandle )
6803 };
6804 
6805 static const SvxMSDffVertPair mso_sptTextCircleCurveVert[] =
6806 {
6807     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 4 MSO_I }
6808 };
6809 static const SvxMSDffCalculationData mso_sptTextCircleCurveCalc[] =
6810 {
6811     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
6812     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
6813     { 0x2000, { 0x400, 10800, 0 } },
6814     { 0x2000, { 0x401, 10800, 0 } },
6815     { 0x8000, { 21600, 0, 0x403 } }
6816 };
6817 static const sal_uInt16 mso_sptTextCircleCurveSegm[] =
6818 {
6819     0xA504, 0x8000      // clockwise arc to
6820 };
6821 static const SvxMSDffHandle mso_sptTextCircleCurveHandle[] =
6822 {
6823     {   MSDFF_HANDLE_FLAGS_POLAR,
6824         10800, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6825 };
6826 static const sal_Int32 mso_sptTextCircleCurveDefault[] =
6827 {
6828     1, -179
6829 };
6830 static const mso_CustomShape msoTextCircleCurve =
6831 {
6832     (SvxMSDffVertPair*)mso_sptTextCircleCurveVert, sizeof( mso_sptTextCircleCurveVert ) / sizeof( SvxMSDffVertPair ),
6833     (sal_uInt16*)mso_sptTextCircleCurveSegm, sizeof( mso_sptTextCircleCurveSegm ) >> 1,
6834     (SvxMSDffCalculationData*)mso_sptTextCircleCurveCalc, sizeof( mso_sptTextCircleCurveCalc ) / sizeof( SvxMSDffCalculationData ),
6835     (sal_Int32*)mso_sptTextCircleCurveDefault,
6836     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6837     21600, 21600,
6838     0x80000000, 0x80000000,
6839     NULL, 0,
6840     (SvxMSDffHandle*)mso_sptTextCircleCurveHandle, sizeof( mso_sptTextCircleCurveHandle ) / sizeof( SvxMSDffHandle )
6841 };
6842 
6843 static const SvxMSDffVertPair mso_sptTextButtonCurveVert[] =
6844 {
6845     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I },
6846     { 0, 10800 }, { 21600, 10800 },
6847     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 5 MSO_I }, { 4 MSO_I, 5 MSO_I }
6848 };
6849 static const SvxMSDffCalculationData mso_sptTextButtonCurveCalc[] =
6850 {
6851     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
6852     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
6853     { 0x2000, { 0x400, 10800, 0 } },
6854     { 0x2000, { 0x401, 10800, 0 } },
6855     { 0x8000, { 21600, 0, 0x402 } },
6856     { 0x8000, { 21600, 0, 0x403 } }
6857 };
6858 static const sal_uInt16 mso_sptTextButtonCurveSegm[] =
6859 {
6860     0xA504, 0x8000,     // clockwise arc
6861     0x4000, 0x0001, 0x8000,
6862     0xA304, 0x8000      // counter clockwise
6863 };
6864 static const SvxMSDffHandle mso_sptTextButtonCurveHandle[] =
6865 {
6866     {   MSDFF_HANDLE_FLAGS_POLAR,
6867         10800, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6868 };
6869 static const sal_Int32 mso_sptTextButtonCurveDefault[] =
6870 {
6871     1, 180
6872 };
6873 static const mso_CustomShape msoTextButtonCurve =
6874 {
6875     (SvxMSDffVertPair*)mso_sptTextButtonCurveVert, sizeof( mso_sptTextButtonCurveVert ) / sizeof( SvxMSDffVertPair ),
6876     (sal_uInt16*)mso_sptTextButtonCurveSegm, sizeof( mso_sptTextButtonCurveSegm ) >> 1,
6877     (SvxMSDffCalculationData*)mso_sptTextButtonCurveCalc, sizeof( mso_sptTextButtonCurveCalc ) / sizeof( SvxMSDffCalculationData ),
6878     (sal_Int32*)mso_sptTextButtonCurveDefault,
6879     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6880     21600, 21600,
6881     0x80000000, 0x80000000,
6882     NULL, 0,
6883     (SvxMSDffHandle*)mso_sptTextButtonCurveHandle, sizeof( mso_sptTextButtonCurveHandle ) / sizeof( SvxMSDffHandle )
6884 };
6885 
6886 static const SvxMSDffVertPair mso_sptTextArchUpPourVert[] =
6887 {
6888     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I },
6889     { 5 MSO_I, 5 MSO_I }, { 11 MSO_I, 11 MSO_I }, { 8 MSO_I, 9 MSO_I }, { 0xa MSO_I, 9 MSO_I }
6890 };
6891 static const SvxMSDffCalculationData mso_sptTextArchPourCalc[] =
6892 {
6893     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
6894     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
6895     { 0x2000, { 0x400, 10800, 0 } },
6896     { 0x2000, { 0x401, 10800, 0 } },
6897     { 0x8000, { 21600, 0, 0x402 } },
6898     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },
6899     { 0x600a, { 0x405, DFF_Prop_adjustValue, 0 } }, // 6
6900     { 0x6009, { 0x405, DFF_Prop_adjustValue, 0 } },
6901     { 0x2000, { 0x406, 10800, 0 } },                // 8
6902     { 0x2000, { 0x407, 10800, 0 } },
6903     { 0x8000, { 21600, 0, 0x408 } },                // 10
6904     { 0x8000, { 21600, 0, 0x405 } }
6905 };
6906 static const sal_uInt16 mso_sptTextArchUpPourSegm[] =
6907 {
6908     0xA504, 0x8000, 0xA504, 0x8000
6909 };
6910 static const SvxMSDffHandle mso_sptTextArchPourHandle[] =
6911 {
6912     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
6913         0x101, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6914 };
6915 static const sal_Int32 mso_sptTextArchUpPourDefault[] =
6916 {
6917     2, 180, 5400
6918 };
6919 static const mso_CustomShape msoTextArchUpPour =
6920 {
6921     (SvxMSDffVertPair*)mso_sptTextArchUpPourVert, sizeof( mso_sptTextArchUpPourVert ) / sizeof( SvxMSDffVertPair ),
6922     (sal_uInt16*)mso_sptTextArchUpPourSegm, sizeof( mso_sptTextArchUpPourSegm ) >> 1,
6923     (SvxMSDffCalculationData*)mso_sptTextArchPourCalc, sizeof( mso_sptTextArchPourCalc ) / sizeof( SvxMSDffCalculationData ),
6924     (sal_Int32*)mso_sptTextArchUpPourDefault,
6925     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6926     21600, 21600,
6927     0x80000000, 0x80000000,
6928     NULL, 0,
6929     (SvxMSDffHandle*)mso_sptTextArchPourHandle, sizeof( mso_sptTextArchPourHandle ) / sizeof( SvxMSDffHandle )
6930 };
6931 
6932 static const SvxMSDffVertPair mso_sptTextArchDownPourVert[] =
6933 {
6934     { 5 MSO_I, 5 MSO_I }, { 11 MSO_I, 11 MSO_I }, { 0xa MSO_I, 9 MSO_I }, { 8 MSO_I, 9 MSO_I },
6935     { 0, 0 }, { 21600, 21600 }, { 4 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I }
6936 };
6937 static const sal_uInt16 mso_sptTextArchDownPourSegm[] =
6938 {
6939     0xA304, 0x8000, 0xA304, 0x8000
6940 };
6941 static const sal_Int32 mso_sptTextArchDownPourDefault[] =
6942 {
6943     2, 0, 5400
6944 };
6945 static const mso_CustomShape msoTextArchDownPour =
6946 {
6947     (SvxMSDffVertPair*)mso_sptTextArchDownPourVert, sizeof( mso_sptTextArchDownPourVert ) / sizeof( SvxMSDffVertPair ),
6948     (sal_uInt16*)mso_sptTextArchDownPourSegm, sizeof( mso_sptTextArchDownPourSegm ) >> 1,
6949     (SvxMSDffCalculationData*)mso_sptTextArchPourCalc, sizeof( mso_sptTextArchPourCalc ) / sizeof( SvxMSDffCalculationData ),
6950     (sal_Int32*)mso_sptTextArchDownPourDefault,
6951     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6952     21600, 21600,
6953     0x80000000, 0x80000000,
6954     NULL, 0,
6955     (SvxMSDffHandle*)mso_sptTextArchPourHandle, sizeof( mso_sptTextArchPourHandle ) / sizeof( SvxMSDffHandle )
6956 };
6957 
6958 static const SvxMSDffVertPair mso_sptTextCirclePourVert[] =
6959 {
6960     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 4 MSO_I },
6961     { 5 MSO_I, 5 MSO_I }, { 11 MSO_I, 11 MSO_I }, { 8 MSO_I, 9 MSO_I }, { 8 MSO_I, 0xa MSO_I }
6962 };
6963 static const SvxMSDffCalculationData mso_sptTextCirclePourCalc[] =
6964 {
6965     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },
6966     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },
6967     { 0x2000, { 0x400, 10800, 0 } },
6968     { 0x2000, { 0x401, 10800, 0 } },
6969     { 0x8000, { 21600, 0, 0x403 } },
6970     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },
6971     { 0x600a, { 0x405, DFF_Prop_adjustValue, 0 } }, // 6
6972     { 0x6009, { 0x405, DFF_Prop_adjustValue, 0 } },
6973     { 0x2000, { 0x406, 10800, 0 } },                // 8
6974     { 0x2000, { 0x407, 10800, 0 } },
6975     { 0x8000, { 21600, 0, 0x409 } },                // 10
6976     { 0x8000, { 21600, 0, 0x405 } },
6977     { 0x000, { 21600, 0, 0 } }
6978 };
6979 static const sal_uInt16 mso_sptTextCirclePourSegm[] =
6980 {
6981     0xA504, 0x8000, 0xA504, 0x8000
6982 };
6983 static const SvxMSDffHandle mso_sptTextCirclePourHandle[] =
6984 {
6985     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
6986         0x101, 0x100, 10800, 10800, 0, 10800, 0x80000000, 0x7fffffff }
6987 };
6988 static const sal_Int32 mso_sptTextCirclePourDefault[] =
6989 {
6990     2,  -179, 5400
6991 };
6992 static const mso_CustomShape msoTextCirclePour =
6993 {
6994     (SvxMSDffVertPair*)mso_sptTextCirclePourVert, sizeof( mso_sptTextCirclePourVert ) / sizeof( SvxMSDffVertPair ),
6995     (sal_uInt16*)mso_sptTextCirclePourSegm, sizeof( mso_sptTextCirclePourSegm ) >> 1,
6996     (SvxMSDffCalculationData*)mso_sptTextCirclePourCalc, sizeof( mso_sptTextCirclePourCalc ) / sizeof( SvxMSDffCalculationData ),
6997     (sal_Int32*)mso_sptTextCirclePourDefault,
6998     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
6999     21600, 21600,
7000     0x80000000, 0x80000000,
7001     NULL, 0,
7002     (SvxMSDffHandle*)mso_sptTextCirclePourHandle, sizeof( mso_sptTextCirclePourHandle ) / sizeof( SvxMSDffHandle )
7003 };
7004 
7005 static const SvxMSDffVertPair mso_sptTextButtonPourVert[] =
7006 {
7007     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I },
7008     { 6 MSO_I, 6 MSO_I }, { 7 MSO_I, 7 MSO_I }, { 10 MSO_I, 11 MSO_I }, { 12 MSO_I, 11 MSO_I },
7009     { 0x16 MSO_I, 16 MSO_I }, { 0x15 MSO_I, 16 MSO_I },
7010     { 0x16 MSO_I, 15 MSO_I }, { 0x15 MSO_I, 15 MSO_I },
7011     { 6 MSO_I, 6 MSO_I }, { 7 MSO_I, 7 MSO_I }, { 10 MSO_I, 13 MSO_I }, { 12 MSO_I, 13 MSO_I },
7012     { 0, 0 }, { 21600, 21600 }, { 2 MSO_I, 5 MSO_I }, { 4 MSO_I, 5 MSO_I }
7013 };
7014 static const SvxMSDffCalculationData mso_sptTextButtonPourCalc[] =
7015 {
7016     { 0x400a, { 10800, DFF_Prop_adjustValue, 0 } },                 // 0x00
7017     { 0x4009, { 10800, DFF_Prop_adjustValue, 0 } },                 // 0x01
7018     { 0x2000, { 0x400, 10800, 0 } },                                // 0x02
7019     { 0x2000, { 0x401, 10800, 0 } },                                // 0x03
7020     { 0x8000, { 21600, 0, 0x402 } },                                // 0x04
7021     { 0x8000, { 21600, 0, 0x403 } },                                // 0x05
7022 
7023     { 0x8000, { 10800, 0, DFF_Prop_adjust2Value } },                // 0x06
7024     { 0x8000, { 21600, 0, 0x406 } },                                // 0x07
7025 
7026     { 0x600a, { DFF_Prop_adjust2Value, DFF_Prop_adjustValue, 0 } }, // 0x08
7027     { 0x6009, { DFF_Prop_adjust2Value, DFF_Prop_adjustValue, 0 } }, // 0x09
7028     { 0x2000, { 0x408, 10800, 0 } },    // 0x0a
7029     { 0x2000, { 0x409, 10800, 0 } },    // 0x0b
7030     { 0x8000, { 21600, 0, 0x40a } },    // 0x0c
7031     { 0x8000, { 21600, 0, 0x40b } },    // 0x0d
7032     { 0x2001, { 0x406, 1, 2 } },        // 0x0e
7033     { 0x4000, { 10800, 0x40e, 0 } },    // 0x0f
7034     { 0x8000, { 10800, 0, 0x40e } },    // 0x10
7035     { 0x6001, { 0x40e, 0x40e, 1 } },    // 0x11
7036     { 0x6001, { DFF_Prop_adjust2Value, DFF_Prop_adjust2Value, 1 } },    // 0x12
7037     { 0xA000, { 0x412, 0, 0x411 } },    // 0x13
7038     { 0x200d, { 0x413, 0, 0 } },        // 0x14
7039     { 0x4000, { 10800, 0x414, 0 } },    // 0x15
7040     { 0x8000, { 10800, 0, 0x414 } }     // 0x16
7041 };
7042 static const sal_uInt16 mso_sptTextButtonPourSegm[] =
7043 {
7044     0xA504, 0x8000,     // clockwise arc
7045     0xA504, 0x8000,     // clockwise arc
7046     0x4000, 0x0001, 0x8000,
7047     0x4000, 0x0001, 0x8000,
7048     0xA304, 0x8000,     // counter clockwise
7049     0xA304, 0x8000      // counter clockwise
7050 };
7051 static const SvxMSDffHandle mso_sptTextButtonPourHandle[] =
7052 {
7053     {   MSDFF_HANDLE_FLAGS_POLAR | MSDFF_HANDLE_FLAGS_RADIUS_RANGE,
7054         0x101, 0x100, 10800, 10800, 4320, 10800, 0x80000000, 0x7fffffff }
7055 };
7056 static const sal_Int32 mso_sptTextButtonPourDefault[] =
7057 {
7058     2, 180, 5400
7059 };
7060 static const mso_CustomShape msoTextButtonPour =
7061 {
7062     (SvxMSDffVertPair*)mso_sptTextButtonPourVert, sizeof( mso_sptTextButtonPourVert ) / sizeof( SvxMSDffVertPair ),
7063     (sal_uInt16*)mso_sptTextButtonPourSegm, sizeof( mso_sptTextButtonPourSegm ) >> 1,
7064     (SvxMSDffCalculationData*)mso_sptTextButtonPourCalc, sizeof( mso_sptTextButtonPourCalc ) / sizeof( SvxMSDffCalculationData ),
7065     (sal_Int32*)mso_sptTextButtonPourDefault,
7066     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7067     21600, 21600,
7068     0x80000000, 0x80000000,
7069     NULL, 0,
7070     (SvxMSDffHandle*)mso_sptTextButtonPourHandle, sizeof( mso_sptTextButtonPourHandle ) / sizeof( SvxMSDffHandle )
7071 };
7072 
7073 static const SvxMSDffVertPair mso_sptTextCurveUpVert[] =
7074 {
7075     { 0, 0 MSO_I }, { 4900, 1 MSO_I /*12170->0 14250 ->0*/ }, { 11640, 2 MSO_I /*12170->0 12800 ->0*/ }, { 21600, 0 },
7076     { 0, 4 MSO_I /*12170->0 17220 ->21600*/ }, { 3700, 21600 }, { 8500, 21600 }, { 10100, 21600 }, { 14110, 21600 }, { 15910, 21600 }, { 21600, 4 MSO_I /*12170->0 17220 ->21600*/ }
7077 };
7078 static const SvxMSDffCalculationData mso_sptTextCurveUpCalc[] =
7079 {
7080     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7081     { 0x4001, { 14250, 0x400, 12170 } },        // 401
7082     { 0x4001, { 12800, 0x400, 12170 } },        // 402
7083     { 0x4001, { 6380, 0x400, 12170 } },         // 403
7084     { 0x8000, { 21600, 0, 0x403 } }             // 404
7085 };
7086 static const sal_uInt16 mso_sptTextCurveUpSegm[] =
7087 {
7088     0x4000, 0x2001, 0x8000,
7089     0x4000, 0x2002, 0x8000
7090 };
7091 static const SvxMSDffHandle mso_sptTextCurveUpHandle[] =
7092 {
7093     {   MSDFF_HANDLE_FLAGS_RANGE,
7094         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 12170 }
7095 };
7096 static const sal_Int32 mso_sptTextCurveUpDefault[] =
7097 {
7098     1, 9900
7099 };
7100 static const mso_CustomShape msoTextCurveUp =
7101 {
7102     (SvxMSDffVertPair*)mso_sptTextCurveUpVert, sizeof( mso_sptTextCurveUpVert ) / sizeof( SvxMSDffVertPair ),
7103     (sal_uInt16*)mso_sptTextCurveUpSegm, sizeof( mso_sptTextCurveUpSegm ) >> 1,
7104     (SvxMSDffCalculationData*)mso_sptTextCurveUpCalc, sizeof( mso_sptTextCurveUpCalc ) / sizeof( SvxMSDffCalculationData ),
7105     (sal_Int32*)mso_sptTextCurveUpDefault,
7106     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7107     21600, 21600,
7108     0x80000000, 0x80000000,
7109     NULL, 0,
7110     (SvxMSDffHandle*)mso_sptTextCurveUpHandle, sizeof( mso_sptTextCurveUpHandle ) / sizeof( SvxMSDffHandle )
7111 };
7112 
7113 static const SvxMSDffVertPair mso_sptTextCurveDownVert[] =
7114 {
7115 //  { 0, 0 MSO_I }, { 4900, 1 MSO_I /*12170->0 14250 ->0*/ }, { 11640, 2 MSO_I /*12170->0 12800 ->0*/ }, { 21600, 0 },
7116     { 0, 0 }, { 9960, 2 MSO_I }, { 16700, 1 MSO_I }, { 21600, 0 MSO_I },
7117 
7118 //  { 0, 4 MSO_I /*12170->0 17220 ->21600*/ }, { 3700, 21600 }, { 8500, 21600 }, { 10100, 21600 }, { 14110, 21600 }, { 15910, 21600 }, { 21600, 4 MSO_I /*12170->0 17220 ->21600*/ }
7119     { 0, 4 MSO_I }, { 5690, 21600 }, { 7490, 21600 }, { 11500, 21600 }, { 13100, 21600 }, { 17900, 21600 }, { 21600, 4 MSO_I }
7120 };
7121 static const SvxMSDffHandle mso_sptTextCurveDownHandle[] =
7122 {
7123     {   MSDFF_HANDLE_FLAGS_RANGE,
7124         21600, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 12170 }
7125 };
7126 static const mso_CustomShape msoTextCurveDown =
7127 {
7128     (SvxMSDffVertPair*)mso_sptTextCurveDownVert, sizeof( mso_sptTextCurveDownVert ) / sizeof( SvxMSDffVertPair ),
7129     (sal_uInt16*)mso_sptTextCurveUpSegm, sizeof( mso_sptTextCurveUpSegm ) >> 1,
7130     (SvxMSDffCalculationData*)mso_sptTextCurveUpCalc, sizeof( mso_sptTextCurveUpCalc ) / sizeof( SvxMSDffCalculationData ),
7131     (sal_Int32*)mso_sptTextCurveUpDefault,
7132     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7133     21600, 21600,
7134     0x80000000, 0x80000000,
7135     NULL, 0,
7136     (SvxMSDffHandle*)mso_sptTextCurveDownHandle, sizeof( mso_sptTextCurveDownHandle ) / sizeof( SvxMSDffHandle )
7137 };
7138 
7139 static const SvxMSDffVertPair mso_sptTextCanUpVert[] =
7140 {
7141     { 0, 1 MSO_I }, { 900, 0 }, { 7100, 0 }, { 10800, 0 }, { 14500, 0 }, { 20700, 0 }, { 21600, 1 MSO_I },
7142     { 0, 21600 }, { 900, 4 MSO_I }, { 7100, 0 MSO_I }, { 10800, 0 MSO_I }, { 14500, 0 MSO_I }, { 20700, 4 MSO_I }, { 21600, 21600 }
7143 };
7144 static const SvxMSDffCalculationData mso_sptTextCanUpCalc[] =
7145 {
7146     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 400
7147     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }, // 401
7148     { 0x2000, { DFF_Prop_adjustValue, 0, 14400 } }, // 402
7149     { 0x4001, { 5470, 0x402, 7200 } },              // 403
7150     { 0x4000, { 16130, 0x403, 0 } }                 // 404
7151 };
7152 static const sal_uInt16 mso_sptTextCanUpSegm[] =
7153 {
7154     0x4000, 0x2002, 0x8000,
7155     0x4000, 0x2002, 0x8000
7156 };
7157 static const SvxMSDffHandle mso_sptTextCanUpHandle[] =
7158 {
7159     {   MSDFF_HANDLE_FLAGS_RANGE,
7160         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 14400, 21600 }
7161 };
7162 static const sal_Int32 mso_sptTextCanUpDefault[] =
7163 {
7164     1, 18500
7165 };
7166 static const mso_CustomShape msoTextCanUp =
7167 {
7168     (SvxMSDffVertPair*)mso_sptTextCanUpVert, sizeof( mso_sptTextCanUpVert ) / sizeof( SvxMSDffVertPair ),
7169     (sal_uInt16*)mso_sptTextCanUpSegm, sizeof( mso_sptTextCanUpSegm ) >> 1,
7170     (SvxMSDffCalculationData*)mso_sptTextCanUpCalc, sizeof( mso_sptTextCanUpCalc ) / sizeof( SvxMSDffCalculationData ),
7171     (sal_Int32*)mso_sptTextCanUpDefault,
7172     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7173     21600, 21600,
7174     0x80000000, 0x80000000,
7175     NULL, 0,
7176     (SvxMSDffHandle*)mso_sptTextCanUpHandle, sizeof( mso_sptTextCanUpHandle ) / sizeof( SvxMSDffHandle )
7177 };
7178 
7179 static const SvxMSDffVertPair mso_sptTextCanDownVert[] =
7180 {
7181     { 0, 0 }, { 900, 2 MSO_I }, { 7100, 0 MSO_I }, { 10800, 0 MSO_I }, { 14500, 0 MSO_I }, { 20700, 2 MSO_I }, { 21600, 0 },
7182     { 0, 1 MSO_I }, { 900, 21600 }, { 7100, 21600 }, { 10800, 21600 }, { 14500, 21600 }, { 20700, 21600 }, { 21600, 1 MSO_I }
7183 };
7184 static const SvxMSDffCalculationData mso_sptTextCanDownCalc[] =
7185 {
7186     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },     // 400
7187     { 0x8000, { 21600, 0, DFF_Prop_adjustValue } }, // 401
7188     { 0x4001, { 5470, 0x400, 7200 } }               // 402
7189 };
7190 static const SvxMSDffHandle mso_sptTextCanDownHandle[] =
7191 {
7192     {   MSDFF_HANDLE_FLAGS_RANGE,
7193         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 7200 }
7194 };
7195 static const sal_Int32 mso_sptTextCanDownDefault[] =
7196 {
7197     1, 3100
7198 };
7199 static const mso_CustomShape msoTextCanDown =
7200 {
7201     (SvxMSDffVertPair*)mso_sptTextCanDownVert, sizeof( mso_sptTextCanDownVert ) / sizeof( SvxMSDffVertPair ),
7202     (sal_uInt16*)mso_sptTextCanUpSegm, sizeof( mso_sptTextCanUpSegm ) >> 1,
7203     (SvxMSDffCalculationData*)mso_sptTextCanDownCalc, sizeof( mso_sptTextCanDownCalc ) / sizeof( SvxMSDffCalculationData ),
7204     (sal_Int32*)mso_sptTextCanDownDefault,
7205     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7206     21600, 21600,
7207     0x80000000, 0x80000000,
7208     NULL, 0,
7209     (SvxMSDffHandle*)mso_sptTextCanDownHandle, sizeof( mso_sptTextCanDownHandle ) / sizeof( SvxMSDffHandle )
7210 };
7211 
7212 static const SvxMSDffVertPair mso_sptTextInflateVert[] =
7213 {
7214     { 0, 0 MSO_I }, { 4100, 1 MSO_I }, { 7300, 0 }, { 10800, 0 }, { 14300, 0 }, { 17500, 1 MSO_I }, { 21600, 0 MSO_I },
7215     { 0, 2 MSO_I }, { 4100, 3 MSO_I }, { 7300, 21600 }, { 10800, 21600 }, { 14300, 21600 }, { 17500, 3 MSO_I }, { 21600, 2 MSO_I }
7216 };
7217 static const SvxMSDffCalculationData mso_sptTextInflateCalc[] =
7218 {
7219     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7220     { 0x4001, { 1530, 0x400, 4650 } },          // 401
7221     { 0x8000, { 21600, 0, 0x400 } },            // 402
7222     { 0x8000, { 21600, 0, 0x401 } }             // 403
7223 };
7224 static const SvxMSDffHandle mso_sptTextInflateHandle[] =
7225 {
7226     {   MSDFF_HANDLE_FLAGS_RANGE,
7227         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 4650 }
7228 };
7229 static const sal_Int32 mso_sptTextInflateDefault[] =
7230 {
7231     1, 2950
7232 };
7233 static const mso_CustomShape msoTextInflate =
7234 {
7235     (SvxMSDffVertPair*)mso_sptTextInflateVert, sizeof( mso_sptTextInflateVert ) / sizeof( SvxMSDffVertPair ),
7236     (sal_uInt16*)mso_sptTextCanUpSegm, sizeof( mso_sptTextCanUpSegm ) >> 1,
7237     (SvxMSDffCalculationData*)mso_sptTextInflateCalc, sizeof( mso_sptTextInflateCalc ) / sizeof( SvxMSDffCalculationData ),
7238     (sal_Int32*)mso_sptTextInflateDefault,
7239     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7240     21600, 21600,
7241     0x80000000, 0x80000000,
7242     NULL, 0,
7243     (SvxMSDffHandle*)mso_sptTextInflateHandle, sizeof( mso_sptTextInflateHandle ) / sizeof( SvxMSDffHandle )
7244 };
7245 
7246 static const SvxMSDffVertPair mso_sptTextDeflateVert[] =
7247 {
7248     { 0, 0 }, { 3500, 1 MSO_I }, { 7100, 0 MSO_I }, { 10800, 0 MSO_I }, { 14500, 0 MSO_I }, { 18100, 1 MSO_I }, { 21600, 0 },
7249     { 0, 21600 }, { 3500, 3 MSO_I }, { 7100, 2 MSO_I }, { 10800, 2 MSO_I }, { 14500, 2 MSO_I }, { 18100, 3 MSO_I }, { 21600, 21600 }
7250 };
7251 static const SvxMSDffCalculationData mso_sptTextDeflateCalc[] =
7252 {
7253     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7254     { 0x2001, { 0x400, 5320, 7100 } },          // 401
7255     { 0x8000, { 21600, 0, 0x400 } },            // 402
7256     { 0x8000, { 21600, 0, 0x401 } }             // 403
7257 };
7258 static const SvxMSDffHandle mso_sptTextDeflateHandle[] =
7259 {
7260     {   MSDFF_HANDLE_FLAGS_RANGE,
7261         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 8100 }
7262 };
7263 static const mso_CustomShape msoTextDeflate =
7264 {
7265     (SvxMSDffVertPair*)mso_sptTextDeflateVert, sizeof( mso_sptTextDeflateVert ) / sizeof( SvxMSDffVertPair ),
7266     (sal_uInt16*)mso_sptTextCanUpSegm, sizeof( mso_sptTextCanUpSegm ) >> 1,
7267     (SvxMSDffCalculationData*)mso_sptTextDeflateCalc, sizeof( mso_sptTextDeflateCalc ) / sizeof( SvxMSDffCalculationData ),
7268     (sal_Int32*)mso_sptDefault8100,
7269     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7270     21600, 21600,
7271     0x80000000, 0x80000000,
7272     NULL, 0,
7273     (SvxMSDffHandle*)mso_sptTextDeflateHandle, sizeof( mso_sptTextDeflateHandle ) / sizeof( SvxMSDffHandle )
7274 };
7275 
7276 static const SvxMSDffVertPair mso_sptTextInflateBottomVert[] =
7277 {
7278     { 0, 0 }, { 21600, 0 },
7279     { 0, 0 MSO_I }, { 3500, 3 MSO_I }, { 7300, 21600 }, { 10800, 21600 }, { 14300, 21600 }, { 18100, 3 MSO_I }, { 21600, 0 MSO_I }
7280 };
7281 static const SvxMSDffCalculationData mso_sptTextInflateBottomCalc[] =
7282 {
7283     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7284     { 0x2000, { 0x400, 0, 11150 } },            // 401 0->10450
7285     { 0x2001, { 0x401, 3900, 10450 } },         // 402
7286     { 0x2000, { 0x402, 17700, 0 } }             // 403
7287 };
7288 static const sal_uInt16 mso_sptTextInflateBottomSegm[] =
7289 {
7290     0x4000, 0x0001, 0x8000,
7291     0x4000, 0x2002, 0x8000
7292 };
7293 static const SvxMSDffHandle mso_sptTextInflateBottomHandle[] =
7294 {
7295     {   MSDFF_HANDLE_FLAGS_RANGE,
7296         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 11150, 21600 }
7297 };
7298 static const sal_Int32 mso_sptTextInflateBottomDefault[] =
7299 {
7300     1, 14700
7301 };
7302 static const mso_CustomShape msoTextInflateBottom =
7303 {
7304     (SvxMSDffVertPair*)mso_sptTextInflateBottomVert, sizeof( mso_sptTextInflateBottomVert ) / sizeof( SvxMSDffVertPair ),
7305     (sal_uInt16*)mso_sptTextInflateBottomSegm, sizeof( mso_sptTextInflateBottomSegm ) >> 1,
7306     (SvxMSDffCalculationData*)mso_sptTextInflateBottomCalc, sizeof( mso_sptTextInflateBottomCalc ) / sizeof( SvxMSDffCalculationData ),
7307     (sal_Int32*)mso_sptTextInflateBottomDefault,
7308     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7309     21600, 21600,
7310     0x80000000, 0x80000000,
7311     NULL, 0,
7312     (SvxMSDffHandle*)mso_sptTextInflateBottomHandle, sizeof( mso_sptTextInflateBottomHandle ) / sizeof( SvxMSDffHandle )
7313 };
7314 
7315 static const SvxMSDffVertPair mso_sptTextDeflateBottomVert[] =
7316 {
7317     { 0, 0 }, { 21600, 0 },
7318     { 0, 21600 }, { 2900, 3 MSO_I }, { 7200, 0 MSO_I }, { 10800, 0 MSO_I }, { 14400, 0 MSO_I }, { 18700, 3 MSO_I }, { 21600, 21600 }
7319 };
7320 static const SvxMSDffCalculationData mso_sptTextDeflateBottomCalc[] =
7321 {
7322     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7323     { 0x2000, { 0x400, 0, 1350 } },             // 401 0->20250
7324     { 0x2001, { 0x401, 12070, 20250 } },        // 402
7325     { 0x2000, { 0x402, 9530, 0 } }              // 403
7326 };
7327 static const sal_uInt16 mso_sptTextDeflateBottomSegm[] =
7328 {
7329     0x4000, 0x0001, 0x8000,
7330     0x4000, 0x2002, 0x8000
7331 };
7332 static const SvxMSDffHandle mso_sptTextDeflateBottomHandle[] =
7333 {
7334     {   MSDFF_HANDLE_FLAGS_RANGE,
7335         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 1350, 21600 }
7336 };
7337 static const sal_Int32 mso_sptTextDeflateBottomDefault[] =
7338 {
7339     1, 11500
7340 };
7341 static const mso_CustomShape msoTextDeflateBottom =
7342 {
7343     (SvxMSDffVertPair*)mso_sptTextDeflateBottomVert, sizeof( mso_sptTextDeflateBottomVert ) / sizeof( SvxMSDffVertPair ),
7344     (sal_uInt16*)mso_sptTextDeflateBottomSegm, sizeof( mso_sptTextDeflateBottomSegm ) >> 1,
7345     (SvxMSDffCalculationData*)mso_sptTextDeflateBottomCalc, sizeof( mso_sptTextDeflateBottomCalc ) / sizeof( SvxMSDffCalculationData ),
7346     (sal_Int32*)mso_sptTextDeflateBottomDefault,
7347     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7348     21600, 21600,
7349     0x80000000, 0x80000000,
7350     NULL, 0,
7351     (SvxMSDffHandle*)mso_sptTextDeflateBottomHandle, sizeof( mso_sptTextDeflateBottomHandle ) / sizeof( SvxMSDffHandle )
7352 };
7353 
7354 static const SvxMSDffVertPair mso_sptTextInflateTopVert[] =
7355 {
7356     { 0, 0 MSO_I }, { 3500, 1 MSO_I }, { 7300, 0 }, { 10800, 0 }, { 14300, 0 }, { 18100, 1 MSO_I }, { 21600, 0 MSO_I },
7357     { 0, 21600 }, { 21600, 21600 }
7358 };
7359 static const SvxMSDffCalculationData mso_sptTextInflateTopCalc[] =
7360 {
7361     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7362     { 0x2001, { 0x400, 3900, 10450 } }          // 401
7363 };
7364 static const sal_uInt16 mso_sptTextInflateTopSegm[] =
7365 {
7366     0x4000, 0x2002, 0x8000,
7367     0x4000, 0x0001, 0x8000
7368 };
7369 static const SvxMSDffHandle mso_sptTextInflateTopHandle[] =
7370 {
7371     {   MSDFF_HANDLE_FLAGS_RANGE,
7372         0, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 10450 }
7373 };
7374 static const sal_Int32 mso_sptTextInflateTopDefault[] =
7375 {
7376     1, 6900
7377 };
7378 static const mso_CustomShape msoTextInflateTop =
7379 {
7380     (SvxMSDffVertPair*)mso_sptTextInflateTopVert, sizeof( mso_sptTextInflateTopVert ) / sizeof( SvxMSDffVertPair ),
7381     (sal_uInt16*)mso_sptTextInflateTopSegm, sizeof( mso_sptTextInflateTopSegm ) >> 1,
7382     (SvxMSDffCalculationData*)mso_sptTextInflateTopCalc, sizeof( mso_sptTextInflateTopCalc ) / sizeof( SvxMSDffCalculationData ),
7383     (sal_Int32*)mso_sptTextInflateTopDefault,
7384     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7385     21600, 21600,
7386     0x80000000, 0x80000000,
7387     NULL, 0,
7388     (SvxMSDffHandle*)mso_sptTextInflateTopHandle, sizeof( mso_sptTextInflateTopHandle ) / sizeof( SvxMSDffHandle )
7389 };
7390 
7391 static const SvxMSDffVertPair mso_sptTextDeflateTopVert[] =
7392 {
7393     { 0, 0 }, { 2900, 1 MSO_I }, { 7200, 0 MSO_I }, { 10800, 0 MSO_I }, { 14400, 0 MSO_I }, { 18700, 1 MSO_I }, { 21600, 0 },
7394     { 0, 21600 }, { 21600, 21600 }
7395 };
7396 static const SvxMSDffCalculationData mso_sptTextDeflateTopCalc[] =
7397 {
7398     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7399     { 0x2001, { 0x400, 12070, 20250 } }         // 402
7400 };
7401 static const sal_uInt16 mso_sptTextDeflateTopSegm[] =
7402 {
7403     0x4000, 0x2002, 0x8000,
7404     0x4000, 0x0001, 0x8000
7405 };
7406 static const SvxMSDffHandle mso_sptTextDeflateTopHandle[] =
7407 {
7408     {   MSDFF_HANDLE_FLAGS_RANGE,
7409         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 0, 20250 }
7410 };
7411 static const sal_Int32 mso_sptTextDeflateTopDefault[] =
7412 {
7413     1, 10100
7414 };
7415 static const mso_CustomShape msoTextDeflateTop =
7416 {
7417     (SvxMSDffVertPair*)mso_sptTextDeflateTopVert, sizeof( mso_sptTextDeflateTopVert ) / sizeof( SvxMSDffVertPair ),
7418     (sal_uInt16*)mso_sptTextDeflateTopSegm, sizeof( mso_sptTextDeflateTopSegm ) >> 1,
7419     (SvxMSDffCalculationData*)mso_sptTextDeflateTopCalc, sizeof( mso_sptTextDeflateTopCalc ) / sizeof( SvxMSDffCalculationData ),
7420     (sal_Int32*)mso_sptTextDeflateTopDefault,
7421     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7422     21600, 21600,
7423     0x80000000, 0x80000000,
7424     NULL, 0,
7425     (SvxMSDffHandle*)mso_sptTextDeflateTopHandle, sizeof( mso_sptTextDeflateTopHandle ) / sizeof( SvxMSDffHandle )
7426 };
7427 
7428 static const SvxMSDffVertPair mso_sptTextDeflateInflateVert[] =
7429 {
7430     { 0, 0 }, { 21600, 0 },
7431     { 0, 10100 }, { 3300, 3 MSO_I }, { 7100, 5 MSO_I }, { 10800, 5 MSO_I }, { 14500, 5 MSO_I }, { 18300, 3 MSO_I }, { 21600, 10100 },
7432     { 0, 11500 }, { 3300, 4 MSO_I }, { 7100, 6 MSO_I }, { 10800, 6 MSO_I }, { 14500, 6 MSO_I }, { 18300, 4 MSO_I }, { 21600, 11500 },
7433     { 0, 21600 }, { 21600, 21600 }
7434 };
7435 static const SvxMSDffCalculationData mso_sptTextDeflateInflateCalc[] =
7436 {
7437     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }, // 400
7438     { 0x8000, { 10800, 0, 0x400 } },            // 401
7439     { 0x2001, { 0x401, 5770, 9500 } },          // 402
7440     { 0x8000, { 10100, 0, 0x402 } },            // 403
7441     { 0x8000, { 11500, 0, 0x402 } },            // 404
7442     { 0x2000, { 0x400, 0, 700 } },              // 405
7443     { 0x2000, { 0x400, 700, 0 } }               // 406
7444 };
7445 static const sal_uInt16 mso_sptTextDeflateInflateSegm[] =
7446 {
7447     0x4000, 0x0001, 0x8000,
7448     0x4000, 0x2002, 0x8000,
7449     0x4000, 0x2002, 0x8000,
7450     0x4000, 0x0001, 0x8000
7451 };
7452 static const SvxMSDffHandle mso_sptTextDeflateInflateHandle[] =
7453 {
7454     {   MSDFF_HANDLE_FLAGS_RANGE,
7455         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 1300, 20300 }
7456 };
7457 static const sal_Int32 mso_sptTextDeflateInflateDefault[] =
7458 {
7459     1, 6500
7460 };
7461 static const mso_CustomShape msoTextDeflateInflate =
7462 {
7463     (SvxMSDffVertPair*)mso_sptTextDeflateInflateVert, sizeof( mso_sptTextDeflateInflateVert ) / sizeof( SvxMSDffVertPair ),
7464     (sal_uInt16*)mso_sptTextDeflateInflateSegm, sizeof( mso_sptTextDeflateInflateSegm ) >> 1,
7465     (SvxMSDffCalculationData*)mso_sptTextDeflateInflateCalc, sizeof( mso_sptTextDeflateInflateCalc ) / sizeof( SvxMSDffCalculationData ),
7466     (sal_Int32*)mso_sptTextDeflateInflateDefault,
7467     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7468     21600, 21600,
7469     0x80000000, 0x80000000,
7470     NULL, 0,
7471     (SvxMSDffHandle*)mso_sptTextDeflateInflateHandle, sizeof( mso_sptTextDeflateInflateHandle ) / sizeof( SvxMSDffHandle )
7472 };
7473 
7474 static const SvxMSDffVertPair mso_sptTextDeflateInflateDeflateVert[] =
7475 {
7476     { 0, 0 }, { 21600, 0 },
7477     { 0, 6600 }, { 3600, 3 MSO_I }, { 7250, 4 MSO_I }, { 10800, 4 MSO_I }, { 14350, 4 MSO_I }, { 18000, 3 MSO_I }, { 21600, 6600 },
7478     { 0, 7500 }, { 3600, 5 MSO_I }, { 7250, 6 MSO_I }, { 10800, 6 MSO_I }, { 14350, 6 MSO_I }, { 18000, 5 MSO_I }, { 21600, 7500 },
7479     { 0, 14100 }, { 3600, 9 MSO_I }, { 7250, 10 MSO_I }, { 10800, 10 MSO_I }, { 14350, 10 MSO_I }, { 18000, 9 MSO_I }, { 21600, 14100 },
7480     { 0, 15000 }, { 3600, 7 MSO_I }, { 7250, 8 MSO_I }, { 10800, 8 MSO_I }, { 14350, 8 MSO_I }, { 18000, 7 MSO_I }, { 21600, 15000 },
7481     { 0, 21600 }, { 21600, 21600 }
7482 };
7483 static const SvxMSDffCalculationData mso_sptTextDeflateInflateDeflateCalc[] =
7484 {
7485     { 0x2000, { DFF_Prop_adjustValue, 0, 850 } },       // 400
7486     { 0x2001, { 0x400, 6120, 8700 } },
7487     { 0x2000, { 0x401, 0, 4280 } },
7488     { 0x4000, { 6600, 0x402, 0 } },
7489     { 0x2000, { DFF_Prop_adjustValue, 0, 450 } },       // 404
7490     { 0x2000, { 0x403, 900, 0 } },                      // 405
7491     { 0x2000, { 0x404, 900, 0 } },                      // 406
7492     { 0x8000, { 21600, 0, 0x403 } },                    // 407
7493     { 0x8000, { 21600, 0, 0x404 } },                    // 408
7494     { 0x8000, { 21600, 0, 0x405 } },                    // 409
7495     { 0x8000, { 21600, 0, 0x406 } }                     // 410
7496 };
7497 static const sal_uInt16 mso_sptTextDeflateInflateDeflateSegm[] =
7498 {
7499     0x4000, 0x0001, 0x8000,
7500     0x4000, 0x2002, 0x8000,
7501     0x4000, 0x2002, 0x8000,
7502     0x4000, 0x2002, 0x8000,
7503     0x4000, 0x2002, 0x8000,
7504     0x4000, 0x0001, 0x8000
7505 };
7506 static const SvxMSDffHandle mso_sptTextDeflateInflateDeflateHandle[] =
7507 {
7508     {   MSDFF_HANDLE_FLAGS_RANGE,
7509         10800, 0x100, 10800, 10800, 0x80000000, 0x7fffffff, 850, 9550 }
7510 };
7511 static const sal_Int32 mso_sptTextDeflateInflateDeflateDefault[] =
7512 {
7513     1, 6050
7514 };
7515 static const mso_CustomShape msoTextDeflateInflateDeflate =
7516 {
7517     (SvxMSDffVertPair*)mso_sptTextDeflateInflateDeflateVert, sizeof( mso_sptTextDeflateInflateDeflateVert ) / sizeof( SvxMSDffVertPair ),
7518     (sal_uInt16*)mso_sptTextDeflateInflateDeflateSegm, sizeof( mso_sptTextDeflateInflateDeflateSegm ) >> 1,
7519     (SvxMSDffCalculationData*)mso_sptTextDeflateInflateDeflateCalc, sizeof( mso_sptTextDeflateInflateDeflateCalc ) / sizeof( SvxMSDffCalculationData ),
7520     (sal_Int32*)mso_sptTextDeflateInflateDeflateDefault,
7521     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7522     21600, 21600,
7523     0x80000000, 0x80000000,
7524     NULL, 0,
7525     (SvxMSDffHandle*)mso_sptTextDeflateInflateDeflateHandle, sizeof( mso_sptTextDeflateInflateDeflateHandle ) / sizeof( SvxMSDffHandle )
7526 };
7527 
7528 static const SvxMSDffVertPair mso_sptTextWave1Vert[] =  // adjustment1 : 0 - 4459
7529 {                                                   // adjustment2 : 8640 - 12960
7530     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
7531     { 29 MSO_I, 1 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 24 MSO_I, 1 MSO_I }
7532 };
7533 static const sal_uInt16 mso_sptTextWave1Segm[] =
7534 {
7535     0x4000, 0x2001, 0x8000,
7536     0x4000, 0x2001, 0x8000
7537 };
7538 static const mso_CustomShape msoTextWave1 =
7539 {
7540     (SvxMSDffVertPair*)mso_sptTextWave1Vert, sizeof( mso_sptTextWave1Vert ) / sizeof( SvxMSDffVertPair ),
7541     (sal_uInt16*)mso_sptTextWave1Segm, sizeof( mso_sptTextWave1Segm ) >> 1,
7542     (SvxMSDffCalculationData*)mso_sptWaveCalc, sizeof( mso_sptWaveCalc ) / sizeof( SvxMSDffCalculationData ),
7543     (sal_Int32*)mso_sptWaveDefault,
7544     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7545     21600, 21600,
7546     0x80000000, 0x80000000,
7547     (SvxMSDffVertPair*)mso_sptWaveGluePoints, sizeof( mso_sptWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
7548     (SvxMSDffHandle*)mso_sptWaveHandle, sizeof( mso_sptWaveHandle ) / sizeof( SvxMSDffHandle )
7549 };
7550 
7551 static const SvxMSDffVertPair mso_sptTextWave2Vert[] =  // adjustment1 : 0 - 4459
7552 {                                                   // adjustment2 : 8640 - 12960
7553     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 10 MSO_I }, { 16 MSO_I, 9 MSO_I }, { 12 MSO_I, 0 MSO_I },
7554     { 29 MSO_I, 1 MSO_I }, { 27 MSO_I, 26 MSO_I }, { 25 MSO_I, 28 MSO_I }, { 24 MSO_I, 1 MSO_I }
7555 };
7556 static const mso_CustomShape msoTextWave2 =
7557 {
7558     (SvxMSDffVertPair*)mso_sptTextWave2Vert, sizeof( mso_sptTextWave2Vert ) / sizeof( SvxMSDffVertPair ),
7559     (sal_uInt16*)mso_sptTextWave1Segm, sizeof( mso_sptTextWave1Segm ) >> 1,
7560     (SvxMSDffCalculationData*)mso_sptWaveCalc, sizeof( mso_sptWaveCalc ) / sizeof( SvxMSDffCalculationData ),
7561     (sal_Int32*)mso_sptWaveDefault,
7562     (SvxMSDffTextRectangles*)mso_sptFontWorkTextRect, sizeof( mso_sptFontWorkTextRect ) / sizeof( SvxMSDffTextRectangles ),
7563     21600, 21600,
7564     0x80000000, 0x80000000,
7565     (SvxMSDffVertPair*)mso_sptWaveGluePoints, sizeof( mso_sptWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
7566     (SvxMSDffHandle*)mso_sptWaveHandle, sizeof( mso_sptWaveHandle ) / sizeof( SvxMSDffHandle )
7567 };
7568 
7569 static const SvxMSDffVertPair mso_sptTextWave3Vert[] =  // adjustment1 : 0 - 2230
7570 {                                                       // adjustment2 : 8640 - 12960
7571     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 0x1e MSO_I, 10 MSO_I }, { 0x12 MSO_I, 0 MSO_I }, { 0x1f MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
7572     { 29 MSO_I, 1 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 0x20 MSO_I, 26 MSO_I }, { 0x13 MSO_I, 1 MSO_I }, { 0x21 MSO_I, 28 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 24 MSO_I, 1 MSO_I }
7573 };
7574 static const sal_uInt16 mso_sptTextWave3Segm[] =
7575 {
7576     0x4000, 0x2002, 0x8000,
7577     0x4000, 0x2002, 0x8000
7578 };
7579 static const mso_CustomShape msoTextWave3 =
7580 {
7581     (SvxMSDffVertPair*)mso_sptTextWave3Vert, sizeof( mso_sptTextWave3Vert ) / sizeof( SvxMSDffVertPair ),
7582     (sal_uInt16*)mso_sptTextWave3Segm, sizeof( mso_sptTextWave3Segm ) >> 1,
7583     (SvxMSDffCalculationData*)mso_sptDoubleWaveCalc, sizeof( mso_sptDoubleWaveCalc ) / sizeof( SvxMSDffCalculationData ),
7584     (sal_Int32*)mso_sptDoubleWaveDefault,
7585     (SvxMSDffTextRectangles*)mso_sptDoubleWaveTextRect, sizeof( mso_sptDoubleWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
7586     21600, 21600,
7587     0x80000000, 0x80000000,
7588     (SvxMSDffVertPair*)mso_sptDoubleWaveGluePoints, sizeof( mso_sptDoubleWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
7589     (SvxMSDffHandle*)mso_sptDoubleWaveHandle, sizeof( mso_sptDoubleWaveHandle ) / sizeof( SvxMSDffHandle )
7590 };
7591 
7592 static const SvxMSDffVertPair mso_sptTextWave4Vert[] =  // adjustment1 : 0 - 2230
7593 {                                                       // adjustment2 : 8640 - 12960
7594     { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 10 MSO_I }, { 0x1e MSO_I, 9 MSO_I }, { 0x12 MSO_I, 0 MSO_I }, { 0x1f MSO_I, 10 MSO_I }, { 16 MSO_I, 9 MSO_I }, { 12 MSO_I, 0 MSO_I },
7595     { 29 MSO_I, 1 MSO_I }, { 27 MSO_I, 26 MSO_I }, { 0x20 MSO_I, 28 MSO_I }, { 0x13 MSO_I, 1 MSO_I }, { 0x21 MSO_I, 26 MSO_I }, { 25 MSO_I, 28 MSO_I }, { 24 MSO_I, 1 MSO_I }
7596 };
7597 static const mso_CustomShape msoTextWave4 =
7598 {
7599     (SvxMSDffVertPair*)mso_sptTextWave4Vert, sizeof( mso_sptTextWave4Vert ) / sizeof( SvxMSDffVertPair ),
7600     (sal_uInt16*)mso_sptTextWave3Segm, sizeof( mso_sptTextWave3Segm ) >> 1,
7601     (SvxMSDffCalculationData*)mso_sptDoubleWaveCalc, sizeof( mso_sptDoubleWaveCalc ) / sizeof( SvxMSDffCalculationData ),
7602     (sal_Int32*)mso_sptDoubleWaveDefault,
7603     (SvxMSDffTextRectangles*)mso_sptDoubleWaveTextRect, sizeof( mso_sptDoubleWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
7604     21600, 21600,
7605     0x80000000, 0x80000000,
7606     (SvxMSDffVertPair*)mso_sptDoubleWaveGluePoints, sizeof( mso_sptDoubleWaveGluePoints ) / sizeof( SvxMSDffVertPair ),
7607     (SvxMSDffHandle*)mso_sptDoubleWaveHandle, sizeof( mso_sptDoubleWaveHandle ) / sizeof( SvxMSDffHandle )
7608 };
7609 
7610 static const sal_Int32 mso_sptCalloutDefault1[] =
7611 {
7612     4, -1800, 24500, -1800, 4000
7613 };
7614 static const sal_Int32 mso_sptCalloutDefault2[] =
7615 {
7616     4, -8300, 24500, -1800, 4000
7617 };
7618 static const sal_Int32 mso_sptCalloutDefault3[] =
7619 {
7620     6, -10000, 24500, -3600, 4000, -1800, 4000
7621 };
7622 static const sal_Int32 mso_sptCalloutDefault4[] =
7623 {
7624     8, 23400, 24500, 25200, 21600, 25200, 4000, 23400, 4000
7625 };
7626 static const SvxMSDffVertPair mso_sptCalloutVert1[] =
7627 {
7628     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }
7629 };
7630 static const SvxMSDffHandle mso_sptCalloutHandle1[] =
7631 {
7632     {   0,
7633         0x100, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7634     {   0,
7635         0x102, 0x103, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff }
7636 };
7637 static const sal_uInt16 mso_sptCalloutSegm1a[] =
7638 {
7639     0x4000, 0x0003, 0x6000, 0x8000,
7640     0x4000, 0x0001, 0x8000
7641 };
7642 static const sal_uInt16 mso_sptCalloutSegm1b[] =
7643 {
7644     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7645     0x4000, 0x0001, 0x8000
7646 };
7647 static const SvxMSDffVertPair mso_sptCallout1Vert[] =
7648 {
7649     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 0 }, { 2 MSO_I, 21600 }
7650 };
7651 static const sal_uInt16 mso_sptCallout1Segm1a[] =
7652 {
7653     0x4000, 0x0003, 0x6000, 0x8000,
7654     0x4000, 0x0001, 0x8000,
7655     0x4000, 0x0001, 0x8000
7656 };
7657 static const sal_uInt16 mso_sptCallout1Segm1b[] =
7658 {
7659     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7660     0x4000, 0x0001, 0x8000,
7661     0x4000, 0x0001, 0x8000
7662 };
7663 static const SvxMSDffVertPair mso_sptCallout2Verta[] =
7664 {
7665     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 5 MSO_I }
7666 };
7667 static const SvxMSDffVertPair mso_sptCallout2Vertb[] =
7668 {
7669     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 5 MSO_I }, { 4 MSO_I, 0 }, { 4 MSO_I, 21600 }
7670 };
7671 static const SvxMSDffHandle mso_sptCalloutHandle2[] =
7672 {
7673     {   0,
7674         0x100, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7675     {   0,
7676         0x102, 0x103, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7677     {   0,
7678         0x104, 0x105, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff }
7679 };
7680 static const sal_uInt16 mso_sptCallout2Segm1a[] =
7681 {
7682     0x4000, 0x0003, 0x6000, 0x8000,
7683     0x4000, 0x0001, 0x8000,
7684     0x4000, 0x0001, 0x8000,
7685     0x4000, 0x0001, 0x8000
7686 };
7687 static const sal_uInt16 mso_sptCallout2Segm1b[] =
7688 {
7689     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7690     0x4000, 0x0001, 0x8000,
7691     0x4000, 0x0001, 0x8000,
7692     0x4000, 0x0001, 0x8000
7693 };
7694 static const sal_uInt16 mso_sptCallout2Segm1c[] =
7695 {
7696     0x4000, 0x0003, 0x6000, 0x8000,
7697     0x4000, 0x0001, 0x8000,
7698     0x4000, 0x0001, 0x8000,
7699     0x4000, 0x0001, 0x8000,
7700     0x4000, 0x0001, 0x8000
7701 };
7702 static const sal_uInt16 mso_sptCallout2Segm1d[] =
7703 {
7704     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7705     0x4000, 0x0001, 0x8000,
7706     0x4000, 0x0001, 0x8000,
7707     0x4000, 0x0001, 0x8000,
7708     0x4000, 0x0001, 0x8000
7709 };
7710 static const SvxMSDffVertPair mso_sptCallout3Verta[] =
7711 {
7712     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 6 MSO_I, 7 MSO_I }, { 4 MSO_I, 5 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 1 MSO_I }
7713 };
7714 static const SvxMSDffVertPair mso_sptCallout3Vertb[] =
7715 {
7716     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 6 MSO_I, 7 MSO_I }, { 4 MSO_I, 5 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 1 MSO_I }, { 6 MSO_I, 0 }, { 6 MSO_I, 21600 }
7717 };
7718 static const SvxMSDffHandle mso_sptCalloutHandle3[] =
7719 {
7720     {   0,
7721         0x100, 0x101, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7722     {   0,
7723         0x102, 0x103, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7724     {   0,
7725         0x104, 0x105, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff },
7726     {   0,
7727         0x106, 0x107, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff }
7728 };
7729 static const sal_uInt16 mso_sptCallout3Segm1a[] =
7730 {
7731     0x4000, 0x0003, 0x6000, 0x8000,
7732     0x4000, 0xaa00, 0x0003, 0x8000          // NO_FILL
7733 };
7734 static const sal_uInt16 mso_sptCallout3Segm1b[] =
7735 {
7736     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7737     0x4000, 0xaa00, 0x0003, 0x8000          // NO FILL
7738 };
7739 static const sal_uInt16 mso_sptCallout3Segm1c[] =
7740 {
7741     0x4000, 0x0003, 0x6000, 0x8000,
7742     0x4000, 0xaa00, 0x0003, 0x8000,         // NO FILL
7743     0x4000, 0x0001, 0x8000
7744 };
7745 static const sal_uInt16 mso_sptCallout3Segm1d[] =
7746 {
7747     0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
7748     0x4000, 0xaa00, 0x0003, 0x8000,         // NO FILL
7749     0x4000, 0x0001, 0x8000
7750 };
7751 
7752 static const SvxMSDffCalculationData mso_sptCalloutCalc[] =
7753 {
7754     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
7755     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
7756     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
7757     { 0x2000, { DFF_Prop_adjust4Value, 0, 0 } },
7758     { 0x2000, { DFF_Prop_adjust5Value, 0, 0 } },
7759     { 0x2000, { DFF_Prop_adjust6Value, 0, 0 } },
7760     { 0x2000, { DFF_Prop_adjust7Value, 0, 0 } },
7761     { 0x2000, { DFF_Prop_adjust8Value, 0, 0 } }
7762 };
7763 
7764 static const mso_CustomShape msoCallout90 =
7765 {
7766     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7767     (sal_uInt16*)mso_sptCalloutSegm1b, sizeof( mso_sptCalloutSegm1b ) >> 1,
7768     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7769     (sal_Int32*)mso_sptCalloutDefault1,
7770     NULL, 0,
7771     21600, 21600,
7772     0x80000000, 0x80000000,
7773     NULL, 0,
7774     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7775 };
7776 static const mso_CustomShape msoCallout1 =
7777 {
7778     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7779     (sal_uInt16*)mso_sptCalloutSegm1b, sizeof( mso_sptCalloutSegm1b ) >> 1,
7780     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7781     (sal_Int32*)mso_sptCalloutDefault2,
7782     NULL, 0,
7783     21600, 21600,
7784     0x80000000, 0x80000000,
7785     NULL, 0,
7786     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7787 };
7788 static const mso_CustomShape msoCallout2 =
7789 {
7790     (SvxMSDffVertPair*)mso_sptCallout2Verta, sizeof( mso_sptCallout2Verta ) / sizeof( SvxMSDffVertPair ),
7791     (sal_uInt16*)mso_sptCallout2Segm1b, sizeof( mso_sptCallout2Segm1b ) >> 1,
7792     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7793     (sal_Int32*)mso_sptCalloutDefault3,
7794     NULL, 0,
7795     21600, 21600,
7796     0x80000000, 0x80000000,
7797     NULL, 0,
7798     (SvxMSDffHandle*)mso_sptCalloutHandle2, sizeof( mso_sptCalloutHandle2 ) / sizeof( SvxMSDffHandle )
7799 };
7800 static const mso_CustomShape msoCallout3 =
7801 {
7802     (SvxMSDffVertPair*)mso_sptCallout3Verta, sizeof( mso_sptCallout3Verta ) / sizeof( SvxMSDffVertPair ),
7803     (sal_uInt16*)mso_sptCallout3Segm1b, sizeof( mso_sptCallout3Segm1b ) >> 1,
7804     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7805     (sal_Int32*)mso_sptCalloutDefault4,
7806     NULL, 0,
7807     21600, 21600,
7808     0x80000000, 0x80000000,
7809     NULL, 0,
7810     (SvxMSDffHandle*)mso_sptCalloutHandle3, sizeof( mso_sptCalloutHandle3 ) / sizeof( SvxMSDffHandle )
7811 };
7812 static const mso_CustomShape msoAccentCallout90 =
7813 {
7814     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7815     (sal_uInt16*)mso_sptCalloutSegm1b, sizeof( mso_sptCalloutSegm1b ) >> 1,
7816     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7817     (sal_Int32*)mso_sptCalloutDefault1,
7818     NULL, 0,
7819     21600, 21600,
7820     0x80000000, 0x80000000,
7821     NULL, 0,
7822     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7823 };
7824 static const mso_CustomShape msoAccentCallout1 =
7825 {
7826     (SvxMSDffVertPair*)mso_sptCallout1Vert, sizeof( mso_sptCallout1Vert ) / sizeof( SvxMSDffVertPair ),
7827     (sal_uInt16*)mso_sptCallout1Segm1b, sizeof( mso_sptCallout1Segm1b ) >> 1,
7828     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7829     (sal_Int32*)mso_sptCalloutDefault2,
7830     NULL, 0,
7831     21600, 21600,
7832     0x80000000, 0x80000000,
7833     NULL, 0,
7834     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7835 };
7836 static const mso_CustomShape msoAccentCallout2 =
7837 {
7838     (SvxMSDffVertPair*)mso_sptCallout2Vertb, sizeof( mso_sptCallout2Vertb ) / sizeof( SvxMSDffVertPair ),
7839     (sal_uInt16*)mso_sptCallout2Segm1d, sizeof( mso_sptCallout2Segm1d ) >> 1,
7840     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7841     (sal_Int32*)mso_sptCalloutDefault3,
7842     NULL, 0,
7843     21600, 21600,
7844     0x80000000, 0x80000000,
7845     NULL, 0,
7846     (SvxMSDffHandle*)mso_sptCalloutHandle2, sizeof( mso_sptCalloutHandle2 ) / sizeof( SvxMSDffHandle )
7847 };
7848 static const mso_CustomShape msoAccentCallout3 =
7849 {
7850     (SvxMSDffVertPair*)mso_sptCallout3Vertb, sizeof( mso_sptCallout3Vertb ) / sizeof( SvxMSDffVertPair ),
7851     (sal_uInt16*)mso_sptCallout3Segm1d, sizeof( mso_sptCallout3Segm1d ) >> 1,
7852     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7853     (sal_Int32*)mso_sptCalloutDefault4,
7854     NULL, 0,
7855     21600, 21600,
7856     0x80000000, 0x80000000,
7857     NULL, 0,
7858     (SvxMSDffHandle*)mso_sptCalloutHandle3, sizeof( mso_sptCalloutHandle3 ) / sizeof( SvxMSDffHandle )
7859 };
7860 static const mso_CustomShape msoBorderCallout90 =
7861 {
7862     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7863     (sal_uInt16*)mso_sptCalloutSegm1a, sizeof( mso_sptCalloutSegm1a ) >> 1,
7864     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7865     (sal_Int32*)mso_sptCalloutDefault1,
7866     NULL, 0,
7867     21600, 21600,
7868     0x80000000, 0x80000000,
7869     NULL, 0,
7870     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7871 };
7872 static const mso_CustomShape msoBorderCallout1 =
7873 {
7874     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7875     (sal_uInt16*)mso_sptCalloutSegm1a, sizeof( mso_sptCalloutSegm1a ) >> 1,
7876     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7877     (sal_Int32*)mso_sptCalloutDefault2,
7878     NULL, 0,
7879     21600, 21600,
7880     0x80000000, 0x80000000,
7881     NULL, 0,
7882     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7883 };
7884 static const mso_CustomShape msoBorderCallout2 =
7885 {
7886     (SvxMSDffVertPair*)mso_sptCallout2Verta, sizeof( mso_sptCallout2Verta ) / sizeof( SvxMSDffVertPair ),
7887     (sal_uInt16*)mso_sptCallout2Segm1a, sizeof( mso_sptCallout2Segm1a ) >> 1,
7888     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7889     (sal_Int32*)mso_sptCalloutDefault3,
7890     NULL, 0,
7891     21600, 21600,
7892     0x80000000, 0x80000000,
7893     NULL, 0,
7894     (SvxMSDffHandle*)mso_sptCalloutHandle2, sizeof( mso_sptCalloutHandle2 ) / sizeof( SvxMSDffHandle )
7895 };
7896 static const mso_CustomShape msoBorderCallout3 =
7897 {
7898     (SvxMSDffVertPair*)mso_sptCallout3Verta, sizeof( mso_sptCallout3Verta ) / sizeof( SvxMSDffVertPair ),
7899     (sal_uInt16*)mso_sptCallout3Segm1a, sizeof( mso_sptCallout3Segm1a ) >> 1,
7900     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7901     (sal_Int32*)mso_sptCalloutDefault4,
7902     NULL, 0,
7903     21600, 21600,
7904     0x80000000, 0x80000000,
7905     NULL, 0,
7906     (SvxMSDffHandle*)mso_sptCalloutHandle3, sizeof( mso_sptCalloutHandle3 ) / sizeof( SvxMSDffHandle )
7907 };
7908 static const mso_CustomShape msoAccentBorderCallout90 =
7909 {
7910     (SvxMSDffVertPair*)mso_sptCalloutVert1, sizeof( mso_sptCalloutVert1 ) / sizeof( SvxMSDffVertPair ),
7911     (sal_uInt16*)mso_sptCalloutSegm1a, sizeof( mso_sptCalloutSegm1a ) >> 1,
7912     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7913     (sal_Int32*)mso_sptCalloutDefault1,
7914     NULL, 0,
7915     21600, 21600,
7916     0x80000000, 0x80000000,
7917     NULL, 0,
7918     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7919 };
7920 static const mso_CustomShape msoAccentBorderCallout1 =
7921 {
7922     (SvxMSDffVertPair*)mso_sptCallout1Vert, sizeof( mso_sptCallout1Vert ) / sizeof( SvxMSDffVertPair ),
7923     (sal_uInt16*)mso_sptCallout1Segm1a, sizeof( mso_sptCallout1Segm1a ) >> 1,
7924     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7925     (sal_Int32*)mso_sptCalloutDefault2,
7926     NULL, 0,
7927     21600, 21600,
7928     0x80000000, 0x80000000,
7929     NULL, 0,
7930     (SvxMSDffHandle*)mso_sptCalloutHandle1, sizeof( mso_sptCalloutHandle1 ) / sizeof( SvxMSDffHandle )
7931 };
7932 static const mso_CustomShape msoAccentBorderCallout2 =
7933 {
7934     (SvxMSDffVertPair*)mso_sptCallout2Vertb, sizeof( mso_sptCallout2Vertb ) / sizeof( SvxMSDffVertPair ),
7935     (sal_uInt16*)mso_sptCallout2Segm1c, sizeof( mso_sptCallout2Segm1c ) >> 1,
7936     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7937     (sal_Int32*)mso_sptCalloutDefault3,
7938     NULL, 0,
7939     21600, 21600,
7940     0x80000000, 0x80000000,
7941     NULL, 0,
7942     (SvxMSDffHandle*)mso_sptCalloutHandle2, sizeof( mso_sptCalloutHandle2 ) / sizeof( SvxMSDffHandle )
7943 };
7944 static const mso_CustomShape msoAccentBorderCallout3 =
7945 {
7946     (SvxMSDffVertPair*)mso_sptCallout3Vertb, sizeof( mso_sptCallout3Vertb ) / sizeof( SvxMSDffVertPair ),
7947     (sal_uInt16*)mso_sptCallout3Segm1c, sizeof( mso_sptCallout3Segm1c ) >> 1,
7948     (SvxMSDffCalculationData*)mso_sptCalloutCalc, sizeof( mso_sptCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
7949     (sal_Int32*)mso_sptCalloutDefault4,
7950     NULL, 0,
7951     21600, 21600,
7952     0x80000000, 0x80000000,
7953     NULL, 0,
7954     (SvxMSDffHandle*)mso_sptCalloutHandle3, sizeof( mso_sptCalloutHandle3 ) / sizeof( SvxMSDffHandle )
7955 };
7956 
7957 static const SvxMSDffVertPair mso_sptStraightConnector1Vert[] =
7958 {
7959     { 0, 0 }, { 21600, 21600 }
7960 };
7961 static const sal_uInt16 mso_sptStraightConnector1Segm[] =
7962 {
7963     0x4000, 0x0001, 0x8000
7964 };
7965 static const mso_CustomShape msoStraightConnector1 =
7966 {
7967     (SvxMSDffVertPair*)mso_sptStraightConnector1Vert, sizeof( mso_sptStraightConnector1Vert ) / sizeof( SvxMSDffVertPair ),
7968     (sal_uInt16*)mso_sptStraightConnector1Segm, sizeof( mso_sptStraightConnector1Segm ) >> 1,
7969     (SvxMSDffCalculationData*)NULL, 0,
7970     (sal_Int32*)NULL,
7971     NULL, 0,
7972     21600, 21600,
7973     0x80000000, 0x80000000,
7974     NULL, 0,
7975     (SvxMSDffHandle*)NULL, 0
7976 };
7977 
7978 static const SvxMSDffVertPair mso_sptBentConnector2Vert[] =
7979 {
7980     { 0, 0 }, { 21600, 0 }, { 21600, 21600 }
7981 };
7982 static const sal_uInt16 mso_sptBentConnector2Segm[] =
7983 {
7984     0x4000, 0x0002, 0x8000
7985 };
7986 static const mso_CustomShape msoBentConnector2 =
7987 {
7988     (SvxMSDffVertPair*)mso_sptBentConnector2Vert, sizeof( mso_sptBentConnector2Vert ) / sizeof( SvxMSDffVertPair ),
7989     (sal_uInt16*)mso_sptBentConnector2Segm, sizeof( mso_sptBentConnector2Segm ) >> 1,
7990     (SvxMSDffCalculationData*)NULL, 0,
7991     (sal_Int32*)NULL,
7992     NULL, 0,
7993     21600, 21600,
7994     0x80000000, 0x80000000,
7995     NULL, 0,
7996     (SvxMSDffHandle*)NULL, 0
7997 };
7998 
7999 static const SvxMSDffVertPair mso_sptBentConnector3Vert[] =
8000 {
8001     { 0, 0 }, { 0 MSO_I, 0 }, { 0 MSO_I, 21600 }, { 21600, 21600 }
8002 };
8003 static const sal_uInt16 mso_sptBentConnector3Segm[] =
8004 {
8005     0x4000, 0x0003, 0x8000
8006 };
8007 static const SvxMSDffCalculationData mso_sptBentConnector3Calc[] =
8008 {
8009     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } }
8010 };
8011 static const sal_Int32 mso_sptBentConnector3Default[] =
8012 {
8013     1, 10800
8014 };
8015 static const SvxMSDffHandle mso_sptBentConnector3Handle[] =
8016 {
8017     {   MSDFF_HANDLE_FLAGS_RANGE,
8018         0x100, 10800, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff }
8019 };
8020 static const mso_CustomShape msoBentConnector3 =
8021 {
8022     (SvxMSDffVertPair*)mso_sptBentConnector3Vert, sizeof( mso_sptBentConnector3Vert ) / sizeof( SvxMSDffVertPair ),
8023     (sal_uInt16*)mso_sptBentConnector3Segm, sizeof( mso_sptBentConnector3Segm ) >> 1,
8024     (SvxMSDffCalculationData*)mso_sptBentConnector3Calc, sizeof( mso_sptBentConnector3Calc ) / sizeof( SvxMSDffCalculationData ),
8025     (sal_Int32*)mso_sptBentConnector3Default,
8026     NULL, 0,
8027     21600, 21600,
8028     0x80000000, 0x80000000,
8029     NULL, 0,
8030     (SvxMSDffHandle*)mso_sptBentConnector3Handle, sizeof( mso_sptBentConnector3Handle ) / sizeof( SvxMSDffHandle )
8031 };
8032 
8033 static const SvxMSDffVertPair mso_sptBentConnector4Vert[] =
8034 {
8035     { 0, 0 }, { 0 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 21600, 1 MSO_I }, { 21600, 21600 }
8036 };
8037 static const sal_uInt16 mso_sptBentConnector4Segm[] =
8038 {
8039     0x4000, 0x0004, 0x8000
8040 };
8041 static const SvxMSDffCalculationData mso_sptBentConnector4Calc[] =
8042 {
8043     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
8044     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
8045     { 0x2000, { 0x400, 21600, 0 } },
8046     { 0x2001, { 0x402, 1, 2 } },
8047     { 0x2001, { 0x401, 1, 2 } }
8048 };
8049 static const sal_Int32 mso_sptBentConnector4Default[] =
8050 {
8051     2, 10800, 10800
8052 };
8053 static const SvxMSDffHandle mso_sptBentConnector4Handle[] =
8054 {
8055     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8056         0x100, 4 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 4 + 3, 4 + 3 },
8057     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
8058         3 + 3, 0x101, 10800, 10800, 3 + 3, 3 + 3, 0x80000000, 0x7fffffff }
8059 };
8060 static const mso_CustomShape msoBentConnector4 =
8061 {
8062     (SvxMSDffVertPair*)mso_sptBentConnector4Vert, sizeof( mso_sptBentConnector4Vert ) / sizeof( SvxMSDffVertPair ),
8063     (sal_uInt16*)mso_sptBentConnector4Segm, sizeof( mso_sptBentConnector4Segm ) >> 1,
8064     (SvxMSDffCalculationData*)mso_sptBentConnector4Calc, sizeof( mso_sptBentConnector4Calc ) / sizeof( SvxMSDffCalculationData ),
8065     (sal_Int32*)mso_sptBentConnector4Default,
8066     NULL, 0,
8067     21600, 21600,
8068     0x80000000, 0x80000000,
8069     NULL, 0,
8070     (SvxMSDffHandle*)mso_sptBentConnector4Handle, sizeof( mso_sptBentConnector4Handle ) / sizeof( SvxMSDffHandle )
8071 };
8072 
8073 static const SvxMSDffVertPair mso_sptBentConnector5Vert[] =
8074 {
8075     { 0, 0 }, { 0 MSO_I, 0 }, { 0 MSO_I, 4 MSO_I }, { 1 MSO_I, 4 MSO_I }, { 1 MSO_I, 21600 }, { 21600, 21600 }
8076 };
8077 static const sal_uInt16 mso_sptBentConnector5Segm[] =
8078 {
8079     0x4000, 0x0005, 0x8000
8080 };
8081 static const SvxMSDffCalculationData mso_sptBentConnector5Calc[] =
8082 {
8083     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
8084     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
8085     { 0x6000, { 0x400, 0x401, 0 } },
8086     { 0x2001, { 0x402, 1, 2 } },
8087     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
8088     { 0x2001, { 0x404, 1, 2 } },
8089     { 0x4000, { 21600, 0x404, 0 } },
8090     { 0x2001, { 0x406, 1, 2 } }
8091 };
8092 static const sal_Int32 mso_sptBentConnector5Default[] =
8093 {
8094     3, 10800, 10800, 10800
8095 };
8096 static const SvxMSDffHandle mso_sptBentConnector5Handle[] =
8097 {
8098     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8099         0x100, 5 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 5 + 3, 5 + 3 },
8100     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
8101         3 + 3, 0x101, 10800, 10800, 3 + 3, 3 + 3, 0x80000000, 0x7fffffff },
8102     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8103         0x102, 7 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 7 + 3, 7 + 3 }
8104 };
8105 static const mso_CustomShape msoBentConnector5 =
8106 {
8107     (SvxMSDffVertPair*)mso_sptBentConnector5Vert, sizeof( mso_sptBentConnector5Vert ) / sizeof( SvxMSDffVertPair ),
8108     (sal_uInt16*)mso_sptBentConnector5Segm, sizeof( mso_sptBentConnector5Segm ) >> 1,
8109     (SvxMSDffCalculationData*)mso_sptBentConnector5Calc, sizeof( mso_sptBentConnector5Calc ) / sizeof( SvxMSDffCalculationData ),
8110     (sal_Int32*)mso_sptBentConnector5Default,
8111     NULL, 0,
8112     21600, 21600,
8113     0x80000000, 0x80000000,
8114     NULL, 0,
8115     (SvxMSDffHandle*)mso_sptBentConnector5Handle, sizeof( mso_sptBentConnector5Handle ) / sizeof( SvxMSDffHandle )
8116 };
8117 
8118 static const SvxMSDffVertPair mso_sptCurvedConnector2Vert[] =
8119 {
8120     { 0, 0 }, { 10800, 0 }, { 21600, 10800 }, { 21600, 21600 }
8121 };
8122 static const sal_uInt16 mso_sptCurvedConnector2Segm[] =
8123 {
8124     0x4000, 0x2001, 0x8000
8125 };
8126 static const mso_CustomShape msoCurvedConnector2 =
8127 {
8128     (SvxMSDffVertPair*)mso_sptCurvedConnector2Vert, sizeof( mso_sptCurvedConnector2Vert ) / sizeof( SvxMSDffVertPair ),
8129     (sal_uInt16*)mso_sptCurvedConnector2Segm, sizeof( mso_sptCurvedConnector2Segm ) >> 1,
8130     (SvxMSDffCalculationData*)NULL, 0,
8131     (sal_Int32*)NULL,
8132     NULL, 0,
8133     21600, 21600,
8134     0x80000000, 0x80000000,
8135     NULL, 0,
8136     (SvxMSDffHandle*)NULL, 0
8137 };
8138 
8139 static const SvxMSDffVertPair mso_sptCurvedConnector3Vert[] =
8140 {
8141     { 0, 0 }, { 1 MSO_I, 0 }, { 0 MSO_I, 5400 }, { 0 MSO_I, 10800 }, { 0 MSO_I, 16200 }, { 3 MSO_I, 21600 }, { 21600, 21600 }
8142 };
8143 static const sal_uInt16 mso_sptCurvedConnector3Segm[] =
8144 {
8145     0x4000, 0x2002, 0x8000
8146 };
8147 static const SvxMSDffCalculationData mso_sptCurvedConnector3Calc[] =
8148 {
8149     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
8150     { 0x2001, { 0x400, 1, 2 } },
8151     { 0x2000, { 0x400, 21600, 0 } },
8152     { 0x2001, { 0x402, 1, 2 } }
8153 };
8154 static const sal_Int32 mso_sptCurvedConnector3Default[] =
8155 {
8156     1, 10800
8157 };
8158 static const SvxMSDffHandle mso_sptCurvedConnector3Handle[] =
8159 {
8160     {   MSDFF_HANDLE_FLAGS_RANGE,
8161         0x100, 10800, 10800, 10800, 0x80000000, 0x7fffffff, 0x80000000, 0x7fffffff }
8162 };
8163 static const mso_CustomShape msoCurvedConnector3 =
8164 {
8165     (SvxMSDffVertPair*)mso_sptCurvedConnector3Vert, sizeof( mso_sptCurvedConnector3Vert ) / sizeof( SvxMSDffVertPair ),
8166     (sal_uInt16*)mso_sptCurvedConnector3Segm, sizeof( mso_sptCurvedConnector3Segm ) >> 1,
8167     (SvxMSDffCalculationData*)mso_sptCurvedConnector3Calc, sizeof( mso_sptCurvedConnector3Calc ) / sizeof( SvxMSDffCalculationData ),
8168     (sal_Int32*)mso_sptCurvedConnector3Default,
8169     NULL, 0,
8170     21600, 21600,
8171     0x80000000, 0x80000000,
8172     NULL, 0,
8173     (SvxMSDffHandle*)mso_sptCurvedConnector3Handle, sizeof( mso_sptCurvedConnector3Handle ) / sizeof( SvxMSDffHandle )
8174 };
8175 
8176 static const SvxMSDffVertPair mso_sptCurvedConnector4Vert[] =
8177 {
8178     { 0, 0 }, { 1 MSO_I, 0 }, { 0 MSO_I, 10 MSO_I }, { 0 MSO_I, 9 MSO_I },
8179     { 0 MSO_I, 12 MSO_I }, { 5 MSO_I, 8 MSO_I }, { 3 MSO_I, 8 MSO_I },
8180     { 7 MSO_I, 8 MSO_I }, { 21600, 14 MSO_I }, { 21600, 21600 }
8181 
8182 };
8183 static const sal_uInt16 mso_sptCurvedConnector4Segm[] =
8184 {
8185     0x4000, 0x2003, 0x8000
8186 };
8187 static const SvxMSDffCalculationData mso_sptCurvedConnector4Calc[] =
8188 {
8189     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
8190     { 0x2001, { 0x400, 1, 2 } },
8191     { 0x4000, { 21600, 0x400, 0 } },
8192     { 0x2001, { 0x402, 1, 2 } },
8193     { 0x6000, { 0x400, 0x403, 0 } },
8194     { 0x2001, { 0x404, 1, 2 } },
8195     { 0x2000, { 0x403, 21600, 0 } },
8196     { 0x2001, { 0x406, 1, 2 } },
8197     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
8198     { 0x2001, { DFF_Prop_adjust2Value, 1, 2 } },
8199     { 0x2001, { DFF_Prop_adjust2Value, 1, 4 } },
8200     { 0x6000, { 0x408, 0x409, 0 } },
8201     { 0x2001, { 0x40b, 1, 2 } },
8202     { 0x2000, { 0x408, 21600, 0 } },
8203     { 0x2001, { 0x40d, 1, 2 } }
8204 };
8205 static const sal_Int32 mso_sptCurvedConnector4Default[] =
8206 {
8207     2, 10800, 10800
8208 };
8209 static const SvxMSDffHandle mso_sptCurvedConnector4Handle[] =
8210 {
8211     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8212         0x100, 9 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 9 + 3, 9 + 3 },
8213     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
8214         3 + 3, 0x101, 10800, 10800, 3 + 3, 3 + 3, 0x80000000, 0x7fffffff }
8215 };
8216 static const mso_CustomShape msoCurvedConnector4 =
8217 {
8218     (SvxMSDffVertPair*)mso_sptCurvedConnector4Vert, sizeof( mso_sptCurvedConnector4Vert ) / sizeof( SvxMSDffVertPair ),
8219     (sal_uInt16*)mso_sptCurvedConnector4Segm, sizeof( mso_sptCurvedConnector4Segm ) >> 1,
8220     (SvxMSDffCalculationData*)mso_sptCurvedConnector4Calc, sizeof( mso_sptCurvedConnector4Calc ) / sizeof( SvxMSDffCalculationData ),
8221     (sal_Int32*)mso_sptCurvedConnector4Default,
8222     NULL, 0,
8223     21600, 21600,
8224     0x80000000, 0x80000000,
8225     NULL, 0,
8226     (SvxMSDffHandle*)mso_sptCurvedConnector4Handle, sizeof( mso_sptCurvedConnector4Handle ) / sizeof( SvxMSDffHandle )
8227 };
8228 
8229 static const SvxMSDffVertPair mso_sptCurvedConnector5Vert[] =
8230 {
8231     { 0, 0 },
8232     { 21 MSO_I, 0 }, { 0 MSO_I, 12 MSO_I }, { 0 MSO_I, 11 MSO_I },
8233     { 0 MSO_I, 14 MSO_I }, { 6 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
8234     { 8 MSO_I, 4 MSO_I }, { 1 MSO_I, 18 MSO_I }, { 1 MSO_I, 16 MSO_I },
8235     { 1 MSO_I, 20 MSO_I }, { 10 MSO_I, 21600 }, { 21600, 21600 }
8236 };
8237 static const sal_uInt16 mso_sptCurvedConnector5Segm[] =
8238 {
8239     0x4000, 0x2004, 0x8000
8240 };
8241 static const SvxMSDffCalculationData mso_sptCurvedConnector5Calc[] =
8242 {
8243     { 0x2000, { DFF_Prop_adjustValue, 0, 0 } },
8244     { 0x2000, { DFF_Prop_adjust3Value, 0, 0 } },
8245     { 0x6000, { 0x400, 0x401, 0 } },
8246     { 0x2001, { 0x402, 1, 2 } },
8247     { 0x2000, { DFF_Prop_adjust2Value, 0, 0 } },
8248     { 0x6000, { 0x400, 0x403, 0 } },
8249     { 0x2001, { 0x405, 1, 2 } },
8250     { 0x6000, { 0x401, 0x403, 0 } },
8251     { 0x2001, { 0x407, 1, 2 } },
8252     { 0x2000, { 0x401, 21600, 0 } },
8253     { 0x2001, { 0x409, 1, 2 } },
8254     { 0x2001, { 0x404, 1, 2 } },
8255     { 0x2001, { 0x40b, 1, 2 } },
8256     { 0x6000, { 0x404, 0x40b, 0 } },
8257     { 0x2001, { 0x40d, 1, 2 } },
8258     { 0x2000, { 0x404, 21600, 0 } },
8259     { 0x2001, { 0x40f, 1, 2 } },
8260     { 0x6000, { 0x404, 0x410, 0 } },
8261     { 0x2001, { 0x411, 1, 2 } },
8262     { 0x2000, { 0x410, 21600, 0 } },
8263     { 0x2001, { 0x413, 1, 2 } },
8264     { 0x2001, { 0x400, 1, 2 } }
8265 };
8266 static const sal_Int32 mso_sptCurvedConnector5Default[] =
8267 {
8268     3, 10800, 10800, 10800
8269 };
8270 static const SvxMSDffHandle mso_sptCurvedConnector5Handle[] =
8271 {
8272     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8273         0x100, 11 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 11 + 3, 11 + 3 },
8274     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL,
8275         3 + 3, 0x101, 10800, 10800, 3 + 3, 3 + 3, 0x80000000, 0x7fffffff },
8276     {   MSDFF_HANDLE_FLAGS_RANGE | MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL | MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL,
8277         0x102, 16 + 3, 10800, 10800, 0x80000000, 0x7fffffff, 16 + 3, 16 + 3 }
8278 };
8279 static const mso_CustomShape msoCurvedConnector5 =
8280 {
8281     (SvxMSDffVertPair*)mso_sptCurvedConnector5Vert, sizeof( mso_sptCurvedConnector5Vert ) / sizeof( SvxMSDffVertPair ),
8282     (sal_uInt16*)mso_sptCurvedConnector5Segm, sizeof( mso_sptCurvedConnector5Segm ) >> 1,
8283     (SvxMSDffCalculationData*)mso_sptCurvedConnector5Calc, sizeof( mso_sptCurvedConnector5Calc ) / sizeof( SvxMSDffCalculationData ),
8284     (sal_Int32*)mso_sptCurvedConnector5Default,
8285     NULL, 0,
8286     21600, 21600,
8287     0x80000000, 0x80000000,
8288     NULL, 0,
8289     (SvxMSDffHandle*)mso_sptCurvedConnector5Handle, sizeof( mso_sptCurvedConnector5Handle ) / sizeof( SvxMSDffHandle )
8290 };
8291 
8292 const mso_CustomShape* GetCustomShapeContent( MSO_SPT eSpType )
8293 {
8294     const mso_CustomShape* pCustomShape = NULL;
8295     switch( eSpType )
8296     {
8297         case mso_sptArc :                       pCustomShape = &msoArc; break;
8298         case mso_sptLine:                       pCustomShape = &msoStraightConnector1; break;
8299         case mso_sptRectangle :                 pCustomShape = &msoRectangle; break;
8300         case mso_sptParallelogram :             pCustomShape = &msoParallelogram; break;
8301         case mso_sptTrapezoid :                 pCustomShape = &msoTrapezoid; break;
8302         case mso_sptDiamond :                   pCustomShape = &msoDiamond; break;
8303         case mso_sptRoundRectangle :            pCustomShape = &msoRoundRectangle; break;
8304         case mso_sptOctagon :                   pCustomShape = &msoOctagon; break;
8305         case mso_sptIsocelesTriangle :          pCustomShape = &msoIsocelesTriangle; break;
8306         case mso_sptRightTriangle :             pCustomShape = &msoRightTriangle; break;
8307         case mso_sptEllipse :                   pCustomShape = &msoEllipse; break;
8308         case mso_sptHexagon :                   pCustomShape = &msoHexagon; break;
8309         case mso_sptPlus :                      pCustomShape = &msoPlus; break;
8310         case mso_sptPentagon :                  pCustomShape = &msoPentagon; break;
8311         case mso_sptCan :                       pCustomShape = &msoCan; break;
8312         case mso_sptCube :                      pCustomShape = &msoCube; break;
8313         case mso_sptBalloon :                   pCustomShape = &msoBalloon; break;
8314         case mso_sptActionButtonBlank :         pCustomShape = &msoActionButtonBlank; break;
8315         case mso_sptActionButtonHome :          pCustomShape = &msoActionButtonHome; break;
8316         case mso_sptActionButtonHelp :          pCustomShape = &msoActionButtonHelp; break;
8317         case mso_sptActionButtonInformation :   pCustomShape = &msoActionButtonInformation; break;
8318         case mso_sptActionButtonBackPrevious :  pCustomShape = &msoActionButtonBackPrevious; break;
8319         case mso_sptActionButtonForwardNext :   pCustomShape = &msoActionButtonForwardNext; break;
8320         case mso_sptActionButtonBeginning :     pCustomShape = &msoActionButtonBeginning; break;
8321         case mso_sptActionButtonEnd :           pCustomShape = &msoActionButtonEnd; break;
8322         case mso_sptActionButtonReturn :        pCustomShape = &msoActionButtonReturn;  break;
8323         case mso_sptActionButtonDocument :      pCustomShape = &msoActionButtonDocument; break;
8324         case mso_sptActionButtonSound :         pCustomShape = &msoActionButtonSound; break;
8325         case mso_sptActionButtonMovie :         pCustomShape = &msoActionButtonMovie; break;
8326         case mso_sptBevel :                     pCustomShape = &msoBevel; break;
8327         case mso_sptFoldedCorner :              pCustomShape = &msoFoldedCorner; break;
8328         case mso_sptSmileyFace :                pCustomShape = &msoSmileyFace;  break;
8329         case mso_sptDonut :                     pCustomShape = &msoDonut; break;
8330         case mso_sptNoSmoking :                 pCustomShape = &msoNoSmoking; break;
8331         case mso_sptBlockArc :                  pCustomShape = &msoBlockArc; break;
8332         case mso_sptHeart :                     pCustomShape = &msoHeart; break;
8333         case mso_sptLightningBolt :             pCustomShape = &msoLightningBold; break;
8334         case mso_sptSun :                       pCustomShape = &msoSun; break;
8335         case mso_sptMoon :                      pCustomShape = &msoMoon; break;
8336         case mso_sptBracketPair :               pCustomShape = &msoBracketPair; break;
8337         case mso_sptBracePair :                 pCustomShape = &msoBracePair; break;
8338         case mso_sptPlaque :                    pCustomShape = &msoPlaque; break;
8339         case mso_sptLeftBracket :               pCustomShape = &msoLeftBracket; break;
8340         case mso_sptRightBracket :              pCustomShape = &msoRightBracket; break;
8341         case mso_sptLeftBrace :                 pCustomShape = &msoLeftBrace; break;
8342         case mso_sptRightBrace :                pCustomShape = &msoRightBrace; break;
8343         case mso_sptArrow :                     pCustomShape = &msoArrow; break;
8344         case mso_sptUpArrow :                   pCustomShape = &msoUpArrow; break;
8345         case mso_sptDownArrow :                 pCustomShape = &msoDownArrow; break;
8346         case mso_sptLeftArrow :                 pCustomShape = &msoLeftArrow; break;
8347         case mso_sptLeftRightArrow :            pCustomShape = &msoLeftRightArrow; break;
8348         case mso_sptUpDownArrow :               pCustomShape = &msoUpDownArrow; break;
8349         case mso_sptQuadArrow :                 pCustomShape = &msoQuadArrow; break;
8350         case mso_sptLeftRightUpArrow :          pCustomShape = &msoLeftRightUpArrow; break;
8351         case mso_sptBentArrow :                 pCustomShape = &msoBentArrow; break;
8352         case mso_sptUturnArrow :                pCustomShape = &msoUturnArrow; break;
8353         case mso_sptLeftUpArrow :               pCustomShape = &msoLeftUpArrow; break;
8354         case mso_sptBentUpArrow :               pCustomShape = &msoBentUpArrow; break;
8355         case mso_sptCurvedRightArrow :          pCustomShape = &msoCurvedRightArrow; break;
8356         case mso_sptCurvedLeftArrow :           pCustomShape = &msoCurvedLeftArrow; break;
8357         case mso_sptCurvedUpArrow :             pCustomShape = &msoCurvedUpArrow; break;
8358         case mso_sptCurvedDownArrow :           pCustomShape = &msoCurvedDownArrow; break;
8359         case mso_sptStripedRightArrow :         pCustomShape = &msoStripedRightArrow; break;
8360         case mso_sptNotchedRightArrow :         pCustomShape = &msoNotchedRightArrow; break;
8361         case mso_sptHomePlate :                 pCustomShape = &msoHomePlate; break;
8362         case mso_sptChevron :                   pCustomShape = &msoChevron; break;
8363         case mso_sptRightArrowCallout :         pCustomShape = &msoRightArrowCallout; break;
8364         case mso_sptLeftArrowCallout :          pCustomShape = &msoLeftArrowCallout; break;
8365         case mso_sptUpArrowCallout :            pCustomShape = &msoUpArrowCallout; break;
8366         case mso_sptDownArrowCallout :          pCustomShape = &msoDownArrowCallout; break;
8367         case mso_sptLeftRightArrowCallout :     pCustomShape = &msoLeftRightArrowCallout; break;
8368         case mso_sptUpDownArrowCallout :        pCustomShape = &msoUpDownArrowCallout; break;
8369         case mso_sptQuadArrowCallout :          pCustomShape = &msoQuadArrowCallout; break;
8370         case mso_sptCircularArrow :             pCustomShape = &msoCircularArrow; break;
8371         case mso_sptIrregularSeal1 :            pCustomShape = &msoIrregularSeal1; break;
8372         case mso_sptIrregularSeal2 :            pCustomShape = &msoIrregularSeal2; break;
8373         case mso_sptSeal4 :                     pCustomShape = &msoSeal4; break;
8374         case mso_sptStar :                      pCustomShape = &msoStar; break;
8375         case mso_sptSeal8 :                     pCustomShape = &msoSeal8; break;
8376         case mso_sptSeal :
8377         case mso_sptSeal16 :                    pCustomShape = &msoSeal16; break;
8378         case mso_sptSeal24 :                    pCustomShape = &msoSeal24; break;
8379         case mso_sptSeal32 :                    pCustomShape = &msoSeal32; break;
8380         case mso_sptRibbon2 :                   pCustomShape = &msoRibbon2; break;
8381         case mso_sptRibbon :                    pCustomShape = &msoRibbon; break;
8382         case mso_sptEllipseRibbon2 :            pCustomShape = &msosptEllipseRibbon2; break;    // SJ: TODO
8383         case mso_sptEllipseRibbon :             pCustomShape = &msosptEllipseRibbon; break; // SJ: TODO
8384         case mso_sptVerticalScroll :            pCustomShape = &msoVerticalScroll;  break;
8385         case mso_sptHorizontalScroll :          pCustomShape = &msoHorizontalScroll; break;
8386         case mso_sptFlowChartProcess :          pCustomShape = &msoFlowChartProcess; break;
8387         case mso_sptFlowChartAlternateProcess : pCustomShape = &msoFlowChartAlternateProcess; break;
8388         case mso_sptFlowChartDecision :         pCustomShape = &msoFlowChartDecision; break;
8389         case mso_sptFlowChartInputOutput :      pCustomShape = &msoFlowChartInputOutput; break;
8390         case mso_sptFlowChartPredefinedProcess :pCustomShape = &msoFlowChartPredefinedProcess; break;
8391         case mso_sptFlowChartInternalStorage :  pCustomShape = &msoFlowChartInternalStorage; break;
8392         case mso_sptFlowChartDocument :         pCustomShape = &msoFlowChartDocument; break;
8393         case mso_sptFlowChartMultidocument :    pCustomShape = &msoFlowChartMultidocument; break;
8394         case mso_sptFlowChartTerminator :       pCustomShape = &msoFlowChartTerminator; break;
8395         case mso_sptFlowChartPreparation :      pCustomShape = &msoFlowChartPreparation; break;
8396         case mso_sptFlowChartManualInput :      pCustomShape = &msoFlowChartManualInput; break;
8397         case mso_sptFlowChartManualOperation :  pCustomShape = &msoFlowChartManualOperation; break;
8398         case mso_sptFlowChartConnector :        pCustomShape = &msoFlowChartConnector; break;
8399         case mso_sptFlowChartOffpageConnector : pCustomShape = &msoFlowChartOffpageConnector; break;
8400         case mso_sptFlowChartPunchedCard :      pCustomShape = &msoFlowChartPunchedCard; break;
8401         case mso_sptFlowChartPunchedTape :      pCustomShape = &msoFlowChartPunchedTape; break;
8402         case mso_sptFlowChartSummingJunction :  pCustomShape = &msoFlowChartSummingJunction; break;
8403         case mso_sptFlowChartOr :               pCustomShape = &msoFlowChartOr; break;
8404         case mso_sptFlowChartCollate :          pCustomShape = &msoFlowChartCollate; break;
8405         case mso_sptFlowChartSort :             pCustomShape = &msoFlowChartSort; break;
8406         case mso_sptFlowChartExtract :          pCustomShape = &msoFlowChartExtract; break;
8407         case mso_sptFlowChartMerge :            pCustomShape = &msoFlowChartMerge; break;
8408         case mso_sptFlowChartOnlineStorage :    pCustomShape = &msoFlowChartOnlineStorage; break;
8409         case mso_sptFlowChartDelay :            pCustomShape = &msoFlowChartDelay; break;
8410         case mso_sptFlowChartMagneticTape :     pCustomShape = &msoFlowChartMagneticTape; break;
8411         case mso_sptFlowChartMagneticDisk :     pCustomShape = &msoFlowChartMagneticDisk; break;
8412         case mso_sptFlowChartMagneticDrum :     pCustomShape = &msoFlowChartMagneticDrum; break;
8413         case mso_sptFlowChartDisplay :          pCustomShape = &msoFlowChartDisplay; break;
8414         case mso_sptWedgeRectCallout :          pCustomShape = &msoWedgeRectCallout; break;
8415         case mso_sptWedgeRRectCallout :         pCustomShape = &msoWedgeRRectCallout; break;
8416         case mso_sptWedgeEllipseCallout :       pCustomShape = &msoWedgeEllipseCallout; break;
8417         case mso_sptCloudCallout :              pCustomShape = &msoCloudCallout; break;
8418         case mso_sptWave :                      pCustomShape = &msoWave; break;
8419         case mso_sptDoubleWave :                pCustomShape = &msoDoubleWave; break;
8420 
8421         // callout
8422         case mso_sptCallout1 :                  pCustomShape = &msoCallout1; break;
8423         case mso_sptCallout2 :                  pCustomShape = &msoCallout2; break;
8424         case mso_sptCallout3 :                  pCustomShape = &msoCallout3; break;
8425         case mso_sptAccentCallout1 :            pCustomShape = &msoAccentCallout1; break;
8426         case mso_sptAccentCallout2 :            pCustomShape = &msoAccentCallout2; break;
8427         case mso_sptAccentCallout3 :            pCustomShape = &msoAccentCallout3; break;
8428         case mso_sptBorderCallout1 :            pCustomShape = &msoBorderCallout1; break;
8429         case mso_sptBorderCallout2 :            pCustomShape = &msoBorderCallout2; break;
8430         case mso_sptBorderCallout3 :            pCustomShape = &msoBorderCallout3; break;
8431         case mso_sptAccentBorderCallout1 :      pCustomShape = &msoAccentBorderCallout1; break;
8432         case mso_sptAccentBorderCallout2 :      pCustomShape = &msoAccentBorderCallout2; break;
8433         case mso_sptAccentBorderCallout3 :      pCustomShape = &msoAccentBorderCallout3; break;
8434         case mso_sptCallout90 :                 pCustomShape = &msoCallout90; break;
8435         case mso_sptAccentCallout90 :           pCustomShape = &msoAccentCallout90; break;
8436         case mso_sptBorderCallout90 :           pCustomShape = &msoBorderCallout90; break;
8437         case mso_sptAccentBorderCallout90 :     pCustomShape = &msoAccentBorderCallout90; break;
8438 
8439         // connectors
8440         case mso_sptStraightConnector1 :        pCustomShape = &msoStraightConnector1; break;
8441         case mso_sptBentConnector2 :            pCustomShape = &msoBentConnector2; break;
8442         case mso_sptBentConnector3 :            pCustomShape = &msoBentConnector3; break;
8443         case mso_sptBentConnector4 :            pCustomShape = &msoBentConnector4; break;
8444         case mso_sptBentConnector5 :            pCustomShape = &msoBentConnector5; break;
8445         case mso_sptCurvedConnector2 :          pCustomShape = &msoCurvedConnector2; break;
8446         case mso_sptCurvedConnector3 :          pCustomShape = &msoCurvedConnector3; break;
8447         case mso_sptCurvedConnector4 :          pCustomShape = &msoCurvedConnector4; break;
8448         case mso_sptCurvedConnector5 :          pCustomShape = &msoCurvedConnector5; break;
8449 
8450         // Dont know, simply mapping to TextSimple
8451         case mso_sptTextOnRing :
8452         case mso_sptTextOnCurve :
8453         case mso_sptTextRing :
8454         case mso_sptTextWave :
8455         case mso_sptTextCurve :
8456         case mso_sptTextHexagon :
8457         case mso_sptTextOctagon :
8458         case mso_sptTextBox :                   pCustomShape = &msoTextSimple; break;
8459 
8460         // FontWork
8461         case mso_sptTextSimple :
8462         case mso_sptTextPlainText :             pCustomShape = &msoTextPlainText; break;
8463         case mso_sptTextStop :                  pCustomShape = &msoTextStop; break;
8464         case mso_sptTextTriangle :              pCustomShape = &msoTextTriangle; break;
8465         case mso_sptTextTriangleInverted :      pCustomShape = &msoTextTriangleInverted; break;
8466         case mso_sptTextChevron :               pCustomShape = &msoTextChevron; break;
8467         case mso_sptTextChevronInverted :       pCustomShape = &msoTextChevronInverted; break;
8468         case mso_sptTextRingInside :            pCustomShape = &msoTextRingInside; break;   // SJ: TODO->the orientation of the ellipse needs to be changed
8469         case mso_sptTextRingOutside :           pCustomShape = &msoTextRingOutside; break;
8470         case mso_sptTextFadeRight :             pCustomShape = &msoTextFadeRight; break;
8471         case mso_sptTextFadeLeft :              pCustomShape = &msoTextFadeLeft; break;
8472         case mso_sptTextFadeUp :                pCustomShape = &msoTextFadeUp; break;
8473         case mso_sptTextFadeDown :              pCustomShape = &msoTextFadeDown; break;
8474         case mso_sptTextSlantUp :               pCustomShape = &msoTextSlantUp; break;
8475         case mso_sptTextSlantDown :             pCustomShape = &msoTextSlantDown; break;
8476         case mso_sptTextCascadeUp :             pCustomShape = &msoTextCascadeUp; break;
8477         case mso_sptTextCascadeDown :           pCustomShape = &msoTextCascadeDown; break;
8478         case mso_sptTextArchUpCurve :           pCustomShape = &msoTextArchUpCurve; break;
8479         case mso_sptTextArchDownCurve :         pCustomShape = &msoTextArchDownCurve; break;
8480         case mso_sptTextCircleCurve :           pCustomShape = &msoTextCircleCurve; break;
8481         case mso_sptTextButtonCurve :           pCustomShape = &msoTextButtonCurve; break;
8482         case mso_sptTextArchUpPour :            pCustomShape = &msoTextArchUpPour; break;
8483         case mso_sptTextArchDownPour :          pCustomShape = &msoTextArchDownPour; break;
8484         case mso_sptTextCirclePour :            pCustomShape = &msoTextCirclePour; break;
8485         case mso_sptTextButtonPour :            pCustomShape = &msoTextButtonPour; break;
8486         case mso_sptTextCurveUp :               pCustomShape = &msoTextCurveUp; break;
8487         case mso_sptTextCurveDown :             pCustomShape = &msoTextCurveDown; break;
8488         case mso_sptTextCanUp :                 pCustomShape = &msoTextCanUp; break;
8489         case mso_sptTextCanDown :               pCustomShape = &msoTextCanDown; break;
8490         case mso_sptTextInflate :               pCustomShape = &msoTextInflate; break;
8491         case mso_sptTextDeflate :               pCustomShape = &msoTextDeflate; break;
8492         case mso_sptTextInflateBottom :         pCustomShape = &msoTextInflateBottom; break;
8493         case mso_sptTextDeflateBottom :         pCustomShape = &msoTextDeflateBottom; break;
8494         case mso_sptTextInflateTop :            pCustomShape = &msoTextInflateTop; break;
8495         case mso_sptTextDeflateTop :            pCustomShape = &msoTextDeflateTop; break;
8496         case mso_sptTextDeflateInflate :        pCustomShape = &msoTextDeflateInflate; break;
8497         case mso_sptTextDeflateInflateDeflate : pCustomShape = &msoTextDeflateInflateDeflate; break;
8498         case mso_sptTextWave1 :                 pCustomShape = &msoTextWave1; break;
8499         case mso_sptTextWave2 :                 pCustomShape = &msoTextWave2; break;
8500         case mso_sptTextWave3 :                 pCustomShape = &msoTextWave3; break;
8501         case mso_sptTextWave4 :                 pCustomShape = &msoTextWave4; break;
8502         default :
8503         break;
8504     }
8505     return pCustomShape;
8506 }
8507