summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Lippka <cl@openoffice.org>2000-12-13 18:16:42 +0000
committerChristian Lippka <cl@openoffice.org>2000-12-13 18:16:42 +0000
commit38868cce5ec853d4bb242c9bff2695e659da6353 (patch)
treeadc872f6acf1f2d90dd2d9dadcbad531ee304ed7
parent5fb34d9ceb8bdb374e796cc44261553f85c80071 (diff)
#80699# reworked shape id creation and fixed import for all shapes
-rw-r--r--xmloff/source/draw/makefile.mk7
-rw-r--r--xmloff/source/draw/sdxmlexp.cxx20
-rw-r--r--xmloff/source/draw/shapeexport.cxx52
-rw-r--r--xmloff/source/draw/shapeimport.cxx270
-rw-r--r--xmloff/source/draw/ximp3dscene.cxx276
-rw-r--r--xmloff/source/draw/ximp3dscene.hxx13
-rw-r--r--xmloff/source/draw/ximpbody.cxx10
-rw-r--r--xmloff/source/draw/ximpbody.hxx10
-rw-r--r--xmloff/source/draw/ximpgrp.cxx33
-rw-r--r--xmloff/source/draw/ximpgrp.hxx7
-rw-r--r--xmloff/source/draw/ximpnote.cxx11
-rw-r--r--xmloff/source/draw/ximpnote.hxx10
-rw-r--r--xmloff/source/draw/ximppage.cxx123
-rw-r--r--xmloff/source/draw/ximppage.hxx121
-rw-r--r--xmloff/source/draw/ximpshap.cxx1519
-rw-r--r--xmloff/source/draw/ximpshap.hxx74
-rw-r--r--xmloff/source/draw/ximpstyl.cxx12
-rw-r--r--xmloff/source/draw/ximpstyl.hxx10
18 files changed, 1202 insertions, 1376 deletions
diff --git a/xmloff/source/draw/makefile.mk b/xmloff/source/draw/makefile.mk
index 7de5b5f2394f..5ecd1b50caca 100644
--- a/xmloff/source/draw/makefile.mk
+++ b/xmloff/source/draw/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.3 $
+# $Revision: 1.4 $
#
-# last change: $Author: cl $ $Date: 2000-12-01 19:19:53 $
+# last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -90,7 +90,8 @@ SLOFILES = \
$(SLO)$/xexptran.obj \
$(SLO)$/shapeexport.obj \
$(SLO)$/shapeimport.obj \
- $(SLO)$/XMLShapeStyleContext.obj
+ $(SLO)$/XMLShapeStyleContext.obj \
+ $(SLO)$/ximppage.obj
# --- Targets --------------------------------------------------------------
diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx
index 9ab07776e9b7..6270b1d8321d 100644
--- a/xmloff/source/draw/sdxmlexp.cxx
+++ b/xmloff/source/draw/sdxmlexp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: sdxmlexp.cxx,v $
*
- * $Revision: 1.33 $
+ * $Revision: 1.34 $
*
- * last change: $Author: aw $ $Date: 2000-12-13 11:00:00 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -3375,6 +3375,14 @@ void SdXMLExport::ImpStartWriteGroupShape(SvXMLExport& rExp,
uno::Reference< container::XIndexAccess > xShapes(xShape, uno::UNO_QUERY);
if(xShapes.is() && xShapes->getCount())
{
+ // export shape id if needed
+ sal_Int32 nShapeId = rExp.GetShapeExport()->getShapeId( xShape );
+ if( nShapeId != -1 )
+ {
+ const OUString sId( OUString::valueOf( nShapeId ) );
+ rExp.AddAttribute(XML_NAMESPACE_DRAW, sXML_id, sId );
+ }
+
// group shape or 3Dscene?
sal_Bool bIsScene(FALSE);
uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xShape, uno::UNO_QUERY);
@@ -3686,6 +3694,14 @@ void SdXMLExport::ImpWriteSingleShapeStyleInfos(uno::Reference< container::XInde
uno::Reference< container::XIndexAccess > xShapes(xShape, uno::UNO_QUERY);
if(xShapes.is() && xShapes->getCount())
{
+ // export shape id if needed
+ sal_Int32 nShapeId = GetShapeExport()->getShapeId( xShape );
+ if( nShapeId != -1 )
+ {
+ const OUString sId( OUString::valueOf( nShapeId ) );
+ AddAttribute(XML_NAMESPACE_DRAW, sXML_id, sId );
+ }
+
// group shape or 3Dscene?
sal_Bool bIsScene(FALSE);
uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xShape, uno::UNO_QUERY);
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx
index eb905081ba2b..bde6a021039f 100644
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: shapeexport.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 07:44:37 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -276,52 +276,22 @@ void XMLShapeExport::exportAutoStyles()
/** creates a unique id for this shape, this id is saved and exported with this shape later
with the exportShape method. Its ok to call this twice with the same shape */
-void XMLShapeExport::createShapeId( const com::sun::star::uno::Reference < com::sun::star::drawing::XShape >& xShape )
+void XMLShapeExport::createShapeId( const uno::Reference < drawing::XShape >& xShape )
{
-/*
- uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY );
- if( xPropSet.is() && xPropSet->getPropertySetInfo()->hasPropertyByName( msZIndex ) )
- {
- sal_Int32 nIndex = 0;
- xPropSet->getPropertyValue( msZIndex ) >>= nIndex;
-
- const std::vector<XMLShapeIdHint>::size_type nCount = maUsedShapeIds.size();
- for( std::vector<XMLShapeIdHint>::size_type i = 0; i < nCount; i++ )
- {
- if( maUsedShapeIds[i].mnShapeIndex == nIndex )
- return; // we already have an id for this shape;
- }
+ ShapeIdsMap::iterator aId( maShapeIds.find( xShape ) );
- XMLShapeIdHint aNewHint;
- aNewHint.mnShapeIndex = nIndex;
- aNewHint.mnShapeId = mnNextUniqueShapeId++;
- maUsedShapeIds.push_back( aNewHint );
- }
- else
- {
- DBG_ERROR( "createShapeId failed!" );
- }
-*/
+ if( aId == maShapeIds.end() )
+ maShapeIds[xShape] = mnNextUniqueShapeId++;
}
/** returns the unique id for this shape. It returns -1 if the was no createShapeId call
for this shape yet. */
-sal_Int32 XMLShapeExport::getShapeId( const com::sun::star::uno::Reference < com::sun::star::drawing::XShape >& xShape )
+sal_Int32 XMLShapeExport::getShapeId( const uno::Reference < drawing::XShape >& xShape )
{
-/*
- uno::Reference< beans::XPropertySet > xPropSet( xShape, uno::UNO_QUERY );
- if( xPropSet.is() && xPropSet->getPropertySetInfo()->hasPropertyByName( msZIndex ) )
- {
- sal_Int32 nIndex = 0;
- xPropSet->getPropertyValue( msZIndex ) >>= nIndex;
+ ShapeIdsMap::iterator aId( maShapeIds.find( xShape ) );
+
+ if( aId != maShapeIds.end() )
+ return (*aId).second;
- const std::vector<XMLShapeIdHint>::size_type nCount = maUsedShapeIds.size();
- for( std::vector<XMLShapeIdHint>::size_type i = 0; i < nCount; i++ )
- {
- if( maUsedShapeIds[i].mnShapeIndex == nIndex )
- return maUsedShapeIds[i].mnShapeId;
- }
- }
-*/
return -1;
}
diff --git a/xmloff/source/draw/shapeimport.cxx b/xmloff/source/draw/shapeimport.cxx
index f085bb26f235..9e4ad463125e 100644
--- a/xmloff/source/draw/shapeimport.cxx
+++ b/xmloff/source/draw/shapeimport.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: shapeimport.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 07:51:20 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -109,6 +109,10 @@
#include "ximp3dobject.hxx"
#endif
+#ifndef _XIMPGROUP_HXX
+#include "ximpgrp.hxx"
+#endif
+
using namespace ::rtl;
using namespace ::std;
using namespace ::com::sun::star;
@@ -124,24 +128,31 @@ XMLShapeImportHelper::XMLShapeImportHelper(
mpStylesContext(0L),
mpAutoStylesContext(0L),
mpGroupShapeElemTokenMap(0L),
+ mp3DSceneShapeElemTokenMap(0L),
+ mp3DObjectAttrTokenMap(0L),
+ mp3DPolygonBasedAttrTokenMap(0L),
+ mp3DCubeObjectAttrTokenMap(0L),
+ mp3DSphereObjectAttrTokenMap(0L),
+ mp3DSceneShapeAttrTokenMap(0L),
+ mp3DLightAttrTokenMap(0L),
+ mpPathShapeAttrTokenMap(0L),
+ mpPolygonShapeAttrTokenMap(0L),
+/*
mpShapeAttrTokenMap(0L),
mpRectShapeAttrTokenMap(0L),
mpLineShapeAttrTokenMap(0L),
mpEllipseShapeAttrTokenMap(0L),
- mpPolygonShapeAttrTokenMap(0L),
- mpPathShapeAttrTokenMap(0L),
mpTextBoxShapeAttrTokenMap(0L),
mpControlShapeAttrTokenMap(0L),
mpPageShapeAttrTokenMap(0L),
mpGraphicObjectShapeAttrTokenMap(0L),
- mp3DSceneShapeElemTokenMap(0L),
- mp3DObjectAttrTokenMap(0L),
- mp3DPolygonBasedAttrTokenMap(0L),
- mp3DCubeObjectAttrTokenMap(0L),
- mp3DSphereObjectAttrTokenMap(0L),
- mp3DSceneShapeAttrTokenMap(0L),
- mp3DLightAttrTokenMap(0L),
- mpSortContext(0L)
+*/
+ mpSortContext(0L),
+ msStartShape(RTL_CONSTASCII_USTRINGPARAM("StartShape")),
+ msEndShape(RTL_CONSTASCII_USTRINGPARAM("EndShape")),
+ msStartGluePointIndex(RTL_CONSTASCII_USTRINGPARAM("StartGluePointIndex")),
+ msEndGluePointIndex(RTL_CONSTASCII_USTRINGPARAM("EndGluePointIndex"))
+
{
mpSdPropHdlFactory = new XMLSdPropHdlFactory( rModel );
@@ -177,6 +188,8 @@ XMLShapeImportHelper::XMLShapeImportHelper(
XMLShapeImportHelper::~XMLShapeImportHelper()
{
+ DBG_ASSERT( maConnections.empty(), "XMLShapeImportHelper::restoreConnections() was not called!" );
+
// cleanup factory, decrease refcount. Should lead to destruction.
if(mpSdPropHdlFactory)
{
@@ -199,16 +212,18 @@ XMLShapeImportHelper::~XMLShapeImportHelper()
}
if(mpGroupShapeElemTokenMap) delete mpGroupShapeElemTokenMap;
+/*
if(mpShapeAttrTokenMap) delete mpShapeAttrTokenMap;
if(mpRectShapeAttrTokenMap) delete mpRectShapeAttrTokenMap;
if(mpLineShapeAttrTokenMap) delete mpLineShapeAttrTokenMap;
if(mpEllipseShapeAttrTokenMap) delete mpEllipseShapeAttrTokenMap;
- if(mpPolygonShapeAttrTokenMap) delete mpPolygonShapeAttrTokenMap;
- if(mpPathShapeAttrTokenMap) delete mpPathShapeAttrTokenMap;
if(mpTextBoxShapeAttrTokenMap) delete mpTextBoxShapeAttrTokenMap;
if(mpControlShapeAttrTokenMap) delete mpControlShapeAttrTokenMap;
if(mpPageShapeAttrTokenMap) delete mpPageShapeAttrTokenMap;
if(mpGraphicObjectShapeAttrTokenMap) delete mpGraphicObjectShapeAttrTokenMap;
+*/
+ if(mpPolygonShapeAttrTokenMap) delete mpPolygonShapeAttrTokenMap;
+ if(mpPathShapeAttrTokenMap) delete mpPathShapeAttrTokenMap;
if(mp3DSceneShapeElemTokenMap) delete mp3DSceneShapeElemTokenMap;
if(mp3DObjectAttrTokenMap) delete mp3DObjectAttrTokenMap;
if(mp3DPolygonBasedAttrTokenMap) delete mp3DPolygonBasedAttrTokenMap;
@@ -278,7 +293,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::Get3DSceneShapeElemTokenMap()
}
//////////////////////////////////////////////////////////////////////////////
-
+/*
static __FAR_DATA SvXMLTokenMapEntry aShapeAttrTokenMap[] =
{
{ XML_NAMESPACE_DRAW, sXML_name, XML_TOK_SHAPE_NAME },
@@ -297,7 +312,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::GetShapeAttrTokenMap()
mpShapeAttrTokenMap = new SvXMLTokenMap(aShapeAttrTokenMap);
return *mpShapeAttrTokenMap;
}
-
+*/
//////////////////////////////////////////////////////////////////////////////
static __FAR_DATA SvXMLTokenMapEntry a3DObjectAttrTokenMap[] =
@@ -363,7 +378,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::Get3DSphereObjectAttrTokenMap()
}
//////////////////////////////////////////////////////////////////////////////
-
+/*
static __FAR_DATA SvXMLTokenMapEntry aRectShapeAttrTokenMap[] =
{
{ XML_NAMESPACE_SVG, sXML_x, XML_TOK_RECTSHAPE_X },
@@ -419,7 +434,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::GetEllipseShapeAttrTokenMap()
}
//////////////////////////////////////////////////////////////////////////////
-
+*/
static __FAR_DATA SvXMLTokenMapEntry aPolygonShapeAttrTokenMap[] =
{
{ XML_NAMESPACE_SVG, sXML_x, XML_TOK_POLYGONSHAPE_X },
@@ -457,7 +472,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::GetPathShapeAttrTokenMap()
mpPathShapeAttrTokenMap = new SvXMLTokenMap(aPathShapeAttrTokenMap);
return *mpPathShapeAttrTokenMap;
}
-
+/*
//////////////////////////////////////////////////////////////////////////////
static __FAR_DATA SvXMLTokenMapEntry aTextBoxShapeAttrTokenMap[] =
@@ -493,7 +508,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::GetControlShapeAttrTokenMap()
mpControlShapeAttrTokenMap = new SvXMLTokenMap(aControlShapeAttrTokenMap);
return *mpControlShapeAttrTokenMap;
}
-
+*/
//////////////////////////////////////////////////////////////////////////////
static __FAR_DATA SvXMLTokenMapEntry a3DSceneShapeAttrTokenMap[] =
@@ -542,7 +557,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::Get3DLightAttrTokenMap()
}
//////////////////////////////////////////////////////////////////////////////
-
+/*
static __FAR_DATA SvXMLTokenMapEntry aPageShapeAttrTokenMap[] =
{
{ XML_NAMESPACE_SVG, sXML_x, XML_TOK_PAGESHAPE_X },
@@ -577,7 +592,7 @@ const SvXMLTokenMap& XMLShapeImportHelper::GetGraphicObjectShapeAttrTokenMap()
mpGraphicObjectShapeAttrTokenMap = new SvXMLTokenMap(aGraphicObjectShapeAttrTokenMap);
return *mpGraphicObjectShapeAttrTokenMap;
}
-
+*/
//////////////////////////////////////////////////////////////////////////////
SvXMLImportContext* XMLShapeImportHelper::Create3DSceneChildContext(
@@ -606,26 +621,7 @@ SvXMLImportContext* XMLShapeImportHelper::Create3DSceneChildContext(
case XML_TOK_3DSCENE_3DSCENE:
{
// dr3d:3dscene inside dr3d:3dscene context
- // create new 3DScene shape and add it to rShapes, use it
- // as base for the new 3DScene import
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(mxModel, uno::UNO_QUERY);
- if(xServiceFact.is())
- {
- uno::Reference< drawing::XShape > xShape(
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.Shape3DSceneObject"))),
- uno::UNO_QUERY);
- if(xShape.is())
- {
- rShapes->add( xShape );
-
- uno::Reference< drawing::XShapes > xNewShapes(xShape, uno::UNO_QUERY);
- if(xNewShapes.is())
- {
- pContext = new SdXML3DSceneShapeContext( rImport, nPrefix, rLocalName, xAttrList, xNewShapes);
- }
- }
- }
+ pContext = new SdXML3DSceneShapeContext( rImport, nPrefix, rLocalName, xAttrList, rShapes);
break;
}
case XML_TOK_3DSCENE_3DCUBE:
@@ -693,51 +689,13 @@ SvXMLImportContext* XMLShapeImportHelper::CreateGroupChildContext(
case XML_TOK_GROUP_GROUP:
{
// draw:g inside group context (RECURSIVE)
- // create new group shape and add it to rShapes, use it
- // as base for the new group import
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(mxModel, uno::UNO_QUERY);
- if(xServiceFact.is())
- {
- uno::Reference< drawing::XShape > xShape(
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.GroupShape"))),
- uno::UNO_QUERY);
- if(xShape.is())
- {
- addShape( xShape, xAttrList, rShapes );
-
- uno::Reference< drawing::XShapes > xNewShapes(xShape, uno::UNO_QUERY);
- if(xNewShapes.is())
- {
- pContext = new SdXMLGroupShapeContext( rImport, nPrefix, rLocalName, xAttrList, xNewShapes);
- }
- }
- }
+ pContext = new SdXMLGroupShapeContext( rImport, nPrefix, rLocalName, xAttrList, rShapes);
break;
}
case XML_TOK_GROUP_3DSCENE:
{
// dr3d:3dscene inside group context
- // create new 3DScene shape and add it to rShapes, use it
- // as base for the new 3DScene import
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(mxModel, uno::UNO_QUERY);
- if(xServiceFact.is())
- {
- uno::Reference< drawing::XShape > xShape(
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.Shape3DSceneObject"))),
- uno::UNO_QUERY);
- if(xShape.is())
- {
- addShape( xShape, xAttrList, rShapes );
-
- uno::Reference< drawing::XShapes > xNewShapes(xShape, uno::UNO_QUERY);
- if(xNewShapes.is())
- {
- pContext = new SdXML3DSceneShapeContext( rImport, nPrefix, rLocalName, xAttrList, xNewShapes);
- }
- }
- }
+ pContext = new SdXML3DSceneShapeContext( rImport, nPrefix, rLocalName, xAttrList, rShapes);
break;
}
case XML_TOK_GROUP_RECT:
@@ -875,55 +833,25 @@ struct ZOrderHint
int operator<(const ZOrderHint& rComp) const { return nShould < rComp.nShould; }
};
-struct ConnectionHint
-{
- sal_Int32 nConnectorIndex;
- sal_Bool bStart;
- sal_Int32 nDestShapeId;
- sal_Int32 nDestGlueId;
-};
-
-struct ltint32
-{
- bool operator()(const sal_Int32 p, sal_Int32 q) const
- {
- return p < q;
- }
-};
-
class ShapeSortContext
{
public:
uno::Reference< drawing::XShapes > mxShapes;
list<ZOrderHint> maZOrderList;
list<ZOrderHint> maUnsortedList;
- vector<ConnectionHint> maConnections;
- map<sal_Int32,sal_Int32,ltint32> maShapeIdMap;
sal_Int32 mnCurrentZ;
ShapeSortContext* mpParentContext;
const OUString msZOrder;
- const OUString msStartShape;
- const OUString msEndShape;
- const OUString msStartGluePointIndex;
- const OUString msEndGluePointIndex;
ShapeSortContext( uno::Reference< drawing::XShapes >& rShapes, ShapeSortContext* pParentContext = NULL );
void moveShape( sal_Int32 nSourcePos, sal_Int32 nDestPos );
- void restoreConnections();
-
- void createShapeId( sal_Int32 nId );
- uno::Reference< drawing::XShape > getShapeFromId( sal_Int32 nId );
};
ShapeSortContext::ShapeSortContext( uno::Reference< drawing::XShapes >& rShapes, ShapeSortContext* pParentContext )
: mxShapes( rShapes ), mnCurrentZ( 0 ), mpParentContext( pParentContext ),
- msZOrder(RTL_CONSTASCII_USTRINGPARAM("ZOrder")),
- msStartShape(RTL_CONSTASCII_USTRINGPARAM("StartShape")),
- msEndShape(RTL_CONSTASCII_USTRINGPARAM("EndShape")),
- msStartGluePointIndex(RTL_CONSTASCII_USTRINGPARAM("StartGluePointIndex")),
- msEndGluePointIndex(RTL_CONSTASCII_USTRINGPARAM("EndGluePointIndex"))
+ msZOrder(RTL_CONSTASCII_USTRINGPARAM("ZOrder"))
{
}
@@ -966,52 +894,6 @@ void ShapeSortContext::moveShape( sal_Int32 nSourcePos, sal_Int32 nDestPos )
}
}
-void ShapeSortContext::restoreConnections()
-{
- if( !maConnections.empty() )
- {
- uno::Any aAny;
- uno::Reference< beans::XPropertySet > xConnector;
-
- const vector<ConnectionHint>::size_type nCount = maConnections.size();
- for( vector<ConnectionHint>::size_type i = 0; i < nCount; i++ )
- {
- ConnectionHint& rHint = maConnections[i];
- if( mxShapes->getByIndex( rHint.nConnectorIndex ) >>= xConnector )
- {
- uno::Reference< drawing::XShape > xShape( getShapeFromId( rHint.nDestShapeId ) );
- if( xShape.is() )
- {
- aAny <<= xShape;
- xConnector->setPropertyValue( rHint.bStart ? msStartShape : msEndShape, aAny );
- }
-
- aAny <<= rHint.nDestGlueId;
- xConnector->setPropertyValue( rHint.bStart ? msStartGluePointIndex : msEndGluePointIndex, aAny );
- }
- }
- }
-}
-
-void ShapeSortContext::createShapeId( sal_Int32 nId )
-{
- maShapeIdMap[mnCurrentZ] = nId;
-}
-
-uno::Reference< drawing::XShape > ShapeSortContext::getShapeFromId( sal_Int32 nId )
-{
- uno::Reference< drawing::XShape > xShape;
-
- map<sal_Int32,sal_Int32,ltint32>::iterator aIter = maShapeIdMap.find( nId );
- if( aIter != maShapeIdMap.end() )
- {
- uno::Any aAny( mxShapes->getByIndex( maShapeIdMap[nId] ) );
- aAny >>= xShape;
- }
-
- return xShape;
-}
-
void XMLShapeImportHelper::pushGroupForSorting( uno::Reference< drawing::XShapes >& rShapes )
{
mpSortContext = new ShapeSortContext( rShapes, mpSortContext );
@@ -1086,38 +968,66 @@ void XMLShapeImportHelper::shapeWithZIndexAdded( com::sun::star::uno::Reference<
}
}
-void XMLShapeImportHelper::addShapeConnection( com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rConnectorShape,
- sal_Bool bStart,
- sal_Int32 nDestShapeId,
- sal_Int32 nDestGlueId )
+void XMLShapeImportHelper::createShapeId( com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& xShape, sal_Int32 nId )
{
- DBG_ASSERT( mpSortContext, "Connection Shapes are not working without a sort context!" );
- if( mpSortContext )
- {
- ConnectionHint aHint;
- aHint.nConnectorIndex = mpSortContext->mnCurrentZ;
- aHint.bStart = bStart;
- aHint.nDestShapeId = nDestShapeId;
- aHint.nDestGlueId = nDestGlueId;
+ DBG_ASSERT( maShapeIds.find(nId) == maShapeIds.end(), "draw:id imported twice!" );
+ maShapeIds[nId] = xShape;
+}
- mpSortContext->maConnections.push_back( aHint );
+uno::Reference< drawing::XShape > XMLShapeImportHelper::getShapeFromId( sal_Int32 nId )
+{
+ IdShapeMap::iterator aShapeIter( maShapeIds.find( nId ) );
+ if( aShapeIter != maShapeIds.end() )
+ {
+ return (*aShapeIter).second;
+ }
+ else
+ {
+ DBG_ERROR( "unknown draw:id found!" );
+ uno::Reference< drawing::XShape > xShape;
+ return xShape;
}
}
-void XMLShapeImportHelper::createShapeId( sal_Int32 nId )
+void XMLShapeImportHelper::addShapeConnection( com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rConnectorShape,
+ sal_Bool bStart,
+ sal_Int32 nDestShapeId,
+ sal_Int32 nDestGlueId )
{
- /*
- if( mpSortContext )
- mpSortContext->createShapeId( nId );
- */
+ ConnectionHint aHint;
+ aHint.mxConnector = rConnectorShape;
+ aHint.bStart = bStart;
+ aHint.nDestShapeId = nDestShapeId;
+ aHint.nDestGlueId = nDestGlueId;
+
+ maConnections.push_back( aHint );
}
void XMLShapeImportHelper::restoreConnections()
{
- if( mpSortContext )
+ if( !maConnections.empty() )
{
- // restore connections for connection shapes
- // mpSortContext->restoreConnections();
+ uno::Any aAny;
+
+ const vector<ConnectionHint>::size_type nCount = maConnections.size();
+ for( vector<ConnectionHint>::size_type i = 0; i < nCount; i++ )
+ {
+ ConnectionHint& rHint = maConnections[i];
+ uno::Reference< beans::XPropertySet > xConnector( rHint.mxConnector, uno::UNO_QUERY );
+ if( xConnector.is() )
+ {
+ uno::Reference< drawing::XShape > xShape( getShapeFromId( rHint.nDestShapeId ) );
+ if( xShape.is() )
+ {
+ aAny <<= xShape;
+ xConnector->setPropertyValue( rHint.bStart ? msStartShape : msEndShape, aAny );
+ }
+
+ aAny <<= rHint.nDestGlueId;
+ xConnector->setPropertyValue( rHint.bStart ? msStartGluePointIndex : msEndGluePointIndex, aAny );
+ }
+ }
+ maConnections.clear();
}
}
diff --git a/xmloff/source/draw/ximp3dscene.cxx b/xmloff/source/draw/ximp3dscene.cxx
index 12ecffface71..191fa32d23c5 100644
--- a/xmloff/source/draw/ximp3dscene.cxx
+++ b/xmloff/source/draw/ximp3dscene.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximp3dscene.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: aw $ $Date: 2000-12-07 15:15:53 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -148,7 +148,7 @@ SdXML3DLightContext::~SdXML3DLightContext()
//////////////////////////////////////////////////////////////////////////////
-TYPEINIT1( SdXML3DSceneShapeContext, SvXMLImportContext );
+TYPEINIT1( SdXML3DSceneShapeContext, SdXMLShapeContext );
SdXML3DSceneShapeContext::SdXML3DSceneShapeContext(
SvXMLImport& rImport,
@@ -157,7 +157,6 @@ SdXML3DSceneShapeContext::SdXML3DSceneShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mxShapes(rShapes),
mbSetTransform( FALSE ),
mxPrjMode(drawing::ProjectionMode_PERSPECTIVE),
mnDistance(1000),
@@ -179,7 +178,6 @@ SdXML3DSceneShapeContext::SdXML3DSceneShapeContext(
SdXML3DSceneShapeContext::~SdXML3DSceneShapeContext()
{
-
// release remembered light contexts, they are no longer needed
while(maList.Count())
maList.Remove(maList.Count() - 1)->ReleaseRef();
@@ -189,6 +187,16 @@ SdXML3DSceneShapeContext::~SdXML3DSceneShapeContext()
void SdXML3DSceneShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
+ // create new 3DScene shape and add it to rShapes, use it
+ // as base for the new 3DScene import
+ AddShape( "com.sun.star.drawing.Shape3DSceneObject" );
+ if( mxShape.is() )
+ {
+ mxChilds = uno::Reference< drawing::XShapes >::query( mxShape );
+
+ SetSizeAndPosition();
+ }
+
// read attributes for the 3DScene
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for(sal_Int16 i=0; i < nAttrCount; i++)
@@ -317,156 +325,154 @@ void SdXML3DSceneShapeContext::StartElement(const uno::Reference< xml::sax::XAtt
void SdXML3DSceneShapeContext::EndElement()
{
- if(mxShapes.is())
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(mxShapes, uno::UNO_QUERY);
- if(xShape.is())
+ // set local parameters on shape
+/*
+ awt::Point aPoint(mnX, mnY);
+ awt::Size aSize(mnWidth, mnHeight);
+ mxShape->setPosition(aPoint);
+ mxShape->setSize(aSize);
+*/
+
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
{
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
-
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if(xPropSet.is())
+ uno::Any aAny;
+
+ // world transformation
+ if(mbSetTransform)
{
- uno::Any aAny;
+ aAny <<= mxHomMat;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DTransformMatrix")), aAny);
+ }
- // world transformation
- if(mbSetTransform)
- {
- aAny <<= mxHomMat;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DTransformMatrix")), aAny);
- }
+ // projection "D3DScenePerspective" drawing::ProjectionMode
+ aAny <<= mxPrjMode;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DScenePerspective")), aAny);
- // projection "D3DScenePerspective" drawing::ProjectionMode
- aAny <<= mxPrjMode;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DScenePerspective")), aAny);
+ // distance
+ aAny <<= mnDistance;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneDistance")), aAny);
- // distance
- aAny <<= mnDistance;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneDistance")), aAny);
+ // focalLength
+ aAny <<= mnFocalLength;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneFocalLength")), aAny);
- // focalLength
- aAny <<= mnFocalLength;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneFocalLength")), aAny);
+ // shadowSlant
+ aAny <<= (sal_Int16)mnShadowSlant;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneShadowSlant")), aAny);
- // shadowSlant
- aAny <<= (sal_Int16)mnShadowSlant;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneShadowSlant")), aAny);
+ // shadeMode
+ aAny <<= mxShadeMode;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneShadeMode")), aAny);
- // shadeMode
- aAny <<= mxShadeMode;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneShadeMode")), aAny);
+ // ambientColor
+ aAny <<= maAmbientColor.GetColor();
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneAmbientColor")), aAny);
- // ambientColor
- aAny <<= maAmbientColor.GetColor();
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneAmbientColor")), aAny);
+ // lightingMode
+ aAny <<= mbLightingMode;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneTwoSidedLighting")), aAny);
- // lightingMode
- aAny <<= mbLightingMode;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneTwoSidedLighting")), aAny);
+ if(maList.Count())
+ {
+ uno::Any aAny2;
+ uno::Any aAny3;
- if(maList.Count())
+ // set lights
+ for(sal_uInt32 a(0L); a < maList.Count(); a++)
{
- uno::Any aAny2;
- uno::Any aAny3;
-
- // set lights
- for(sal_uInt32 a(0L); a < maList.Count(); a++)
+ SdXML3DLightContext* pCtx = (SdXML3DLightContext*)maList.GetObject(a);
+
+ // set anys
+ aAny <<= pCtx->GetDiffuseColor().GetColor();
+ drawing::Direction3D xLightDir;
+ xLightDir.DirectionX = pCtx->GetDirection().X();
+ xLightDir.DirectionY = pCtx->GetDirection().Y();
+ xLightDir.DirectionZ = pCtx->GetDirection().Z();
+ aAny2 <<= xLightDir;
+ aAny3 <<= pCtx->GetEnabled();
+
+ switch(a)
{
- SdXML3DLightContext* pCtx = (SdXML3DLightContext*)maList.GetObject(a);
-
- // set anys
- aAny <<= pCtx->GetDiffuseColor().GetColor();
- drawing::Direction3D xLightDir;
- xLightDir.DirectionX = pCtx->GetDirection().X();
- xLightDir.DirectionY = pCtx->GetDirection().Y();
- xLightDir.DirectionZ = pCtx->GetDirection().Z();
- aAny2 <<= xLightDir;
- aAny3 <<= pCtx->GetEnabled();
-
- switch(a)
+ case 0:
{
- case 0:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor1")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection1")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn1")), aAny3);
- break;
- }
- case 1:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor2")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection2")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn2")), aAny3);
- break;
- }
- case 2:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor3")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection3")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn3")), aAny3);
- break;
- }
- case 3:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor4")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection4")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn4")), aAny3);
- break;
- }
- case 4:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor5")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection5")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn5")), aAny3);
- break;
- }
- case 5:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor6")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection6")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn6")), aAny3);
- break;
- }
- case 6:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor7")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection7")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn7")), aAny3);
- break;
- }
- case 7:
- {
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor8")), aAny);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection8")), aAny2);
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn8")), aAny3);
- break;
- }
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor1")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection1")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn1")), aAny3);
+ break;
+ }
+ case 1:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor2")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection2")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn2")), aAny3);
+ break;
+ }
+ case 2:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor3")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection3")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn3")), aAny3);
+ break;
+ }
+ case 3:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor4")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection4")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn4")), aAny3);
+ break;
+ }
+ case 4:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor5")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection5")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn5")), aAny3);
+ break;
+ }
+ case 5:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor6")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection6")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn6")), aAny3);
+ break;
+ }
+ case 6:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor7")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection7")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn7")), aAny3);
+ break;
+ }
+ case 7:
+ {
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightColor8")), aAny);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightDirection8")), aAny2);
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DSceneLightOn8")), aAny3);
+ break;
}
}
}
-
- // CameraGeometry and camera settings
- drawing::CameraGeometry aCamGeo;
- aCamGeo.vrp.PositionX = maVRP.X();
- aCamGeo.vrp.PositionY = maVRP.Y();
- aCamGeo.vrp.PositionZ = maVRP.Z();
- aCamGeo.vpn.DirectionX = maVPN.X();
- aCamGeo.vpn.DirectionY = maVPN.Y();
- aCamGeo.vpn.DirectionZ = maVPN.Z();
- aCamGeo.vup.DirectionX = maVUP.X();
- aCamGeo.vup.DirectionY = maVUP.Y();
- aCamGeo.vup.DirectionZ = maVUP.Z();
- aAny <<= aCamGeo;
- xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DCameraGeometry")), aAny);
}
- // call parent
- SvXMLImportContext::EndElement();
+ // CameraGeometry and camera settings
+ drawing::CameraGeometry aCamGeo;
+ aCamGeo.vrp.PositionX = maVRP.X();
+ aCamGeo.vrp.PositionY = maVRP.Y();
+ aCamGeo.vrp.PositionZ = maVRP.Z();
+ aCamGeo.vpn.DirectionX = maVPN.X();
+ aCamGeo.vpn.DirectionY = maVPN.Y();
+ aCamGeo.vpn.DirectionZ = maVPN.Z();
+ aCamGeo.vup.DirectionX = maVUP.X();
+ aCamGeo.vup.DirectionY = maVUP.Y();
+ aCamGeo.vup.DirectionZ = maVUP.Z();
+ aAny <<= aCamGeo;
+ xPropSet->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("D3DCameraGeometry")), aAny);
}
+
+ // call parent
+ SdXMLShapeContext::EndElement();
}
}
@@ -497,7 +503,7 @@ SvXMLImportContext* SdXML3DSceneShapeContext::CreateChildContext( USHORT nPrefix
if(!pContext)
{
pContext = GetImport().GetShapeImport()->Create3DSceneChildContext(
- GetImport(), nPrefix, rLocalName, xAttrList, mxShapes);
+ GetImport(), nPrefix, rLocalName, xAttrList, mxChilds);
}
// call parent when no own context was created
diff --git a/xmloff/source/draw/ximp3dscene.hxx b/xmloff/source/draw/ximp3dscene.hxx
index 7e75838ec89c..278a2752d0c5 100644
--- a/xmloff/source/draw/ximp3dscene.hxx
+++ b/xmloff/source/draw/ximp3dscene.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximp3dscene.hxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: cl $ $Date: 2000-12-05 23:25:00 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -139,17 +139,12 @@ class SdXML3DSceneShapeContext : public SdXMLShapeContext
{
// the shape group this group is working on
// this is the scene at the same time
- com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes;
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxChilds;
// list for local light contexts
Imp3DLightList maList;
// local parameters which need to be read
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
-
com::sun::star::drawing::HomogenMatrix mxHomMat;
BOOL mbSetTransform;
@@ -173,7 +168,7 @@ class SdXML3DSceneShapeContext : public SdXMLShapeContext
protected:
void SetLocalShapesContext(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rNew)
- { mxShapes = rNew; }
+ { mxChilds = rNew; }
public:
TYPEINFO();
diff --git a/xmloff/source/draw/ximpbody.cxx b/xmloff/source/draw/ximpbody.cxx
index 7881fa388949..00ff781f5083 100644
--- a/xmloff/source/draw/ximpbody.cxx
+++ b/xmloff/source/draw/ximpbody.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpbody.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 08:00:05 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -118,7 +118,7 @@ SdXMLDrawPageContext::SdXMLDrawPageContext( SdXMLImport& rImport,
USHORT nPrfx, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLGroupShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
+: SdXMLGenericPageContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
{
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
@@ -336,14 +336,14 @@ SvXMLImportContext *SdXMLDrawPageContext::CreateChildContext( USHORT nPrefix,
// call parent when no own context was created
if(!pContext)
- pContext = SdXMLGroupShapeContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
+ pContext = SdXMLGenericPageContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
return pContext;
}
void SdXMLDrawPageContext::EndElement()
{
- SdXMLGroupShapeContext::EndElement();
+ SdXMLGenericPageContext::EndElement();
GetImport().GetShapeImport()->restoreConnections();
}
diff --git a/xmloff/source/draw/ximpbody.hxx b/xmloff/source/draw/ximpbody.hxx
index a546905e7c53..46c7af6eaa0e 100644
--- a/xmloff/source/draw/ximpbody.hxx
+++ b/xmloff/source/draw/ximpbody.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpbody.hxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 08:00:05 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,14 +74,14 @@
#include "nmspmap.hxx"
#endif
-#ifndef _XIMPGROUP_HXX
-#include "ximpgrp.hxx"
+#ifndef _XIMPPAGE_HXX
+#include "ximppage.hxx"
#endif
//////////////////////////////////////////////////////////////////////////////
// draw:page context
-class SdXMLDrawPageContext : public SdXMLGroupShapeContext
+class SdXMLDrawPageContext : public SdXMLGenericPageContext
{
rtl::OUString maName;
rtl::OUString maStyleName;
diff --git a/xmloff/source/draw/ximpgrp.cxx b/xmloff/source/draw/ximpgrp.cxx
index 2a7dbb1161a4..fc3332e1452c 100644
--- a/xmloff/source/draw/ximpgrp.cxx
+++ b/xmloff/source/draw/ximpgrp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpgrp.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: cl $ $Date: 2000-11-23 18:25:49 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -81,10 +81,8 @@ SdXMLGroupShapeContext::SdXMLGroupShapeContext(
USHORT nPrfx, const OUString& rLocalName,
const uno::Reference< xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mxShapes( rShapes )
+: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
{
- GetImport().GetShapeImport()->pushGroupForSorting( rShapes );
}
//////////////////////////////////////////////////////////////////////////////
@@ -103,7 +101,7 @@ SvXMLImportContext* SdXMLGroupShapeContext::CreateChildContext( USHORT nPrefix,
// call GroupChildContext function at common ShapeImport
pContext = GetImport().GetShapeImport()->CreateGroupChildContext(
- GetImport(), nPrefix, rLocalName, xAttrList, mxShapes);
+ GetImport(), nPrefix, rLocalName, xAttrList, mxChilds);
// call parent when no own context was created
if(!pContext)
@@ -115,9 +113,30 @@ SvXMLImportContext* SdXMLGroupShapeContext::CreateChildContext( USHORT nPrefix,
//////////////////////////////////////////////////////////////////////////////
+void SdXMLGroupShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
+{
+ // create new group shape and add it to rShapes, use it
+ // as base for the new group import
+ AddShape( "com.sun.star.drawing.GroupShape" );
+ SdXMLShapeContext::StartElement(xAttrList);
+
+ if(mxShape.is())
+ {
+ SdXMLShapeContext::StartElement(xAttrList);
+ mxChilds = uno::Reference< drawing::XShapes >::query( mxShape );
+ if( mxChilds.is() )
+ GetImport().GetShapeImport()->pushGroupForSorting( mxChilds );
+ }
+
+ GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
void SdXMLGroupShapeContext::EndElement()
{
- GetImport().GetShapeImport()->popGroupAndSort();
+ if( mxChilds.is() )
+ GetImport().GetShapeImport()->popGroupAndSort();
}
diff --git a/xmloff/source/draw/ximpgrp.hxx b/xmloff/source/draw/ximpgrp.hxx
index 1d9731016ec4..2ee1f78f143d 100644
--- a/xmloff/source/draw/ximpgrp.hxx
+++ b/xmloff/source/draw/ximpgrp.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpgrp.hxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cl $ $Date: 2000-12-05 23:25:41 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -92,7 +92,7 @@
class SdXMLGroupShapeContext : public SdXMLShapeContext
{
// the shape group this group is working on
- com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes;
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxChilds;
protected:
void SetLocalShapesContext(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rNew)
@@ -109,6 +109,7 @@ public:
virtual SvXMLImportContext *CreateChildContext(
USHORT 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();
const com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& GetLocalShapesContext() const
diff --git a/xmloff/source/draw/ximpnote.cxx b/xmloff/source/draw/ximpnote.cxx
index 7c8a92502791..1cb2256b1e54 100644
--- a/xmloff/source/draw/ximpnote.cxx
+++ b/xmloff/source/draw/ximpnote.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpnote.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 08:00:05 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -78,7 +78,7 @@ SdXMLNotesContext::SdXMLNotesContext( SdXMLImport& rImport,
USHORT nPrfx, const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLGroupShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
+: SdXMLGenericPageContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
mbNotesMode(FALSE)
{
if(GetSdImport().IsImpress())
@@ -144,7 +144,7 @@ SvXMLImportContext *SdXMLNotesContext::CreateChildContext( USHORT nPrefix,
// call parent when no own context was created
if(!pContext)
- pContext = SdXMLGroupShapeContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
+ pContext = SdXMLGenericPageContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
return pContext;
}
@@ -159,8 +159,7 @@ SvXMLImportContext *SdXMLNotesContext::CreateChildContext( USHORT nPrefix,
void SdXMLNotesContext::EndElement()
{
- SdXMLGroupShapeContext::EndElement();
- GetImport().GetShapeImport()->restoreConnections();
+ SdXMLGenericPageContext::EndElement();
}
diff --git a/xmloff/source/draw/ximpnote.hxx b/xmloff/source/draw/ximpnote.hxx
index 6c512a618f22..ffc0bfcac3d7 100644
--- a/xmloff/source/draw/ximpnote.hxx
+++ b/xmloff/source/draw/ximpnote.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpnote.hxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cl $ $Date: 2000-12-05 23:25:41 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,14 +74,14 @@
#include "nmspmap.hxx"
#endif
-#ifndef _XIMPGROUP_HXX
-#include "ximpgrp.hxx"
+#ifndef _XIMPPAGE_HXX
+#include "ximppage.hxx"
#endif
//////////////////////////////////////////////////////////////////////////////
// presentation:notes context
-class SdXMLNotesContext : public SdXMLGroupShapeContext
+class SdXMLNotesContext : public SdXMLGenericPageContext
{
BOOL mbNotesMode;
diff --git a/xmloff/source/draw/ximppage.cxx b/xmloff/source/draw/ximppage.cxx
new file mode 100644
index 000000000000..8374cfa23f76
--- /dev/null
+++ b/xmloff/source/draw/ximppage.cxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: ximppage.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: cl $ $Date: 2000-12-13 19:16:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _XIMPPAGE_HXX
+#include "ximppage.hxx"
+#endif
+
+#ifndef _XIMPSHAPE_HXX
+#include "ximpshap.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+TYPEINIT1( SdXMLGenericPageContext, SvXMLImportContext );
+
+SdXMLGenericPageContext::SdXMLGenericPageContext(
+ SvXMLImport& rImport,
+ USHORT nPrfx, const OUString& rLocalName,
+ const uno::Reference< xml::sax::XAttributeList>& xAttrList,
+ uno::Reference< drawing::XShapes >& rShapes)
+: SvXMLImportContext( rImport, nPrfx, rLocalName ),
+ mxShapes( rShapes )
+{
+ GetImport().GetShapeImport()->pushGroupForSorting( rShapes );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+SdXMLGenericPageContext::~SdXMLGenericPageContext()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+SvXMLImportContext* SdXMLGenericPageContext::CreateChildContext( USHORT nPrefix,
+ const OUString& rLocalName,
+ const uno::Reference< xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext* pContext = 0L;
+
+ // call GroupChildContext function at common ShapeImport
+ pContext = GetImport().GetShapeImport()->CreateGroupChildContext(
+ GetImport(), nPrefix, rLocalName, xAttrList, mxShapes);
+
+ // call parent when no own context was created
+ if(!pContext)
+ pContext = SvXMLImportContext::CreateChildContext(
+ nPrefix, rLocalName, xAttrList);
+
+ return pContext;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLGenericPageContext::EndElement()
+{
+ GetImport().GetShapeImport()->popGroupAndSort();
+}
+
+
diff --git a/xmloff/source/draw/ximppage.hxx b/xmloff/source/draw/ximppage.hxx
new file mode 100644
index 000000000000..6e50092e48f6
--- /dev/null
+++ b/xmloff/source/draw/ximppage.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: ximppage.hxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: cl $ $Date: 2000-12-13 19:16:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XIMPPAGE_HXX
+#define _XIMPPAGE_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include "xmlictxt.hxx"
+#endif
+
+#ifndef _SDXMLIMP_IMPL_HXX
+#include "sdxmlimp_impl.hxx"
+#endif
+
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include "nmspmap.hxx"
+#endif
+
+#ifndef _COM_SUN_STAR_DRAWING_XSHAPES_HPP_
+#include <com/sun/star/drawing/XShapes.hpp>
+#endif
+
+#ifndef _RTTI_HXX
+#include <tools/rtti.hxx>
+#endif
+
+#ifndef _XIMPSHAPE_HXX
+#include "ximpshap.hxx"
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// draw:g context (RECURSIVE)
+
+class SdXMLGenericPageContext : public SvXMLImportContext
+{
+ // the shape group this group is working on
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes;
+
+protected:
+ void SetLocalShapesContext(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rNew)
+ { mxShapes = rNew; }
+
+public:
+ TYPEINFO();
+
+ SdXMLGenericPageContext( SvXMLImport& rImport, USHORT 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 ~SdXMLGenericPageContext();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ USHORT nPrefix, const rtl::OUString& rLocalName,
+ const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
+ virtual void EndElement();
+
+ const com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& GetLocalShapesContext() const
+ { return mxShapes; }
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& GetLocalShapesContext()
+ { return mxShapes; }
+};
+
+
+#endif // _XIMPGROUP_HXX
diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx
index 99077a5be0fe..55c67eba467d 100644
--- a/xmloff/source/draw/ximpshap.cxx
+++ b/xmloff/source/draw/ximpshap.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpshap.cxx,v $
*
- * $Revision: 1.14 $
+ * $Revision: 1.15 $
*
- * last change: $Author: cl $ $Date: 2000-12-06 16:53:44 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -142,65 +142,10 @@ SdXMLShapeContext::SdXMLShapeContext(
mbIsPlaceholder(FALSE),
mbIsUserTransformed(FALSE),
mxAttrList(xAttrList),
- mnZOrder(-1)
+ mnZOrder(-1),
+ mnShapeId(-1),
+ maSize( 1, 1 )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_SHAPE_NAME:
- {
- maShapeName = sValue;
- break;
- }
- case XML_TOK_SHAPE_IS_USER_TRANSFORMED:
- {
- if(sValue.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true))))
- mbIsUserTransformed = TRUE;
- break;
- }
- case XML_TOK_SHAPE_IS_PLACEHOLDER:
- {
- if(sValue.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true))))
- mbIsPlaceholder = TRUE;
- break;
- }
- case XML_TOK_SHAPE_DRAWSTYLE_NAME_GRAPHICS:
- {
- maDrawStyleName = sValue;
- break;
- }
- case XML_TOK_SHAPE_PRESENTATION_CLASS:
- {
- maPresentationClass = sValue;
- break;
- }
- case XML_TOK_SHAPE_DRAWSTYLE_NAME_PRESENTATION:
- {
- maDrawStyleName = sValue;
- mnStyleFamily = XML_STYLE_FAMILY_SD_PRESENTATION_ID;
- break;
- }
- case XML_TOK_SHAPE_TRANSFORM:
- {
- SdXMLImExTransform2D aTransform(sValue, GetImport().GetMM100UnitConverter());
- if(aTransform.NeedsAction())
- {
- double fVal(0.0);
- if(aTransform.FindRotate(fVal) && fVal != 0.0)
- mnRotate = (sal_Int32)(fVal * 100.0);
- }
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -264,18 +209,7 @@ SvXMLImportContext *SdXMLShapeContext::CreateChildContext( USHORT nPrefix,
void SdXMLShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
- // set parameters on shape
- if(mnRotate != 0L)
- {
- uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
- if(xPropSet.is())
- {
- uno::Any aAny;
- aAny <<= mnRotate;
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("RotateAngle")), aAny);
- }
- }
+ GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
//////////////////////////////////////////////////////////////////////////////
@@ -294,8 +228,58 @@ void SdXMLShapeContext::AddShape(uno::Reference< drawing::XShape >& xShape)
xNamed->setName( maShapeName );
}
- GetImport().GetShapeImport()->addShape( xShape, mxAttrList, mxShapes );
- GetImport().GetShapeImport()->shapeWithZIndexAdded( xShape, mnZOrder );
+ UniReference< XMLShapeImportHelper > xImp( GetImport().GetShapeImport() );
+ xImp->addShape( xShape, mxAttrList, mxShapes );
+ xImp->shapeWithZIndexAdded( xShape, mnZOrder );
+
+ if( mnShapeId != -1 )
+ xImp->createShapeId( xShape, mnShapeId );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLShapeContext::AddShape(const char* pServiceName )
+{
+ uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
+ if(xServiceFact.is())
+ {
+ uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(OUString::createFromAscii(pServiceName)), uno::UNO_QUERY);
+ if( xShape.is() )
+ AddShape( xShape );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLShapeContext::SetSize()
+{
+ if( mxShape.is() )
+ mxShape->setSize(maSize);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLShapeContext::SetPosition()
+{
+ if( mxShape.is() )
+ mxShape->setPosition(maPosition);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLShapeContext::SetRotation()
+{
+ if(mnRotate != 0L)
+ {
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
+ {
+ uno::Any aAny;
+ aAny <<= mnRotate;
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("RotateAngle")), aAny);
+ }
}
}
@@ -359,9 +343,66 @@ void SdXMLShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUStr
{
mnZOrder = rValue.toInt32();
}
- if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_id)) )
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_id)) )
+ {
+ mnShapeId = rValue.toInt32();
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_name)) )
+ {
+ maShapeName = rValue;
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_style_name)) )
{
- GetImport().GetShapeImport()->createShapeId( rValue.toInt32() );
+ maDrawStyleName = rValue;
+ }
+ }
+ else if( XML_NAMESPACE_PRESENTATION == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_user_transformed)) )
+ {
+ mbIsUserTransformed = rValue.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_true));
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_placeholder)) )
+ {
+ mbIsPlaceholder = rValue.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_true));
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_class)) )
+ {
+ maPresentationClass = rValue;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_style_name)) )
+ {
+ maDrawStyleName = rValue;
+ mnStyleFamily = XML_STYLE_FAMILY_SD_PRESENTATION_ID;
+ }
+ }
+ else if( XML_NAMESPACE_SVG == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(maPosition.X, rValue);
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(maPosition.Y, rValue);
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_width)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(maSize.Width, rValue);
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_height)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(maSize.Height, rValue);
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_transform)) )
+ {
+ SdXMLImExTransform2D aTransform(rValue, GetImport().GetMM100UnitConverter());
+ if(aTransform.NeedsAction())
+ {
+ double fVal(0.0);
+ if(aTransform.FindRotate(fVal) && fVal != 0.0)
+ mnRotate = (sal_Int32)(fVal * 100.0);
+ }
}
}
}
@@ -378,50 +419,8 @@ SdXMLRectShapeContext::SdXMLRectShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L ),
mnRadius( 0L )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetRectShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_RECTSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_CORNER_RADIUS:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnRadius, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -432,43 +431,49 @@ SdXMLRectShapeContext::~SdXMLRectShapeContext()
//////////////////////////////////////////////////////////////////////////////
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLRectShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
+{
+ if( XML_NAMESPACE_DRAW == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_corner_radius)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnRadius, rValue);
+ return;
+ }
+ }
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
void SdXMLRectShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create rectangle shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ AddShape("com.sun.star.drawing.RectangleShape");
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.RectangleShape"))),
- uno::UNO_QUERY);
- if(xShape.is())
- {
- // Add, set Style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ // Add, set Style and properties from base shape
+ SetStyle();
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
+ // set local parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
- if(mnRadius)
+ if(mnRadius)
+ {
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
{
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if(xPropSet.is())
- {
- uno::Any aAny;
- aAny <<= mnRadius;
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("CornerRadius")), aAny);
- }
+ uno::Any aAny;
+ aAny <<= mnRadius;
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("CornerRadius")), aAny);
}
}
+ SdXMLShapeContext::StartElement(xAttrList);
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -488,39 +493,6 @@ SdXMLLineShapeContext::SdXMLLineShapeContext(
mnX2( 1L ),
mnY2( 1L )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetLineShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_LINESHAPE_X1:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX1, sValue);
- break;
- }
- case XML_TOK_LINESHAPE_Y1:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY1, sValue);
- break;
- }
- case XML_TOK_LINESHAPE_X2:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX2, sValue);
- break;
- }
- case XML_TOK_LINESHAPE_Y2:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY2, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -531,43 +503,68 @@ SdXMLLineShapeContext::~SdXMLLineShapeContext()
//////////////////////////////////////////////////////////////////////////////
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLLineShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
+{
+ if( XML_NAMESPACE_SVG == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x1)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnX1, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y1)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnY1, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x2)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnX2, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y2)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnY2, rValue);
+ return;
+ }
+ }
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
void SdXMLLineShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create rectangle shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ AddShape("com.sun.star.drawing.LineShape");
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.LineShape"))), uno::UNO_QUERY);
- if(xShape.is())
- {
- // Add, set Style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ // Add, set Style and properties from base shape
+ SetStyle();
- // set local parameters on shape
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if(xPropSet.is())
- {
- drawing::PointSequenceSequence aPolyPoly(1L);
- drawing::PointSequence* pOuterSequence = aPolyPoly.getArray();
- pOuterSequence->realloc(2L);
- awt::Point* pInnerSequence = pOuterSequence->getArray();
- uno::Any aAny;
+ // set local parameters on shape
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
+ {
+ drawing::PointSequenceSequence aPolyPoly(1L);
+ drawing::PointSequence* pOuterSequence = aPolyPoly.getArray();
+ pOuterSequence->realloc(2L);
+ awt::Point* pInnerSequence = pOuterSequence->getArray();
+ uno::Any aAny;
- *pInnerSequence = awt::Point( mnX1, mnY1 );
- pInnerSequence++;
- *pInnerSequence = awt::Point( mnX2, mnY2 );
+ *pInnerSequence = awt::Point( mnX1, mnY1 );
+ pInnerSequence++;
+ *pInnerSequence = awt::Point( mnX2, mnY2 );
- aAny <<= aPolyPoly;
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
- }
+ aAny <<= aPolyPoly;
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
}
- }
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -587,46 +584,6 @@ SdXMLEllipseShapeContext::SdXMLEllipseShapeContext(
mnRX( 1L ),
mnRY( 1L )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetEllipseShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_ELLIPSESHAPE_CX:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnCX, sValue);
- break;
- }
- case XML_TOK_ELLIPSESHAPE_CY:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnCY, sValue);
- break;
- }
- case XML_TOK_ELLIPSESHAPE_RX:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnRX, sValue);
- break;
- }
- case XML_TOK_ELLIPSESHAPE_RY:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnRY, sValue);
- break;
- }
- case XML_TOK_ELLIPSESHAPE_R:
- {
- // single radius, it's a circle and both radii are the same
- GetImport().GetMM100UnitConverter().convertMeasure(mnRX, sValue);
- mnRY = mnRX;
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -637,31 +594,64 @@ SdXMLEllipseShapeContext::~SdXMLEllipseShapeContext()
//////////////////////////////////////////////////////////////////////////////
-void SdXMLEllipseShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLEllipseShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
{
- // create rectangle shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ if( XML_NAMESPACE_SVG == nPrefix )
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.EllipseShape"))),
- uno::UNO_QUERY);
- if(xShape.is())
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_rx)) )
{
- // Add, set Style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
-
- // set local parameters on shape
- awt::Point aPoint(mnCX - mnRX, mnCY - mnRY);
- awt::Size aSize(mnRX + mnRX, mnRY + mnRY);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
+ GetImport().GetMM100UnitConverter().convertMeasure(mnRX, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_ry)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnRY, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_cx)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnCX, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_cy)) )
+ {
+ GetImport().GetMM100UnitConverter().convertMeasure(mnCY, rValue);
+ return;
+ }
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_r)) )
+ {
+ // single radius, it's a circle and both radii are the same
+ GetImport().GetMM100UnitConverter().convertMeasure(mnRX, rValue);
+ mnRY = mnRX;
+ return;
}
}
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLEllipseShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
+{
+ // create rectangle shape
+ AddShape("com.sun.star.drawing.EllipseShape");
+ if(mxShape.is())
+ {
+ // Add, set Style and properties from base shape
+ SetStyle();
+
+ // set local parameters on shape
+ awt::Point aPoint(mnCX - mnRX, mnCY - mnRY);
+ awt::Size aSize(mnRX + mnRX, mnRY + mnRY);
+ mxShape->setPosition(aPoint);
+ mxShape->setSize(aSize);
+
+ SetRotation();
+
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -676,55 +666,33 @@ SdXMLPolygonShapeContext::SdXMLPolygonShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes, sal_Bool bClosed)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L ),
mbClosed( bClosed )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetPolygonShapeAttrTokenMap();
+}
+
+//////////////////////////////////////////////////////////////////////////////
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLPolygonShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
+{
+ if( XML_NAMESPACE_SVG == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_viewBox)) )
{
- case XML_TOK_POLYGONSHAPE_VIEWBOX:
- {
- maViewBox = sValue;
- break;
- }
- case XML_TOK_POLYGONSHAPE_POINTS:
- {
- maPoints = sValue;
- break;
- }
- case XML_TOK_POLYGONSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_POLYGONSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_POLYGONSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_POLYGONSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
+ maViewBox = rValue;
+ return;
+ }
+ }
+ else if( XML_NAMESPACE_DRAW == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_points)) )
+ {
+ maPoints = rValue;
+ return;
}
}
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
}
//////////////////////////////////////////////////////////////////////////////
@@ -737,48 +705,35 @@ SdXMLPolygonShapeContext::~SdXMLPolygonShapeContext()
void SdXMLPolygonShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
- // create rectangle shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // Add, set Style and properties from base shape
+ AddShape("com.sun.star.drawing.PolyLineShape");
+ if( mxShape.is() )
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- mbClosed ? OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PolyPolygonShape"))
- : OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PolyLineShape"))),
- uno::UNO_QUERY);
- if(xShape.is())
- {
- // Add, set Style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
-
- // set local parameters on shape
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if(xPropSet.is())
- {
- // set parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- uno::Any aAny;
+ SetStyle();
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
+ // set parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
- // set polygon
- if(maPoints.getLength() && maViewBox.getLength())
- {
- SdXMLImExViewBox aViewBox(maViewBox, GetImport().GetMM100UnitConverter());
- SdXMLImExPointsElement aPoints(maPoints, aViewBox, aPoint, aSize, GetImport().GetMM100UnitConverter());
+ // set local parameters on shape
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
+ {
+ // set polygon
+ if(maPoints.getLength() && maViewBox.getLength())
+ {
+ SdXMLImExViewBox aViewBox(maViewBox, GetImport().GetMM100UnitConverter());
+ SdXMLImExPointsElement aPoints(maPoints, aViewBox, maPosition, maSize, GetImport().GetMM100UnitConverter());
- aAny <<= aPoints.GetPointSequenceSequence();
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
- }
+ uno::Any aAny;
+ aAny <<= aPoints.GetPointSequenceSequence();
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
}
}
- }
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -793,55 +748,8 @@ SdXMLPathShapeContext::SdXMLPathShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L ),
mbClosed( TRUE )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetPathShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_PATHSHAPE_VIEWBOX:
- {
- maViewBox = sValue;
- break;
- }
- case XML_TOK_PATHSHAPE_D:
- {
- maD = sValue;
- break;
- }
- case XML_TOK_PATHSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_PATHSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_PATHSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_PATHSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -852,99 +760,102 @@ SdXMLPathShapeContext::~SdXMLPathShapeContext()
//////////////////////////////////////////////////////////////////////////////
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLPathShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
+{
+ if( XML_NAMESPACE_SVG == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_viewBox)) )
+ {
+ maViewBox = rValue;
+ return;
+ }
+ else if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_d)) )
+ {
+ maD = rValue;
+ return;
+ }
+ }
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
void SdXMLPathShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create polygon shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ if(maD.getLength())
{
- if(maD.getLength())
- {
- // prepare some of the parameters
- uno::Reference< drawing::XShape > xShape;
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- SdXMLImExViewBox aViewBox(maViewBox, GetImport().GetMM100UnitConverter());
- SdXMLImExSvgDElement aPoints(maD, aViewBox, aPoint, aSize, GetImport().GetMM100UnitConverter());
+ // prepare some of the parameters
+ SdXMLImExViewBox aViewBox(maViewBox, GetImport().GetMM100UnitConverter());
+ SdXMLImExSvgDElement aPoints(maD, aViewBox, maPosition, maSize, GetImport().GetMM100UnitConverter());
- // now create shape
- if(aPoints.IsCurve())
+ char* pService;
+ // now create shape
+ if(aPoints.IsCurve())
+ {
+ if(aPoints.IsClosed())
{
- if(aPoints.IsClosed())
- {
- xShape = uno::Reference< drawing::XShape > (
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ClosedBezierShape"))),
- uno::UNO_QUERY);
- }
- else
- {
- xShape = uno::Reference< drawing::XShape > (
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.OpenBezierShape"))),
- uno::UNO_QUERY);
- }
+ pService = "com.sun.star.drawing.ClosedBezierShape";
}
else
{
- if(aPoints.IsClosed())
- {
- xShape = uno::Reference< drawing::XShape > (
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PolyPolygonShape"))),
- uno::UNO_QUERY);
- }
- else
- {
- xShape = uno::Reference< drawing::XShape > (
- xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PolyLineShape"))),
- uno::UNO_QUERY);
- }
+ pService = "com.sun.star.drawing.OpenBezierShape";
}
+ }
+ else
+ {
+ if(aPoints.IsClosed())
+ {
+ pService = "com.sun.star.drawing.PolyPolygonShape";
+ }
+ else
+ {
+ pService = "com.sun.star.drawing.PolyLineShape";
+ }
+ }
- if(xShape.is())
+ // Add, set Style and properties from base shape
+ AddShape(pService);
+ if( mxShapes.is() )
+ {
+ SetStyle();
+
+ // set parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
+
+ // set local parameters on shape
+ uno::Reference< beans::XPropertySet > xPropSet(mxShape, uno::UNO_QUERY);
+ if(xPropSet.is())
{
- // Add, set Style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
-
- // set local parameters on shape
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if(xPropSet.is())
- {
- uno::Any aAny;
+ uno::Any aAny;
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
+ // set svg:d
+ if(maD.getLength())
+ {
+ if(aPoints.IsCurve())
+ {
+ drawing::PolyPolygonBezierCoords aSourcePolyPolygon(
+ aPoints.GetPointSequenceSequence(),
+ aPoints.GetFlagSequenceSequence());
- // set svg:d
- if(maD.getLength())
+ aAny <<= aSourcePolyPolygon;
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygonBezier")), aAny);
+ }
+ else
{
- if(aPoints.IsCurve())
- {
- drawing::PolyPolygonBezierCoords aSourcePolyPolygon(
- aPoints.GetPointSequenceSequence(),
- aPoints.GetFlagSequenceSequence());
-
- aAny <<= aSourcePolyPolygon;
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygonBezier")), aAny);
- }
- else
- {
- aAny <<= aPoints.GetPointSequenceSequence();
- xPropSet->setPropertyValue(
- OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
- }
+ aAny <<= aPoints.GetPointSequenceSequence();
+ xPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygon")), aAny);
}
}
}
+ SdXMLShapeContext::StartElement(xAttrList);
}
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -958,45 +869,8 @@ SdXMLTextBoxShapeContext::SdXMLTextBoxShapeContext(
const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L )
+: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetTextBoxShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_TEXTBOXSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_TEXTBOXSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_TEXTBOXSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_TEXTBOXSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -1010,89 +884,76 @@ SdXMLTextBoxShapeContext::~SdXMLTextBoxShapeContext()
void SdXMLTextBoxShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create textbox shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
- {
- uno::Reference< drawing::XShape > xShape;
- sal_Bool bIsPresShape(FALSE);
+ sal_Bool bIsPresShape(FALSE);
+
+ char *pService;
- if(maPresentationClass.getLength())
+ if(maPresentationClass.getLength())
+ {
+ if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_subtitle))))
{
- if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_subtitle))))
- {
- // XmlShapeTypePresSubtitleShape
- xShape = uno::Reference< drawing::XShape > (xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.SubtitleShape"))), uno::UNO_QUERY);
- bIsPresShape = TRUE;
- }
- else if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_title))))
- {
- // XmlShapeTypePresTitleTextShape
- xShape = uno::Reference< drawing::XShape > (xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.TitleTextShape"))), uno::UNO_QUERY);
- bIsPresShape = TRUE;
- }
- else if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_outline))))
- {
- // XmlShapeTypePresOutlinerShape
- xShape = uno::Reference< drawing::XShape > (xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OutlinerShape"))), uno::UNO_QUERY);
- bIsPresShape = TRUE;
- }
- else if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_notes))))
- {
- // XmlShapeTypePresNotesShape
- xShape = uno::Reference< drawing::XShape > (xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.NotesShape"))), uno::UNO_QUERY);
- bIsPresShape = TRUE;
- }
+ // XmlShapeTypePresSubtitleShape
+ pService = "com.sun.star.presentation.SubtitleShape";
}
- else
+ else if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_outline))))
{
- // normal text shape
- xShape = uno::Reference< drawing::XShape > (xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.TextShape"))), uno::UNO_QUERY);
+ // XmlShapeTypePresOutlinerShape
+ pService = "com.sun.star.presentation.OutlinerShape";
}
-
- if(xShape.is())
+ else if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_notes))))
{
- // Add, set Style and properties from base shape
- AddShape(xShape);
+ // XmlShapeTypePresNotesShape
+ pService = "com.sun.star.presentation.NotesShape";
+ }
+ else // if(maPresentationClass.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_presentation_title))))
+ {
+ // XmlShapeTypePresTitleTextShape
+ pService = "com.sun.star.presentation.TitleTextShape";
+ }
+ bIsPresShape = TRUE;
+ }
+ else
+ {
+ // normal text shape
+ pService = "com.sun.star.drawing.TextShape";
+ }
+
+ // Add, set Style and properties from base shape
+ AddShape(pService);
+
+ if( mxShape.is() )
+ {
+ SetStyle();
- if(bIsPresShape)
+ if(bIsPresShape)
+ {
+ uno::Reference< beans::XPropertySet > xProps(mxShape, uno::UNO_QUERY);
+ if(xProps.is())
{
- uno::Reference< beans::XPropertySet > xProps(xShape, uno::UNO_QUERY);
- if(xProps.is())
+ uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
+ if( xPropsInfo.is() )
{
- uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
- if( xPropsInfo.is() )
- {
- if( !mbIsPlaceholder && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
+ if( !mbIsPlaceholder && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
- if( mbIsUserTransformed && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsPlaceholderDependent") )))
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsPlaceholderDependent") ), ::cppu::bool2any( sal_False ) );
- }
+ if( mbIsUserTransformed && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsPlaceholderDependent") )))
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsPlaceholderDependent") ), ::cppu::bool2any( sal_False ) );
}
}
+ }
- SetStyle();
+ // set parameters on shape
+ if(!bIsPresShape || mbIsUserTransformed)
+ {
+ // set pos and size on shape, this should remove binding
+ // to pres object on masterpage
+ SetSizeAndPosition();
+ }
- SdXMLShapeContext::StartElement(xAttrList);
+ SetRotation();
- if(!bIsPresShape || mbIsUserTransformed)
- {
- // set pos and size on shape, this should remove binding
- // to pres object on masterpage
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
- }
- }
+ SdXMLShapeContext::StartElement(xAttrList);
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1106,45 +967,8 @@ SdXMLControlShapeContext::SdXMLControlShapeContext(
const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L )
+: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetControlShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_CONTROLSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_CONTROLSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_CONTROLSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_CONTROLSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -1158,27 +982,18 @@ SdXMLControlShapeContext::~SdXMLControlShapeContext()
void SdXMLControlShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create Control shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // add, set style and properties from base shape
+ AddShape("com.sun.star.drawing.ControlShape");
+ if( mxShape.is() )
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ControlShape"))), uno::UNO_QUERY);
- if(xShape.is())
- {
- // add, set style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ SetStyle();
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
- }
- }
+ // set parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1224,22 +1039,22 @@ void SdXMLConnectorShapeContext::processAttribute( sal_uInt16 nPrefix, const ::r
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_start_shape)) )
{
mnStartShapeId = rValue.toInt32();
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_start_glue_point)) )
{
mnStartGlueId = rValue.toInt32();
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_end_shape)) )
{
mnEndShapeId = rValue.toInt32();
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_end_glue_point)) )
{
mnEndGlueId = rValue.toInt32();
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_line_skew)) )
{
@@ -1257,12 +1072,12 @@ void SdXMLConnectorShapeContext::processAttribute( sal_uInt16 nPrefix, const ::r
}
}
}
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_type)) )
{
SvXMLUnitConverter::convertEnum( mnType, rValue, aXML_ConnectionKind_EnumMap );
- break;
+ return;
}
}
case XML_NAMESPACE_SVG:
@@ -1270,25 +1085,27 @@ void SdXMLConnectorShapeContext::processAttribute( sal_uInt16 nPrefix, const ::r
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x1)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maStart.X, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y1)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maStart.Y, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x2)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maEnd.X, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y2)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maEnd.Y, rValue);
- break;
+ return;
}
}
}
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
}
//////////////////////////////////////////////////////////////////////////////
@@ -1296,50 +1113,42 @@ void SdXMLConnectorShapeContext::processAttribute( sal_uInt16 nPrefix, const ::r
void SdXMLConnectorShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create Connector shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // add, set style and properties from base shape
+ AddShape("com.sun.star.drawing.ConnectorShape");
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ConnectorShape"))), uno::UNO_QUERY);
- if(xShape.is())
+ // add connection ids
+ if( mnStartShapeId != -1 )
+ GetImport().GetShapeImport()->addShapeConnection( mxShape, sal_True, mnStartShapeId, mnStartGlueId );
+ if( mnEndShapeId != -1 )
+ GetImport().GetShapeImport()->addShapeConnection( mxShape, sal_False, mnEndShapeId, mnEndGlueId );
+
+ uno::Reference< beans::XPropertySet > xProps( mxShape, uno::UNO_QUERY );
+ if( xProps.is() )
{
- // add connection ids
- if( mnStartShapeId != -1 )
- GetImport().GetShapeImport()->addShapeConnection( xShape, sal_True, mnStartShapeId, mnStartGlueId );
- if( mnEndShapeId != -1 )
- GetImport().GetShapeImport()->addShapeConnection( xShape, sal_False, mnEndShapeId, mnEndGlueId );
-
- // add, set style and properties from base shape
- AddShape(xShape);
-
- uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY );
- if( xProps.is() )
- {
- uno::Any aAny;
- aAny <<= maStart;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("StartPosition")), aAny);
+ uno::Any aAny;
+ aAny <<= maStart;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("StartPosition")), aAny);
- aAny <<= maEnd;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EndPosition")), aAny );
+ aAny <<= maEnd;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EndPosition")), aAny );
- aAny <<= (drawing::ConnectorType)mnType;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeKind")), aAny );
+ aAny <<= (drawing::ConnectorType)mnType;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeKind")), aAny );
- aAny <<= mnDelta1;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine1Delta")), aAny );
+ aAny <<= mnDelta1;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine1Delta")), aAny );
- aAny <<= mnDelta2;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine2Delta")), aAny );
+ aAny <<= mnDelta2;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine2Delta")), aAny );
- aAny <<= mnDelta3;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine3Delta")), aAny );
- }
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ aAny <<= mnDelta3;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EdgeLine3Delta")), aAny );
}
- }
+ SetStyle();
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1375,25 +1184,27 @@ void SdXMLMeasureShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x1)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maStart.X, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y1)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maStart.Y, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_x2)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maEnd.X, rValue);
- break;
+ return;
}
if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_y2)) )
{
GetImport().GetMM100UnitConverter().convertMeasure(maEnd.Y, rValue);
- break;
+ return;
}
}
}
+
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
}
//////////////////////////////////////////////////////////////////////////////
@@ -1401,33 +1212,23 @@ void SdXMLMeasureShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl
void SdXMLMeasureShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create Measure shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // add, set style and properties from base shape
+ AddShape("com.sun.star.drawing.MeasureShape");
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.MeasureShape"))), uno::UNO_QUERY);
- if(xShape.is())
+ SetStyle();
+ uno::Reference< beans::XPropertySet > xProps( mxShape, uno::UNO_QUERY );
+ if( xProps.is() )
{
- // add, set style and properties from base shape
- AddShape(xShape);
-
- uno::Reference< beans::XPropertySet > xProps( xShape, uno::UNO_QUERY );
- if( xProps.is() )
- {
- uno::Any aAny;
- aAny <<= maStart;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("StartPosition")), aAny);
-
- aAny <<= maEnd;
- xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EndPosition")), aAny );
- }
+ uno::Any aAny;
+ aAny <<= maStart;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("StartPosition")), aAny);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ aAny <<= maEnd;
+ xProps->setPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("EndPosition")), aAny );
}
+ SdXMLShapeContext::StartElement(xAttrList);
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1441,45 +1242,8 @@ SdXMLPageShapeContext::SdXMLPageShapeContext(
const OUString& rLocalName,
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L )
+: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetPageShapeAttrTokenMap();
-
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_PAGESHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_PAGESHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_PAGESHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_PAGESHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- }
- }
}
//////////////////////////////////////////////////////////////////////////////
@@ -1493,28 +1257,17 @@ SdXMLPageShapeContext::~SdXMLPageShapeContext()
void SdXMLPageShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create Page shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // add, set style and properties from base shape
+ AddShape("com.sun.star.drawing.PageShape");
+ if(mxShape.is())
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PageShape"))), uno::UNO_QUERY);
- if(xShape.is())
- {
- // add, set style and properties from base shape
- AddShape(xShape);
+ SetStyle();
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
+ // set parameters on shape
+ SetSizeAndPosition();
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
- }
+ SdXMLShapeContext::StartElement(xAttrList);
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1543,21 +1296,18 @@ SdXMLCaptionShapeContext::~SdXMLCaptionShapeContext()
void SdXMLCaptionShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
{
// create Caption shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ // add, set style and properties from base shape
+ AddShape("com.sun.star.drawing.CaptionShape");
+ if( mxShape.is() )
{
- uno::Reference< drawing::XShape > xShape(xServiceFact->createInstance(
- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.CaptionShape"))), uno::UNO_QUERY);
- if(xShape.is())
- {
- // add, set style and properties from base shape
- AddShape(xShape);
- SetStyle();
- SdXMLShapeContext::StartElement(xAttrList);
- }
- }
+ SetStyle();
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ // set parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
+
+ SdXMLShapeContext::StartElement(xAttrList);
+ }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1572,84 +1322,55 @@ SdXMLGraphicObjectShapeContext::SdXMLGraphicObjectShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L )
+ maURL()
{
- OUString aURL;
+}
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetGraphicObjectShapeAttrTokenMap();
+//////////////////////////////////////////////////////////////////////////////
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
+// this is called from the parent group for each unparsed attribute in the attribute list
+void SdXMLGraphicObjectShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue )
+{
+ if( XML_NAMESPACE_XLINK == nPrefix )
+ {
+ if( rLocalName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sXML_href)) )
{
- case XML_TOK_GOSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_GOSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_GOSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_GOSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- case XML_TOK_GOSHAPE_URL:
- {
- aURL = sValue;
- }
+ maURL = rValue;
+ return;
}
}
+ SdXMLShapeContext::processAttribute( nPrefix, rLocalName, rValue );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLGraphicObjectShapeContext::StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList )
+{
// create graphic object shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+ AddShape( "com.sun.star.drawing.GraphicObjectShape" );
+ if(mxShape.is())
{
- OUString aType(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.GraphicObjectShape"));
- if( maPresentationClass.getLength() )
- aType = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.GraphicObjectShape"));
-
- uno::Reference< drawing::XShape > xShape( xServiceFact->createInstance( aType ), uno::UNO_QUERY);
- if(xShape.is())
+ SetStyle();
+ if( !mbIsPlaceholder )
{
- AddShape( xShape );
-
- if( !mbIsPlaceholder )
+ uno::Reference< beans::XPropertySet > xProps(mxShape, uno::UNO_QUERY);
+ if(xProps.is())
{
- uno::Reference< beans::XPropertySet > xProps(xShape, uno::UNO_QUERY);
- if(xProps.is())
- {
- uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
- if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
+ uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
+ if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
- if( aURL.getLength() )
+ if( maURL.getLength() )
+ {
+ uno::Any aAny;
+ aAny <<= GetImport().ResolveGraphicObjectURL( maURL, sal_False );
+ try
+ {
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicURL") ), aAny );
+ }
+ catch (lang::IllegalArgumentException const &)
{
- uno::Any aAny;
- aAny <<= rImport.ResolveGraphicObjectURL( aURL, sal_False );
- try
- {
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("GraphicURL") ), aAny );
- }
- catch (lang::IllegalArgumentException const &)
- {
- }
}
}
}
@@ -1657,7 +1378,7 @@ SdXMLGraphicObjectShapeContext::SdXMLGraphicObjectShapeContext(
if(mbIsUserTransformed)
{
- uno::Reference< beans::XPropertySet > xProps(xShape, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xProps(mxShape, uno::UNO_QUERY);
if(xProps.is())
{
uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
@@ -1669,18 +1390,12 @@ SdXMLGraphicObjectShapeContext::SdXMLGraphicObjectShapeContext(
}
}
- SetStyle();
-
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
+ // set parameters on shape
+ SetSizeAndPosition();
+ SetRotation();
SdXMLShapeContext::StartElement(xAttrList);
}
-
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
}
//////////////////////////////////////////////////////////////////////////////
@@ -1702,87 +1417,56 @@ SdXMLChartShapeContext::SdXMLChartShapeContext(
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
: SdXMLShapeContext( rImport, nPrfx, rLocalName, xAttrList, rShapes ),
- mnX( 0L ),
- mnY( 0L ),
- mnWidth( 1L ),
- mnHeight( 1L ),
mpChartContext( NULL )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
- {
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
- const SvXMLTokenMap& rAttrTokenMap = GetImport().GetShapeImport()->GetRectShapeAttrTokenMap();
+}
- switch(rAttrTokenMap.Get(nPrefix, aLocalName))
- {
- case XML_TOK_RECTSHAPE_X:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_Y:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_WIDTH:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
- break;
- }
- case XML_TOK_RECTSHAPE_HEIGHT:
- {
- GetImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
- break;
- }
- }
- }
+//////////////////////////////////////////////////////////////////////////////
- // create rectangle shape
- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetImport().GetModel(), uno::UNO_QUERY);
- if(xServiceFact.is())
+SdXMLChartShapeContext::~SdXMLChartShapeContext()
+{
+ if( mpChartContext )
+ delete mpChartContext;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void SdXMLChartShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
+{
+ const sal_Bool bIsPresentation = maPresentationClass.getLength() != 0;
+ AddShape( bIsPresentation ? "com.sun.star.presentation.ChartShape" : "com.sun.star.drawing.OLE2Shape" );
+
+ if(mxShape.is())
{
- OUString aType(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.OLE2Shape"));
- if( maPresentationClass.getLength() )
- aType = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.ChartShape"));
+ SetStyle();
- uno::Reference< drawing::XShape > xShape( xServiceFact->createInstance( aType ), uno::UNO_QUERY);
- if(xShape.is())
+ if( !mbIsPlaceholder )
{
- AddShape( xShape );
-
- if( !mbIsPlaceholder )
+ uno::Reference< beans::XPropertySet > xProps(mxShape, uno::UNO_QUERY);
+ if(xProps.is())
{
- uno::Reference< beans::XPropertySet > xProps(xShape, uno::UNO_QUERY);
- if(xProps.is())
- {
- uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
- if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
+ uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
+ if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") )))
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ), ::cppu::bool2any( sal_False ) );
- uno::Any aAny;
+ uno::Any aAny;
- const OUString aCLSID( RTL_CONSTASCII_USTRINGPARAM("BF884321-85DD-11D1-89d0-008029e4b0b1"));
- aAny <<= aCLSID;
- xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("CLSID") ), aAny );
+ const OUString aCLSID( RTL_CONSTASCII_USTRINGPARAM("BF884321-85DD-11D1-89d0-008029e4b0b1"));
+ aAny <<= aCLSID;
+ xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("CLSID") ), aAny );
- aAny = xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("Model") ) );
- uno::Reference< frame::XModel > xChartModel;
- if( aAny >>= xChartModel )
- {
- mpChartContext = rImport.GetChartImport()->CreateChartContext( rImport, nPrfx, rLocalName, xChartModel, xAttrList );
- }
+ aAny = xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("Model") ) );
+ uno::Reference< frame::XModel > xChartModel;
+ if( aAny >>= xChartModel )
+ {
+ mpChartContext = GetImport().GetChartImport()->CreateChartContext( GetImport(), XML_NAMESPACE_SVG, OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_chart)), xChartModel, xAttrList );
}
}
}
if(mbIsUserTransformed)
{
- uno::Reference< beans::XPropertySet > xProps(xShape, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xProps(mxShape, uno::UNO_QUERY);
if(xProps.is())
{
uno::Reference< beans::XPropertySetInfo > xPropsInfo( xProps->getPropertySetInfo() );
@@ -1794,32 +1478,15 @@ SdXMLChartShapeContext::SdXMLChartShapeContext(
}
}
- SetStyle();
-
- // set local parameters on shape
- awt::Point aPoint(mnX, mnY);
- awt::Size aSize(mnWidth, mnHeight);
- xShape->setPosition(aPoint);
- xShape->setSize(aSize);
- }
-}
-//////////////////////////////////////////////////////////////////////////////
+ // set parameters on shape
+ SetSizeAndPosition();
-SdXMLChartShapeContext::~SdXMLChartShapeContext()
-{
- if( mpChartContext )
- delete mpChartContext;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void SdXMLChartShapeContext::StartElement(const uno::Reference< xml::sax::XAttributeList>& xAttrList)
-{
- if( mpChartContext )
- mpChartContext->StartElement( xAttrList );
+ SdXMLShapeContext::StartElement(xAttrList);
- GetImport().GetShapeImport()->finishShape( mxShape, mxAttrList, mxShapes );
+ if( mpChartContext )
+ mpChartContext->StartElement( xAttrList );
+ }
}
void SdXMLChartShapeContext::EndElement()
diff --git a/xmloff/source/draw/ximpshap.hxx b/xmloff/source/draw/ximpshap.hxx
index 927bf5fa841a..a2885c50e625 100644
--- a/xmloff/source/draw/ximpshap.hxx
+++ b/xmloff/source/draw/ximpshap.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpshap.hxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: cl $ $Date: 2000-12-05 23:26:19 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -111,9 +111,22 @@ protected:
sal_Bool mbIsPlaceholder;
sal_Bool mbIsUserTransformed;
sal_Int32 mnZOrder;
+ sal_Int32 mnShapeId;
+
+ com::sun::star::awt::Size maSize;
+ com::sun::star::awt::Point maPosition;
+ sal_Int32 mnX;
+ sal_Int32 mnY;
+ sal_Int32 mnWidth;
+ sal_Int32 mnHeight;
void SetStyle();
void AddShape(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& xShape);
+ void AddShape(const char* pServiceName );
+ void SetSize();
+ void SetPosition();
+ void SetRotation();
+ void SetSizeAndPosition() { SetPosition(); SetSize(); }
SvXMLImport& GetImport() { return SvXMLImportContext::GetImport(); }
const SvXMLImport& GetImport() const { return SvXMLImportContext::GetImport(); }
@@ -142,10 +155,6 @@ public:
class SdXMLRectShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
sal_Int32 mnRadius;
public:
@@ -157,6 +166,9 @@ public:
com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes);
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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -178,6 +190,9 @@ public:
com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes);
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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -199,6 +214,9 @@ public:
com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes);
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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -208,10 +226,6 @@ class SdXMLPolygonShapeContext : public SdXMLShapeContext
{
rtl::OUString maPoints;
rtl::OUString maViewBox;
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
sal_Bool mbClosed;
public:
@@ -223,6 +237,9 @@ public:
com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bClosed);
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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -232,10 +249,6 @@ class SdXMLPathShapeContext : public SdXMLShapeContext
{
rtl::OUString maD;
rtl::OUString maViewBox;
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
sal_Bool mbClosed;
public:
@@ -247,6 +260,9 @@ public:
com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes);
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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -254,11 +270,6 @@ public:
class SdXMLTextBoxShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
-
public:
TYPEINFO();
@@ -275,11 +286,6 @@ public:
class SdXMLControlShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
-
public:
TYPEINFO();
@@ -352,11 +358,6 @@ public:
class SdXMLPageShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
-
public:
TYPEINFO();
@@ -389,11 +390,7 @@ public:
class SdXMLGraphicObjectShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
-
+ ::rtl::OUString maURL;
public:
TYPEINFO();
@@ -402,6 +399,11 @@ public:
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 ~SdXMLGraphicObjectShapeContext();
+
+ 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 );
};
//////////////////////////////////////////////////////////////////////////////
@@ -409,10 +411,6 @@ public:
class SdXMLChartShapeContext : public SdXMLShapeContext
{
- sal_Int32 mnX;
- sal_Int32 mnY;
- sal_Int32 mnWidth;
- sal_Int32 mnHeight;
SvXMLImportContext* mpChartContext;
public:
diff --git a/xmloff/source/draw/ximpstyl.cxx b/xmloff/source/draw/ximpstyl.cxx
index d446422aa994..e976cac7e66f 100644
--- a/xmloff/source/draw/ximpstyl.cxx
+++ b/xmloff/source/draw/ximpstyl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpstyl.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: cl $ $Date: 2000-12-11 08:00:05 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -562,7 +562,7 @@ SdXMLPresentationPlaceholderContext::~SdXMLPresentationPlaceholderContext()
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-TYPEINIT1( SdXMLMasterPageContext, SdXMLGroupShapeContext );
+TYPEINIT1( SdXMLMasterPageContext, SdXMLGenericPageContext );
SdXMLMasterPageContext::SdXMLMasterPageContext(
SdXMLImport& rImport,
@@ -570,7 +570,7 @@ SdXMLMasterPageContext::SdXMLMasterPageContext(
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList>& xAttrList,
uno::Reference< drawing::XShapes >& rShapes)
-: SdXMLGroupShapeContext( rImport, nPrfx, rLName, xAttrList, rShapes )
+: SdXMLGenericPageContext( rImport, nPrfx, rLName, xAttrList, rShapes )
{
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for(sal_Int16 i=0; i < nAttrCount; i++)
@@ -759,7 +759,7 @@ void SdXMLMasterPageContext::EndElement()
((SdXMLStylesContext*)pContext)->SetMasterPageStyles(*this);
}
- SdXMLGroupShapeContext::EndElement();
+ SdXMLGenericPageContext::EndElement();
GetImport().GetShapeImport()->restoreConnections();
}
@@ -806,7 +806,7 @@ SvXMLImportContext* SdXMLMasterPageContext::CreateChildContext(
// call base class
if(!pContext)
- pContext = SdXMLGroupShapeContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
+ pContext = SdXMLGenericPageContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
return pContext;
}
diff --git a/xmloff/source/draw/ximpstyl.hxx b/xmloff/source/draw/ximpstyl.hxx
index 8fd3b72d676d..cb88b98dcde4 100644
--- a/xmloff/source/draw/ximpstyl.hxx
+++ b/xmloff/source/draw/ximpstyl.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ximpstyl.hxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cl $ $Date: 2000-12-05 23:26:19 $
+ * last change: $Author: cl $ $Date: 2000-12-13 19:13:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -70,8 +70,8 @@
#include "sdxmlimp_impl.hxx"
#endif
-#ifndef _XIMPGROUP_HXX
-#include "ximpgrp.hxx"
+#ifndef _XIMPPAGE_HXX
+#include "ximppage.hxx"
#endif
#ifndef _XMLOFF_XMLSTYLE_HXX
@@ -149,7 +149,7 @@ public:
//////////////////////////////////////////////////////////////////////////////
// style:masterpage context
-class SdXMLMasterPageContext: public SdXMLGroupShapeContext
+class SdXMLMasterPageContext: public SdXMLGenericPageContext
{
rtl::OUString msPageMasterName;
rtl::OUString msName;