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