LibreOffice Module oox (master)  1
drawingmltypes.hxx
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 
20 #ifndef INCLUDED_OOX_DRAWINGML_DRAWINGMLTYPES_HXX
21 #define INCLUDED_OOX_DRAWINGML_DRAWINGMLTYPES_HXX
22 
23 #include <memory>
24 #include <string_view>
25 
26 #include <com/sun/star/awt/Point.hpp>
27 #include <com/sun/star/awt/Size.hpp>
28 #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
29 #include <com/sun/star/geometry/IntegerRectangle2D.hpp>
30 #include <com/sun/star/style/ParagraphAdjust.hpp>
31 #include <com/sun/star/style/TabAlign.hpp>
32 #include <com/sun/star/uno/Reference.hxx>
33 #include <o3tl/unit_conversion.hxx>
34 #include <oox/dllapi.h>
35 #include <rtl/ustring.hxx>
36 #include <sal/types.h>
37 
38 namespace com::sun::star {
39  namespace drawing { struct Hatch; }
40  namespace xml::sax { class XFastAttributeList; }
41 }
42 
43 namespace oox::drawingml {
44 
45 
46 const sal_Int32 PER_PERCENT = 1000;
47 const sal_Int32 MAX_PERCENT = 100 * PER_PERCENT;
48 
49 const sal_Int32 PER_DEGREE = 60000;
50 const sal_Int32 MAX_DEGREE = 360 * PER_DEGREE;
51 
52 
54 typedef std::shared_ptr< LineProperties > LinePropertiesPtr;
55 
57 typedef std::shared_ptr< FillProperties > FillPropertiesPtr;
58 
60 typedef std::shared_ptr< GraphicProperties > GraphicPropertiesPtr;
61 
63 typedef std::shared_ptr< Shape3DProperties > Shape3DPropertiesPtr;
64 
66 typedef std::shared_ptr< TextCharacterProperties > TextCharacterPropertiesPtr;
67 
69 typedef std::shared_ptr< EffectProperties > EffectPropertiesPtr;
70 
71 class TextBody;
72 typedef std::shared_ptr< TextBody > TextBodyPtr;
73 
75 typedef std::shared_ptr< TextListStyle > TextListStylePtr;
76 
77 class Shape;
78 typedef std::shared_ptr< Shape > ShapePtr;
79 
80 class Theme;
81 typedef std::shared_ptr< Theme > ThemePtr;
82 
83 
84 namespace table {
85 
87 typedef std::shared_ptr< TableProperties > TablePropertiesPtr;
88 
89 } // namespace table
90 
91 
93 css::awt::Point GetPointPercent( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttribs );
94 
95 
97 css::awt::Size GetSize2D( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
98 
100 css::geometry::IntegerRectangle2D GetRelativeRect( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
101 
103 sal_Int32 GetCoordinate( sal_Int32 nValue );
104 
106 sal_Int32 GetCoordinate( std::u16string_view sValue );
107 
109 sal_Int32 GetPointFromCoordinate( sal_Int32 nValue );
110 
112 sal_Int32 GetPercent( std::u16string_view sValue );
113 
115 double GetPositiveFixedPercentage( const OUString& sValue );
116 
118 float GetTextSize( std::u16string_view rValue );
119 
121 sal_Int32 GetTextSpacingPoint( std::u16string_view sValue );
122 sal_Int32 GetTextSpacingPoint( const sal_Int32 nValue );
123 
125 css::style::TabAlign GetTabAlign( ::sal_Int32 aToken );
126 
127 float GetFontHeight( sal_Int32 nHeight );
128 
129 sal_Int16 GetFontUnderline( sal_Int32 nToken );
130 
131 sal_Int16 GetFontStrikeout( sal_Int32 nToken );
132 
133 sal_Int16 GetCaseMap( sal_Int32 nToken );
134 
136 css::style::ParagraphAdjust GetParaAdjust( sal_Int32 nAlign );
137 
138 // Converts vertical adjust tokens to a TextVerticalAdjust item
139 css::drawing::TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken );
140 
141 // Converts a TextVerticalAdjust item to string value appearing in ooxml
142 OOX_DLLPUBLIC const char* GetTextVerticalAdjust( css::drawing::TextVerticalAdjust eAdjust );
143 
144 // Converts a Hatch object to an ooxml pattern.
145 const char* GetHatchPattern( const css::drawing::Hatch& rHatch );
146 
147 
148 // CT_IndexRange
149 struct IndexRange {
150  sal_Int32 start;
151  sal_Int32 end;
152 };
153 
155 IndexRange GetIndexRange( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
156 
163 inline OString calcRotationValue(sal_Int32 nRotation)
164 {
165  if (nRotation > 18000) // 180 degree
166  {
167  nRotation -= 36000;
168  }
169  nRotation *= -600;
170  return OString::number(nRotation);
171 }
172 
174 inline sal_Int64 convertHmmToEmu( sal_Int32 nValue )
175 {
177 }
178 
180 inline sal_Int32 convertEmuToHmm( sal_Int64 nValue )
181 {
182  return o3tl::convertNarrowing<sal_Int32, o3tl::Length::emu, o3tl::Length::mm100>(nValue);
183 }
184 
186 inline float convertEmuToPoints( sal_Int64 nValue )
187 {
188  return o3tl::convert<double>(nValue, o3tl::Length::emu, o3tl::Length::pt);
189 }
190 
192 inline double convertPointToMms(double fValue)
193 {
195 }
196 
198 struct EmuPoint
199 {
200  sal_Int64 X;
201  sal_Int64 Y;
202 
203  EmuPoint() : X( 0 ), Y( 0 ) {}
204  explicit EmuPoint( sal_Int64 nX, sal_Int64 nY ) : X( nX ), Y( nY ) {}
205 };
206 
207 
209 struct EmuSize
210 {
211  sal_Int64 Width;
212  sal_Int64 Height;
213 
214  EmuSize() : Width( 0 ), Height( 0 ) {}
215  explicit EmuSize( sal_Int64 nWidth, sal_Int64 nHeight ) : Width( nWidth ), Height( nHeight ) {}
216 };
217 
218 
220 struct EmuRectangle : public EmuPoint, public EmuSize
221 {
223  explicit EmuRectangle( sal_Int64 nX, sal_Int64 nY, sal_Int64 nWidth, sal_Int64 nHeight ) : EmuPoint( nX, nY ), EmuSize( nWidth, nHeight ) {}
224 
225  void setPos( const EmuPoint& rPos ) { static_cast< EmuPoint& >( *this ) = rPos; }
226  void setSize( const EmuSize& rSize ) { static_cast< EmuSize& >( *this ) = rSize; }
227 };
228 
229 
230 } // namespace oox::drawingml
231 
232 #endif
233 
234 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sal_Int32 convertEmuToHmm(sal_Int64 nValue)
Converts the passed 64-bit integer value from EMUs to 1/100 mm.
std::shared_ptr< FillProperties > FillPropertiesPtr
sal_Int16 GetFontStrikeout(sal_Int32 nToken)
sal_Int32 GetTextSpacingPoint(std::u16string_view sValue)
converts the ST_TextSpacingPoint to 1/100mm
const sal_Int32 PER_DEGREE
float convertEmuToPoints(sal_Int64 nValue)
Converts the passed 64-bit integer value from EMUs to Points.
TextVerticalAdjust GetTextVerticalAdjust(sal_Int32 nToken)
const sal_Int32 PER_PERCENT
std::shared_ptr< GraphicProperties > GraphicPropertiesPtr
std::shared_ptr< TableProperties > TablePropertiesPtr
EmuPoint(sal_Int64 nX, sal_Int64 nY)
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
exports com.sun.star. table
A structure for a size with 64-bit integer components.
std::shared_ptr< TextCharacterProperties > TextCharacterPropertiesPtr
EmuRectangle(sal_Int64 nX, sal_Int64 nY, sal_Int64 nWidth, sal_Int64 nHeight)
sal_Int32 GetPercent(std::u16string_view sValue)
converts a ST_Percentage % string into 1/1000th of %
exports com.sun.star. drawing
void setPos(const EmuPoint &rPos)
float GetFontHeight(sal_Int32 nHeight)
A structure for a point with 64-bit integer components.
double GetPositiveFixedPercentage(const OUString &sValue)
Converts a ST_PositiveFixedPercentage to a float.
double convertPointToMms(double fValue)
Converts the passed double value from points to mm.
OString calcRotationValue(sal_Int32 nRotation)
nRotation is a 100th of a degree and the return value is in a 60,000th of a degree ...
const sal_Int32 MAX_PERCENT
awt::Size GetSize2D(const Reference< XFastAttributeList > &xAttribs)
converts the attributes from a CT_Size2D into an awt Size with 1/100thmm
sal_Int64 convertHmmToEmu(sal_Int32 nValue)
Converts the passed 32-bit integer value from 1/100 mm to EMUs.
EmuSize(sal_Int64 nWidth, sal_Int64 nHeight)
const sal_Int32 MAX_DEGREE
std::shared_ptr< EffectProperties > EffectPropertiesPtr
std::shared_ptr< TextBody > TextBodyPtr
IntegerRectangle2D GetRelativeRect(const Reference< XFastAttributeList > &xAttribs)
converts the attributes from a CT_RelativeRect to an IntegerRectangle2D
sal_Int32 GetPointFromCoordinate(sal_Int32 nValue)
converts 1/100mm to EMU
std::shared_ptr< LineProperties > LinePropertiesPtr
std::shared_ptr< TextListStyle > TextListStylePtr
std::shared_ptr< Shape3DProperties > Shape3DPropertiesPtr
sal_Int32 GetCoordinate(sal_Int32 nValue)
converts EMUs into 1/100th mmm
const char * GetHatchPattern(const drawing::Hatch &rHatch)
ParagraphAdjust GetParaAdjust(sal_Int32 nAlign)
converts a paragraph align to a ParaAdjust
awt::Point GetPointPercent(const Reference< XFastAttributeList > &xAttribs)
converts the attributes from a CT_TLPoint into an awt Point with 1/1000%
sal_Int16 GetFontUnderline(sal_Int32 nToken)
A structure for a rectangle with 64-bit integer components.
#define OOX_DLLPUBLIC
Definition: dllapi.h:28
IndexRange GetIndexRange(const Reference< XFastAttributeList > &xAttributes)
std::shared_ptr< Shape > ShapePtr
TabAlign GetTabAlign(sal_Int32 aToken)
void setSize(const EmuSize &rSize)
std::shared_ptr< Theme > ThemePtr
float GetTextSize(std::u16string_view sValue)
converts the ST_TextFontSize to point
sal_Int16 GetCaseMap(sal_Int32 nToken)