1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir #include <com/sun/star/xml/sax/FastToken.hpp> 29*cdf0e10cSrcweir #include <com/sun/star/beans/XMultiPropertySet.hpp> 30*cdf0e10cSrcweir #include <com/sun/star/container/XNamed.hpp> 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir #include "oox/helper/attributelist.hxx" 33*cdf0e10cSrcweir #include "oox/drawingml/shapegroupcontext.hxx" 34*cdf0e10cSrcweir #include "oox/drawingml/connectorshapecontext.hxx" 35*cdf0e10cSrcweir #include "oox/drawingml/graphicshapecontext.hxx" 36*cdf0e10cSrcweir #include "oox/drawingml/lineproperties.hxx" 37*cdf0e10cSrcweir #include "oox/drawingml/drawingmltypes.hxx" 38*cdf0e10cSrcweir #include "oox/drawingml/customshapegeometry.hxx" 39*cdf0e10cSrcweir #include "oox/drawingml/textbodycontext.hxx" 40*cdf0e10cSrcweir 41*cdf0e10cSrcweir using rtl::OUString; 42*cdf0e10cSrcweir using namespace oox::core; 43*cdf0e10cSrcweir using namespace ::com::sun::star; 44*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 45*cdf0e10cSrcweir using namespace ::com::sun::star::drawing; 46*cdf0e10cSrcweir using namespace ::com::sun::star::beans; 47*cdf0e10cSrcweir using namespace ::com::sun::star::text; 48*cdf0e10cSrcweir using namespace ::com::sun::star::xml::sax; 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir namespace oox { namespace drawingml { 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir ShapeGroupContext::ShapeGroupContext( ContextHandler& rParent, ShapePtr pMasterShapePtr, ShapePtr pGroupShapePtr ) 53*cdf0e10cSrcweir : ContextHandler( rParent ) 54*cdf0e10cSrcweir , mpGroupShapePtr( pGroupShapePtr ) 55*cdf0e10cSrcweir , mpMasterShapePtr( pMasterShapePtr ) 56*cdf0e10cSrcweir { 57*cdf0e10cSrcweir } 58*cdf0e10cSrcweir 59*cdf0e10cSrcweir ShapeGroupContext::~ShapeGroupContext() 60*cdf0e10cSrcweir { 61*cdf0e10cSrcweir if ( mpMasterShapePtr.get() && mpGroupShapePtr.get() ) 62*cdf0e10cSrcweir mpMasterShapePtr->addChild( mpGroupShapePtr ); 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir Reference< XFastContextHandler > ShapeGroupContext::createFastChildContext( sal_Int32 aElementToken, const Reference< XFastAttributeList >& xAttribs ) throw (SAXException, RuntimeException) 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir Reference< XFastContextHandler > xRet; 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir switch( getBaseToken( aElementToken ) ) 70*cdf0e10cSrcweir { 71*cdf0e10cSrcweir case XML_cNvPr: 72*cdf0e10cSrcweir { 73*cdf0e10cSrcweir AttributeList aAttribs( xAttribs ); 74*cdf0e10cSrcweir mpGroupShapePtr->setHidden( aAttribs.getBool( XML_hidden, false ) ); 75*cdf0e10cSrcweir mpGroupShapePtr->setId( xAttribs->getOptionalValue( XML_id ) ); 76*cdf0e10cSrcweir mpGroupShapePtr->setName( xAttribs->getOptionalValue( XML_name ) ); 77*cdf0e10cSrcweir break; 78*cdf0e10cSrcweir } 79*cdf0e10cSrcweir case XML_ph: 80*cdf0e10cSrcweir mpGroupShapePtr->setSubType( xAttribs->getOptionalValueToken( XML_type, FastToken::DONTKNOW ) ); 81*cdf0e10cSrcweir mpGroupShapePtr->setSubTypeIndex( xAttribs->getOptionalValue( XML_idx ).toInt32() ); 82*cdf0e10cSrcweir break; 83*cdf0e10cSrcweir // nvSpPr CT_ShapeNonVisual end 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir case XML_grpSpPr: 86*cdf0e10cSrcweir xRet = new ShapePropertiesContext( *this, *mpGroupShapePtr ); 87*cdf0e10cSrcweir break; 88*cdf0e10cSrcweir case XML_spPr: 89*cdf0e10cSrcweir xRet = new ShapePropertiesContext( *this, *mpGroupShapePtr ); 90*cdf0e10cSrcweir break; 91*cdf0e10cSrcweir /* 92*cdf0e10cSrcweir case XML_style: 93*cdf0e10cSrcweir xRet = new ShapeStyleContext( getParser() ); 94*cdf0e10cSrcweir break; 95*cdf0e10cSrcweir */ 96*cdf0e10cSrcweir case XML_cxnSp: // connector shape 97*cdf0e10cSrcweir xRet.set( new ConnectorShapeContext( *this, mpGroupShapePtr, ShapePtr( new Shape( "com.sun.star.drawing.ConnectorShape" ) ) ) ); 98*cdf0e10cSrcweir break; 99*cdf0e10cSrcweir case XML_grpSp: // group shape 100*cdf0e10cSrcweir xRet.set( new ShapeGroupContext( *this, mpGroupShapePtr, ShapePtr( new Shape( "com.sun.star.drawing.GroupShape" ) ) ) ); 101*cdf0e10cSrcweir break; 102*cdf0e10cSrcweir case XML_sp: // shape 103*cdf0e10cSrcweir xRet.set( new ShapeContext( *this, mpGroupShapePtr, ShapePtr( new Shape( "com.sun.star.drawing.CustomShape" ) ) ) ); 104*cdf0e10cSrcweir break; 105*cdf0e10cSrcweir case XML_pic: // CT_Picture 106*cdf0e10cSrcweir xRet.set( new GraphicShapeContext( *this, mpGroupShapePtr, ShapePtr( new Shape( "com.sun.star.drawing.GraphicObjectShape" ) ) ) ); 107*cdf0e10cSrcweir break; 108*cdf0e10cSrcweir case XML_graphicFrame: // CT_GraphicalObjectFrame 109*cdf0e10cSrcweir xRet.set( new GraphicalObjectFrameContext( *this, mpGroupShapePtr, ShapePtr( new Shape( "com.sun.star.drawing.GraphicObjectShape" ) ), true ) ); 110*cdf0e10cSrcweir break; 111*cdf0e10cSrcweir } 112*cdf0e10cSrcweir if( !xRet.is() ) 113*cdf0e10cSrcweir xRet.set( this ); 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir return xRet; 117*cdf0e10cSrcweir } 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir } } 120