LibreOffice Module oox (master) 1
shapepropertiescontext.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
21
29#include <oox/token/namespaces.hxx>
30#include <oox/token/tokens.hxx>
32
33using namespace oox::core;
34using namespace ::com::sun::star;
35using namespace ::com::sun::star::uno;
36using namespace ::com::sun::star::drawing;
37using namespace ::com::sun::star::beans;
38using namespace ::com::sun::star::xml::sax;
39
40namespace oox::drawingml {
41
42// CT_ShapeProperties
44: ContextHandler2( rParent )
45, mrShape( rShape )
46{
47}
48
50{
51 switch( aElementToken )
52 {
53 // CT_Transform2D
54 case A_TOKEN( xfrm ):
55 return new Transform2DContext( *this, rAttribs, mrShape );
56
57 // GeometryGroup
58 case A_TOKEN( custGeom ): // custom geometry "CT_CustomGeometry2D"
60
61 case A_TOKEN( prstGeom ): // preset geometry "CT_PresetGeometry2D"
62 {
63 sal_Int32 nToken = rAttribs.getToken( XML_prst, 0 );
64 // TODO: Move the following checks to a separate place or as a separate function
65 if (nToken == XML_line && !mrShape.isConnectorShape())
66 {
67 mrShape.getServiceName() = "com.sun.star.drawing.LineShape";
68 }
69
70 // We got a preset geometry, forget the geometry inherited from the placeholder shape.
71 mrShape.getCustomShapeProperties() = std::make_shared<CustomShapeProperties>();
72
73 return new PresetShapeGeometryContext( *this, rAttribs, *(mrShape.getCustomShapeProperties()) );
74 }
75
76 case A_TOKEN( prstTxWarp ):
77 return new PresetTextShapeContext( *this, rAttribs, *(mrShape.getCustomShapeProperties()) );
78
79 // CT_LineProperties
80 case A_TOKEN( ln ):
81 return new LinePropertiesContext( *this, rAttribs, mrShape.getLineProperties() );
82
83 // EffectPropertiesGroup
84 // todo not supported by core
85 case A_TOKEN( effectLst ): // CT_EffectList
86 case A_TOKEN( effectDag ): // CT_EffectContainer
88
89 // todo not supported by core, only for preservation via grab bags
90 case A_TOKEN( scene3d ): // CT_Scene3D
92
93 // todo not supported by core, only for preservation via grab bags
94 case A_TOKEN( sp3d ): // CT_Shape3D
95 return new Shape3DPropertiesContext( *this, rAttribs, mrShape.get3DProperties() );
96 }
97
98 return FillPropertiesContext::createFillContext( *this, aElementToken, rAttribs, mrShape.getFillProperties() );
99}
100
101}
102
103/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Provides access to attribute values of an element.
std::optional< sal_Int32 > getToken(sal_Int32 nAttrToken) const
Returns the token identifier of the value of the specified attribute.
Helper class that provides a context stack.
::oox::core::ContextHandlerRef createFillContext(::oox::core::ContextHandler2Helper const &rParent, sal_Int32 nElement, const ::oox::AttributeList &rAttribs, FillProperties &rFillProps)
ShapePropertiesContext(::oox::core::ContextHandler2Helper const &rParent, Shape &rShape)
virtual ::oox::core::ContextHandlerRef onCreateContext(::sal_Int32 Element, const ::oox::AttributeList &rAttribs) override
CustomShapePropertiesPtr & getCustomShapeProperties()
Definition: shape.hxx:137
LineProperties & getLineProperties()
Definition: shape.hxx:128
OUString & getServiceName()
Definition: shape.hxx:120
EffectProperties & getEffectProperties() const
Definition: shape.hxx:151
Shape3DProperties & get3DProperties()
Definition: shape.hxx:146
bool isConnectorShape() const
Definition: shape.hxx:141
FillProperties & getFillProperties()
Definition: shape.hxx:131
context to import a CT_Transform2D
DefTokenId nToken