Coverage Report

Created: 2026-08-14 10:22

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