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