LibreOffice Module drawinglayer (master) 1
primitive2d/Tools.cxx
Go to the documentation of this file.
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
24
25using namespace css;
26
28{
29// get B2DRange from a given Primitive2DReference
32 const geometry::ViewInformation2D& aViewInformation)
33{
34 if (!rCandidate)
35 return basegfx::B2DRange();
36
37 return rCandidate->getB2DRange(aViewInformation);
38}
39
41{
42 const bool bAIs(rxA.is());
43
44 if (bAIs != rxB.is())
45 {
46 return false;
47 }
48
49 if (!bAIs)
50 {
51 return true;
52 }
53
54 return rxA->operator==(*rxB);
55}
56
57bool arePrimitive2DReferencesEqual(const css::uno::Reference<css::graphic::XPrimitive2D>& rxA,
58 const css::uno::Reference<css::graphic::XPrimitive2D>& rxB)
59{
60 const bool bAIs(rxA.is());
61
62 if (bAIs != rxB.is())
63 {
64 return false;
65 }
66
67 if (!bAIs)
68 {
69 return true;
70 }
71
72 auto pA = static_cast<const UnoPrimitive2D*>(rxA.get());
73 auto pB = static_cast<const UnoPrimitive2D*>(rxB.get());
74
75 return (*pA->getBasePrimitive2D()) == (*pB->getBasePrimitive2D());
76}
77
78OUString idToString(sal_uInt32 nId)
79{
80 switch (nId)
81 {
83 return "TRANSPARENCE";
85 return "ANIMATEDSWITCH";
87 return "ANIMATEDBLINK";
89 return "ANIMATEDINTERPOLATE";
91 return "BACKGROUNDCOLOR";
93 return "BITMAP";
95 return "CONTROL";
97 return "EMBEDDED3D";
99 return "FILLGRAPHIC";
101 return "FILLGRADIENT";
103 return "FILLHATCH";
105 return "GRAPHIC";
107 return "GRID";
109 return "GROUP";
111 return "HELPLINE";
113 return "MARKERARRAY";
115 return "MASK";
117 return "MEDIA";
119 return "METAFILE";
121 return "MODIFIEDCOLOR";
123 return "POLYGONHAIRLINE";
125 return "POLYGONMARKER";
127 return "POLYGONSTROKE";
129 return "POLYGONSTROKEARROW";
131 return "POLYPOLYGONSTROKE";
133 return "POLYPOLYGONSTROKEARROW";
135 return "POLYPOLYGONCOLOR";
137 return "POLYPOLYGONGRADIENT";
139 return "POLYPOLYGONHATCH";
141 return "POLYPOLYGONGRAPHIC";
143 return "SCENE";
145 return "SHADOW";
147 return "TEXTSIMPLEPORTION";
149 return "TEXTDECORATEDPORTION";
151 return "TRANSFORM";
153 return "UNIFIEDTRANSPARENCE";
155 return "POINTARRAY";
157 return "TEXTHIERARCHYFIELD";
159 return "TEXTHIERARCHYLINE";
161 return "TEXTHIERARCHYPARAGRAPH";
163 return "TEXTHIERARCHYBLOCK";
165 return "TEXTHIERARCHYEDIT";
167 return "POLYGONWAVE";
169 return "WRONGSPELL";
171 return "TEXTEFFECT";
173 return "TEXTHIERARCHYBULLET";
175 return "POLYPOLYGONHAIRLINE";
177 return "EXECUTE";
179 return "PAGEPREVIEW";
181 return "STRUCTURETAG";
183 return "BORDERLINE";
185 return "POLYPOLYGONMARKER";
187 return "HITTEST";
189 return "INVERT";
191 return "DISCRETEBITMAP";
193 return "WALLPAPERBITMAP";
195 return "TEXTLINE";
197 return "TEXTCHARACTERSTRIKEOUT";
199 return "TEXTGEOMETRYSTRIKEOUT";
201 return "EPS";
203 return "DISCRETESHADOW";
205 return "HIDDENGEOMETRY";
207 return "SVGLINEARGRADIENT";
209 return "SVGRADIALGRADIENT";
211 return "SVGLINEARATOM";
213 return "SVGRADIALATOM";
215 return "CROP";
217 return "PATTERNFILL";
219 return "OBJECTINFO";
221 return "POLYPOLYGONSELECTION";
223 return "PAGEHIERARCHY";
225 return "GLOWPRIMITIVE";
227 return "SOFTEDGEPRIMITIVE";
229 return "LINERECTANGLEPRIMITIVE";
231 return "FILLEDRECTANGLEPRIMITIVE";
233 return "SINGLELINEPRIMITIVE";
234 default:
235 return OUString::number((nId >> 16) & 0xFF) + "|" + OUString::number(nId & 0xFF);
236 }
237}
238
239} // end of namespace drawinglayer::primitive2d
240
241/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Rather than make all the BasePrimitive2D classes bear the cost of being an UNO object,...
#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_SCENEPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYBULLETPRIMITIVE2D
#define PRIMITIVE2D_ID_PAGEHIERARCHYPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGLINEARATOMPRIMITIVE2D
#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_CONTROLPRIMITIVE2D
#define PRIMITIVE2D_ID_LINERECTANGLEPRIMITIVE2D
#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_ANIMATEDINTERPOLATEPRIMITIVE2D
#define PRIMITIVE2D_ID_ANIMATEDSWITCHPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_GRIDPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONMARKERPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONSTROKEPRIMITIVE2D
#define PRIMITIVE2D_ID_SOFTEDGEPRIMITIVE2D
#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_ANIMATEDBLINKPRIMITIVE2D
#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONHAIRLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D
#define PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_HELPLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_EXECUTEPRIMITIVE2D
#define PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLEDRECTANGLEPRIMITIVE2D
#define PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D
#define PRIMITIVE2D_ID_DISCRETESHADOWPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D
#define PRIMITIVE2D_ID_GROUPPRIMITIVE2D
#define PRIMITIVE2D_ID_SINGLELINEPRIMITIVE2D
#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_SHADOWPRIMITIVE2D
#define PRIMITIVE2D_ID_EPSPRIMITIVE2D
#define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D
#define PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D
#define PRIMITIVE2D_ID_CROPPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D
#define PRIMITIVE2D_ID_MASKPRIMITIVE2D
#define PRIMITIVE2D_ID_HITTESTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D
#define PRIMITIVE2D_ID_EMBEDDED3DPRIMITIVE2D
#define PRIMITIVE2D_ID_METAFILEPRIMITIVE2D
#define PRIMITIVE2D_ID_PATTERNFILLPRIMITIVE2D
#define PRIMITIVE2D_ID_BITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGRADIALATOMPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D
#define PRIMITIVE2D_ID_BACKGROUNDCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_MEDIAPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGLINEARGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONSELECTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONSTROKEARROWPRIMITIVE2D
#define PRIMITIVE2D_ID_OBJECTINFOPRIMITIVE2D
#define PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_GLOWPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTEFFECTPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGRADIALGRADIENTPRIMITIVE2D
bool arePrimitive2DReferencesEqual(const Primitive2DReference &rxA, const Primitive2DReference &rxB)
compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitiv...
OUString idToString(sal_uInt32 nId)
basegfx::B2DRange getB2DRangeFromPrimitive2DReference(const Primitive2DReference &rCandidate, const geometry::ViewInformation2D &aViewInformation)
get B2DRange from a given Primitive2DReference
sal_Int16 nId