Coverage Report

Created: 2026-08-14 10:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/svx/source/svdraw/presetooxhandleadjustmentrelations.cxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
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
10
#include <sal/config.h>
11
12
#include <string_view>
13
14
#include <o3tl/string_view.hxx>
15
#include <rtl/ustring.hxx>
16
#include <unordered_map>
17
#include "presetooxhandleadjustmentrelations.hxx"
18
19
namespace
20
{
21
typedef std::unordered_map<OUString, OUString> HandleAdjRelHashMap;
22
23
struct HandleAdjRel
24
{
25
    // Shape name without leading "ooxml-", underscore, zero based handle index
26
    // e.g. The third handle in shape of type "ooxml-circularArrow" will be
27
    // identified by key "circularArrow_2"
28
    OUString sShape_Handle;
29
30
    // 4 tokens with separator "|"
31
    // first: RefX or RefR, na if not exists
32
    // second: adj, or adj1 or adj2, etc. as in preset, na if not exists
33
    // third: RefY or RefAngle, na if not exists
34
    // forth: adj, or adj1 or adj2, etc. as in preset, na if not exists
35
    // e.g. The third handle in shape <circularArrow> has in the preset
36
    // the tag <ahPolar gdRefR="adj5" minR="0" maxR="25000"> .
37
    // The resulting value in the map here is "RefR|adj5|na|na"
38
    OUString sAdjReferences;
39
};
40
41
// The array initializer has been extracted from
42
// oox/source/drawingml/customshapes/presetShapeDefinitions.xml
43
// by using an XSLT file. That file is attached to tdf#126512.
44
constexpr HandleAdjRel aHandleAdjRelArray[]
45
    = { { u"accentBorderCallout1_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
46
        { u"accentBorderCallout1_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
47
        { u"accentBorderCallout2_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
48
        { u"accentBorderCallout2_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
49
        { u"accentBorderCallout2_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
50
        { u"accentBorderCallout3_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
51
        { u"accentBorderCallout3_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
52
        { u"accentBorderCallout3_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
53
        { u"accentBorderCallout3_3"_ustr, u"RefX|adj8|RefY|adj7"_ustr },
54
        { u"accentCallout1_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
55
        { u"accentCallout1_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
56
        { u"accentCallout2_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
57
        { u"accentCallout2_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
58
        { u"accentCallout2_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
59
        { u"accentCallout3_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
60
        { u"accentCallout3_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
61
        { u"accentCallout3_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
62
        { u"accentCallout3_3"_ustr, u"RefX|adj8|RefY|adj7"_ustr },
63
        { u"arc_0"_ustr, u"na|na|RefAngle|adj1"_ustr },
64
        { u"arc_1"_ustr, u"na|na|RefAngle|adj2"_ustr },
65
        { u"bentArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
66
        { u"bentArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
67
        { u"bentArrow_2"_ustr, u"RefX|adj3|na|na"_ustr },
68
        { u"bentArrow_3"_ustr, u"RefX|adj4|na|na"_ustr },
69
        { u"bentConnector3_0"_ustr, u"RefX|adj1|na|na"_ustr },
70
        { u"bentConnector4_0"_ustr, u"RefX|adj1|na|na"_ustr },
71
        { u"bentConnector4_1"_ustr, u"na|na|RefY|adj2"_ustr },
72
        { u"bentConnector5_0"_ustr, u"RefX|adj1|na|na"_ustr },
73
        { u"bentConnector5_1"_ustr, u"na|na|RefY|adj2"_ustr },
74
        { u"bentConnector5_2"_ustr, u"RefX|adj3|na|na"_ustr },
75
        { u"bentUpArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
76
        { u"bentUpArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
77
        { u"bentUpArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
78
        { u"bevel_0"_ustr, u"RefX|adj|na|na"_ustr },
79
        { u"blockArc_0"_ustr, u"na|na|RefAngle|adj1"_ustr },
80
        { u"blockArc_1"_ustr, u"RefR|adj3|RefAngle|adj2"_ustr },
81
        { u"borderCallout1_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
82
        { u"borderCallout1_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
83
        { u"borderCallout2_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
84
        { u"borderCallout2_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
85
        { u"borderCallout2_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
86
        { u"borderCallout3_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
87
        { u"borderCallout3_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
88
        { u"borderCallout3_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
89
        { u"borderCallout3_3"_ustr, u"RefX|adj8|RefY|adj7"_ustr },
90
        { u"bracePair_0"_ustr, u"na|na|RefY|adj"_ustr },
91
        { u"bracketPair_0"_ustr, u"na|na|RefY|adj"_ustr },
92
        { u"callout1_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
93
        { u"callout1_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
94
        { u"callout2_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
95
        { u"callout2_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
96
        { u"callout2_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
97
        { u"callout3_0"_ustr, u"RefX|adj2|RefY|adj1"_ustr },
98
        { u"callout3_1"_ustr, u"RefX|adj4|RefY|adj3"_ustr },
99
        { u"callout3_2"_ustr, u"RefX|adj6|RefY|adj5"_ustr },
100
        { u"callout3_3"_ustr, u"RefX|adj8|RefY|adj7"_ustr },
101
        { u"can_0"_ustr, u"na|na|RefY|adj"_ustr },
102
        { u"chevron_0"_ustr, u"RefX|adj|na|na"_ustr },
103
        { u"chord_0"_ustr, u"na|na|RefAngle|adj1"_ustr },
104
        { u"chord_1"_ustr, u"na|na|RefAngle|adj2"_ustr },
105
        { u"circularArrow_0"_ustr, u"na|na|RefAngle|adj2"_ustr },
106
        { u"circularArrow_1"_ustr, u"na|na|RefAngle|adj4"_ustr },
107
        { u"circularArrow_2"_ustr, u"RefR|adj1|RefAngle|adj3"_ustr },
108
        { u"circularArrow_3"_ustr, u"RefR|adj5|na|na"_ustr },
109
        { u"cloudCallout_0"_ustr, u"RefX|adj1|RefY|adj2"_ustr },
110
        { u"corner_0"_ustr, u"na|na|RefY|adj1"_ustr },
111
        { u"corner_1"_ustr, u"RefX|adj2|na|na"_ustr },
112
        { u"cube_0"_ustr, u"na|na|RefY|adj"_ustr },
113
        { u"curvedConnector3_0"_ustr, u"RefX|adj1|na|na"_ustr },
114
        { u"curvedConnector4_0"_ustr, u"RefX|adj1|na|na"_ustr },
115
        { u"curvedConnector4_1"_ustr, u"na|na|RefY|adj2"_ustr },
116
        { u"curvedConnector5_0"_ustr, u"RefX|adj1|na|na"_ustr },
117
        { u"curvedConnector5_1"_ustr, u"na|na|RefY|adj2"_ustr },
118
        { u"curvedConnector5_2"_ustr, u"RefX|adj3|na|na"_ustr },
119
        { u"curvedDownArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
120
        { u"curvedDownArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
121
        { u"curvedDownArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
122
        { u"curvedLeftArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
123
        { u"curvedLeftArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
124
        { u"curvedLeftArrow_2"_ustr, u"RefX|adj3|na|na"_ustr },
125
        { u"curvedRightArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
126
        { u"curvedRightArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
127
        { u"curvedRightArrow_2"_ustr, u"RefX|adj3|na|na"_ustr },
128
        { u"curvedUpArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
129
        { u"curvedUpArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
130
        { u"curvedUpArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
131
        { u"diagStripe_0"_ustr, u"na|na|RefY|adj"_ustr },
132
        { u"donut_0"_ustr, u"RefR|adj|na|na"_ustr },
133
        { u"doubleWave_0"_ustr, u"na|na|RefY|adj1"_ustr },
134
        { u"doubleWave_1"_ustr, u"RefX|adj2|na|na"_ustr },
135
        { u"downArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
136
        { u"downArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
137
        { u"downArrowCallout_0"_ustr, u"RefX|adj1|na|na"_ustr },
138
        { u"downArrowCallout_1"_ustr, u"RefX|adj2|na|na"_ustr },
139
        { u"downArrowCallout_2"_ustr, u"na|na|RefY|adj3"_ustr },
140
        { u"downArrowCallout_3"_ustr, u"na|na|RefY|adj4"_ustr },
141
        { u"ellipseRibbon_0"_ustr, u"na|na|RefY|adj1"_ustr },
142
        { u"ellipseRibbon_1"_ustr, u"RefX|adj2|na|na"_ustr },
143
        { u"ellipseRibbon_2"_ustr, u"na|na|RefY|adj3"_ustr },
144
        { u"ellipseRibbon2_0"_ustr, u"na|na|RefY|adj1"_ustr },
145
        { u"ellipseRibbon2_1"_ustr, u"RefX|adj2|na|na"_ustr },
146
        { u"ellipseRibbon2_2"_ustr, u"na|na|RefY|adj3"_ustr },
147
        { u"foldedCorner_0"_ustr, u"RefX|adj|na|na"_ustr },
148
        { u"frame_0"_ustr, u"RefX|adj1|na|na"_ustr },
149
        { u"gear6_0"_ustr, u"na|na|RefY|adj1"_ustr },
150
        { u"gear6_1"_ustr, u"RefX|adj2|na|na"_ustr },
151
        { u"gear9_0"_ustr, u"na|na|RefY|adj1"_ustr },
152
        { u"gear9_1"_ustr, u"RefX|adj2|na|na"_ustr },
153
        { u"halfFrame_0"_ustr, u"na|na|RefY|adj1"_ustr },
154
        { u"halfFrame_1"_ustr, u"RefX|adj2|na|na"_ustr },
155
        { u"hexagon_0"_ustr, u"RefX|adj|na|na"_ustr },
156
        { u"homePlate_0"_ustr, u"RefX|adj|na|na"_ustr },
157
        { u"horizontalScroll_0"_ustr, u"RefX|adj|na|na"_ustr },
158
        { u"leftArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
159
        { u"leftArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
160
        { u"leftArrowCallout_0"_ustr, u"na|na|RefY|adj1"_ustr },
161
        { u"leftArrowCallout_1"_ustr, u"na|na|RefY|adj2"_ustr },
162
        { u"leftArrowCallout_2"_ustr, u"RefX|adj3|na|na"_ustr },
163
        { u"leftArrowCallout_3"_ustr, u"RefX|adj4|na|na"_ustr },
164
        { u"leftBrace_0"_ustr, u"na|na|RefY|adj1"_ustr },
165
        { u"leftBrace_1"_ustr, u"na|na|RefY|adj2"_ustr },
166
        { u"leftBracket_0"_ustr, u"na|na|RefY|adj"_ustr },
167
        { u"leftCircularArrow_0"_ustr, u"na|na|RefAngle|adj2"_ustr },
168
        { u"leftCircularArrow_1"_ustr, u"na|na|RefAngle|adj4"_ustr },
169
        { u"leftCircularArrow_2"_ustr, u"RefR|adj1|RefAngle|adj3"_ustr },
170
        { u"leftCircularArrow_3"_ustr, u"RefR|adj5|na|na"_ustr },
171
        { u"leftRightArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
172
        { u"leftRightArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
173
        { u"leftRightArrowCallout_0"_ustr, u"na|na|RefY|adj1"_ustr },
174
        { u"leftRightArrowCallout_1"_ustr, u"na|na|RefY|adj2"_ustr },
175
        { u"leftRightArrowCallout_2"_ustr, u"RefX|adj3|na|na"_ustr },
176
        { u"leftRightArrowCallout_3"_ustr, u"RefX|adj4|na|na"_ustr },
177
        { u"leftRightCircularArrow_0"_ustr, u"na|na|RefAngle|adj2"_ustr },
178
        { u"leftRightCircularArrow_1"_ustr, u"na|na|RefAngle|adj4"_ustr },
179
        { u"leftRightCircularArrow_2"_ustr, u"RefR|adj1|RefAngle|adj3"_ustr },
180
        { u"leftRightCircularArrow_3"_ustr, u"RefR|adj5|na|na"_ustr },
181
        { u"leftRightRibbon_0"_ustr, u"na|na|RefY|adj1"_ustr },
182
        { u"leftRightRibbon_1"_ustr, u"RefX|adj2|na|na"_ustr },
183
        { u"leftRightRibbon_2"_ustr, u"na|na|RefY|adj3"_ustr },
184
        { u"leftRightUpArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
185
        { u"leftRightUpArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
186
        { u"leftRightUpArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
187
        { u"leftUpArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
188
        { u"leftUpArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
189
        { u"leftUpArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
190
        { u"mathDivide_0"_ustr, u"na|na|RefY|adj1"_ustr },
191
        { u"mathDivide_1"_ustr, u"na|na|RefY|adj2"_ustr },
192
        { u"mathDivide_2"_ustr, u"RefX|adj3|na|na"_ustr },
193
        { u"mathEqual_0"_ustr, u"na|na|RefY|adj1"_ustr },
194
        { u"mathEqual_1"_ustr, u"na|na|RefY|adj2"_ustr },
195
        { u"mathMinus_0"_ustr, u"na|na|RefY|adj1"_ustr },
196
        { u"mathMultiply_0"_ustr, u"na|na|RefY|adj1"_ustr },
197
        { u"mathNotEqual_0"_ustr, u"na|na|RefY|adj1"_ustr },
198
        { u"mathNotEqual_1"_ustr, u"na|na|RefAngle|adj2"_ustr },
199
        { u"mathNotEqual_2"_ustr, u"na|na|RefY|adj3"_ustr },
200
        { u"mathPlus_0"_ustr, u"na|na|RefY|adj1"_ustr },
201
        { u"moon_0"_ustr, u"RefX|adj|na|na"_ustr },
202
        { u"nonIsoscelesTrapezoid_0"_ustr, u"RefX|adj1|na|na"_ustr },
203
        { u"nonIsoscelesTrapezoid_1"_ustr, u"RefX|adj2|na|na"_ustr },
204
        { u"noSmoking_0"_ustr, u"RefR|adj|na|na"_ustr },
205
        { u"notchedRightArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
206
        { u"notchedRightArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
207
        { u"octagon_0"_ustr, u"RefX|adj|na|na"_ustr },
208
        { u"parallelogram_0"_ustr, u"RefX|adj|na|na"_ustr },
209
        { u"pie_0"_ustr, u"na|na|RefAngle|adj1"_ustr },
210
        { u"pie_1"_ustr, u"na|na|RefAngle|adj2"_ustr },
211
        { u"plaque_0"_ustr, u"RefX|adj|na|na"_ustr },
212
        { u"plus_0"_ustr, u"RefX|adj|na|na"_ustr },
213
        { u"quadArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
214
        { u"quadArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
215
        { u"quadArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
216
        { u"quadArrowCallout_0"_ustr, u"RefX|adj1|na|na"_ustr },
217
        { u"quadArrowCallout_1"_ustr, u"RefX|adj2|na|na"_ustr },
218
        { u"quadArrowCallout_2"_ustr, u"na|na|RefY|adj3"_ustr },
219
        { u"quadArrowCallout_3"_ustr, u"na|na|RefY|adj4"_ustr },
220
        { u"ribbon_0"_ustr, u"na|na|RefY|adj1"_ustr },
221
        { u"ribbon_1"_ustr, u"RefX|adj2|na|na"_ustr },
222
        { u"ribbon2_0"_ustr, u"na|na|RefY|adj1"_ustr },
223
        { u"ribbon2_1"_ustr, u"RefX|adj2|na|na"_ustr },
224
        { u"rightArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
225
        { u"rightArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
226
        { u"rightArrowCallout_0"_ustr, u"na|na|RefY|adj1"_ustr },
227
        { u"rightArrowCallout_1"_ustr, u"na|na|RefY|adj2"_ustr },
228
        { u"rightArrowCallout_2"_ustr, u"RefX|adj3|na|na"_ustr },
229
        { u"rightArrowCallout_3"_ustr, u"RefX|adj4|na|na"_ustr },
230
        { u"rightBrace_0"_ustr, u"na|na|RefY|adj1"_ustr },
231
        { u"rightBrace_1"_ustr, u"na|na|RefY|adj2"_ustr },
232
        { u"rightBracket_0"_ustr, u"na|na|RefY|adj"_ustr },
233
        { u"round1Rect_0"_ustr, u"RefX|adj|na|na"_ustr },
234
        { u"round2DiagRect_0"_ustr, u"RefX|adj1|na|na"_ustr },
235
        { u"round2DiagRect_1"_ustr, u"RefX|adj2|na|na"_ustr },
236
        { u"round2SameRect_0"_ustr, u"RefX|adj1|na|na"_ustr },
237
        { u"round2SameRect_1"_ustr, u"RefX|adj2|na|na"_ustr },
238
        { u"roundRect_0"_ustr, u"RefX|adj|na|na"_ustr },
239
        { u"smileyFace_0"_ustr, u"na|na|RefY|adj"_ustr },
240
        { u"snip1Rect_0"_ustr, u"RefX|adj|na|na"_ustr },
241
        { u"snip2DiagRect_0"_ustr, u"RefX|adj1|na|na"_ustr },
242
        { u"snip2DiagRect_1"_ustr, u"RefX|adj2|na|na"_ustr },
243
        { u"snip2SameRect_0"_ustr, u"RefX|adj1|na|na"_ustr },
244
        { u"snip2SameRect_1"_ustr, u"RefX|adj2|na|na"_ustr },
245
        { u"snipRoundRect_0"_ustr, u"RefX|adj1|na|na"_ustr },
246
        { u"snipRoundRect_1"_ustr, u"RefX|adj2|na|na"_ustr },
247
        { u"star10_0"_ustr, u"na|na|RefY|adj"_ustr },
248
        { u"star12_0"_ustr, u"na|na|RefY|adj"_ustr },
249
        { u"star16_0"_ustr, u"na|na|RefY|adj"_ustr },
250
        { u"star24_0"_ustr, u"na|na|RefY|adj"_ustr },
251
        { u"star32_0"_ustr, u"na|na|RefY|adj"_ustr },
252
        { u"star4_0"_ustr, u"na|na|RefY|adj"_ustr },
253
        { u"star5_0"_ustr, u"na|na|RefY|adj"_ustr },
254
        { u"star6_0"_ustr, u"na|na|RefY|adj"_ustr },
255
        { u"star7_0"_ustr, u"na|na|RefY|adj"_ustr },
256
        { u"star8_0"_ustr, u"na|na|RefY|adj"_ustr },
257
        { u"stripedRightArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
258
        { u"stripedRightArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
259
        { u"sun_0"_ustr, u"RefX|adj|na|na"_ustr },
260
        { u"swooshArrow_0"_ustr, u"na|na|RefY|adj1"_ustr },
261
        { u"swooshArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
262
        { u"teardrop_0"_ustr, u"RefX|adj|na|na"_ustr },
263
        { u"trapezoid_0"_ustr, u"RefX|adj|na|na"_ustr },
264
        { u"triangle_0"_ustr, u"RefX|adj|na|na"_ustr },
265
        { u"upArrowCallout_0"_ustr, u"RefX|adj1|na|na"_ustr },
266
        { u"upArrowCallout_1"_ustr, u"RefX|adj2|na|na"_ustr },
267
        { u"upArrowCallout_2"_ustr, u"na|na|RefY|adj3"_ustr },
268
        { u"upArrowCallout_3"_ustr, u"na|na|RefY|adj4"_ustr },
269
        { u"upDownArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
270
        { u"upDownArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
271
        { u"upArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
272
        { u"upArrow_1"_ustr, u"na|na|RefY|adj2"_ustr },
273
        { u"upDownArrowCallout_0"_ustr, u"RefX|adj1|na|na"_ustr },
274
        { u"upDownArrowCallout_1"_ustr, u"RefX|adj2|na|na"_ustr },
275
        { u"upDownArrowCallout_2"_ustr, u"na|na|RefY|adj3"_ustr },
276
        { u"upDownArrowCallout_3"_ustr, u"na|na|RefY|adj4"_ustr },
277
        { u"uturnArrow_0"_ustr, u"RefX|adj1|na|na"_ustr },
278
        { u"uturnArrow_1"_ustr, u"RefX|adj2|na|na"_ustr },
279
        { u"uturnArrow_2"_ustr, u"na|na|RefY|adj3"_ustr },
280
        { u"uturnArrow_3"_ustr, u"RefX|adj4|na|na"_ustr },
281
        { u"uturnArrow_4"_ustr, u"na|na|RefY|adj5"_ustr },
282
        { u"verticalScroll_0"_ustr, u"na|na|RefY|adj"_ustr },
283
        { u"wave_0"_ustr, u"na|na|RefY|adj1"_ustr },
284
        { u"wave_1"_ustr, u"RefX|adj2|na|na"_ustr },
285
        { u"wedgeEllipseCallout_0"_ustr, u"RefX|adj1|RefY|adj2"_ustr },
286
        { u"wedgeRectCallout_0"_ustr, u"RefX|adj1|RefY|adj2"_ustr },
287
        { u"wedgeRoundRectCallout_0"_ustr, u"RefX|adj1|RefY|adj2"_ustr } };
288
}
289
290
static sal_Int32 lcl_getAdjIndexFromToken(const sal_Int32 nTokenPos, std::u16string_view rMapValue)
291
0
{
292
0
    std::u16string_view sAdjRef = o3tl::getToken(rMapValue, nTokenPos, '|');
293
0
    std::u16string_view sNumber; // number part from "adj1", "adj2" etc.
294
0
    if (o3tl::starts_with(sAdjRef, u"adj", &sNumber))
295
0
    {
296
0
        if (sNumber.empty() || sNumber == u"1")
297
0
            return 0;
298
0
        else
299
0
            return o3tl::toInt32(sNumber) - 1;
300
0
    }
301
0
    else
302
0
        return -1;
303
0
}
304
305
void PresetOOXHandleAdj::GetOOXHandleAdjRelation(
306
    std::u16string_view sFullOOXShapeName, const sal_Int32 nHandleIndex, OUString& rFirstRefType,
307
    sal_Int32& rFirstAdjValueIndex, OUString& rSecondRefType, sal_Int32& rSecondAdjValueIndex)
308
0
{
309
0
    static const HandleAdjRelHashMap s_HashMap = []() {
310
0
        HandleAdjRelHashMap aH;
311
0
        aH.reserve(std::size(aHandleAdjRelArray));
312
0
        for (const auto& item : aHandleAdjRelArray)
313
0
            aH.emplace(item.sShape_Handle, item.sAdjReferences);
314
0
        return aH;
315
0
    }();
316
317
0
    std::u16string_view sKey;
318
0
    OUString sValue;
319
0
    rFirstRefType = "na";
320
0
    rFirstAdjValueIndex = -1;
321
0
    rSecondRefType = "na";
322
0
    rSecondAdjValueIndex = -1;
323
0
    if (o3tl::starts_with(sFullOOXShapeName, u"ooxml-", &sKey))
324
0
    {
325
0
        HandleAdjRelHashMap::const_iterator aHashIter(
326
0
            s_HashMap.find(OUString::Concat(sKey) + "_" + OUString::number(nHandleIndex)));
327
0
        if (aHashIter != s_HashMap.end())
328
0
            sValue = (*aHashIter).second;
329
0
        else
330
0
            return;
331
0
    }
332
0
    else
333
0
        return;
334
335
0
    rFirstRefType = sValue.getToken(0, '|');
336
0
    rFirstAdjValueIndex = lcl_getAdjIndexFromToken(1, sValue);
337
0
    rSecondRefType = sValue.getToken(2, '|');
338
0
    rSecondAdjValueIndex = lcl_getAdjIndexFromToken(3, sValue);
339
0
    return;
340
0
}
341
342
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */