/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _XIMPSHAPE_HXX #define _XIMPSHAPE_HXX #include #include #include #include #include "sdxmlimp_impl.hxx" #include #include #include #include #include #include "xexptran.hxx" #include #include #include #include ////////////////////////////////////////////////////////////////////////////// // common shape context class SdXMLShapeContext : public SvXMLShapeContext { protected: // the shape group this object should be created inside com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes; com::sun::star::uno::Reference< com::sun::star::text::XTextCursor > mxCursor; com::sun::star::uno::Reference< com::sun::star::text::XTextCursor > mxOldCursor; com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList> mxAttrList; com::sun::star::uno::Reference< com::sun::star::container::XIdentifierContainer > mxGluePoints; com::sun::star::uno::Reference< com::sun::star::document::XActionLockable > mxLockable; rtl::OUString maDrawStyleName; rtl::OUString maTextStyleName; rtl::OUString maPresentationClass; rtl::OUString maShapeName; rtl::OUString maThumbnailURL; /// whether to restore list context (#91964#) bool mbListContextPushed; sal_uInt16 mnStyleFamily; sal_uInt16 mnClass; sal_Bool mbIsPlaceholder; bool mbClearDefaultAttributes; sal_Bool mbIsUserTransformed; sal_Int32 mnZOrder; rtl::OUString maShapeId; rtl::OUString maLayerName; // #i68101# rtl::OUString maShapeTitle; rtl::OUString maShapeDescription; SdXMLImExTransform2D mnTransform; com::sun::star::awt::Size maSize; com::sun::star::awt::Point maPosition; basegfx::B2DHomMatrix maUsedTransformation; bool mbVisible; bool mbPrintable; /** if bSupportsStyle is false, auto styles will be set but not a style */ void SetStyle( bool bSupportsStyle = true ); void SetLayer(); void SetThumbnail(); void AddShape(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& xShape); void AddShape(const char* pServiceName ); void SetTransformation(); SvXMLImport& GetImport() { return SvXMLImportContext::GetImport(); } const SvXMLImport& GetImport() const { return SvXMLImportContext::GetImport(); } void addGluePoint( const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); sal_Bool isPresentationShape() const; public: TYPEINFO(); SdXMLShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); /// access to ShapeId for evtl. late adding const rtl::OUString& getShapeId() const { return maShapeId; } // allow to copy evtl. useful data from another temporary import context, e.g. used to // support multiple images virtual void onDemandRescueUsefulDataFromTemporary( const SvXMLImportContext& rCandidate ); }; ////////////////////////////////////////////////////////////////////////////// // draw:rect context class SdXMLRectShapeContext : public SdXMLShapeContext { sal_Int32 mnRadius; public: TYPEINFO(); SdXMLRectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLRectShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:line context class SdXMLLineShapeContext : public SdXMLShapeContext { sal_Int32 mnX1; sal_Int32 mnY1; sal_Int32 mnX2; sal_Int32 mnY2; public: TYPEINFO(); SdXMLLineShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLLineShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:ellipse and draw:circle context class SdXMLEllipseShapeContext : public SdXMLShapeContext { sal_Int32 mnCX; sal_Int32 mnCY; sal_Int32 mnRX; sal_Int32 mnRY; sal_uInt16 meKind; sal_Int32 mnStartAngle; sal_Int32 mnEndAngle; public: TYPEINFO(); SdXMLEllipseShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLEllipseShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:polyline and draw:polygon context class SdXMLPolygonShapeContext : public SdXMLShapeContext { rtl::OUString maPoints; rtl::OUString maViewBox; sal_Bool mbClosed; public: TYPEINFO(); SdXMLPolygonShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bClosed, sal_Bool bTemporaryShape); virtual ~SdXMLPolygonShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:path context class SdXMLPathShapeContext : public SdXMLShapeContext { rtl::OUString maD; rtl::OUString maViewBox; sal_Bool mbClosed; public: TYPEINFO(); SdXMLPathShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLPathShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:text-box context class SdXMLTextBoxShapeContext : public SdXMLShapeContext { sal_Int32 mnRadius; public: TYPEINFO(); SdXMLTextBoxShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLTextBoxShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:control context class SdXMLControlShapeContext : public SdXMLShapeContext { private: rtl::OUString maFormId; public: TYPEINFO(); SdXMLControlShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLControlShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:connector context class SdXMLConnectorShapeContext : public SdXMLShapeContext { private: ::com::sun::star::awt::Point maStart; ::com::sun::star::awt::Point maEnd; sal_uInt16 mnType; rtl::OUString maStartShapeId; sal_Int32 mnStartGlueId; rtl::OUString maEndShapeId; sal_Int32 mnEndGlueId; sal_Int32 mnDelta1; sal_Int32 mnDelta2; sal_Int32 mnDelta3; com::sun::star::uno::Any maPath; public: TYPEINFO(); SdXMLConnectorShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLConnectorShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:measure context class SdXMLMeasureShapeContext : public SdXMLShapeContext { private: ::com::sun::star::awt::Point maStart; ::com::sun::star::awt::Point maEnd; public: TYPEINFO(); SdXMLMeasureShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLMeasureShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); virtual void EndElement(); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:page context class SdXMLPageShapeContext : public SdXMLShapeContext { private: sal_Int32 mnPageNumber; public: TYPEINFO(); SdXMLPageShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLPageShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:caption context class SdXMLCaptionShapeContext : public SdXMLShapeContext { private: com::sun::star::awt::Point maCaptionPoint; sal_Int32 mnRadius; public: TYPEINFO(); SdXMLCaptionShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLCaptionShapeContext(); virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // office:image context class SdXMLGraphicObjectShapeContext : public SdXMLShapeContext { private: ::rtl::OUString maURL; ::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream; /// bitfield bool mbLateAddToIdentifierMapper : 1; public: TYPEINFO(); SdXMLGraphicObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLGraphicObjectShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); /// support for LateAddToIdentifierMapper bool getLateAddToIdentifierMapper() const { return mbLateAddToIdentifierMapper; } void setLateAddToIdentifierMapper(bool bNew) { mbLateAddToIdentifierMapper = bNew; } }; ////////////////////////////////////////////////////////////////////////////// // chart:chart context class SdXMLChartShapeContext : public SdXMLShapeContext { SvXMLImportContext* mpChartContext; public: TYPEINFO(); SdXMLChartShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLChartShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual void Characters( const ::rtl::OUString& rChars ); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); }; ////////////////////////////////////////////////////////////////////////////// // draw:object and draw:object_ole context class SdXMLObjectShapeContext : public SdXMLShapeContext { private: rtl::OUString maCLSID; rtl::OUString maHref; // #100592# ::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream; public: TYPEINFO(); SdXMLObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLObjectShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); // #100592# virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:applet class SdXMLAppletShapeContext : public SdXMLShapeContext { private: rtl::OUString maAppletName; rtl::OUString maAppletCode; rtl::OUString maHref; sal_Bool mbIsScript; com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams; public: TYPEINFO(); SdXMLAppletShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLAppletShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:plugin class SdXMLPluginShapeContext : public SdXMLShapeContext { private: rtl::OUString maMimeType; rtl::OUString maHref; bool mbMedia; com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams; public: TYPEINFO(); SdXMLPluginShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLPluginShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:floating-frame class SdXMLFloatingFrameShapeContext : public SdXMLShapeContext { private: rtl::OUString maFrameName; rtl::OUString maHref; public: TYPEINFO(); SdXMLFloatingFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLFloatingFrameShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:-frame class SdXMLFrameShapeContext : public SdXMLShapeContext, public multiImageImportHelper { private: sal_Bool mbSupportsReplacement; SvXMLImportContextRef mxImplContext; SvXMLImportContextRef mxReplImplContext; protected: /// helper to get the created xShape instance, needs to be overloaded virtual rtl::OUString getGraphicURLFromImportContext(const SvXMLImportContext& rContext) const; virtual void removeGraphicFromImportContext(const SvXMLImportContext& rContext) const; public: TYPEINFO(); SdXMLFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLFrameShapeContext(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; class SdXMLCustomShapeContext : public SdXMLShapeContext { protected : rtl::OUString maCustomShapeEngine; rtl::OUString maCustomShapeData; std::vector< com::sun::star::beans::PropertyValue > maCustomShapeGeometry; public: TYPEINFO(); SdXMLCustomShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bTemporaryShape); virtual ~SdXMLCustomShapeContext(); virtual void StartElement( const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); }; ////////////////////////////////////////////////////////////////////////////// // draw:table class SdXMLTableShapeContext : public SdXMLShapeContext { public: TYPEINFO(); SdXMLTableShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList, com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes ); virtual ~SdXMLTableShapeContext(); virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ); virtual void EndElement(); virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ); // this is called from the parent group for each unparsed attribute in the attribute list virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue ); private: SvXMLImportContextRef mxTableImportContext; rtl::OUString msTemplateStyleName; sal_Bool maTemplateStylesUsed[6]; }; #endif // _XIMPSHAPE_HXX