Files
loongoffice/xmloff/source/draw/ximpshap.hxx
Zolnai Tamás 4d8c4e7fe3 glTF import/export: fallback must be the second one inside the frame
The previous solution was good because older LO versions
import the fallback image without changing their code, but
it came out it does not fit to ODF standard so export
fallback image as the second object after the glTF model.

Change-Id: Ib9b2044b1f36b32d980cb79f6dac8dcf94d6209b
2014-06-16 12:59:19 +02:00

655 lines
26 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#ifndef INCLUDED_XMLOFF_SOURCE_DRAW_XIMPSHAP_HXX
#define INCLUDED_XMLOFF_SOURCE_DRAW_XIMPSHAP_HXX
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/document/XActionLockable.hpp>
#include <com/sun/star/container/XIdentifierContainer.hpp>
#include <xmloff/xmlictxt.hxx>
#include "sdxmlimp_impl.hxx"
#include <xmloff/nmspmap.hxx>
#include <com/sun/star/drawing/XShapes.hpp>
#include <com/sun/star/text/XTextCursor.hpp>
#include <com/sun/star/awt/Point.hpp>
#include <tools/rtti.hxx>
#include "xexptran.hxx"
#include <vector>
#include <xmloff/shapeimport.hxx>
#include <xmloff/xmlmultiimagehelper.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
// 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;
OUString maDrawStyleName;
OUString maTextStyleName;
OUString maPresentationClass;
OUString maShapeName;
OUString maThumbnailURL;
/// whether to restore list context (#91964#)
bool mbListContextPushed;
sal_uInt16 mnStyleFamily;
sal_uInt16 mnClass;
bool mbIsPlaceholder;
bool mbClearDefaultAttributes;
bool mbIsUserTransformed;
sal_Int32 mnZOrder;
OUString maShapeId;
OUString maLayerName;
// #i68101#
OUString maShapeTitle;
OUString maShapeDescription;
SdXMLImExTransform2D mnTransform;
com::sun::star::awt::Size maSize;
sal_Int16 mnRelWidth;
sal_Int16 mnRelHeight;
com::sun::star::awt::Point maPosition;
basegfx::B2DHomMatrix maUsedTransformation;
bool mbVisible;
bool mbPrintable;
bool mbHaveXmlId;
bool mbTextBox; ///< If the text of this shape is handled by a Writer TextFrame.
/** 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(OUString const & serviceName);
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 );
bool isPresentationShape() const;
public:
TYPEINFO_OVERRIDE();
SdXMLShapeContext( SvXMLImport& rImport,
sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue );
// allow to copy evtl. useful data from another temporary import context, e.g. used to
// support multiple images
virtual void onDemandRescueUsefulDataFromTemporary( const SvXMLImportContext& rCandidate ) SAL_OVERRIDE;
};
// draw:rect context
class SdXMLRectShapeContext : public SdXMLShapeContext
{
sal_Int32 mnRadius;
public:
TYPEINFO_OVERRIDE();
SdXMLRectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLRectShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:line context
class SdXMLLineShapeContext : public SdXMLShapeContext
{
sal_Int32 mnX1;
sal_Int32 mnY1;
sal_Int32 mnX2;
sal_Int32 mnY2;
public:
TYPEINFO_OVERRIDE();
SdXMLLineShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLLineShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// 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_OVERRIDE();
SdXMLEllipseShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLEllipseShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:polyline and draw:polygon context
class SdXMLPolygonShapeContext : public SdXMLShapeContext
{
OUString maPoints;
OUString maViewBox;
bool mbClosed;
public:
TYPEINFO_OVERRIDE();
SdXMLPolygonShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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, bool bClosed, bool bTemporaryShape);
virtual ~SdXMLPolygonShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:path context
class SdXMLPathShapeContext : public SdXMLShapeContext
{
OUString maD;
OUString maViewBox;
public:
TYPEINFO_OVERRIDE();
SdXMLPathShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLPathShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:text-box context
class SdXMLTextBoxShapeContext : public SdXMLShapeContext
{
sal_Int32 mnRadius;
public:
TYPEINFO_OVERRIDE();
SdXMLTextBoxShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLTextBoxShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:control context
class SdXMLControlShapeContext : public SdXMLShapeContext
{
private:
OUString maFormId;
public:
TYPEINFO_OVERRIDE();
SdXMLControlShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLControlShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:connector context
class SdXMLConnectorShapeContext : public SdXMLShapeContext
{
private:
::com::sun::star::awt::Point maStart;
::com::sun::star::awt::Point maEnd;
sal_uInt16 mnType;
OUString maStartShapeId;
sal_Int32 mnStartGlueId;
OUString maEndShapeId;
sal_Int32 mnEndGlueId;
sal_Int32 mnDelta1;
sal_Int32 mnDelta2;
sal_Int32 mnDelta3;
com::sun::star::uno::Any maPath;
public:
TYPEINFO_OVERRIDE();
SdXMLConnectorShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLConnectorShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:measure context
class SdXMLMeasureShapeContext : public SdXMLShapeContext
{
private:
::com::sun::star::awt::Point maStart;
::com::sun::star::awt::Point maEnd;
public:
TYPEINFO_OVERRIDE();
SdXMLMeasureShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLMeasureShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:page context
class SdXMLPageShapeContext : public SdXMLShapeContext
{
private:
sal_Int32 mnPageNumber;
public:
TYPEINFO_OVERRIDE();
SdXMLPageShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLPageShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:caption context
class SdXMLCaptionShapeContext : public SdXMLShapeContext
{
private:
com::sun::star::awt::Point maCaptionPoint;
sal_Int32 mnRadius;
public:
TYPEINFO_OVERRIDE();
SdXMLCaptionShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLCaptionShapeContext();
virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// office:image context
class SdXMLGraphicObjectShapeContext : public SdXMLShapeContext
{
private:
OUString maURL;
::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream;
public:
TYPEINFO_OVERRIDE();
SdXMLGraphicObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLGraphicObjectShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// chart:chart context
class SdXMLChartShapeContext : public SdXMLShapeContext
{
SvXMLImportContext* mpChartContext;
public:
TYPEINFO_OVERRIDE();
SdXMLChartShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLChartShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual void Characters( const OUString& rChars ) SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
};
// draw:object and draw:object_ole context
class SdXMLObjectShapeContext : public SdXMLShapeContext
{
private:
OUString maCLSID;
OUString maHref;
// #100592#
::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream;
public:
TYPEINFO_OVERRIDE();
SdXMLObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLObjectShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
// #100592#
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:applet
class SdXMLAppletShapeContext : public SdXMLShapeContext
{
private:
OUString maAppletName;
OUString maAppletCode;
OUString maHref;
bool mbIsScript;
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams;
public:
TYPEINFO_OVERRIDE();
SdXMLAppletShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLAppletShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:plugin
class SdXMLPluginShapeContext : public SdXMLShapeContext
{
private:
OUString maMimeType;
OUString maHref;
bool mbMedia;
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams;
public:
TYPEINFO_OVERRIDE();
SdXMLPluginShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLPluginShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
const OUString& getMimeType() const { return maMimeType; }
};
// draw:floating-frame
class SdXMLFloatingFrameShapeContext : public SdXMLShapeContext
{
private:
OUString maFrameName;
OUString maHref;
public:
TYPEINFO_OVERRIDE();
SdXMLFloatingFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLFloatingFrameShapeContext();
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:-frame
class SdXMLFrameShapeContext : public SdXMLShapeContext, public MultiImageImportHelper
{
private:
bool mbSupportsReplacement;
SvXMLImportContextRef mxImplContext;
SvXMLImportContextRef mxReplImplContext;
protected:
/// helper to get the created xShape instance, needs to be overloaded
virtual OUString getGraphicURLFromImportContext(const SvXMLImportContext& rContext) const SAL_OVERRIDE;
virtual void removeGraphicFromImportContext(const SvXMLImportContext& rContext) const SAL_OVERRIDE;
public:
TYPEINFO_OVERRIDE();
SdXMLFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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,
bool bTemporaryShape);
virtual ~SdXMLFrameShapeContext();
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
class SdXMLCustomShapeContext : public SdXMLShapeContext
{
protected :
OUString maCustomShapeEngine;
OUString maCustomShapeData;
std::vector< com::sun::star::beans::PropertyValue > maCustomShapeGeometry;
public:
TYPEINFO_OVERRIDE();
SdXMLCustomShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const 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,
bool bTemporaryShape);
virtual ~SdXMLCustomShapeContext();
virtual void StartElement( const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
};
// draw:table
class SdXMLTableShapeContext : public SdXMLShapeContext
{
public:
TYPEINFO_OVERRIDE();
SdXMLTableShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
const 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 ) SAL_OVERRIDE;
virtual void EndElement() SAL_OVERRIDE;
virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
// this is called from the parent group for each unparsed attribute in the attribute list
virtual void processAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) SAL_OVERRIDE;
private:
SvXMLImportContextRef mxTableImportContext;
OUString msTemplateStyleName;
sal_Bool maTemplateStylesUsed[6];
};
#endif // INCLUDED_XMLOFF_SOURCE_DRAW_XIMPSHAP_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */