summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2009-05-19 09:32:45 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2009-05-19 09:32:45 +0000
commit807fa686e6e3edaf63bc8f542a6eae88b2295ae3 (patch)
tree9ef94fb940bf82a8f4de9872263266e48eb59773
parentef6d9aae143378e3ca4410311ae68825cefd4918 (diff)
CWS-TOOLING: integrate CWS impress169
2009-05-13 17:37:21 +0200 sj r271865 : #i100942# applied patch, removed oversafe buffer check (now without warnings on 64 bit platform) 2009-05-13 12:27:18 +0200 sj r271855 : #i101769# fixed line/fill attributes for graphic objects 2009-05-12 10:25:17 +0200 cl r271799 : report correct minimum cell hight for empty cells 2009-04-28 17:29:46 +0200 cl r271334 : fixed merge error 2009-04-28 16:18:01 +0200 cl r271330 : fixed build error 2009-04-28 12:38:09 +0200 cl r271320 : #i100129# images for new layouts 2009-04-27 19:12:06 +0200 cl r271302 : CWS-TOOLING: rebase CWS impress169 to trunk@270723 (milestone: DEV300:m46) 2009-04-20 19:13:28 +0200 sj r271012 : #i100942# applied patch, removed oversafe buffer check 2009-04-09 18:00:01 +0200 sj r270719 : #158488# added rectangular gradient support 2009-04-09 17:49:52 +0200 sj r270718 : #158488# added rectangular gradient support 2009-04-09 17:46:24 +0200 sj r270717 : #158488# added rectangular gradient support 2009-03-26 18:16:34 +0100 cl r270098 : #i99867# applied patch from jlcheng to correctly register table design pane 2009-03-26 18:12:11 +0100 cl r270097 : #i100220# leave some items default so they are not overridden if a new table style is set 2009-03-26 18:11:10 +0100 cl r270096 : #i100220# clear only those items that are also in the style when assigning a new table layout 2009-03-26 15:56:24 +0100 cl r270085 : #i99977# listen to outliner and dispose if outliner dies 2009-03-26 15:47:29 +0100 cl r270084 : #i99977# made the Outliner a SfxBroadcaster so others can listen for its death 2009-03-24 19:10:05 +0100 sj r269991 : #i100490# fixed text resize problem 2009-03-23 14:31:11 +0100 sj r269872 : #i96083# added patch, (dubious && and ||) 2009-03-19 17:55:11 +0100 sj r269764 : #i100275# applied patch, row height is now correct even for rows containing no text 2009-03-18 18:10:52 +0100 sj r269701 : #i93616# solved performance problem when loading document 2009-03-18 16:20:40 +0100 sj r269688 : removing unused code 2009-03-18 16:19:22 +0100 sj r269687 : removing unused code 2009-03-18 16:17:54 +0100 sj r269686 : removing unused code 2009-03-18 10:28:07 +0100 cl r269643 : #i100029# let cells be disposed as soon as the table model is disposed 2009-03-17 15:56:50 +0100 cl r269614 : #i99984# new impress photo layouts 3x2 and 2x2 2009-03-17 15:36:35 +0100 cl r269611 : #i99984# adding new impress photo layouts 3x2 and 2x2 2009-03-16 18:43:48 +0100 cl r269564 : #i55224# correct internal links if pages are changed 2009-03-16 16:40:38 +0100 cl r269559 : #i55224# correct internal hyperlinks if slides are changed/renamed 2009-03-16 15:34:12 +0100 cl r269553 : #i99427# invalidate slots after promote/demote 2009-03-13 18:18:20 +0100 sj r269492 : #i92421# fixed loop if loading encrypted ppt file 2009-03-13 14:51:58 +0100 sj r269481 : #i93002# fixed crash if saving presentation without master title placeholder 2009-03-13 12:26:21 +0100 sj r269468 : #i100147# do not exceed the max point count if creating simple polygon via ::GetSimple 2009-03-12 17:00:45 +0100 sj r269427 : #i82518# justifying rectangles for arc/pie and chord actions, fixed round rectangle problem
-rw-r--r--svx/inc/svx/msdffdef.hxx8
-rw-r--r--svx/inc/svx/msdffimp.hxx23
-rw-r--r--svx/inc/svx/outliner.hxx11
-rw-r--r--svx/source/msfilter/makefile.mk3
-rw-r--r--svx/source/msfilter/msashape.cxx6536
-rw-r--r--svx/source/msfilter/msashape.hxx116
-rw-r--r--svx/source/msfilter/msashape3d.cxx564
-rw-r--r--svx/source/msfilter/msashape3d.hxx83
-rw-r--r--svx/source/msfilter/msdffimp.cxx7996
-rw-r--r--svx/source/svdraw/svddrgv.cxx14
-rw-r--r--svx/source/svdraw/svdfppt.cxx15
-rw-r--r--svx/source/table/cell.cxx58
-rw-r--r--svx/source/table/cell.hxx11
-rw-r--r--svx/source/table/svdotable.cxx2
-rw-r--r--svx/source/table/tablecontroller.cxx2
-rw-r--r--xmloff/source/draw/sdxmlexp.cxx49
-rw-r--r--xmloff/source/draw/ximpstyl.cxx25
17 files changed, 184 insertions, 15332 deletions
diff --git a/svx/inc/svx/msdffdef.hxx b/svx/inc/svx/msdffdef.hxx
index 5aafb8c41c..4205b23393 100644
--- a/svx/inc/svx/msdffdef.hxx
+++ b/svx/inc/svx/msdffdef.hxx
@@ -1284,6 +1284,7 @@ class SVX_DLLPUBLIC DffPropSet : public Table
class SfxItemSet;
class SdrObject;
+struct DffObjData;
class SVX_DLLPUBLIC DffPropertyReader : public DffPropSet
{
@@ -1292,9 +1293,9 @@ class SVX_DLLPUBLIC DffPropertyReader : public DffPropSet
void ApplyCustomShapeTextAttributes( SfxItemSet& rSet ) const;
void ApplyCustomShapeAdjustmentAttributes( SfxItemSet& rSet ) const;
- void ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT eShapeType, const sal_uInt32 nShapeFlags ) const;
+ void ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
void ApplyLineAttributes( SfxItemSet& rSet, const MSO_SPT eShapeType ) const; // #i28269#
- void ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT eShapeType ) const;
+ void ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
public:
@@ -1311,7 +1312,8 @@ public:
#endif
void SetDefaultPropSet( SvStream& rIn, UINT32 nOffDgg ) const;
- void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT = mso_sptNil, const sal_uInt32 nShapeFlags = 0 ) const;
+ void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet ) const;
+ void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
};
#endif
diff --git a/svx/inc/svx/msdffimp.hxx b/svx/inc/svx/msdffimp.hxx
index 9168c2a08c..4feaead917 100644
--- a/svx/inc/svx/msdffimp.hxx
+++ b/svx/inc/svx/msdffimp.hxx
@@ -96,7 +96,6 @@ SV_DECL_PTRARR_SORT_VISIBILITY(SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr, 16
#define SVXMSDFF_SETTINGS_CROP_BITMAPS 1
#define SVXMSDFF_SETTINGS_IMPORT_PPT 2
#define SVXMSDFF_SETTINGS_IMPORT_EXCEL 4
-#define SVXMSDFF_SETTINGS_IMPORT_IAS 8
#define SP_FGROUP 0x001 // This shape is a group shape
#define SP_FCHILD 0x002 // Not a top-level shape
@@ -251,10 +250,10 @@ struct SvxMSDffImportData
struct DffObjData
{
- Rectangle aChildAnchor;
-
const DffRecordHeader& rSpHd;
- Rectangle& rBoundRect;
+
+ Rectangle aBoundRect;
+ Rectangle aChildAnchor;
UINT32 nShapeId;
UINT32 nSpFlags;
@@ -270,10 +269,18 @@ struct DffObjData
int nCalledByGroup;
DffObjData( const DffRecordHeader& rObjHd,
- Rectangle& rBdRect,
- int nClByGroup ) :
+ const Rectangle& rBoundRect,
+ int nClByGroup ) :
rSpHd( rObjHd ),
- rBoundRect( rBdRect ),
+ aBoundRect( rBoundRect ),
+ nShapeId( 0 ),
+ nSpFlags( 0 ),
+ eShapeType( mso_sptNil ),
+ bShapeType( FALSE ),
+ bClientAnchor( FALSE ),
+ bClientData( FALSE ),
+ bChildAnchor( FALSE ),
+ bOpt( FALSE ),
bIsAutoText( FALSE ),
nCalledByGroup( nClByGroup ){}
};
@@ -405,7 +412,7 @@ protected :
FASTBOOL ReadGraphic( SvStream& rSt, ULONG nIndex, Graphic& rGraphic ) const;
SdrObject* ImportFontWork( SvStream&, SfxItemSet&, Rectangle& rBoundRect ) const;
- SdrObject* ImportGraphic( SvStream&, SfxItemSet&, Rectangle& rBoundRect, const DffObjData& ) const;
+ SdrObject* ImportGraphic( SvStream&, SfxItemSet&, const DffObjData& ) const;
// --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method
// Needed in the Writer Microsoft Word import to avoid import of OLE objects
// inside groups. Instead a graphic object is created.
diff --git a/svx/inc/svx/outliner.hxx b/svx/inc/svx/outliner.hxx
index 33818ccabc..23ed5266bf 100644
--- a/svx/inc/svx/outliner.hxx
+++ b/svx/inc/svx/outliner.hxx
@@ -33,22 +33,19 @@
#include <tools/gen.hxx>
#include <tools/string.hxx>
#include <tools/debug.hxx>
-#ifndef _EDITDATA_HXX //autogen
+
+#include <svtools/brdcst.hxx>
+
#include <svx/editdata.hxx>
-#endif
#include <i18npool/lang.h>
-#ifndef _SV_COLOR_HXX //autogen
#include <tools/color.hxx>
-#endif
#include <vcl/graph.hxx>
#include <tools/list.hxx>
#include <tools/link.hxx>
#include <rsc/rscsfx.hxx>
#include "svx/svxdllapi.h"
-#ifndef _GRFMGR_HXX
#include <goodies/grfmgr.hxx>
-#endif
#include <tools/rtti.hxx> // wegen typedef TypeId
#include <vector>
@@ -585,7 +582,7 @@ struct EBulletInfo
#define OUTLINERMODE_SUBTITLE (0x0100|OUTLINERMODE_TEXTOBJECT)
#define OUTLINERMODE_NOTE (0x0200|OUTLINERMODE_TEXTOBJECT)
-class SVX_DLLPUBLIC Outliner
+class SVX_DLLPUBLIC Outliner : public SfxBroadcaster
{
friend class OutlinerView;
friend class OutlinerEditEng;
diff --git a/svx/source/msfilter/makefile.mk b/svx/source/msfilter/makefile.mk
index bc246eaeca..85c120f88d 100644
--- a/svx/source/msfilter/makefile.mk
+++ b/svx/source/msfilter/makefile.mk
@@ -49,10 +49,8 @@ SLOFILES=\
$(SLO)$/msdffimp.obj \
$(SLO)$/msoleexp.obj \
$(SLO)$/msvbasic.obj \
- $(SLO)$/msashape.obj \
$(SLO)$/svxmsbas.obj \
$(SLO)$/msocximex.obj \
- $(SLO)$/msashape3d.obj \
$(SLO)$/mscodec.obj \
$(SLO)$/msfiltertracer.obj
@@ -60,7 +58,6 @@ EXCEPTIONSFILES= \
$(SLO)$/eschesdo.obj \
$(SLO)$/escherex.obj \
$(SLO)$/msdffimp.obj \
- $(SLO)$/msashape3d.obj \
$(SLO)$/msvbasic.obj \
$(SLO)$/msocximex.obj \
$(SLO)$/msoleexp.obj \
diff --git a/svx/source/msfilter/msashape.cxx b/svx/source/msfilter/msashape.cxx
deleted file mode 100644
index 8a9d37ccd6..0000000000
--- a/svx/source/msfilter/msashape.cxx
+++ /dev/null
@@ -1,6536 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msashape.cxx,v $
- * $Revision: 1.44 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <osl/endian.h>
-#include <msashape.hxx>
-#include <svx/svdocirc.hxx>
-#include <svx/svdogrp.hxx>
-#include <svx/svdopath.hxx>
-#include <svx/svdpage.hxx>
-#include <svx/xflclit.hxx>
-#include <svx/sdasaitm.hxx>
-#include <svtools/itemset.hxx>
-#include <svx/svdmodel.hxx>
-#include <rtl/crc.h>
-#include <svx/xlnstit.hxx>
-#include <svx/xlnedit.hxx>
-#include <svx/xlnstwit.hxx>
-#include <svx/xlnedwit.hxx>
-#include <svx/xlnstcit.hxx>
-#include <svx/xlnedcit.hxx>
-
-#include <math.h>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-
-struct SvxMSDffVertPair
-{
- sal_Int32 nValA;
- sal_Int32 nValB;
-};
-struct SvxMSDffCalculationData
-{
- sal_uInt16 nFlags;
- sal_Int16 nVal1;
- sal_Int16 nVal2;
- sal_Int16 nVal3;
-};
-struct SvxMSDffTextRectangles
-{
- SvxMSDffVertPair nPairA;
- SvxMSDffVertPair nPairB;
-};
-
-struct mso_CustomShape
-{
- SvxMSDffVertPair* pVertices;
- sal_uInt32 nVertices;
- sal_uInt16* pElements;
- sal_uInt32 nElements;
- SvxMSDffCalculationData* pCalculation;
- sal_uInt32 nCalculation;
- sal_Int32* pDefData;
- SvxMSDffTextRectangles* pTextRect;
- sal_uInt32 nTextRect;
- sal_Int32 nCoordWidth;
- sal_Int32 nCoordHeight;
- sal_Int32 nXRef;
- sal_Int32 nYRef;
- SvxMSDffVertPair* pGluePoints;
- sal_uInt32 nGluePoints;
-};
-
-#define GEOMETRY_USED_LEFT 1
-#define GEOMETRY_USED_TOP 2
-#define GEOMETRY_USED_RIGHT 4
-#define GEOMETRY_USED_BOTTOM 8
-
-/*
-static const SvxMSDffVertPair Vert[] =
-{
- { 0, 0, }
-};
-static const sal_uInt16 Segm[] =
-{
- 0x4000,
- 0x8000
-};
-static const SvxMSDffCalculationData Calc[] =
-{
- { 0x0000, 0, 0, 0 }
-};
-static const sal_Int32 Default[] =
-{
- 0
-};
-static const SvxMSDffTextRect TextRect[] =
-{
- { { 0, 0 }, { 0, 0 } }
-};
-static const sal_Int32 BoundRect[] =
-{
- 0, 0, 21600, 21600
-};
-static const mso_CustomShape mso =
-{
- (SvxMSDffVertPair*)mso_sptVert, sizeof( mso_sptVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptSegm, sizeof( mso_sptSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCalc, sizeof( mso_sptCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault,
- (SvxMSDffTextRectangles*)mso_sptTextRect, sizeof( mso_sptTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptVert, sizeof( mso_sptVert ) / sizeof( SvxMSDffVertPair )
-};
-*/
-
-#define MSO_I | (sal_Int32)0x80000000
-
-static const sal_Int32 mso_sptDefault0[] =
-{
- 1, 0
-};
-static const sal_Int32 mso_sptDefault1400[] =
-{
- 1, 1400
-};
-static const sal_Int32 mso_sptDefault1800[] =
-{
- 1, 1800
-};
-static const sal_Int32 mso_sptDefault2500[] =
-{
- 1, 2500
-};
-static const sal_Int32 mso_sptDefault2700[] =
-{
- 1, 2700
-};
-static const sal_Int32 mso_sptDefault3600[] =
-{
- 1, 3600
-};
-static const sal_Int32 mso_sptDefault3700[] =
-{
- 1, 3700
-};
-static const sal_Int32 mso_sptDefault5400[] =
-{
- 1, 5400
-};
-static const sal_Int32 mso_sptDefault8100[] =
-{
- 1, 5400
-};
-static const sal_Int32 mso_sptDefault10800[] =
-{
- 1, 10800
-};
-static const sal_Int32 mso_sptDefault16200and5400[] =
-{
- 2, 16200, 5400
-};
-
-static const sal_Int32 mso_sptArcDefault[] =
-{
- 2, 270 << 16, 0
-};
-static const SvxMSDffVertPair mso_sptStandardGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoArc =
-{
- NULL, 0,
- NULL, 0,
- NULL, 0,
- (sal_Int32*)mso_sptArcDefault,
- NULL, 0,
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const mso_CustomShape msoRectangle =
-{
- NULL, 0,
- NULL, 0,
- NULL, 0,
- NULL,
- NULL, 0,
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffCalculationData mso_sptRoundRectangleCalc[] = // adjustment1 : 0 - 10800
-{
- { 0x2001, DFF_Prop_adjustValue, 1, 3 },
- { 0xa000, DFF_Prop_geoRight, 0, 0x400},
- { 0xa000, DFF_Prop_geoBottom, 0, 0x400},
- { 0x6000, DFF_Prop_geoLeft, 0x400, 0 },
- { 0x6000, DFF_Prop_geoTop, 0x400, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptRoundRectangleTextRect[] =
-{
- { { 3 MSO_I, 4 MSO_I }, { 1 MSO_I, 2 MSO_I } }
-};
-static const mso_CustomShape msoRoundRectangle =
-{
- NULL, 0,
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptRoundRectangleCalc, sizeof( mso_sptRoundRectangleCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault3600,
- (SvxMSDffTextRectangles*)mso_sptRoundRectangleTextRect, sizeof( mso_sptRoundRectangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptRightTriangleVert[] =
-{
- { 0, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptRightTriangleTextRect[] =
-{
- { { 1900, 12700 }, { 12700, 19700 } }
-};
-static const SvxMSDffVertPair mso_sptRightTriangleGluePoints[] =
-{
- { 10800, 0 }, { 5400, 10800 }, { 0, 21600 }, { 10800, 21600 }, { 21600, 21600 }, { 16200, 10800 }
-};
-static const mso_CustomShape msoRightTriangle =
-{
- (SvxMSDffVertPair*)mso_sptRightTriangleVert, sizeof( mso_sptRightTriangleVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptRightTriangleTextRect, sizeof( mso_sptRightTriangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptRightTriangleGluePoints, sizeof( mso_sptRightTriangleGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffTextRectangles mso_sptEllipseTextRect[] =
-{
- { { 3200, 3200 }, { 18400, 18400 } }
-};
-static const SvxMSDffVertPair mso_sptEllipseGluePoints[] =
-{
- { 10800, 0 }, { 3160, 3160 }, { 0, 10800 }, { 3160, 18440 }, { 10800, 21600 }, { 18440, 18440 }, { 21600, 10800 }, { 18440, 3160 }
-};
-static const mso_CustomShape msoEllipse =
-{
- NULL, 0,
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptParallelogramVert[] = // adjustment1 : 0 - 21600
-{
- { 0 MSO_I, 0 }, { 21600, 0 }, { 1 MSO_I, 21600 }, { 0, 21600 }
-};
-static const sal_uInt16 mso_sptParallelogramSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptParallelogramCalc[] =
-{
- { 0x4000, 0, DFF_Prop_adjustValue, 0 },
- { 0x8000, 0, 21600, DFF_Prop_adjustValue },
- { 0x2001, DFF_Prop_adjustValue, 10, 24 },
- { 0x2000, 0x0402, 1750, 0 },
- { 0x8000, 21600, 0, 0x0403 },
- { 0x2001, 0x400, 1, 2 },
- { 0x4000, 10800, 0x405, 0 },
- { 0x2000, 0x400, 0, 10800 },
- { 0x6006, 0x407, 0x40d, 0 },
- { 0x8000, 10800, 0, 0x405 },
- { 0x6006, 0x407, 0x40c, 21600 },
- { 0x8000, 21600, 0, 0x405 },
- { 0x8001, 21600, 10800, 0x400 },
- { 0x8000, 21600, 0, 0x40c }
-};
-static const SvxMSDffTextRectangles mso_sptParallelogramTextRect[] =
-{
- { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptParallelogramGluePoints[] =
-{
- { 6 MSO_I, 0 }, { 10800, 8 MSO_I }, { 11 MSO_I, 10800 }, { 9 MSO_I, 21600 }, { 10800, 10 MSO_I }, { 5 MSO_I, 10800 }
-};
-static const mso_CustomShape msoParallelogram =
-{
- (SvxMSDffVertPair*)mso_sptParallelogramVert, sizeof( mso_sptParallelogramVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptParallelogramSegm, sizeof( mso_sptParallelogramSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptParallelogramCalc, sizeof( mso_sptParallelogramCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptParallelogramTextRect, sizeof( mso_sptParallelogramTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptParallelogramGluePoints, sizeof( mso_sptParallelogramGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptDiamondVert[] =
-{
- { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 10800 }, { 10800, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptDiamondTextRect[] =
-{
- { { 5400, 5400 }, { 16200, 16200 } }
-};
-static const mso_CustomShape msoDiamond =
-{
- (SvxMSDffVertPair*)mso_sptDiamondVert, sizeof( mso_sptDiamondVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptDiamondTextRect, sizeof( mso_sptDiamondTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptTrapezoidVert[] = // adjustment1 : 0 - 10800
-{
- { 0, 0 }, { 21600, 0 }, {0 MSO_I, 21600 }, { 1 MSO_I, 21600 }
-};
-static const sal_uInt16 mso_sptTrapezoidSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptTrapezoidCalc[] =
-{
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2001, DFF_Prop_adjustValue, 10, 18 },
- { 0x2000, 0x0402, 1750, 0 },
- { 0x8000, 21600, 0, 0x403 },
- { 0x2001, DFF_Prop_adjustValue, 1, 2 },
- { 0x8000, 21600, 0, 0x405 }
-};
-static const SvxMSDffTextRectangles mso_sptTrapezoidTextRect[] =
-{
- { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptTrapezoidGluePoints[] =
-{
- { 6 MSO_I, 10800 }, { 10800, 21600 }, { 5 MSO_I, 10800 }, { 10800, 0 }
-};
-static const mso_CustomShape msoTrapezoid =
-{
- (SvxMSDffVertPair*)mso_sptTrapezoidVert, sizeof( mso_sptTrapezoidVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptTrapezoidSegm, sizeof( mso_sptTrapezoidSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptTrapezoidCalc, sizeof( mso_sptTrapezoidCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptTrapezoidTextRect, sizeof( mso_sptTrapezoidTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptTrapezoidGluePoints, sizeof( mso_sptTrapezoidGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptOctagonVert[] = // adjustment1 : 0 - 10800
-{
- { 0 MSO_I, 0 }, { 2 MSO_I, 0 }, { 21600, 1 MSO_I }, { 21600, 3 MSO_I },
- { 2 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0, 3 MSO_I }, { 0, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptOctagonSegm[] =
-{
- 0x4000, 0x0007, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptOctagonCalc[] =
-{
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x2001, DFF_Prop_adjustValue, 1, 2 },
- { 0x6000, DFF_Prop_geoLeft, 0x404, 0 },
- { 0x6000, DFF_Prop_geoTop, 0x404, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, 0x404 },
- { 0xa000, DFF_Prop_geoBottom, 0, 0x404 }
-};
-static const sal_Int32 mso_sptOctagonDefault[] =
-{
- 1, 5000
-};
-static const SvxMSDffTextRectangles mso_sptOctagonTextRect[] =
-{
- { { 5 MSO_I, 6 MSO_I }, { 7 MSO_I, 8 MSO_I } }
-};
-static const mso_CustomShape msoOctagon =
-{
- (SvxMSDffVertPair*)mso_sptOctagonVert, sizeof( mso_sptOctagonVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptOctagonSegm, sizeof( mso_sptOctagonSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptOctagonCalc, sizeof( mso_sptOctagonCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptOctagonDefault,
- (SvxMSDffTextRectangles*)mso_sptOctagonTextRect, sizeof( mso_sptOctagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptIsocelesTriangleVert[] = // adjustment1 : 0 - 21600
-{
- { 0 MSO_I, 0 }, { 21600, 21600 }, { 0, 21600 }
-};
-static const sal_uInt16 mso_sptIsocelesTriangleSegm[] =
-{
- 0x4000, 0x0002, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptIsocelesTriangleCalc[] =
-{
- { 0x4000, 0, DFF_Prop_adjustValue, 0 },
- { 0x2001, DFF_Prop_adjustValue, 1, 2 },
- { 0x2000, 0x401, 10800, 0 },
- { 0x2001, DFF_Prop_adjustValue, 2, 3 },
- { 0x2000, 0x403, 7200, 0 },
- { 0x8000, 21600, 0, 0x400 },
- { 0x2001, 0x405, 1, 2 },
- { 0x8000, 21600, 0, 0x406 }
-};
-static const SvxMSDffTextRectangles mso_sptIsocelesTriangleTextRect[] =
-{
- { { 1 MSO_I, 10800 }, { 2 MSO_I, 18000 } },
- { { 3 MSO_I, 7200 }, { 4 MSO_I, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptIsocelesTriangleGluePoints[] =
-{
- { 10800, 0 }, { 1 MSO_I, 10800 }, { 0, 21600 }, { 10800, 21600 }, { 21600, 21600 }, { 7 MSO_I, 10800 }
-};
-static const mso_CustomShape msoIsocelesTriangle =
-{
- (SvxMSDffVertPair*)mso_sptIsocelesTriangleVert, sizeof( mso_sptIsocelesTriangleVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptIsocelesTriangleSegm, sizeof( mso_sptIsocelesTriangleSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptIsocelesTriangleCalc, sizeof( mso_sptIsocelesTriangleCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault10800,
- (SvxMSDffTextRectangles*)mso_sptIsocelesTriangleTextRect, sizeof( mso_sptIsocelesTriangleTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptIsocelesTriangleGluePoints, sizeof( mso_sptIsocelesTriangleGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptHexagonVert[] = // adjustment1 : 0 - 10800
-{
- { 0 MSO_I, 0 }, { 1 MSO_I, 0 }, { 21600, 10800 }, { 1 MSO_I, 21600 },
- { 0 MSO_I, 21600 }, { 0, 10800 }
-};
-static const sal_uInt16 mso_sptHexagonSegm[] =
-{
- 0x4000, 0x0005, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptHexagonCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x2001, DFF_Prop_adjustValue, 100, 234 },
- { 0x2000, 0x402, 1700, 0 },
- { 0x8000, 21600, 0, 0x403 }
-};
-static const SvxMSDffTextRectangles mso_sptHexagonTextRect[] =
-{
- { { 3 MSO_I, 3 MSO_I }, { 4 MSO_I, 4 MSO_I } }
-};
-static const mso_CustomShape msoHexagon =
-{
- (SvxMSDffVertPair*)mso_sptHexagonVert, sizeof( mso_sptHexagonVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptHexagonSegm, sizeof( mso_sptHexagonSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptHexagonCalc, sizeof( mso_sptHexagonCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptHexagonTextRect, sizeof( mso_sptHexagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptPentagonVert[] =
-{
- { 10800, 0 }, { 0, 8260 }, { 4230, 21600 }, { 17370, 21600 },
- { 21600, 8260 }, { 10800, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptPentagonTextRect[] =
-{
- { { 4230, 5080 }, { 17370, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptPentagonGluePoints[] =
-{
- { 10800, 0 }, { 0, 8260 }, { 4230, 21600 }, { 10800, 21600 },
- { 17370, 21600 }, { 21600, 8260 }
-};
-static const mso_CustomShape msoPentagon =
-{
- (SvxMSDffVertPair*)mso_sptPentagonVert, sizeof( mso_sptPentagonVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptPentagonTextRect, sizeof( mso_sptPentagonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptPentagonGluePoints, sizeof( mso_sptPentagonGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptPlusVert[] = // adjustment1 : 0 - 10800
-{
- { 1 MSO_I, 0 }, { 2 MSO_I, 0 }, { 2 MSO_I, 1 MSO_I }, { 21600, 1 MSO_I },
- { 21600, 2 MSO_I }, { 2 MSO_I, 2 MSO_I }, { 2 MSO_I, 21600 }, { 1 MSO_I, 21600 },
- { 1 MSO_I, 2 MSO_I }, { 0, 2 MSO_I }, { 0, 1 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 0 }
-};
-static const SvxMSDffCalculationData mso_sptPlusCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 10799, 10800 },
- { 0x2000, 0x400, 0, 0 },
- { 0x8000, 21600, 0, 0x400 }
-};
-static const SvxMSDffTextRectangles mso_sptPlusTextRect[] =
-{
- { { 1 MSO_I, 1 MSO_I }, { 2 MSO_I, 2 MSO_I } }
-};
-static const mso_CustomShape msoPlus =
-{
- (SvxMSDffVertPair*)mso_sptPlusVert, sizeof( mso_sptPlusVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptPlusCalc, sizeof( mso_sptPlusCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptPlusTextRect, sizeof( mso_sptPlusTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 10800, 10800,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptCanVert[] = // adjustment1 : 0 - 10800
-{
- { 44, 0 },
- { 20, 0 }, { 0, 2 MSO_I }, { 0, 0 MSO_I }, // ccp
- { 0, 3 MSO_I }, // p
- { 0, 4 MSO_I }, { 20, 10800 }, { 44, 10800 }, // ccp
- { 68, 10800 }, { 88, 4 MSO_I }, { 88, 3 MSO_I }, // ccp
- { 88, 0 MSO_I }, // p
- { 88, 2 MSO_I }, { 68, 0 }, { 44, 0 }, // ccp
- { 44, 0 }, // p
- { 20, 0 }, { 0, 2 MSO_I }, { 0, 0 MSO_I }, // ccp
- { 0, 5 MSO_I }, { 20, 6 MSO_I }, { 44, 6 MSO_I }, // ccp
- { 68, 6 MSO_I },{ 88, 5 MSO_I }, { 88, 0 MSO_I }, // ccp
- { 88, 2 MSO_I },{ 68, 0 }, { 44, 0 } // ccp
-};
-static const sal_uInt16 mso_sptCanSegm[] =
-{
- 0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x6001, 0x8000,
- 0x4000, 0x2004, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptCanCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 1, 4 }, // 1/4
- { 0x2001, 0x0400, 6, 11 },
- { 0xa000, 0x0400, 0, 0x0401 },
- { 0x8000, 10800, 0, 0x0400 },
- { 0x6000, 0x0403, 0x0401, 0 },
- { 0x6000, 0x0400, 0x0401, 0 },
- { 0x2001, DFF_Prop_adjustValue, 1, 2 }
-};
-static const SvxMSDffTextRectangles mso_sptCanTextRect[] =
-{
- { { 0, 6 MSO_I }, { 88, 3 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptCanGluePoints[] =
-{
- { 44, 6 MSO_I }, { 44, 0 }, { 0, 5400 }, { 44, 10800 }, { 88, 5400 }
-};
-static const sal_Int32 mso_sptCanBoundRect[] =
-{
- 0, 0, 88, 10800
-};
-static const mso_CustomShape msoCan =
-{
- (SvxMSDffVertPair*)mso_sptCanVert, sizeof( mso_sptCanVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptCanSegm, sizeof( mso_sptCanSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCanCalc, sizeof( mso_sptCanCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptCanTextRect, sizeof( mso_sptCanTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 88, 10800,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptCanGluePoints, sizeof( mso_sptCanGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptArrowVert[] = // adjustment1: x 0 - 21600
-{ // adjustment2: y 0 - 10800
- { 0, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 21600, 10800 },
- { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 0, 2 MSO_I }
-};
-static const sal_uInt16 mso_sptArrowSegm[] =
-{
- 0x4000, 0x0006, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value },
- { 0x8000, 21600, 0, 0x401 },
- { 0x6001, 0x403, 0x400, 10800 },
- { 0x6000, 0x401, 0x404, 0 },
- { 0x6001, 0x401, 0x400, 10800 },
- { 0xa000, 0x401, 0, 0x406 }
-};
-static const SvxMSDffTextRectangles mso_sptArrowTextRect[] =
-{
- { { 0, 0 MSO_I }, { 5 MSO_I, 2 MSO_I } }
-};
-static const mso_CustomShape msoArrow =
-{
- (SvxMSDffVertPair*)mso_sptArrowVert, sizeof( mso_sptArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptArrowSegm, sizeof( mso_sptArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault16200and5400,
- (SvxMSDffTextRectangles*)mso_sptArrowTextRect, sizeof( mso_sptArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftArrowVert[] = // adjustment1: x 0 - 21600
-{ // adjustment2: y 0 - 10800
- { 21600, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 0, 10800 },
- { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 21600, 2 MSO_I }
-};
-static const sal_uInt16 mso_sptLeftArrowSegm[] =
-{
- 0x4000, 0x0006, 0x6001, 0x8000
-};
-static const sal_Int32 mso_sptLeftArrowDefault[] =
-{
- 2, 5400, 5400
-};
-static const SvxMSDffTextRectangles mso_sptLeftArrowTextRect[] =
-{
- { { 7 MSO_I, 0 MSO_I }, { 21600, 2 MSO_I } }
-};
-static const mso_CustomShape msoLeftArrow =
-{
- (SvxMSDffVertPair*)mso_sptLeftArrowVert, sizeof( mso_sptLeftArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftArrowSegm, sizeof( mso_sptLeftArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftArrowTextRect, sizeof( mso_sptLeftArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptDownArrowVert[] = // adjustment1: x 0 - 21600
-{ // adjustment2: y 0 - 10800
- { 0 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 0, 1 MSO_I }, { 10800, 21600 },
- { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 0 }
-};
-static const sal_uInt16 mso_sptDownArrowSegm[] =
-{
- 0x4000, 0x0006, 0x6001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptDownArrowTextRect[] =
-{
- { { 0 MSO_I, 0 }, { 2 MSO_I, 5 MSO_I } }
-};
-static const mso_CustomShape msoDownArrow =
-{
- (SvxMSDffVertPair*)mso_sptDownArrowVert, sizeof( mso_sptDownArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptDownArrowSegm, sizeof( mso_sptDownArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault16200and5400,
- (SvxMSDffTextRectangles*)mso_sptDownArrowTextRect, sizeof( mso_sptDownArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptUpArrowVert[] = // adjustment1: x 0 - 21600
-{ // adjustment2: y 0 - 10800
- { 0 MSO_I, 21600 }, { 0 MSO_I, 1 MSO_I }, { 0, 1 MSO_I }, { 10800, 0 },
- { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 21600 }
-};
-static const sal_uInt16 mso_sptUpArrowSegm[] =
-{
- 0x4000, 0x0006, 0x6001, 0x8000
-};
-static const sal_Int32 mso_sptUpArrowDefault[] =
-{
- 2, 5400, 5400
-};
-static const SvxMSDffTextRectangles mso_sptUpArrowTextRect[] =
-{
- { { 0 MSO_I, 7 MSO_I }, { 2 MSO_I, 21600 } }
-};
-static const mso_CustomShape msoUpArrow =
-{
- (SvxMSDffVertPair*)mso_sptUpArrowVert, sizeof( mso_sptUpArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptUpArrowSegm, sizeof( mso_sptUpArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptArrowCalc, sizeof( mso_sptArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptUpArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptUpArrowTextRect, sizeof( mso_sptUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftRightArrowVert[] = // adjustment1: x 0 - 10800
-{ // adjustment2: y 0 - 10800
- { 0, 10800 }, { 0 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 2 MSO_I, 1 MSO_I },
- { 2 MSO_I, 0 }, { 21600, 10800 }, { 2 MSO_I, 21600 }, { 2 MSO_I, 3 MSO_I },
- { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 21600 }
-};
-static const sal_uInt16 mso_sptLeftRightArrowSegm[] =
-{
- 0x4000, 0x0009, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptDoubleArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value },
- { 0x8000, 10800, 0, DFF_Prop_adjust2Value },
- { 0x6001, DFF_Prop_adjustValue, 0x404, 10800 },
- { 0x8000, 21600, 0, 0x405 },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x6001, DFF_Prop_adjust2Value, 0x407, 10800 },
- { 0x8000, 21600, 0, 0x408 }
-};
-static const sal_Int32 mso_sptLeftRightArrowDefault[] =
-{
- 2, 4300, 5400
-};
-static const SvxMSDffTextRectangles mso_sptLeftRightArrowTextRect[] =
-{
- { { 5 MSO_I, 1 MSO_I }, { 6 MSO_I, 3 MSO_I } }
-};
-static const mso_CustomShape msoLeftRightArrow =
-{
- (SvxMSDffVertPair*)mso_sptLeftRightArrowVert, sizeof( mso_sptLeftRightArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftRightArrowSegm, sizeof( mso_sptLeftRightArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptDoubleArrowCalc, sizeof( mso_sptDoubleArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftRightArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftRightArrowTextRect, sizeof( mso_sptLeftRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptUpDownArrowVert[] = // adjustment1: x 0 - 10800
-{ // adjustment2: y 0 - 10800
- { 0, 1 MSO_I }, { 10800, 0 }, { 21600, 1 MSO_I }, { 2 MSO_I, 1 MSO_I },
- { 2 MSO_I, 3 MSO_I }, { 21600, 3 MSO_I }, { 10800, 21600 }, { 0, 3 MSO_I },
- { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptUpDownArrowSegm[] =
-{
- 0x4000, 0x0009, 0x6001, 0x8000
-};
-static const sal_Int32 mso_sptUpDownArrowDefault[] =
-{
- 2, 5400, 4300
-};
-static const SvxMSDffTextRectangles mso_sptUpDownArrowTextRect[] =
-{
- { { 0 MSO_I, 8 MSO_I }, { 2 MSO_I, 9 MSO_I } }
-};
-static const mso_CustomShape msoUpDownArrow =
-{
- (SvxMSDffVertPair*)mso_sptUpDownArrowVert, sizeof( mso_sptUpDownArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptUpDownArrowSegm, sizeof( mso_sptUpDownArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptDoubleArrowCalc, sizeof( mso_sptDoubleArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptUpDownArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptUpDownArrowTextRect, sizeof( mso_sptUpDownArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptQuadArrowVert[] = // adjustment1: x 0 - 10800, adjustment2: x 0 - 10800
-{ // adjustment3: y 0 - 10800
- { 0, 10800 }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 2 MSO_I, 2 MSO_I },
- { 2 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 10800, 0 }, { 3 MSO_I, 0 MSO_I },
- { 4 MSO_I, 0 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 5 MSO_I, 1 MSO_I },
- { 21600, 10800 }, { 5 MSO_I, 3 MSO_I }, { 5 MSO_I, 4 MSO_I }, { 4 MSO_I, 4 MSO_I },
- { 4 MSO_I, 5 MSO_I }, { 3 MSO_I, 5 MSO_I }, { 10800, 21600 }, { 1 MSO_I, 5 MSO_I },
- { 2 MSO_I, 5 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 0 MSO_I, 4 MSO_I }, { 0 MSO_I, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptQuadArrowSegm[] =
-{
- 0x4000, 0x0017, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptQuadArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value },
- { 0x8000, 21600, 0, DFF_Prop_adjust3Value }
-};
-static const sal_Int32 mso_sptQuadArrowDefault[] =
-{
- 3, 6500, 8600, 4300
-};
-static const SvxMSDffTextRectangles mso_sptQuadArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoQuadArrow =
-{
- (SvxMSDffVertPair*)mso_sptQuadArrowVert, sizeof( mso_sptQuadArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptQuadArrowSegm, sizeof( mso_sptQuadArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptQuadArrowCalc, sizeof( mso_sptQuadArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptQuadArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptQuadArrowTextRect, sizeof( mso_sptQuadArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftRightUpArrowVert[] = // adjustment1: x 0 - 10800, adjustment2: x 0 - 10800
-{ // adjustment3: y 0 - 21600
- { 10800, 0 }, { 3 MSO_I, 2 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 4 MSO_I, 1 MSO_I },
- { 5 MSO_I, 1 MSO_I }, { 5 MSO_I, 0 MSO_I }, { 21600, 10800 }, { 5 MSO_I, 3 MSO_I },
- { 5 MSO_I, 4 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0, 10800 },
- { 2 MSO_I, 0 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 0 MSO_I, 2 MSO_I }
-};
-static const sal_uInt16 mso_sptLeftRightUpArrowSegm[] =
-{
- 0x4000, 0x0010, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptLeftRightUpArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 1
- { 0x6001, 0x0403, DFF_Prop_adjust3Value, 21600 }, // 2
- { 0x8000, 21600, 0, DFF_Prop_adjustValue }, // 3
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value }, // 4
- { 0x8000, 21600, 0, 0x0402 } // 5
-};
-static const sal_Int32 mso_sptLeftRightUpArrowDefault[] =
-{
- 3, 6500, 8600, 6200
-};
-static const SvxMSDffTextRectangles mso_sptLeftRightUpArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoLeftRightUpArrow =
-{
- (SvxMSDffVertPair*)mso_sptLeftRightUpArrowVert, sizeof( mso_sptLeftRightUpArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftRightUpArrowSegm, sizeof( mso_sptLeftRightUpArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptLeftRightUpArrowCalc, sizeof( mso_sptLeftRightUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftRightUpArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftRightUpArrowTextRect, sizeof( mso_sptLeftRightUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptBentArrowVert[] = // adjustment1 : x 12427 - 21600
-{ // adjustment2 : y 0 - 6079
- { 0, 21600 }, { 0, 12160 }, { 12427, 1 MSO_I }, { 0 MSO_I, 1 MSO_I },
- { 0 MSO_I, 0 }, { 21600, 6079 }, { 0 MSO_I, 12158 }, { 0 MSO_I, 2 MSO_I },
- { 12427, 2 MSO_I }, { 4 MSO_I, 12160 }, { 4 MSO_I, 21600 }
-};
-static const sal_uInt16 mso_sptBentArrowSegm[] =
-{
- 0x4000, 0x0001, 0xa801, 0x0006, 0xa701, 0x0001, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptBentArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x8000, 12158, 0, DFF_Prop_adjust2Value },
- { 0x8000, 6079, 0, DFF_Prop_adjust2Value },
- { 0x2001, 0x0403, 2, 1 }
-};
-static const sal_Int32 mso_sptBentArrowDefault[] =
-{
- 2, 15100, 2900
-};
-static const SvxMSDffTextRectangles mso_sptBentArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoBentArrow =
-{
- (SvxMSDffVertPair*)mso_sptBentArrowVert, sizeof( mso_sptBentArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBentArrowSegm, sizeof( mso_sptBentArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBentArrowCalc, sizeof( mso_sptBentArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptBentArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptBentArrowTextRect, sizeof( mso_sptBentArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptUturnArrowVert[] =
-{
- { 0, 21600 }, { 0, 8550 }, // pp
- { 0, 3540 }, { 4370, 0 }, { 9270, 0 }, // ccp
- { 13890, 0 }, { 18570, 3230 }, { 18600, 8300 }, // ccp
- { 21600, 8300 }, { 15680, 14260 }, { 9700, 8300 }, { 12500, 8300 }, // pppp
- { 12320, 6380 }, { 10870, 5850 }, { 9320, 5850 }, // ccp
- { 7770, 5850 }, { 6040, 6410 }, { 6110, 8520 }, // ccp
- { 6110, 21600 }
-};
-static const sal_uInt16 mso_sptUturnArrowSegm[] =
-{
- 0x4000, 0x0001, 0x2002, 0x0004, 0x2002, 0x0001, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptUturnArrowTextRect[] =
-{
- { { 0, 8280 }, { 6110, 21600 } }
-};
-static const mso_CustomShape msoUturnArrow =
-{
- (SvxMSDffVertPair*)mso_sptUturnArrowVert, sizeof( mso_sptUturnArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptUturnArrowSegm, sizeof( mso_sptUturnArrowSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptUturnArrowTextRect, sizeof( mso_sptUturnArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftUpArrowVert[] = // adjustment1 : x 0 - 21600, adjustment2 : x 0 - 21600
-{ // adjustment3 : y 0 - 21600
- { 0, 5 MSO_I }, { 2 MSO_I, 0 MSO_I }, { 2 MSO_I, 7 MSO_I }, { 7 MSO_I, 7 MSO_I },
- { 7 MSO_I, 2 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 5 MSO_I, 0 }, { 21600, 2 MSO_I },
- { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 21600 }
-};
-static const sal_uInt16 mso_sptLeftUpArrowSegm[] =
-{
- 0x4000, 0x000b, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptLeftUpArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 1
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 }, // 2
- { 0x8000, 21600, 0, DFF_Prop_adjustValue }, // 3
- { 0x2001, 0x0403, 1, 2 }, // 4
- { 0x6000, DFF_Prop_adjustValue, 0x0404, 0 }, // 5
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value }, // 6
- { 0x6000, DFF_Prop_adjustValue, 0x0406, 0 } // 7
-};
-static const sal_Int32 mso_sptLeftUpArrowDefault[] =
-{
- 3, 9340, 18500, 6200
-};
-static const SvxMSDffTextRectangles mso_sptLeftUpArrowTextRect[] =
-{
- { { 2 MSO_I, 7 MSO_I }, { 1 MSO_I, 1 MSO_I } },
- { { 7 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I } }
-};
-static const mso_CustomShape msoLeftUpArrow =
-{
- (SvxMSDffVertPair*)mso_sptLeftUpArrowVert, sizeof( mso_sptLeftUpArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftUpArrowSegm, sizeof( mso_sptLeftUpArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptLeftUpArrowCalc, sizeof( mso_sptLeftUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftUpArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftUpArrowTextRect, sizeof( mso_sptLeftUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptBentUpArrowVert[] = // adjustment1 : x 0 - 21600, adjustment2 : x 0 - 21600
-{ // adjustment3 : y 0 - 21600
- { 0, 8 MSO_I }, { 7 MSO_I, 8 MSO_I }, { 7 MSO_I, 2 MSO_I }, { 0 MSO_I, 2 MSO_I },
- { 5 MSO_I, 0 }, { 21600, 2 MSO_I }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 21600 },
- { 0, 21600 }
-};
-static const sal_uInt16 mso_sptBentUpArrowSegm[] =
-{
- 0x4000, 0x0008, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptBentUpArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 1
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 }, // 2
- { 0x8000, 21600, 0, DFF_Prop_adjustValue }, // 3
- { 0x2001, 0x0403, 1, 2 }, // 4
- { 0x6000, DFF_Prop_adjustValue, 0x0404, 0 }, // 5
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value }, // 6
- { 0x6000, DFF_Prop_adjustValue, 0x0406, 0 }, // 7
- { 0x6000, 0x0407, 0x0406, 0 } // 8
-};
-static const sal_Int32 mso_sptBentUpArrowDefault[] =
-{
- 3, 9340, 18500, 7200
-};
-static const SvxMSDffTextRectangles mso_sptBentUpArrowTextRect[] =
-{
- { { 2 MSO_I, 7 MSO_I }, { 1 MSO_I, 1 MSO_I } },
- { { 7 MSO_I, 2 MSO_I }, { 1 MSO_I, 1 MSO_I } }
-};
-static const mso_CustomShape msoBentUpArrow =
-{
- (SvxMSDffVertPair*)mso_sptBentUpArrowVert, sizeof( mso_sptBentUpArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBentUpArrowSegm, sizeof( mso_sptBentUpArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBentUpArrowCalc, sizeof( mso_sptBentUpArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptBentUpArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptBentUpArrowTextRect, sizeof( mso_sptBentUpArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptCurvedArrowVert[] = // adjustment1 : y 10800 - 21600, adjustment2 : y 16424 - 21600
-{ // adjustment3 : x 0 - 21600
- { 21600, 0 },
- { 9675, 0 }, { 0, 10 MSO_I }, { 0, 9 MSO_I }, // ccp
- { 0, 11 MSO_I },
- { 0, 14 MSO_I }, { 15 MSO_I, 1 MSO_I }, { 2 MSO_I, 1 MSO_I }, // ccp
- { 2 MSO_I, 21600 }, { 21600, 7 MSO_I }, { 2 MSO_I, 0 MSO_I }, { 2 MSO_I, 16 MSO_I },// pppp
- { 2 MSO_I, 16 MSO_I }, { 80, 8 MSO_I }, { 80, 8 MSO_I }, // ccp
- { 80, 8 MSO_I }, { 21600, 5 MSO_I }, { 21600, 0 } // ccp
-};
-static const sal_uInt16 mso_sptCurvedArrowSegm[] =
-{
- 0x4000, 0x2001, 0x0001, 0x2001, 0x0004, 0x2002, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptCurvedArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 1
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 }, // 2
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value }, // 3
- { 0xa000, DFF_Prop_adjust2Value, 0, DFF_Prop_adjustValue }, // 4
- { 0xa000, 0x0404, 0, 0x0403 }, // 5
- { 0x2001, 0x0405, 1, 2 }, // 6
- { 0xa000, DFF_Prop_adjust2Value, 0, 0x0406 }, // 7
- { 0x2001, DFF_Prop_adjust2Value, 1, 2 }, // 8
- { 0xa000, 0x0408, 0, 0x0406 }, // 9
- { 0x2001, 0x0409, 10000, 22326 }, // 10
- { 0x6000, 0x0409, 0x0405, 0 }, // 11
- { 0xa000, DFF_Prop_adjust2Value, 0, 0x040b }, // 12
- { 0x2001, 0x040c, 10000, 23148 }, // 13
- { 0x6000, 0x040d, 0x040b, 0 }, // 14
- { 0x2001, DFF_Prop_adjust3Value, 10000, 25467 }, // 15
- { 0x6000, DFF_Prop_adjustValue, 0x0403, 0 } // 16
-};
-static const sal_Int32 mso_sptCurvedArrowDefault[] =
-{
- 3, 13000, 19400, 14400
-};
-static const SvxMSDffTextRectangles mso_sptCurvedArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoCurvedArrow =
-{
- (SvxMSDffVertPair*)mso_sptCurvedArrowVert, sizeof( mso_sptCurvedArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptCurvedArrowSegm, sizeof( mso_sptCurvedArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCurvedArrowCalc, sizeof( mso_sptCurvedArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptCurvedArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptCurvedArrowTextRect, sizeof( mso_sptCurvedArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptStripedRightArrowVert[] = // adjustment1 : x 3375 - 21600
-{ // adjustment2 : y 0 - 10800
- { 3375, 0 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 1 MSO_I, 0 }, { 21600, 10800 },
- { 1 MSO_I, 21600 }, { 1 MSO_I, 2 MSO_I }, { 3375, 2 MSO_I }, { 0, 0 MSO_I },
- { 675, 0 MSO_I }, { 675, 2 MSO_I }, { 0, 2 MSO_I }, { 1350, 0 MSO_I },
- { 2700, 0 MSO_I }, { 2700, 2 MSO_I }, { 1350, 2 MSO_I }
-};
-static const sal_uInt16 mso_sptStripedRightArrowSegm[] =
-{
- 0x4000, 0x0006, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptStripedRightArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value },
- { 0x8000, 21600, 0, 0x401 },
- { 0x6001, 0x403, 0x400, 10800 },
- { 0x6000, 0x401, 0x404, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptStripedRightArrowTextRect[] =
-{
- { { 3375, 0 MSO_I }, { 5 MSO_I, 2 MSO_I } }
-};
-static const mso_CustomShape msoStripedRightArrow =
-{
- (SvxMSDffVertPair*)mso_sptStripedRightArrowVert, sizeof( mso_sptStripedRightArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptStripedRightArrowSegm, sizeof( mso_sptStripedRightArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptStripedRightArrowCalc, sizeof( mso_sptStripedRightArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault16200and5400,
- (SvxMSDffTextRectangles*)mso_sptStripedRightArrowTextRect, sizeof( mso_sptStripedRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptNotchedRightArrowVert[] = // adjustment1 : x 0 - 21600 (default 16200)
-{ // adjustment2 : y 0 - 10800 (default 5400)
- { 0, 1 MSO_I }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 0 }, { 21600, 10800 },
- { 0 MSO_I, 21600 }, { 0 MSO_I, 2 MSO_I }, { 0, 2 MSO_I }, { 5 MSO_I, 10800 }, { 0, 1 MSO_I }
-};
-static const SvxMSDffCalculationData mso_sptNotchedRightArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjust2Value },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjust2Value },
- { 0x6001, 0x403, 0x404, 10800 }
-};
-static const SvxMSDffTextRectangles mso_sptNotchedRightArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoNotchedRightArrow =
-{
- (SvxMSDffVertPair*)mso_sptNotchedRightArrowVert, sizeof( mso_sptNotchedRightArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)NULL, 0,
- (SvxMSDffCalculationData*)mso_sptNotchedRightArrowCalc, sizeof( mso_sptNotchedRightArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault16200and5400,
- (SvxMSDffTextRectangles*)mso_sptNotchedRightArrowTextRect, sizeof( mso_sptNotchedRightArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptHomePlateVert[] = // adjustment1 : x 0 - 21600
-{
- { 0, 0 }, { 0 MSO_I, 0 }, { 21600, 10800 }, { 0 MSO_I, 21600 },
- { 0, 21600 }
-};
-static const sal_uInt16 mso_sptHomePlateSegm[] =
-{
- 0x4000, 0x0004, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptHomePlateCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }
-};
-static const sal_Int32 mso_sptHomePlateDefault[] =
-{
- 1, 16200
-};
-static const SvxMSDffTextRectangles mso_sptHomePlateTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoHomePlate =
-{
- (SvxMSDffVertPair*)mso_sptHomePlateVert, sizeof( mso_sptHomePlateVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptHomePlateSegm, sizeof( mso_sptHomePlateSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptHomePlateCalc, sizeof( mso_sptHomePlateCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptHomePlateDefault,
- (SvxMSDffTextRectangles*)mso_sptHomePlateTextRect, sizeof( mso_sptHomePlateTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptChevronVert[] = // adjustment1 : x 0 - 21600
-{
- { 0, 0 }, { 0 MSO_I, 0 }, { 21600, 10800 }, { 0 MSO_I, 21600 },
- { 0, 21600 }, { 1 MSO_I, 10800 }
-};
-static const sal_uInt16 mso_sptChevronSegm[] =
-{
- 0x4000, 0x0005, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptChevronCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, 0x0400 }
-};
-static const sal_Int32 mso_sptChevronDefault[] =
-{
- 1, 16200
-};
-static const SvxMSDffTextRectangles mso_sptChevronTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoChevron =
-{
- (SvxMSDffVertPair*)mso_sptChevronVert, sizeof( mso_sptChevronVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptChevronSegm, sizeof( mso_sptChevronSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptChevronCalc, sizeof( mso_sptChevronCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptChevronDefault,
- (SvxMSDffTextRectangles*)mso_sptChevronTextRect, sizeof( mso_sptChevronTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptRightArrowCalloutVert[] = // adjustment1 : x 0 - 21000
-{ // adjustment2 : y 0 - 10800
- { 0, 0 }, { 0 MSO_I, 0 }, { 0 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I },
- { 2 MSO_I, 1 MSO_I }, { 21600, 10800 }, { 2 MSO_I, 4 MSO_I }, { 2 MSO_I, 5 MSO_I },
- { 0 MSO_I, 5 MSO_I }, { 0 MSO_I, 21600 }, { 0, 21600 }
-};
-static const sal_uInt16 mso_sptRightArrowCalloutSegm[] =
-{
- 0x4000, 0x000a, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptRightArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptRightArrowCalloutDefault[] =
-{
- 4, 14400, 5400, 18000, 8100
-};
-static const SvxMSDffTextRectangles mso_sptRightArrowCalloutTextRect[] =
-{
- { { 0, 0 }, { 0 MSO_I, 21600 } }
-};
-static const mso_CustomShape msoRightArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptRightArrowCalloutVert, sizeof( mso_sptRightArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptRightArrowCalloutSegm, sizeof( mso_sptRightArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptRightArrowCalloutCalc, sizeof( mso_sptRightArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptRightArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptRightArrowCalloutTextRect, sizeof( mso_sptRightArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftArrowCalloutVert[] = // adjustment1 : x 0 - 21600, adjustment2 : y 0 - 10800
-{ // adjustment3 : x 0 - 21600, adjustment4 : y 0 - 10800
- { 0 MSO_I, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0 MSO_I, 21600 },
- { 0 MSO_I, 5 MSO_I }, { 2 MSO_I, 5 MSO_I }, { 2 MSO_I, 4 MSO_I }, { 0, 10800 },
- { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptLeftArrowCalloutSegm[] =
-{
- 0x4000, 0x000a, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptLeftArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptLeftArrowCalloutDefault[] =
-{
- 4, 7200, 5400, 3600, 8100
-};
-static const SvxMSDffTextRectangles mso_sptLeftArrowCalloutTextRect[] =
-{
- { { 0 MSO_I, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoLeftArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptLeftArrowCalloutVert, sizeof( mso_sptLeftArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftArrowCalloutSegm, sizeof( mso_sptLeftArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptLeftArrowCalloutCalc, sizeof( mso_sptLeftArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftArrowCalloutTextRect, sizeof( mso_sptLeftArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptUpArrowCalloutVert[] =
-{
- { 21600, 0 MSO_I }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 MSO_I },
- { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I }, { 10800, 0 },
- { 4 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 5 MSO_I, 0 MSO_I }
-};
-static const sal_uInt16 mso_sptUpArrowCalloutSegm[] =
-{
- 0x4000, 0x000a, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptUpArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptUpArrowCalloutDefault[] =
-{
- 4, 7200, 5400, 3600, 8100
-};
-static const SvxMSDffTextRectangles mso_sptUpArrowCalloutTextRect[] =
-{
- { { 0, 0 MSO_I }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoUpArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptUpArrowCalloutVert, sizeof( mso_sptUpArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptUpArrowCalloutSegm, sizeof( mso_sptUpArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptUpArrowCalloutCalc, sizeof( mso_sptUpArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptUpArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptUpArrowCalloutTextRect, sizeof( mso_sptUpArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptDownArrowCalloutVert[] =
-{
- { 0, 0 MSO_I }, { 0, 0 }, { 21600, 0 }, { 21600, 0 MSO_I },
- { 5 MSO_I, 0 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 4 MSO_I, 2 MSO_I }, { 10800, 21600 },
- { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 0 MSO_I }
-};
-static const sal_uInt16 mso_sptDownArrowCalloutSegm[] =
-{
- 0x4000, 0x000a, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptDownArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptDownArrowCalloutDefault[] =
-{
- 4, 14400, 5400, 18000, 8100
-};
-static const SvxMSDffTextRectangles mso_sptDownArrowCalloutTextRect[] =
-{
- { { 0, 0 }, { 21600, 0 MSO_I } }
-};
-static const mso_CustomShape msoDownArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptDownArrowCalloutVert, sizeof( mso_sptDownArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptDownArrowCalloutSegm, sizeof( mso_sptDownArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptDownArrowCalloutCalc, sizeof( mso_sptDownArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDownArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptDownArrowCalloutTextRect, sizeof( mso_sptDownArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptLeftRightArrowCalloutVert[] =
-{
- { 0 MSO_I, 0 }, { 4 MSO_I, 0 }, { 4 MSO_I, 3 MSO_I }, { 6 MSO_I, 3 MSO_I },
- { 6 MSO_I, 1 MSO_I }, { 21600, 10800 }, { 6 MSO_I, 5 MSO_I }, { 6 MSO_I, 7 MSO_I },
- { 4 MSO_I, 7 MSO_I }, { 4 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0 MSO_I, 7 MSO_I },
- { 2 MSO_I, 7 MSO_I }, { 2 MSO_I, 5 MSO_I }, { 0, 10800 }, { 2 MSO_I, 1 MSO_I },
- { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptLeftRightArrowCalloutSegm[] =
-{
- 0x4000, 0x0011, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptLeftRightArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0400 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0402 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptLeftRightArrowCalloutDefault[] =
-{
- 4, 5400, 5500, 2700, 8100
-};
-static const SvxMSDffTextRectangles mso_sptLeftRightArrowCalloutTextRect[] =
-{
- { { 0 MSO_I, 0 }, { 4 MSO_I, 21600 } }
-};
-static const mso_CustomShape msoLeftRightArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptLeftRightArrowCalloutVert, sizeof( mso_sptLeftRightArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptLeftRightArrowCalloutSegm, sizeof( mso_sptLeftRightArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptLeftRightArrowCalloutCalc, sizeof( mso_sptLeftRightArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptLeftRightArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftRightArrowCalloutTextRect, sizeof( mso_sptLeftRightArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptUpDownArrowCalloutVert[] =
-{
- { 0, 0 MSO_I }, { 0, 4 MSO_I }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 6 MSO_I },
- { 1 MSO_I, 6 MSO_I }, { 10800, 21600 }, { 5 MSO_I, 6 MSO_I }, { 7 MSO_I, 6 MSO_I },
- { 7 MSO_I, 4 MSO_I }, { 21600, 4 MSO_I }, { 21600, 0 MSO_I }, { 7 MSO_I, 0 MSO_I },
- { 7 MSO_I, 2 MSO_I }, { 5 MSO_I, 2 MSO_I }, { 10800, 0 }, { 1 MSO_I, 2 MSO_I },
- { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 0 MSO_I }
-};
-static const sal_uInt16 mso_sptUpDownArrowCalloutSegm[] =
-{
- 0x4000, 0x0011, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptUpDownArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0400 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0402 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptUpDownArrowCalloutDefault[] =
-{
- 4, 5400, 5500, 2700, 8100
-};
-static const SvxMSDffTextRectangles mso_sptUpDownArrowCalloutTextRect[] =
-{
- { { 0, 0 MSO_I }, { 21600, 4 MSO_I } }
-};
-static const mso_CustomShape msoUpDownArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptUpDownArrowCalloutVert, sizeof( mso_sptUpDownArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptUpDownArrowCalloutSegm, sizeof( mso_sptUpDownArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptUpDownArrowCalloutCalc, sizeof( mso_sptUpDownArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptUpDownArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptUpDownArrowCalloutTextRect, sizeof( mso_sptUpDownArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptQuadArrowCalloutVert[] =
-{
- { 0 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 10800, 0 }, { 5 MSO_I, 2 MSO_I }, { 7 MSO_I, 2 MSO_I }, { 7 MSO_I, 0 MSO_I },
- { 4 MSO_I, 0 MSO_I }, { 4 MSO_I, 3 MSO_I }, { 6 MSO_I, 3 MSO_I }, { 6 MSO_I, 1 MSO_I },
- { 21600, 10800 }, { 6 MSO_I, 5 MSO_I }, { 6 MSO_I, 7 MSO_I }, { 4 MSO_I, 7 MSO_I },
- { 4 MSO_I, 4 MSO_I }, { 7 MSO_I, 4 MSO_I }, { 7 MSO_I, 6 MSO_I }, { 5 MSO_I, 6 MSO_I },
- { 10800, 21600 }, { 1 MSO_I, 6 MSO_I }, { 3 MSO_I, 6 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0 MSO_I, 4 MSO_I }, { 0 MSO_I, 7 MSO_I }, { 2 MSO_I, 7 MSO_I }, { 2 MSO_I, 5 MSO_I },
- { 0, 10800 }, { 2 MSO_I, 1 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptQuadArrowCalloutSegm[] =
-{
- 0x4000, 0x001f, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptQuadArrowCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 },
- { 0x2000, DFF_Prop_adjust4Value, 0, 0 },
- { 0x8000, 21600, 0, 0x0400 },
- { 0x8000, 21600, 0, 0x0401 },
- { 0x8000, 21600, 0, 0x0402 },
- { 0x8000, 21600, 0, 0x0403 }
-};
-static const sal_Int32 mso_sptQuadArrowCalloutDefault[] =
-{
- 4, 5400, 8100, 2700, 9400
-};
-static const SvxMSDffTextRectangles mso_sptQuadArrowCalloutTextRect[] =
-{
- { { 0 MSO_I, 0 MSO_I }, { 4 MSO_I, 4 MSO_I } }
-};
-static const mso_CustomShape msoQuadArrowCallout =
-{
- (SvxMSDffVertPair*)mso_sptQuadArrowCalloutVert, sizeof( mso_sptQuadArrowCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptQuadArrowCalloutSegm, sizeof( mso_sptQuadArrowCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptQuadArrowCalloutCalc, sizeof( mso_sptQuadArrowCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptQuadArrowCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptQuadArrowCalloutTextRect, sizeof( mso_sptQuadArrowCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptCircularArrowVert[] =
-{
- { 3 MSO_I, 3 MSO_I }, { 20 MSO_I, 20 MSO_I }, { 19 MSO_I, 18 MSO_I }, { 17 MSO_I, 16 MSO_I },
- { 0, 0 }, { 21600, 21600 }, { 9 MSO_I, 8 MSO_I }, { 11 MSO_I, 10 MSO_I },
- { 24 MSO_I, 23 MSO_I }, { 40 MSO_I, 39 MSO_I }, { 29 MSO_I, 28 MSO_I }
-};
-static const sal_uInt16 mso_sptCircularArrowSegm[] =
-{
- 0xa404, 0xa504, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptCircularArrowCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 1
- { 0x2000, DFF_Prop_adjust3Value, 0, 0 }, // 2
- { 0x8000, 10800, 0,DFF_Prop_adjust3Value }, // 3
- { 0x4009, 10800, DFF_Prop_adjustValue, 0 }, // 4
- { 0x400a, 10800, DFF_Prop_adjustValue, 0 }, // 5
- { 0x4009, 10800, DFF_Prop_adjust2Value, 0 }, // 6
- { 0x400a, 10800, DFF_Prop_adjust2Value, 0 }, // 7
- { 0x2000, 0x0404, 10800, 0 }, // 8
- { 0x2000, 0x0405, 10800, 0 }, // 9
- { 0x2000, 0x0406, 10800, 0 }, // 10
- { 0x2000, 0x0407, 10800, 0 }, // 11
- { 0x6009, 0x0403, DFF_Prop_adjustValue, 0 }, // 12
- { 0x600a, 0x0403, DFF_Prop_adjustValue, 0 }, // 13
- { 0x6009, 0x0403, DFF_Prop_adjust2Value, 0 }, // 14
- { 0x600a, 0x0403, DFF_Prop_adjust2Value, 0 }, // 15
- { 0x2000, 0x040c, 10800, 0 }, // 16
- { 0x2000, 0x040d, 10800, 0 }, // 17
- { 0x2000, 0x040e, 10800, 0 }, // 18
- { 0x2000, 0x040f, 10800, 0 }, // 19
- { 0x8000, 21600, 0, 0x0403 }, // 20
- { 0x4009, 12600, DFF_Prop_adjust2Value, 0 }, // 21
- { 0x400a, 12600, DFF_Prop_adjust2Value, 0 }, // 22
- { 0x2000, 0x0415, 10800, 0 }, // 23
- { 0x2000, 0x0416, 10800, 0 }, // 24
- { 0x2000, DFF_Prop_adjust3Value, 0, 1800 }, // 25
- { 0x6009, 0x0419, DFF_Prop_adjust2Value, 0 }, // 26
- { 0x600a, 0x0419, DFF_Prop_adjust2Value, 0 }, // 27
- { 0x2000, 0x041a, 10800, 0 }, // 28
- { 0x2000, 0x041b, 10800, 0 }, // 29
- { 0x2001, 0x0403, 1, 2 }, // 30
- { 0x8000, 10800, 0, 0x041e }, // 31
- { 0x4001, 35, 0x0403, 10800 }, // 32
- { 0x2000, 0x0420, 10, 0 }, // 33
- { 0x2001, 0x0421, 256, 1 }, // 34
- { 0x2001, 0x0422, 256, 1 }, // 35
- { 0x6000, 0x0423, DFF_Prop_adjust2Value, 0 }, // 36
- { 0x6009, 0x041f, 0x0424, 0 }, // 37
- { 0x600a, 0x041f, 0x0424, 0 }, // 38
- { 0x2000, 0x0425, 10800, 0 }, // 39
- { 0x2000, 0x0426, 10800, 0 } // 40
-};
-static const sal_Int32 mso_sptCircularArrowDefault[] =
-{
- 3, 180 << 16, 0, 5500
-};
-static const SvxMSDffTextRectangles mso_sptCircularArrowTextRect[] = // todo
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoCircularArrow =
-{
- (SvxMSDffVertPair*)mso_sptCircularArrowVert, sizeof( mso_sptCircularArrowVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptCircularArrowSegm, sizeof( mso_sptCircularArrowSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCircularArrowCalc, sizeof( mso_sptCircularArrowCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptCircularArrowDefault,
- (SvxMSDffTextRectangles*)mso_sptCircularArrowTextRect, sizeof( mso_sptCircularArrowTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptCubeVert[] =
-{
- { 0, 21600 }, { 0, 1 MSO_I }, { 2 MSO_I, 0 }, { 21600, 0 },
- { 21600, 3 MSO_I }, { 4 MSO_I, 21600 }, { 0, 1 MSO_I }, { 2 MSO_I, 0 },
- { 21600, 0 }, { 4 MSO_I, 1 MSO_I }, { 4 MSO_I, 21600 }, { 4 MSO_I, 1 MSO_I },
- { 21600, 0 }, { 21600, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptCubeSegm[] =
-{
- 0x4000, 0x0005, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptCubeCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoTop, 0x400, 0 },
- { 0x6000, DFF_Prop_geoLeft, 0x400, 0 },
- { 0xa000, DFF_Prop_geoBottom, 0, 0x400 },
- { 0xa000, DFF_Prop_geoRight, 0, 0x400 },
- { 0x8000, 21600, 0, 0x402 }, // 5
- { 0x2001, 0x405, 1, 2 }, // 6
- { 0x6000, 0x402, 0x406, 0 }, // 7
- { 0x2001, 0x404, 1, 2 } // 8
-
-};
-static const SvxMSDffTextRectangles mso_sptCubeTextRect[] =
-{
- { { 0, 1 MSO_I }, { 4 MSO_I, 21600 } }
-};
-static const mso_CustomShape msoCube =
-{
- (SvxMSDffVertPair*)mso_sptCubeVert, sizeof( mso_sptCubeVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptCubeSegm, sizeof( mso_sptCubeSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCubeCalc, sizeof( mso_sptCubeCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptCubeTextRect, sizeof( mso_sptCubeTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 10800, 10800,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptBevelVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 1 MSO_I, 0 MSO_I }, { 0 MSO_I, 0 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 0 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 1 MSO_I, 1 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 0 MSO_I, 0 MSO_I }, { 0 MSO_I, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptBevelSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptBevelCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 21599, 21600 },
- { 0x8000, 21600, 0, 0x400 }
-};
-static const SvxMSDffTextRectangles mso_sptBevelTextRect[] =
-{
- { { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I } }
-};
-static const mso_CustomShape msoBevel =
-{
- (SvxMSDffVertPair*)mso_sptBevelVert, sizeof( mso_sptBevelVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBevelSegm, sizeof( mso_sptBevelSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBevelCalc, sizeof( mso_sptBevelCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2700,
- (SvxMSDffTextRectangles*)mso_sptBevelTextRect, sizeof( mso_sptBevelTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 10800, 10800,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptFoldedCornerVert[] = // adjustment1 : x 10800 - 21600
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 0 MSO_I }, { 0 MSO_I, 21600 },
- { 0, 21600 }, { 0 MSO_I, 21600 }, { 3 MSO_I, 0 MSO_I }, { 8 MSO_I, 9 MSO_I },
- { 10 MSO_I, 11 MSO_I }, { 21600, 0 MSO_I }
-};
-static const sal_uInt16 mso_sptFoldedCornerSegm[] =
-{
- 0x4000, 0x0004, 0x6001, 0x8000,
- 0x4000, 0x0001, 0x2001, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptFoldedCornerCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, 0x400 },
- { 0x2001, 0x0401, 8000, 10800 },
- { 0x8000, 21600, 0, 0x0402 },
- { 0x2001, 0x0401, 1, 2 },
- { 0x2001, 0x0401, 1, 4 },
- { 0x2001, 0x0401, 1, 7 },
- { 0x2001, 0x0401, 1, 16 },
- { 0x6000, 0x0403, 0x405, 0 },
- { 0x6000, 0x0400, 0x406, 0 },
- { 0x8000, 21600, 0, 0x404 },
- { 0x6000, 0x400, 0x407, 0 }
-};
-static const sal_Int32 mso_sptFoldedCornerDefault[] =
-{
- 1, 18900
-};
-static const SvxMSDffTextRectangles mso_sptFoldedCornerTextRect[] =
-{
- { { 0, 0 }, { 21600, 11 MSO_I } }
-};
-static const mso_CustomShape msoFoldedCorner =
-{
- (SvxMSDffVertPair*)mso_sptFoldedCornerVert, sizeof( mso_sptFoldedCornerVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFoldedCornerSegm, sizeof( mso_sptFoldedCornerSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptFoldedCornerCalc, sizeof( mso_sptFoldedCornerCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptFoldedCornerDefault,
- (SvxMSDffTextRectangles*)mso_sptFoldedCornerTextRect, sizeof( mso_sptFoldedCornerTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonBlankVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 1 MSO_I, 0 MSO_I }, { 0 MSO_I, 0 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 1 MSO_I, 1 MSO_I }, { 1 MSO_I, 0 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 0 MSO_I, 1 MSO_I }, { 1 MSO_I, 1 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 0 MSO_I, 0 MSO_I }, { 0 MSO_I, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonBlankSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonBlankCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 21599, 21600 },
- { 0x8000, 21600, 0, 0x400 }
-};
-static const SvxMSDffTextRectangles mso_sptActionButtonBlankTextRect[] =
-{
- { { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I } }
-};
-static const mso_CustomShape msoActionButtonBlank =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonBlankVert, sizeof( mso_sptActionButtonBlankVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonBlankSegm, sizeof( mso_sptActionButtonBlankSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonBlankCalc, sizeof( mso_sptActionButtonBlankCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonBlankTextRect, sizeof( mso_sptActionButtonBlankTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 10800, 10800,
- NULL, 0
-};
-
-static const SvxMSDffTextRectangles mso_sptActionButtonTextRect[] =
-{
- { { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 4 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptActionButtonHomeVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 10800, 0xa MSO_I }, { 0xc MSO_I, 0xe MSO_I }, { 0xc MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I },
- { 0x12 MSO_I, 0x14 MSO_I }, { 0x16 MSO_I, 10800 }, { 0x18 MSO_I, 10800 }, { 0x18 MSO_I, 0x1a MSO_I },
- { 0x1c MSO_I, 0x1a MSO_I }, { 0x1c MSO_I, 10800 }, { 0x1e MSO_I, 10800 },
-
- { 0xc MSO_I, 0xe MSO_I }, { 0xc MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I },{ 0x12 MSO_I, 0x14 MSO_I },
-
- { 0x20 MSO_I, 0x24 MSO_I }, { 0x22 MSO_I, 0x24 MSO_I }, { 0x22 MSO_I, 0x1a MSO_I }, { 0x18 MSO_I, 0x1a MSO_I },
- { 0x18 MSO_I, 10800 }, { 0x1c MSO_I, 10800 }, { 0x1c MSO_I, 0x1a MSO_I }, { 0x20 MSO_I, 0x1a MSO_I }
-
-};
-static const sal_uInt16 mso_sptActionButtonHomeSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x000a, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0007, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonHomeCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8000, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0408, 0 }, // a
- { 0x4001, 2960, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0407, 0 }, // c
- { 0x4001, -5000, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0408, 0 }, // e
- { 0x4001, -7000, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 }, // 10
- { 0x4001, 5000, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0407, 0 }, // 12
- { 0x4001, -2960, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0408, 0 }, // 14
- { 0x4001, 8000, 0x0406, 1 }, // 15
- { 0x6000, 0x0415,0x0407, 0 }, // 16
- { 0x4001, 6100, 0x0406, 1 }, // 17
- { 0x6000, 0x0417,0x0407, 0 }, // 18
- { 0x4001, 8260, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0408, 0 }, // 1a
- { 0x4001, -6100, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0407, 0 }, // 1c
- { 0x4001, -8000, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0407, 0 }, // 1e
- { 0x4001, -1060, 0x0406, 1 }, // 1f
- { 0x6000, 0x041f, 0x0407, 0 }, // 20
- { 0x4001, 1060, 0x0406, 1 }, // 21
- { 0x6000, 0x0421, 0x0407, 0 }, // 22
- { 0x4001, 4020, 0x0406, 1 }, // 23
- { 0x6000, 0x0423, 0x0408, 0 } // 24
-
-};
-static const mso_CustomShape msoActionButtonHome =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonHomeVert, sizeof( mso_sptActionButtonHomeVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonHomeSegm, sizeof( mso_sptActionButtonHomeSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonHomeCalc, sizeof( mso_sptActionButtonHomeCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonHelpVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I,4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I },
-
- { 0x12 MSO_I, 0x14 MSO_I }, { 0x12 MSO_I, 0x16 MSO_I }, // pp
- { 0x12 MSO_I, 0x18 MSO_I }, { 0x1a MSO_I, 10800 }, { 0x1c MSO_I, 10800 }, // ccp
- { 0x1e MSO_I, 10800 }, { 0x20 MSO_I, 0x22 MSO_I }, { 0x20 MSO_I, 0x24 MSO_I }, // ccp
- { 0x20 MSO_I, 0x26 MSO_I }, { 0x28 MSO_I, 0x2a MSO_I }, { 10800, 0x2a MSO_I }, // ccp
- { 0x2c MSO_I, 0x2a MSO_I }, { 0x2e MSO_I, 0x26 MSO_I }, { 0x2e MSO_I, 0x24 MSO_I }, // ccp
- { 0x30 MSO_I, 0x24 MSO_I }, { 0x30 MSO_I, 0x32 MSO_I }, { 0x34 MSO_I, 0x36 MSO_I }, // ccp
- { 10800, 0x36 MSO_I }, // p
- { 0x12 MSO_I, 0x36 MSO_I }, { 0x1c MSO_I, 0x32 MSO_I }, { 0x1c MSO_I, 0x24 MSO_I }, // ccp
- { 0x1c MSO_I, 0x38 MSO_I }, { 0x3a MSO_I, 0x3c MSO_I }, { 0x12 MSO_I, 0x3c MSO_I }, // ccp
- { 10800, 0x3c MSO_I }, { 0x34 MSO_I, 10800 }, { 0x34 MSO_I, 0x16 MSO_I }, // ccp
- { 0x34 MSO_I, 0x14 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonHelpSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0xa302, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x2004, 0x0001, 0x2004, 0x0001, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonHelpCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -1690, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, 4600, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, 1690, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 7980, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 }, // 10
- { 0x4001, 1270, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0407, 0 }, // 12
- { 0x4001, 4000, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0408, 0 }, // 14
- { 0x4001, 1750, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0408, 0 }, // 16
- { 0x4001, 800, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0408, 0 }, // 18
- { 0x4001, 1650, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0407, 0 }, // 1a
- { 0x4001, 2340, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0407, 0 }, // 1c
- { 0x4001, 3640, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0407, 0 }, // 1e
- { 0x4001, 4670, 0x0406, 1 }, // 1f
- { 0x6000, 0x041f, 0x0407, 0 }, // 20
- { 0x4001, -1570, 0x0406, 1 }, // 21
- { 0x6000, 0x0421, 0x0408, 0 }, // 22
- { 0x4001, -3390, 0x0406, 1 }, // 23
- { 0x6000, 0x0423, 0x0408, 0 }, // 24
- { 0x4001, -6050, 0x0406, 1 }, // 25
- { 0x6000, 0x0425, 0x0408, 0 }, // 26
- { 0x4001, 2540, 0x0406, 1 }, // 27
- { 0x6000, 0x0427, 0x0407, 0 }, // 28
- { 0x4001, -8050, 0x0406, 1 }, // 29
- { 0x6000, 0x0429, 0x0408, 0 }, // 2a
- { 0x4001, -2540, 0x0406, 1 }, // 2b
- { 0x6000, 0x042b, 0x0407, 0 }, // 2c
- { 0x4001, -4460, 0x0406, 1 }, // 2d
- { 0x6000, 0x042d, 0x0407, 0 }, // 2e
- { 0x4001, -2330, 0x0406, 1 }, // 2f
- { 0x6000, 0x042f, 0x0407, 0 }, // 30
- { 0x4001, -4700, 0x0406, 1 }, // 31
- { 0x6000, 0x0431, 0x0408, 0 }, // 32
- { 0x4001, -1270, 0x0406, 1 }, // 33
- { 0x6000, 0x0433, 0x0407, 0 }, // 34
- { 0x4001, -5720, 0x0406, 1 }, // 35
- { 0x6000, 0x0435, 0x0408, 0 }, // 36
- { 0x4001, -2540, 0x0406, 1 }, // 37
- { 0x6000, 0x0437, 0x0408, 0 }, // 38
- { 0x4001, 1800, 0x0406, 1 }, // 39
- { 0x6000, 0x0439, 0x0407, 0 }, // 3a
- { 0x4001, -1700, 0x0406, 1 }, // 3b
- { 0x6000, 0x043b, 0x0408, 0 } // 3c
-};
-static const mso_CustomShape msoActionButtonHelp =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonHelpVert, sizeof( mso_sptActionButtonHelpVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonHelpSegm, sizeof( mso_sptActionButtonHelpSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonHelpCalc, sizeof( mso_sptActionButtonHelpCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonInformationVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I },
-
- { 0x12 MSO_I, 0x14 MSO_I }, { 0x16 MSO_I, 0x18 MSO_I },
-
- { 0x1a MSO_I, 0x1c MSO_I }, { 0x1e MSO_I, 0x1c MSO_I }, { 0x1e MSO_I, 0x20 MSO_I }, { 0x22 MSO_I, 0x20 MSO_I },
- { 0x22 MSO_I, 0x24 MSO_I }, { 0x1a MSO_I, 0x24 MSO_I }, { 0x1a MSO_I, 0x20 MSO_I }, { 0x26 MSO_I, 0x20 MSO_I },
- { 0x26 MSO_I, 0x28 MSO_I }, { 0x1a MSO_I, 0x28 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonInformationSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0xa302, 0x6000, 0x8000,
- 0xa302, 0x6000, 0x8000,
- 0x4000, 0x0009, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonInformationCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8050, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -8050, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, 8050, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 8050, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 }, // 10
-
- { 0x4001, -2060, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0407, 0 }, // 12
- { 0x4001, -7620, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0408, 0 }, // 14
- { 0x4001, 2060, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0407, 0 }, // 16
- { 0x4001, -3500, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0408, 0 }, // 18
-
- { 0x4001, -2960, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0407, 0 }, // 1a
- { 0x4001, -2960, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0408, 0 }, // 1c
- { 0x4001, 1480, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0407, 0 }, // 1e
- { 0x4001, 5080, 0x0406, 1 }, // 1f
- { 0x6000, 0x041f, 0x0408, 0 }, // 20
- { 0x4001, 2960, 0x0406, 1 }, // 21
- { 0x6000, 0x0421, 0x0407, 0 }, // 22
- { 0x4001, 6140, 0x0406, 1 }, // 23
- { 0x6000, 0x0423, 0x0408, 0 }, // 24
- { 0x4001, -1480, 0x0406, 1 }, // 25
- { 0x6000, 0x0425, 0x0407, 0 }, // 26
- { 0x4001, -1920, 0x0406, 1 }, // 27
- { 0x6000, 0x0427, 0x0408, 0 } // 28
-};
-static const mso_CustomShape msoActionButtonInformation =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonInformationVert, sizeof( mso_sptActionButtonInformationVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonInformationSegm, sizeof( mso_sptActionButtonInformationSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonInformationCalc, sizeof( mso_sptActionButtonInformationCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonBackPreviousVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I,4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 10800 }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonForwardBackSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonForwardBackCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8050, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -8050, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, 8050, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 8050, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 } // 10
-};
-static const mso_CustomShape msoActionButtonBackPrevious =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonBackPreviousVert, sizeof( mso_sptActionButtonBackPreviousVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonForwardBackSegm, sizeof( mso_sptActionButtonForwardBackSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonForwardBackCalc, sizeof( mso_sptActionButtonForwardBackCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonForwardNextVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 10800 }, { 0xa MSO_I, 0x10 MSO_I }
-};
-static const mso_CustomShape msoActionButtonForwardNext =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonForwardNextVert, sizeof( mso_sptActionButtonForwardNextVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonForwardBackSegm, sizeof( mso_sptActionButtonForwardBackSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonForwardBackCalc, sizeof( mso_sptActionButtonForwardBackCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonBeginningVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 10800 }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0xc MSO_I },
- { 0x14 MSO_I, 0xc MSO_I }, { 0x14 MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0x10 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonBeginningEndSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
-
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonBeginningEndCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -4020, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -8050, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, 8050, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 8050, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 }, // 10
-
- { 0x4001, -8050, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0407, 0 }, // 12
- { 0x4001, -6140, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0407, 0 }, // 14
-
-
- { 0x4001, 4020, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0407, 0 }, // 16
- { 0x4001, 6140, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0407, 0 } // 18
-};
-static const mso_CustomShape msoActionButtonBeginning =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonBeginningVert, sizeof( mso_sptActionButtonBeginningVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonBeginningEndSegm, sizeof( mso_sptActionButtonBeginningEndSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonBeginningEndCalc, sizeof( mso_sptActionButtonBeginningEndCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonEndVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0x16 MSO_I, 10800 }, { 0x12 MSO_I, 0x10 MSO_I }, { 0x12 MSO_I, 0xc MSO_I },
-
- { 0x18 MSO_I, 0xc MSO_I }, { 0x18 MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 0x10 MSO_I }, { 0xe MSO_I, 0xc MSO_I }
-};
-static const mso_CustomShape msoActionButtonEnd =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonEndVert, sizeof( mso_sptActionButtonEndVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonBeginningEndSegm, sizeof( mso_sptActionButtonBeginningEndSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonBeginningEndCalc, sizeof( mso_sptActionButtonBeginningEndCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonReturnVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0x10 MSO_I }, // ppp
- { 0xe MSO_I, 0x12 MSO_I }, { 0x14 MSO_I, 0x16 MSO_I }, { 0x18 MSO_I, 0x16 MSO_I }, // ccp
- { 10800, 0x16 MSO_I }, // p
- { 0x1a MSO_I, 0x16 MSO_I }, { 0x1c MSO_I, 0x12 MSO_I }, { 0x1c MSO_I, 0x10 MSO_I }, // ccp
- { 0x1c MSO_I, 0xc MSO_I }, { 10800, 0xc MSO_I }, { 0x1e MSO_I, 0x20 MSO_I }, { 0x22 MSO_I, 0xc MSO_I }, // pppp
- { 0x24 MSO_I, 0xc MSO_I }, { 0x24 MSO_I, 0x10 MSO_I }, // pp
- { 0x24 MSO_I, 0x26 MSO_I }, { 0x28 MSO_I, 0x2a MSO_I }, { 10800, 0x2a MSO_I }, // ccp
- { 0x18 MSO_I, 0x2a MSO_I }, // p
- { 0x2c MSO_I, 0x2a MSO_I }, { 0xa MSO_I, 0x26 MSO_I }, { 0xa MSO_I, 0x10 MSO_I } // ccp
-};
-static const sal_uInt16 mso_sptActionButtonReturnSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x2001, 0x0001, 0x2001, 0x0006,0x2001, 0x0001, 0x2001, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonReturnCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8050, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -3800, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, -4020, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 2330, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0408, 0 }, // 10
- { 0x4001, 3390, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0408, 0 }, // 12
- { 0x4001, -3100, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0407, 0 }, // 14
- { 0x4001, 4230, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0408, 0 }, // 16
- { 0x4001, -1910, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0407, 0 }, // 18
- { 0x4001, 1190, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0407, 0 }, // 1a
- { 0x4001, 2110, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0407, 0 }, // 1c
- { 0x4001, 4030, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0407, 0 }, // 1e
- { 0x4001, -7830, 0x0406, 1 }, // 1f
- { 0x6000, 0x041f, 0x0408, 0 }, // 20
- { 0x4001, 8250, 0x0406, 1 }, // 21
- { 0x6000, 0x0421, 0x0407, 0 }, // 22
- { 0x4001, 6140, 0x0406, 1 }, // 23
- { 0x6000, 0x0423, 0x0407, 0 }, // 24
- { 0x4001, 5510, 0x0406, 1 }, // 25
- { 0x6000, 0x0425, 0x0408, 0 }, // 26
- { 0x4001, 3180, 0x0406, 1 }, // 27
- { 0x6000, 0x0427, 0x0407, 0 }, // 28
- { 0x4001, 8450, 0x0406, 1 }, // 29
- { 0x6000, 0x0429, 0x0408, 0 }, // 2a
- { 0x4001, -5090, 0x0406, 1 }, // 2b
- { 0x6000, 0x042b, 0x0407, 0 } // 2c
-};
-static const mso_CustomShape msoActionButtonReturn =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonReturnVert, sizeof( mso_sptActionButtonReturnVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonReturnSegm, sizeof( mso_sptActionButtonReturnSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonReturnCalc, sizeof( mso_sptActionButtonReturnCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonDocumentVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x10 MSO_I, 0x14 MSO_I },
- { 0xa MSO_I, 0x14 MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0xe MSO_I, 0x12 MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonDocumentSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
-
- 0x4000, 0x0004, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonDocumentCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -6350, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -7830, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, 1690, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 6350, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0407, 0 }, // 10
- { 0x4001, -3810, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0408, 0 }, // 12
- { 0x4001, 7830, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0408, 0 } // 14
-};
-static const mso_CustomShape msoActionButtonDocument =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonDocumentVert, sizeof( mso_sptActionButtonDocumentVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonDocumentSegm, sizeof( mso_sptActionButtonDocumentSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonDocumentCalc, sizeof( mso_sptActionButtonDocumentCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonSoundVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x10 MSO_I, 0x14 MSO_I },
- { 0xe MSO_I, 0x16 MSO_I }, { 0xa MSO_I, 0x16 MSO_I }, { 0x18 MSO_I, 10800 }, { 0x1a MSO_I, 10800 },
-
- { 0x18 MSO_I, 0xc MSO_I }, { 0x1a MSO_I, 0x1c MSO_I },
-
- { 0x18 MSO_I, 0x16 MSO_I }, { 0x1a MSO_I, 0x1e MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonSoundSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
-
- 0x4000, 0x0005, 0x6001, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonSoundCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8050, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -2750, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, -2960, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, 2120, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0407, 0 }, // 10
- { 0x4001, -8050, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0408, 0 }, // 12
- { 0x4001, 8050, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0408, 0 }, // 14
- { 0x4001, 2750, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0408, 0 }, // 16
- { 0x4001, 4020, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0407, 0 }, // 18
- { 0x4001, 8050, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0407, 0 }, // 1a
- { 0x4001, -5930, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0408, 0 }, // 1c
- { 0x4001, 5930, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0408, 0 } // 1e
-};
-static const mso_CustomShape msoActionButtonSound =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonSoundVert, sizeof( mso_sptActionButtonSoundVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonSoundSegm, sizeof( mso_sptActionButtonSoundSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonSoundCalc, sizeof( mso_sptActionButtonSoundCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptActionButtonMovieVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 0 }, { 21600, 0 }, { 3 MSO_I, 2 MSO_I }, { 1 MSO_I, 2 MSO_I },
- { 21600, 0 }, { 21600, 21600 }, { 3 MSO_I, 4 MSO_I }, { 3 MSO_I, 2 MSO_I },
- { 21600, 21600 }, { 0, 21600 }, { 1 MSO_I, 4 MSO_I }, { 3 MSO_I, 4 MSO_I },
- { 0, 21600 }, { 0, 0 }, { 1 MSO_I, 2 MSO_I }, { 1 MSO_I, 4 MSO_I },
-
- { 0xa MSO_I, 0xc MSO_I }, { 0xe MSO_I, 0xc MSO_I }, { 0x10 MSO_I, 0x12 MSO_I }, { 0x14 MSO_I, 0x12 MSO_I },
- { 0x16 MSO_I, 0x18 MSO_I }, { 0x16 MSO_I, 0x1a MSO_I }, { 0x1c MSO_I, 0x1a MSO_I }, { 0x1e MSO_I, 0x18 MSO_I },
- { 0x20 MSO_I, 0x18 MSO_I }, { 0x20 MSO_I, 0x22 MSO_I }, { 0x1e MSO_I, 0x22 MSO_I }, { 0x1c MSO_I, 0x24 MSO_I },
- { 0x16 MSO_I, 0x24 MSO_I }, { 0x16 MSO_I, 0x26 MSO_I }, { 0x2a MSO_I, 0x26 MSO_I }, { 0x2a MSO_I, 0x28 MSO_I },
- { 0x10 MSO_I, 0x28 MSO_I }, { 0xe MSO_I, 0x2c MSO_I }, { 0xa MSO_I, 0x2c MSO_I }
-};
-static const sal_uInt16 mso_sptActionButtonMovieSegm[] =
-{
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0003, 0x6001, 0x8000,
- 0x4000, 0x0012, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptActionButtonMovieCalc[] = // adj value 0 - 5400
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x8000, 10800, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x0405, 1, 10800 }, // scaling 6
- { 0x6000, DFF_Prop_geoRight, DFF_Prop_geoLeft, 10800 }, // lr center 7
- { 0x6000, DFF_Prop_geoBottom, DFF_Prop_geoTop, 10800 }, // ul center 8
-
- { 0x4001, -8050, 0x0406, 1 }, // 9
- { 0x6000, 0x0409, 0x0407, 0 }, // a
- { 0x4001, -4020, 0x0406, 1 }, // b
- { 0x6000, 0x040b, 0x0408, 0 }, // c
- { 0x4001, -7000, 0x0406, 1 }, // d
- { 0x6000, 0x040d, 0x0407, 0 }, // e
- { 0x4001, -6560, 0x0406, 1 }, // f
- { 0x6000, 0x040f, 0x0407, 0 }, // 10
- { 0x4001, -3600, 0x0406, 1 }, // 11
- { 0x6000, 0x0411, 0x0408, 0 }, // 12
- { 0x4001, 4020, 0x0406, 1 }, // 13
- { 0x6000, 0x0413, 0x0407, 0 }, // 14
- { 0x4001, 4660, 0x0406, 1 }, // 15
- { 0x6000, 0x0415, 0x0407, 0 }, // 16
- { 0x4001, -2960, 0x0406, 1 }, // 17
- { 0x6000, 0x0417, 0x0408, 0 }, // 18
- { 0x4001, -2330, 0x0406, 1 }, // 19
- { 0x6000, 0x0419, 0x0408, 0 }, // 1a
- { 0x4001, 6780, 0x0406, 1 }, // 1b
- { 0x6000, 0x041b, 0x0407, 0 }, // 1c
- { 0x4001, 7200, 0x0406, 1 }, // 1d
- { 0x6000, 0x041d, 0x0407, 0 }, // 1e
- { 0x4001, 8050, 0x0406, 1 }, // 1f
- { 0x6000, 0x041f, 0x0407, 0 }, // 20
- { 0x4001, 2960, 0x0406, 1 }, // 21
- { 0x6000, 0x0421, 0x0408, 0 }, // 22
- { 0x4001, 2330, 0x0406, 1 }, // 23
- { 0x6000, 0x0423, 0x0408, 0 }, // 24
- { 0x4001, 3800, 0x0406, 1 }, // 25
- { 0x6000, 0x0425, 0x0408, 0 }, // 26
- { 0x4001, -1060, 0x0406, 1 }, // 27
- { 0x6000, 0x0427, 0x0408, 0 }, // 28
- { 0x4001, -6350, 0x0406, 1 }, // 29
- { 0x6000, 0x0429, 0x0407, 0 }, // 2a
- { 0x4001, -640, 0x0406, 1 }, // 2b
- { 0x6000, 0x042b, 0x0408, 0 } // 2c
-};
-static const mso_CustomShape msoActionButtonMovie =
-{
- (SvxMSDffVertPair*)mso_sptActionButtonMovieVert, sizeof( mso_sptActionButtonMovieVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptActionButtonMovieSegm, sizeof( mso_sptActionButtonMovieSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptActionButtonMovieCalc, sizeof( mso_sptActionButtonMovieCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1400,
- (SvxMSDffTextRectangles*)mso_sptActionButtonTextRect, sizeof( mso_sptActionButtonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptSmileyFaceVert[] = // adj value 15510 - 17520
-{
- { 0, 0 }, { 21600, 21600 }, { 6140, 6350 }, { 8470, 8680 },
- { 13130, 6350 }, { 15460, 8680 }, { 4870, 1 MSO_I }, { 8680, 2 MSO_I },
- { 12920, 2 MSO_I }, { 16730, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptSmileyFaceSegm[] =
-{
- 0xa302, 0x6000, 0x8000,
- 0xa302, 0x6000, 0x8000,
- 0xa302, 0x6000, 0x8000,
- 0x4000, 0x2001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptSmileyFaceCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 15510 },
- { 0x8000, 17520, 0, 0x400 },
- { 0x4000, 15510, 0x400, 0 }
-};
-
-static const SvxMSDffTextRectangles mso_sptSmileyFaceTextRect[] =
-{
- { { 0, 1 MSO_I }, { 4 MSO_I, 21600 } }
-};
-static const sal_Int32 mso_sptSmileyFaceDefault[] =
-{
- 1, 17520
-};
-static const mso_CustomShape msoSmileyFace =
-{
- (SvxMSDffVertPair*)mso_sptSmileyFaceVert, sizeof( mso_sptSmileyFaceVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptSmileyFaceSegm, sizeof( mso_sptSmileyFaceSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptSmileyFaceCalc, sizeof( mso_sptSmileyFaceCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptSmileyFaceDefault,
- (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptDonutVert[] = // adj value 0 - 10800
-{
- { 0, 0 }, { 21600, 21600 }, { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptDonutSegm[] =
-{
- 0xa302, 0xf8fe, 0xa302, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptDonutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue }
-};
-static const mso_CustomShape msoDonut =
-{
- (SvxMSDffVertPair*)mso_sptDonutVert, sizeof( mso_sptDonutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptDonutSegm, sizeof( mso_sptDonutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptDonutCalc, sizeof( mso_sptDonutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptNoSmokingVert[] = // adj value 0 - 7200
-{
- { 0, 0 }, { 21600, 21600 }, { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I },
- { 9 MSO_I, 0xa MSO_I }, { 0xb MSO_I, 0xc MSO_I }, { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I },
- { 0xd MSO_I, 0xe MSO_I }, { 0xf MSO_I, 0x10 MSO_I }
-};
-static const sal_uInt16 mso_sptNoSmokingSegm[] =
-{
- 0xa302, 0xf8fe, 0xa404, 0xf8fe, 0xa404, 0x6000, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptNoSmokingCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0
- { 0x8000, 21600, 0, DFF_Prop_adjustValue }, // 1
- { 0x8000, 10800, 0, DFF_Prop_adjustValue }, // 2
- { 0x2001, DFF_Prop_adjustValue, 1, 2 }, // 3
- { 0xa080, 0x403, 0, 0x402 }, // 4
- { 0x8000, 10800, 0, 0x403 }, // 5 x1
- { 0x4000, 10800, 0x403, 0 }, // 6 x2
- { 0x8000, 10800, 0, 0x404 }, // 7 y1
- { 0x4000, 10800, 0x404, 0 }, // 8 y2
- { 0x6081, 0x405, 0x407, 450 }, // 9
- { 0x6082, 0x405, 0x407, 450 }, // a
- { 0x6081, 0x405, 0x408, 450 }, // b
- { 0x6082, 0x405, 0x408, 450 }, // c
- { 0x6081, 0x406, 0x408, 450 }, // d
- { 0x6082, 0x406, 0x408, 450 }, // e
- { 0x6081, 0x406, 0x407, 450 }, // f
- { 0x6082, 0x406, 0x407, 450 } // 10
-};
-static const mso_CustomShape msoNoSmoking =
-{
- (SvxMSDffVertPair*)mso_sptNoSmokingVert, sizeof( mso_sptNoSmokingVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptNoSmokingSegm, sizeof( mso_sptNoSmokingSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptNoSmokingCalc, sizeof( mso_sptNoSmokingCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2700,
- (SvxMSDffTextRectangles*)mso_sptEllipseTextRect, sizeof( mso_sptEllipseTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptBlockArcVert[] = // adj value 0 (degrees)
-{ // adj value 1: 0 -> 10800;
- { 0, 0 }, { 21600, 21600 }, { 4 MSO_I, 3 MSO_I }, { 2 MSO_I, 3 MSO_I },
- { 5 MSO_I, 5 MSO_I }, { 6 MSO_I, 6 MSO_I }, { 2 MSO_I, 3 MSO_I }, { 4 MSO_I, 3 MSO_I },
- { 0, 0 }, { 21600, 21600 }
-};
-static const sal_uInt16 mso_sptBlockArcSegm[] =
-{
- 0xA404, 0xa504, 0x6001, 0x8000, 0x0002, 0x8000, 0xf8ff
-};
-static const sal_Int32 mso_sptBlockArcDefault[] =
-{
- 2, 180 << 16, 5400
-};
-static const SvxMSDffCalculationData mso_sptBlockArcCalc[] =
-{
- { 0x400a, 10800, DFF_Prop_adjustValue, 0 },
- { 0x4009, 10800, DFF_Prop_adjustValue, 0 },
- { 0x2000, 0x400, 10800, 0 },
- { 0x2000, 0x401, 10800, 0 },
- { 0x8000, 21600, 0, 0x402 },
- { 0x8000, 10800, 0, DFF_Prop_adjust2Value },
- { 0x4000, 10800, DFF_Prop_adjust2Value, 0 },
- { 0x600a, 0x405, DFF_Prop_adjustValue, 0 },
- { 0x6009, 0x405, DFF_Prop_adjustValue, 0 }
-};
-static const mso_CustomShape msoBlockArc =
-{
- (SvxMSDffVertPair*)mso_sptBlockArcVert, sizeof( mso_sptBlockArcVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBlockArcSegm, sizeof( mso_sptBlockArcSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBlockArcCalc, sizeof( mso_sptBlockArcCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptBlockArcDefault,
- NULL, 0,
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-// aware : control points are always part of the bounding box
-static const SvxMSDffVertPair mso_sptHeartVert[] =
-{
- { 10800, 21599 }, { 321, 6886 }, { 70, 6036 }, // ppp
- { -9, 5766 }, { -1, 5474 }, { 2, 5192 }, // ccp
- { 6, 4918 }, { 43, 4641 }, { 101, 4370 }, // ccp
- { 159, 4103 }, { 245, 3837 }, { 353, 3582 }, // ccp
- { 460, 3326 }, { 591, 3077 }, { 741, 2839 }, // ccp
- { 892, 2598 }, { 1066, 2369 }, { 1253, 2155 }, // ccp
- { 1443, 1938 }, { 1651, 1732 }, { 1874, 1543 }, // ccp
- { 2097, 1351 }, { 2337, 1174 }, { 2587, 1014 }, // ccp
- { 2839, 854 }, { 3106, 708 }, { 3380, 584 }, // ccp
- { 3656, 459 }, { 3945, 350 }, { 4237, 264 }, // ccp
- { 4533, 176 }, { 4838, 108 }, { 5144, 66 }, // ccp
- { 5454, 22 }, { 5771, 1 }, { 6086, 3 }, // ccp
- { 6407, 7 }, { 6731, 35 }, { 7048, 89 }, // ccp
- { 7374, 144 }, { 7700, 226 }, { 8015, 335 }, // ccp
- { 8344, 447 }, { 8667, 590 }, { 8972, 756 }, // ccp
- { 9297, 932 }, { 9613, 1135 }, { 9907, 1363 }, // ccp
- { 10224, 1609 }, { 10504, 1900 }, { 10802, 2169 }, // ccp
- { 11697, 1363 }, // p
- { 11971, 1116 }, { 12304, 934 }, { 12630, 756 }, // ccp
- { 12935, 590 }, { 13528, 450 }, { 13589, 335 }, // ccp
- { 13901, 226 }, { 14227, 144 }, { 14556, 89 }, // ccp
- { 14872, 35 }, { 15195, 7 }, { 15517, 3 }, // ccp
- { 15830, 0 }, { 16147, 22 }, { 16458, 66 }, // ccp
- { 16764, 109 }, { 17068, 177 }, { 17365, 264 }, // ccp
- { 17658, 349 }, { 17946, 458 }, { 18222, 584 }, // ccp
- { 18496, 708 }, { 18762, 854 }, { 19015, 1014 }, // ccp
- { 19264, 1172 }, { 19504, 1349 }, { 19730, 1543 }, // ccp
- { 19950, 1731 }, { 20158, 1937 }, { 20350, 2155 }, // ccp
- { 20536, 2369 }, { 20710, 2598 }, { 20861, 2839 }, // ccp
- { 21010, 3074 }, { 21143, 3323 }, { 21251, 3582 }, // ccp
- { 21357, 3835 }, { 21443, 4099 }, { 21502, 4370 }, // ccp
- { 21561, 4639 }, { 21595, 4916 }, { 21600, 5192 }, // ccp
- { 21606, 5474 }, { 21584, 5760 }, { 21532, 6036 }, // ccp
- { 21478, 6326 }, { 21366, 6603 }, { 21282, 6887 }, // ccp
- { 10802, 21602 } // p
-};
-static const sal_uInt16 mso_sptHeartSegm[] =
-{
- 0x4000, 0x0002, 0x2010, 0x0001, 0x2010, 0x0001, 0x6001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptHeartTextRect[] =
-{
- { { 5080, 2540 }, { 16520, 13550 } }
-};
-static const SvxMSDffVertPair mso_sptHeartGluePoints[] =
-{
- { 10800, 2180 }, { 3090, 10800 }, { 10800, 21600 }, { 18490, 10800 }
-};
-static const sal_Int32 mso_sptHeartBoundRect[] =
-{
- -9, 0, 21606, 21602
-};
-static const mso_CustomShape msoHeart =
-{
- (SvxMSDffVertPair*)mso_sptHeartVert, sizeof( mso_sptHeartVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptHeartSegm, sizeof( mso_sptHeartSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptHeartTextRect, sizeof( mso_sptHeartTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21615, 21602,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptHeartGluePoints, sizeof( mso_sptHeartGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptLightningBoldVert[] =
-{
- { 8458, 0 }, { 0, 3923 }, { 7564, 8416 }, { 4993, 9720 },
- { 12197, 13904 }, { 9987, 14934 }, { 21600, 21600 }, { 14768, 12911 },
- { 16558, 12016 }, { 11030, 6840 }, { 12831, 6120 }, { 8458, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptLightningBoldTextRect[] =
-{
- { { 8680, 7410 }, { 13970, 14190 } }
-};
-static const SvxMSDffVertPair mso_sptLightningBoldGluePoints[] =
-{
- { 8458, 0 }, { 0, 3923 }, { 4993, 9720 }, { 9987, 14934 }, { 21600, 21600 },
- { 16558, 12016 }, { 12831, 6120 }
-};
-static const mso_CustomShape msoLightningBold =
-{
- (SvxMSDffVertPair*)mso_sptLightningBoldVert, sizeof( mso_sptLightningBoldVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptLightningBoldTextRect, sizeof( mso_sptLightningBoldTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptLightningBoldGluePoints, sizeof( mso_sptLightningBoldGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptSunVert[] = // adj value 2700 -> 10125
-{
- { 0, 10800 }, { 4 MSO_I, 8 MSO_I }, { 4 MSO_I, 9 MSO_I },
- { 0x0a MSO_I, 0x0b MSO_I }, { 0x0c MSO_I, 0x0d MSO_I }, { 0x0e MSO_I, 0x0f MSO_I },
- { 0x10 MSO_I, 0x11 MSO_I }, { 0x12 MSO_I, 0x13 MSO_I }, { 0x14 MSO_I, 0x15 MSO_I },
- { 0x16 MSO_I, 0x17 MSO_I }, { 0x18 MSO_I, 0x19 MSO_I }, { 0x1a MSO_I, 0x1b MSO_I },
- { 0x1c MSO_I, 0x1d MSO_I }, { 0x1e MSO_I, 0x1f MSO_I }, { 0x20 MSO_I, 0x21 MSO_I },
- { 0x22 MSO_I, 0x23 MSO_I }, { 0x24 MSO_I, 0x25 MSO_I }, { 0x26 MSO_I, 0x27 MSO_I },
- { 0x28 MSO_I, 0x29 MSO_I }, { 0x2a MSO_I, 0x2b MSO_I }, { 0x2c MSO_I, 0x2d MSO_I },
- { 0x2e MSO_I, 0x2f MSO_I }, { 0x30 MSO_I, 0x31 MSO_I }, { 0x32 MSO_I, 0x33 MSO_I },
- { 0 MSO_I, 0 MSO_I }, { 1 MSO_I, 1 MSO_I }
-};
-static const sal_uInt16 mso_sptSunSegm[] =
-{
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0x4000, 0x0002, 0x6001, 0x8000,
- 0xa302, 0x6000, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptSunCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x2000, DFF_Prop_adjustValue, 0, 2700 },
- { 0x2001, 0x402, 5080, 7425 },
- { 0x2000, 0x403, 2540, 0 },
- { 0x8000, 10125, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x405, 2120, 7425 },
- { 0x2000, 0x406, 210, 0 },
- { 0x4000, 10800, 0x407, 0 }, // y1 (0x8)
- { 0x8000, 10800, 0, 0x407 }, // y2 (0x9)
- { 0x0081, 0, 10800, 450 }, // 0xa
- { 0x0082, 0, 10800, 450 }, // 0xb
- { 0x6081, 0x404, 0x408, 450 }, // 0xc
- { 0x6082, 0x404, 0x408, 450 }, // 0xd
- { 0x6081, 0x404, 0x409, 450 }, // 0xe
- { 0x6082, 0x404, 0x409, 450 }, // 0xf
- { 0x0081, 0, 10800, 900 }, // 0x10
- { 0x0082, 0, 10800, 900 }, // 0x11
- { 0x6081, 0x404, 0x408, 900 }, // 0x12
- { 0x6082, 0x404, 0x408, 900 }, // 0x13
- { 0x6081, 0x404, 0x409, 900 }, // 0x14
- { 0x6082, 0x404, 0x409, 900 }, // 0x15
- { 0x0081, 0, 10800, 1350 }, // 0x16
- { 0x0082, 0, 10800, 1350 }, // 0x17
- { 0x6081, 0x404, 0x408, 1350 }, // 0x18
- { 0x6082, 0x404, 0x408, 1350 }, // 0x19
- { 0x6081, 0x404, 0x409, 1350 }, // 0x1a
- { 0x6082, 0x404, 0x409, 1350 }, // 0x1b
- { 0x0081, 0, 10800, 1800 }, // 0x1c
- { 0x0082, 0, 10800, 1800 }, // 0x1d
- { 0x6081, 0x404, 0x408, 1800 }, // 0x1e
- { 0x6082, 0x404, 0x408, 1800 }, // 0x1f
- { 0x6081, 0x404, 0x409, 1800 }, // 0x20
- { 0x6082, 0x404, 0x409, 1800 }, // 0x21
- { 0x0081, 0, 10800, 2250 }, // 0x22
- { 0x0082, 0, 10800, 2250 }, // 0x23
- { 0x6081, 0x404, 0x408, 2250 }, // 0x24
- { 0x6082, 0x404, 0x408, 2250 }, // 0x25
- { 0x6081, 0x404, 0x409, 2250 }, // 0x26
- { 0x6082, 0x404, 0x409, 2250 }, // 0x27
- { 0x0081, 0, 10800, 2700 }, // 0x28
- { 0x0082, 0, 10800, 2700 }, // 0x29
- { 0x6081, 0x404, 0x408, 2700 }, // 0x2a
- { 0x6082, 0x404, 0x408, 2700 }, // 0x2b
- { 0x6081, 0x404, 0x409, 2700 }, // 0x2c
- { 0x6082, 0x404, 0x409, 2700 }, // 0x2d
- { 0x0081, 0, 10800, 3150 }, // 0x2e
- { 0x0082, 0, 10800, 3150 }, // 0x2f
- { 0x6081, 0x404, 0x408, 3150 }, // 0x30
- { 0x6082, 0x404, 0x408, 3150 }, // 0x31
- { 0x6081, 0x404, 0x409, 3150 }, // 0x32
- { 0x6082, 0x404, 0x409, 3150 }, // 0x33
- { 0x2081, DFF_Prop_adjustValue, 10800, 450 }, // 0x34 ( textbox )
- { 0x2081, DFF_Prop_adjustValue, 10800, 2250 } // 0x35
-
-};
-static const SvxMSDffTextRectangles mso_sptSunTextRect[] =
-{
- { { 0x34 MSO_I, 0x34 MSO_I }, { 0x35 MSO_I, 0x35 MSO_I } }
-};
-static const mso_CustomShape msoSun =
-{
- (SvxMSDffVertPair*)mso_sptSunVert, sizeof( mso_sptSunVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptSunSegm, sizeof( mso_sptSunSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptSunCalc, sizeof( mso_sptSunCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault5400,
- (SvxMSDffTextRectangles*)mso_sptSunTextRect, sizeof( mso_sptSunTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptMoonVert[] = // adj value 0 -> 18900
-{
- { 21600, 0 },
- { 3 MSO_I, 4 MSO_I }, { 0 MSO_I, 5080 }, { 0 MSO_I, 10800 }, // ccp
- { 0 MSO_I, 16520 }, { 3 MSO_I, 5 MSO_I }, { 21600, 21600 }, // ccp
- { 9740, 21600 }, { 0, 16730 }, { 0, 10800 }, // ccp
- { 0, 4870 }, { 9740, 0 }, { 21600, 0 } // ccp
-};
-static const sal_uInt16 mso_sptMoonSegm[] =
-{
- 0x4000, 0x2004, 0x6000, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptMoonCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x401, 1, 2 },
- { 0x6000, 0x402, DFF_Prop_adjustValue, 0 },
- { 0x2001, DFF_Prop_adjustValue, 1794, 10000 },
- { 0x8000, 21600, 0, 0x0404 },
- { 0x2001, DFF_Prop_adjustValue, 4000, 18900 },
- { 0x8081, 0, 10800, 0x406 },
- { 0x8082, 0, 10800, 0x406 },
- { 0x6000, 0x407, 0x407, 0 },
- { 0x8000, 21600, 0, 0x408 }
-};
-static const SvxMSDffTextRectangles mso_sptMoonTextRect[] =
-{
- { { 9 MSO_I, 8 MSO_I }, { 0 MSO_I, 0xa MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptMoonGluePoints[] =
-{
- { 21600, 0 }, { 0, 10800 }, { 21600, 21600 }, { 0 MSO_I, 10800 }
-};
-static const mso_CustomShape msoMoon =
-{
- (SvxMSDffVertPair*)mso_sptMoonVert, sizeof( mso_sptMoonVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptMoonSegm, sizeof( mso_sptMoonSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptMoonCalc, sizeof( mso_sptMoonCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault10800,
- (SvxMSDffTextRectangles*)mso_sptMoonTextRect, sizeof( mso_sptMoonTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptMoonGluePoints, sizeof( mso_sptMoonGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptBracketPairVert[] = // adj value 0 -> 10800
-{
- { 0 MSO_I, 0 }, { 0, 1 MSO_I }, // left top alignment
- { 0, 2 MSO_I }, { 0 MSO_I, 21600 }, // left bottom "
- { 3 MSO_I, 21600 }, { 21600, 2 MSO_I }, // right bottom "
- { 21600, 1 MSO_I }, { 3 MSO_I, 0 } // right top "
-};
-static const sal_uInt16 mso_sptBracketPairSegm[] =
-{
- 0x4000, 0xa701, 0x0001, 0xa801, 0x8000,
- 0x4000, 0xa701, 0x0001, 0xa801, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptBracketPairCalc[] =
-{
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0x2082, DFF_Prop_adjustValue, 0, 450 },
- { 0x2000, 0x404, 0, 10800 },
- { 0x8000, 0, 0, DFF_Prop_adjustValue },
- { 0xa000, 0x406, 0, 0x405 },
- { 0xa000, DFF_Prop_geoLeft, 0, 0x407 },
- { 0xa000, DFF_Prop_geoTop, 0, 0x407 },
- { 0x6000, DFF_Prop_geoRight, 0x407, 0 },
- { 0x6000, DFF_Prop_geoBottom, 0x407, 0 },
- { 0xa000, DFF_Prop_geoLeft, 0, 0x405 },
- { 0xa000, DFF_Prop_geoTop, 0, 0x405 },
- { 0x6000, DFF_Prop_geoRight, 0x405, 0 },
- { 0x6000, DFF_Prop_geoBottom, 0x405, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptBracketPairTextRect[] =
-{
- { { 8 MSO_I, 9 MSO_I }, { 0xa MSO_I, 0xb MSO_I } }
-};
-static const mso_CustomShape msoBracketPair =
-{
- (SvxMSDffVertPair*)mso_sptBracketPairVert, sizeof( mso_sptBracketPairVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBracketPairSegm, sizeof( mso_sptBracketPairSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBracketPairCalc, sizeof( mso_sptBracketPairCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault3700,
- (SvxMSDffTextRectangles*)mso_sptBracketPairTextRect, sizeof( mso_sptBracketPairTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const sal_uInt16 mso_sptPlaqueSegm[] =
-{
- 0x4000, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptPlaqueTextRect[] =
-{
- { { 0xc MSO_I, 0xd MSO_I }, { 0xe MSO_I, 0xf MSO_I } }
-};
-static const mso_CustomShape msoPlaque =
-{
- (SvxMSDffVertPair*)mso_sptBracketPairVert, sizeof( mso_sptBracketPairVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptPlaqueSegm, sizeof( mso_sptPlaqueSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBracketPairCalc, sizeof( mso_sptBracketPairCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault3600,
- (SvxMSDffTextRectangles*)mso_sptPlaqueTextRect, sizeof( mso_sptPlaqueTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptBracePairVert[] = // adj value 0 -> 5400
-{
- { 4 MSO_I, 0 }, { 0 MSO_I, 1 MSO_I }, { 0 MSO_I, 6 MSO_I }, { 0 ,10800 }, // left bracket
- { 0 MSO_I, 7 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 4 MSO_I, 21600 },
- { 8 MSO_I, 21600 }, { 3 MSO_I, 2 MSO_I }, { 3 MSO_I, 7 MSO_I }, { 21600, 10800 }, // right bracket
- { 3 MSO_I, 6 MSO_I }, { 3 MSO_I, 1 MSO_I }, { 8 MSO_I, 0 }
-};
-static const sal_uInt16 mso_sptBracePairSegm[] =
-{
- 0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000,
- 0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptBracePairCalc[] =
-{
- { 0x6000, DFF_Prop_geoLeft, DFF_Prop_adjustValue, 0 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0xa000, DFF_Prop_geoRight, 0, DFF_Prop_adjustValue },
- { 0x2001, 0x400, 2, 1 }, // 4
- { 0x2001, DFF_Prop_adjustValue, 2, 1 }, // 5
- { 0x8000, 10800, 0, DFF_Prop_adjustValue }, // 6
- { 0x8000, 21600, 0, 0x406 }, // 7
- { 0xa000, DFF_Prop_geoRight, 0, 0x405 }, // 8
- { 0x2001, DFF_Prop_adjustValue, 1, 3 }, // 9
- { 0x6000, 0x409, DFF_Prop_adjustValue, 0 }, // xa
- { 0x6000, DFF_Prop_geoLeft, 0x40a, 0 }, // xb
- { 0x6000, DFF_Prop_geoTop, 0x409, 0 }, // xc
- { 0xa000, DFF_Prop_geoRight, 0, 0x40a }, // xd
- { 0xa000, DFF_Prop_geoBottom, 0, 0x409 } // xe
-
-};
-static const SvxMSDffTextRectangles mso_sptBracePairTextRect[] =
-{
- { { 0xb MSO_I, 0xc MSO_I }, { 0xd MSO_I, 0xe MSO_I } }
-};
-static const mso_CustomShape msoBracePair =
-{
- (SvxMSDffVertPair*)mso_sptBracePairVert, sizeof( mso_sptBracePairVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBracePairSegm, sizeof( mso_sptBracePairSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBracePairCalc, sizeof( mso_sptBracePairCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1800,
- (SvxMSDffTextRectangles*)mso_sptBracePairTextRect, sizeof( mso_sptBracePairTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffCalculationData mso_sptBracketCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 1, 2 },
- { 0x6000, DFF_Prop_geoTop, DFF_Prop_adjustValue, 0 },
- { 0xa000, DFF_Prop_geoBottom, 0, DFF_Prop_adjustValue },
- { 0x6000, DFF_Prop_geoTop, 0x400, 0 },
- { 0xa000, DFF_Prop_geoBottom, 0, 0x400 }
-};
-static const sal_uInt16 mso_sptBracketSegm[] =
-{
- 0x4000, 0x2001, 0x0001, 0x2001, 0x8000
-};
-static const SvxMSDffVertPair mso_sptLeftBracketVert[] = // adj value 0 -> 10800
-{
- { 21600, 0 }, { 10800, 0 }, { 0, 3 MSO_I }, { 0, 1 MSO_I },
- { 0, 2 MSO_I }, { 0, 4 MSO_I }, { 10800, 21600 }, { 21600, 21600 }
-};
-static const SvxMSDffTextRectangles mso_sptLeftBracketTextRect[] =
-{
- { { 6350, 3 MSO_I }, { 21600, 4 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptLeftBracketGluePoints[] =
-{
- { 21600, 0 }, { 0, 10800 }, { 21600, 21600 }
-};
-static const mso_CustomShape msoLeftBracket =
-{
- (SvxMSDffVertPair*)mso_sptLeftBracketVert, sizeof( mso_sptLeftBracketVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBracketSegm, sizeof( mso_sptBracketSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBracketCalc, sizeof( mso_sptBracketCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1800,
- (SvxMSDffTextRectangles*)mso_sptLeftBracketTextRect, sizeof( mso_sptLeftBracketTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptLeftBracketGluePoints, sizeof( mso_sptLeftBracketGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-static const SvxMSDffVertPair mso_sptRightBracketVert[] = // adj value 0 -> 10800
-{
- { 0, 0 }, { 10800, 0 }, { 21600, 3 MSO_I }, { 21600, 1 MSO_I },
- { 21600, 2 MSO_I }, { 21600, 4 MSO_I }, { 10800, 21600 }, { 0, 21600 }
-};
-static const SvxMSDffTextRectangles mso_sptRightBracketTextRect[] =
-{
- { { 0, 3 MSO_I }, { 15150, 4 MSO_I } }
-};
-static const SvxMSDffVertPair mso_sptRightBracketGluePoints[] =
-{
- { 0, 0 }, { 0, 21600 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoRightBracket =
-{
- (SvxMSDffVertPair*)mso_sptRightBracketVert, sizeof( mso_sptRightBracketVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBracketSegm, sizeof( mso_sptBracketSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBracketCalc, sizeof( mso_sptBracketCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault1800,
- (SvxMSDffTextRectangles*)mso_sptRightBracketTextRect, sizeof( mso_sptRightBracketTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptRightBracketGluePoints, sizeof( mso_sptRightBracketGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffCalculationData mso_sptBraceCalc[] =
-{
- { 0x2001, DFF_Prop_adjustValue, 1, 2 },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0xa000, 0x404, 0, DFF_Prop_adjustValue },
- { 0xa000, 0x404, 0, 0x400 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },
- { 0x6000, 0x404, 0x400, 0 },
- { 0x6000, 0x404, DFF_Prop_adjustValue, 0 },
- { 0x8000, 21600, 0, DFF_Prop_adjustValue },
- { 0x8000, 21600, 0, 0x400 },
- { 0x2001, DFF_Prop_adjustValue, 10000, 31953 },
- { 0x8000, 21600, 0, 0x409 }
-};
-static const sal_uInt16 mso_sptBraceSegm[] =
-{
- 0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x8000
-};
-static const sal_Int32 mso_sptBraceDefault[] =
-{
- 2, 1800, 10800
-};
-static const SvxMSDffVertPair mso_sptLeftBraceVert[] =
-{
- { 21600, 0 }, // p
- { 16200, 0 }, { 10800, 0 MSO_I }, { 10800, 1 MSO_I }, // ccp
- { 10800, 2 MSO_I }, // p
- { 10800, 3 MSO_I }, { 5400, 4 MSO_I }, { 0, 4 MSO_I }, // ccp
- { 5400, 4 MSO_I }, { 10800, 5 MSO_I }, { 10800, 6 MSO_I }, // ccp
- { 10800, 7 MSO_I }, // p
- { 10800, 8 MSO_I }, { 16200, 21600 }, { 21600, 21600 } // ccp
-};
-static const SvxMSDffTextRectangles mso_sptLeftBraceTextRect[] =
-{
- { { 13800, 9 MSO_I }, { 21600, 10 MSO_I } }
-};
-static const mso_CustomShape msoLeftBrace = // adj value0 0 -> 5400
-{ // adj value1 0 -> 21600
- (SvxMSDffVertPair*)mso_sptLeftBraceVert, sizeof( mso_sptLeftBraceVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBraceSegm, sizeof( mso_sptBraceSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBraceCalc, sizeof( mso_sptBraceCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptBraceDefault,
- (SvxMSDffTextRectangles*)mso_sptLeftBraceTextRect, sizeof( mso_sptLeftBraceTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptLeftBracketGluePoints, sizeof( mso_sptLeftBracketGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-static const SvxMSDffVertPair mso_sptRightBraceVert[] =
-{
- { 0, 0 }, // p
- { 5400, 0 }, { 10800, 0 MSO_I }, { 10800, 1 MSO_I }, // ccp
- { 10800, 2 MSO_I }, // p
- { 10800, 3 MSO_I }, { 16200, 4 MSO_I }, { 21600, 4 MSO_I }, // ccp
- { 16200, 4 MSO_I }, { 10800, 5 MSO_I }, { 10800, 6 MSO_I }, // ccp
- { 10800, 7 MSO_I }, // p
- { 10800, 8 MSO_I }, { 5400, 21600 }, { 0, 21600 } // ccp
-};
-static const SvxMSDffTextRectangles mso_sptRightBraceTextRect[] =
-{
- { { 0, 9 MSO_I }, { 7800, 10 MSO_I } }
-};
-static const mso_CustomShape msoRightBrace = // adj value0 0 -> 5400
-{ // adj value1 0 -> 21600
- (SvxMSDffVertPair*)mso_sptRightBraceVert, sizeof( mso_sptRightBraceVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptBraceSegm, sizeof( mso_sptBraceSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptBraceCalc, sizeof( mso_sptBraceCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptBraceDefault,
- (SvxMSDffTextRectangles*)mso_sptRightBraceTextRect, sizeof( mso_sptRightBraceTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptRightBracketGluePoints, sizeof( mso_sptRightBracketGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptIrregularSeal1Vert[] =
-{
- { 10901, 5905 }, { 8458, 2399 }, { 7417, 6425 }, { 476, 2399 },
- { 4732, 7722 }, { 106, 8718 }, { 3828, 11880 }, { 243, 14689 },
- { 5772, 14041 }, { 4868, 17719 }, { 7819, 15730 }, { 8590, 21600 },
- { 10637, 15038 }, { 13349, 19840 }, { 14125, 14561 }, { 18248, 18195 },
- { 16938, 13044 }, { 21600, 13393 }, { 17710, 10579 }, { 21198, 8242 },
- { 16806, 7417 }, { 18482, 4560 }, { 14257, 5429 }, { 14623, 106 }, { 10901, 5905 }
-};
-static const SvxMSDffTextRectangles mso_sptIrregularSeal1TextRect[] =
-{
- { { 4680, 6570 }, { 16140, 13280 } }
-};
-static const SvxMSDffVertPair mso_sptIrregularSeal1GluePoints[] =
-{
- { 14623, 106 }, { 106, 8718 }, { 8590, 21600 }, { 21600, 13393 }
-};
-static const mso_CustomShape msoIrregularSeal1 =
-{
- (SvxMSDffVertPair*)mso_sptIrregularSeal1Vert, sizeof( mso_sptIrregularSeal1Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptIrregularSeal1TextRect, sizeof( mso_sptIrregularSeal1TextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptIrregularSeal1GluePoints, sizeof( mso_sptIrregularSeal1GluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptIrregularSeal2Vert[] =
-{
- { 11464, 4340 }, { 9722, 1887 }, { 8548, 6383 }, { 4503, 3626 },
- { 5373, 7816 }, { 1174, 8270 }, { 3934, 11592 }, { 0, 12875 },
- { 3329, 15372 }, { 1283, 17824 }, { 4804, 18239 }, { 4918, 21600 },
- { 7525, 18125 }, { 8698, 19712 }, { 9871, 17371 }, { 11614, 18844 },
- { 12178, 15937 }, { 14943, 17371 }, { 14640, 14348 }, { 18878, 15632 },
- { 16382, 12311 }, { 18270, 11292 }, { 16986, 9404 }, { 21600, 6646 },
- { 16382, 6533 }, { 18005, 3172 }, { 14524, 5778 }, { 14789, 0 },
- { 11464, 4340 }
-};
-static const SvxMSDffTextRectangles mso_sptIrregularSeal2TextRect[] =
-{
- { { 5400, 6570 }, { 14160, 15290 } }
-};
-static const SvxMSDffVertPair mso_sptIrregularSeal2GluePoints[] =
-{
- { 9722, 1887 }, { 0, 12875 }, { 11614, 18844 }, { 21600, 6646 }
-};
-static const mso_CustomShape msoIrregularSeal2 =
-{
- (SvxMSDffVertPair*)mso_sptIrregularSeal2Vert, sizeof( mso_sptIrregularSeal2Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptIrregularSeal2TextRect, sizeof( mso_sptIrregularSeal2TextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptIrregularSeal2GluePoints, sizeof( mso_sptIrregularSeal2GluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptSeal4Vert[] = // adjustment1 : 0 - 10800
-{
- { 0, 10800 }, { 4 MSO_I, 4 MSO_I }, { 10800, 0 }, { 3 MSO_I, 4 MSO_I },
- { 21600, 10800 }, { 3 MSO_I, 3 MSO_I }, { 10800, 21600 }, { 4 MSO_I, 3 MSO_I },
- { 0, 10800 }
-};
-static const SvxMSDffCalculationData mso_sptSeal4Calc[] =
-{
- { 0x0000, 7600, 0, 0 },
- { 0x6001, 0x400, DFF_Prop_adjustValue, 10800 },
- { 0xa000, 0x400, 0, 0x401 },
- { 0x4000, 10800, 0x402, 0 },
- { 0x8000, 10800, 0, 0x402 }
-};
-static const SvxMSDffTextRectangles mso_sptSeal4TextRect[] =
-{
- { { 4 MSO_I, 4 MSO_I }, { 3 MSO_I, 3 MSO_I } }
-};
-static const mso_CustomShape msoSeal4 =
-{
- (SvxMSDffVertPair*)mso_sptSeal4Vert, sizeof( mso_sptSeal4Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptSeal4Calc, sizeof( mso_sptSeal4Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault8100,
- (SvxMSDffTextRectangles*)mso_sptSeal4TextRect, sizeof( mso_sptSeal4TextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptStarVert[] =
-{
- { 10797, 0 }, { 8278, 8256 }, { 0, 8256 }, { 6722, 13405 },
- { 4198, 21600 }, { 10797, 16580 }, { 17401, 21600 }, { 14878, 13405 },
- { 21600, 8256 }, { 13321, 8256 }, { 10797, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptStarTextRect[] =
-{
- { { 6722, 8256 }, { 14878, 15460 } }
-};
-static const mso_CustomShape msoStar =
-{
- (SvxMSDffVertPair*)mso_sptStarVert, sizeof( mso_sptStarVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptStarTextRect, sizeof( mso_sptStarTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffCalculationData mso_sptSeal24Calc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0x00
- { 0x2081, 0x400, 10800, 3150 }, // 0x01 ( textframe )
- { 0x2082, 0x400, 10800, 3150 }, // 0x02
- { 0x2081, 0x400, 10800, 1350 }, // 0x03
- { 0x2082, 0x400, 10800, 1350 }, // 0x04
- { 0x0081, 0, 10800, 0 },
- { 0x0082, 0, 10800, 0 },
- { 0x2081, 0x400, 10800, 75 },
- { 0x2082, 0x400, 10800, 75 },
- { 0x0081, 0, 10800, 150 },
- { 0x0082, 0, 10800, 150 },
- { 0x2081, 0x400, 10800, 225 },
- { 0x2082, 0x400, 10800, 225 },
- { 0x0081, 0, 10800, 300 },
- { 0x0082, 0, 10800, 300 },
- { 0x2081, 0x400, 10800, 375 },
- { 0x2082, 0x400, 10800, 375 },
- { 0x0081, 0, 10800, 450 },
- { 0x0082, 0, 10800, 450 },
- { 0x2081, 0x400, 10800, 525 },
- { 0x2082, 0x400, 10800, 525 },
- { 0x0081, 0, 10800, 600 },
- { 0x0082, 0, 10800, 600 },
- { 0x2081, 0x400, 10800, 675 },
- { 0x2082, 0x400, 10800, 675 },
- { 0x0081, 0, 10800, 750 },
- { 0x0082, 0, 10800, 750 },
- { 0x2081, 0x400, 10800, 825 },
- { 0x2082, 0x400, 10800, 825 },
- { 0x0081, 0, 10800, 900 },
- { 0x0082, 0, 10800, 900 },
- { 0x2081, 0x400, 10800, 975 },
- { 0x2082, 0x400, 10800, 975 },
- { 0x0081, 0, 10800, 1050 },
- { 0x0082, 0, 10800, 1050 },
- { 0x2081, 0x400, 10800, 1125 },
- { 0x2082, 0x400, 10800, 1125 },
- { 0x0081, 0, 10800, 1200 },
- { 0x0082, 0, 10800, 1200 },
- { 0x2081, 0x400, 10800, 1275 },
- { 0x2082, 0x400, 10800, 1275 },
- { 0x0081, 0, 10800, 1350 },
- { 0x0082, 0, 10800, 1350 },
- { 0x2081, 0x400, 10800, 1425 },
- { 0x2082, 0x400, 10800, 1425 },
- { 0x0081, 0, 10800, 1500 },
- { 0x0082, 0, 10800, 1500 },
- { 0x2081, 0x400, 10800, 1575 },
- { 0x2082, 0x400, 10800, 1575 },
- { 0x0081, 0, 10800, 1650 },
- { 0x0082, 0, 10800, 1650 },
- { 0x2081, 0x400, 10800, 1725 },
- { 0x2082, 0x400, 10800, 1725 },
- { 0x0081, 0, 10800, 1800 },
- { 0x0082, 0, 10800, 1800 },
- { 0x2081, 0x400, 10800, 1875 },
- { 0x2082, 0x400, 10800, 1875 },
- { 0x0081, 0, 10800, 1950 },
- { 0x0082, 0, 10800, 1950 },
- { 0x2081, 0x400, 10800, 2025 },
- { 0x2082, 0x400, 10800, 2025 },
- { 0x0081, 0, 10800, 2100 },
- { 0x0082, 0, 10800, 2100 },
- { 0x2081, 0x400, 10800, 2175 },
- { 0x2082, 0x400, 10800, 2175 },
- { 0x0081, 0, 10800, 2250 },
- { 0x0082, 0, 10800, 2250 },
- { 0x2081, 0x400, 10800, 2325 },
- { 0x2082, 0x400, 10800, 2325 },
- { 0x0081, 0, 10800, 2400 },
- { 0x0082, 0, 10800, 2400 },
- { 0x2081, 0x400, 10800, 2475 },
- { 0x2082, 0x400, 10800, 2475 },
- { 0x0081, 0, 10800, 2550 },
- { 0x0082, 0, 10800, 2550 },
- { 0x2081, 0x400, 10800, 2625 },
- { 0x2082, 0x400, 10800, 2625 },
- { 0x0081, 0, 10800, 2700 },
- { 0x0082, 0, 10800, 2700 },
- { 0x2081, 0x400, 10800, 2775 },
- { 0x2082, 0x400, 10800, 2775 },
- { 0x0081, 0, 10800, 2850 },
- { 0x0082, 0, 10800, 2850 },
- { 0x2081, 0x400, 10800, 2925 },
- { 0x2082, 0x400, 10800, 2925 },
- { 0x0081, 0, 10800, 3000 },
- { 0x0082, 0, 10800, 3000 },
- { 0x2081, 0x400, 10800, 3075 },
- { 0x2082, 0x400, 10800, 3075 },
- { 0x0081, 0, 10800, 3150 },
- { 0x0082, 0, 10800, 3150 },
- { 0x2081, 0x400, 10800, 3225 },
- { 0x2082, 0x400, 10800, 3225 },
- { 0x0081, 0, 10800, 3300 },
- { 0x0082, 0, 10800, 3300 },
- { 0x2081, 0x400, 10800, 3375 },
- { 0x2082, 0x400, 10800, 3375 },
- { 0x0081, 0, 10800, 3450 },
- { 0x0082, 0, 10800, 3450 },
- { 0x2081, 0x400, 10800, 3525 },
- { 0x2082, 0x400, 10800, 3525 }
-};
-static const SvxMSDffVertPair mso_sptSeal8Vert[] = // adj value 0 -> 10800
-{
- { 5 MSO_I, 6 MSO_I }, { 11 MSO_I, 12 MSO_I }, { 17 MSO_I, 18 MSO_I }, { 23 MSO_I, 24 MSO_I },
- { 29 MSO_I, 30 MSO_I }, { 35 MSO_I, 36 MSO_I }, { 41 MSO_I, 42 MSO_I }, { 47 MSO_I, 48 MSO_I },
- { 53 MSO_I, 54 MSO_I }, { 59 MSO_I, 60 MSO_I }, { 65 MSO_I, 66 MSO_I }, { 71 MSO_I, 72 MSO_I },
- { 77 MSO_I, 78 MSO_I }, { 83 MSO_I, 84 MSO_I }, { 89 MSO_I, 90 MSO_I }, { 95 MSO_I, 96 MSO_I },
- { 5 MSO_I, 6 MSO_I }
-};
-static const SvxMSDffTextRectangles mso_sptSealTextRect[] =
-{
- { { 1 MSO_I, 2 MSO_I }, { 3 MSO_I, 4 MSO_I } }
-};
-static const mso_CustomShape msoSeal8 =
-{
- (SvxMSDffVertPair*)mso_sptSeal8Vert, sizeof( mso_sptSeal8Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptSeal24Calc, sizeof( mso_sptSeal24Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2500,
- (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-static const SvxMSDffVertPair mso_sptSeal16Vert[] = // adj value 0 -> 10800
-{
- { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
- { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
- { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
- { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
- { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
- { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
- { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
- { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
- { 0x05 MSO_I, 0x06 MSO_I }
-};
-static const SvxMSDffCalculationData mso_sptSeal16Calc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0x00
- { 0x2081, 0x400, 10800, 3150 }, // 0x01 ( textframe )
- { 0x2082, 0x400, 10800, 3150 }, // 0x02
- { 0x2081, 0x400, 10800, 1350 }, // 0x03
- { 0x2082, 0x400, 10800, 1350 }, // 0x04
- { 0x0081, 0, 10800, 0 },
- { 0x0082, 0, 10800, 0 },
- { 0x2081, 0x400, 10800, 113 },
- { 0x2082, 0x400, 10800, 113 },
- { 0x0081, 0, 10800, 225 },
- { 0x0082, 0, 10800, 225 },
- { 0x2081, 0x400, 10800, 338 },
- { 0x2082, 0x400, 10800, 338 },
- { 0x0081, 0, 10800, 450 },
- { 0x0082, 0, 10800, 450 },
- { 0x2081, 0x400, 10800, 563 },
- { 0x2082, 0x400, 10800, 563 },
- { 0x0081, 0, 10800, 675 },
- { 0x0082, 0, 10800, 675 },
- { 0x2081, 0x400, 10800, 788 },
- { 0x2082, 0x400, 10800, 788 },
- { 0x0081, 0, 10800, 900 },
- { 0x0082, 0, 10800, 900 },
- { 0x2081, 0x400, 10800, 1013 },
- { 0x2082, 0x400, 10800, 1013 },
- { 0x0081, 0, 10800, 1125 },
- { 0x0082, 0, 10800, 1125 },
- { 0x2081, 0x400, 10800, 1238 },
- { 0x2082, 0x400, 10800, 1238 },
- { 0x0081, 0, 10800, 1350 },
- { 0x0082, 0, 10800, 1350 },
- { 0x2081, 0x400, 10800, 1463 },
- { 0x2082, 0x400, 10800, 1463 },
- { 0x0081, 0, 10800, 1575 },
- { 0x0082, 0, 10800, 1575 },
- { 0x2081, 0x400, 10800, 1688 },
- { 0x2082, 0x400, 10800, 1688 },
- { 0x0081, 0, 10800, 1800 },
- { 0x0082, 0, 10800, 1800 },
- { 0x2081, 0x400, 10800, 1913 },
- { 0x2082, 0x400, 10800, 1913 },
- { 0x0081, 0, 10800, 2025 },
- { 0x0082, 0, 10800, 2025 },
- { 0x2081, 0x400, 10800, 2138 },
- { 0x2082, 0x400, 10800, 2138 },
- { 0x0081, 0, 10800, 2250 },
- { 0x0082, 0, 10800, 2250 },
- { 0x2081, 0x400, 10800, 2363 },
- { 0x2082, 0x400, 10800, 2363 },
- { 0x0081, 0, 10800, 2475 },
- { 0x0082, 0, 10800, 2475 },
- { 0x2081, 0x400, 10800, 2588 },
- { 0x2082, 0x400, 10800, 2588 },
- { 0x0081, 0, 10800, 2700 },
- { 0x0082, 0, 10800, 2700 },
- { 0x2081, 0x400, 10800, 2813 },
- { 0x2082, 0x400, 10800, 2813 },
- { 0x0081, 0, 10800, 2925 },
- { 0x0082, 0, 10800, 2925 },
- { 0x2081, 0x400, 10800, 3038 },
- { 0x2082, 0x400, 10800, 3038 },
- { 0x0081, 0, 10800, 3150 },
- { 0x0082, 0, 10800, 3150 },
- { 0x2081, 0x400, 10800, 3263 },
- { 0x2082, 0x400, 10800, 3263 },
- { 0x0081, 0, 10800, 3375 },
- { 0x0082, 0, 10800, 3375 },
- { 0x2081, 0x400, 10800, 3488 },
- { 0x2082, 0x400, 10800, 3488 }
-};
-static const mso_CustomShape msoSeal16 =
-{
- (SvxMSDffVertPair*)mso_sptSeal16Vert, sizeof( mso_sptSeal16Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptSeal16Calc, sizeof( mso_sptSeal16Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2500,
- (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-static const SvxMSDffVertPair mso_sptSeal24Vert[] =
-{
- { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
- { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
- { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
- { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
- { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
- { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
- { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
- { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
- { 0x45 MSO_I, 0x46 MSO_I }, { 0x47 MSO_I, 0x48 MSO_I }, { 0x49 MSO_I, 0x4a MSO_I }, { 0x4b MSO_I, 0x4c MSO_I },
- { 0x4d MSO_I, 0x4e MSO_I }, { 0x4f MSO_I, 0x50 MSO_I }, { 0x51 MSO_I, 0x52 MSO_I }, { 0x53 MSO_I, 0x54 MSO_I },
- { 0x55 MSO_I, 0x56 MSO_I }, { 0x57 MSO_I, 0x58 MSO_I }, { 0x59 MSO_I, 0x5a MSO_I }, { 0x5b MSO_I, 0x5c MSO_I },
- { 0x5d MSO_I, 0x5e MSO_I }, { 0x5f MSO_I, 0x60 MSO_I }, { 0x61 MSO_I, 0x62 MSO_I }, { 0x63 MSO_I, 0x64 MSO_I },
- { 0x05 MSO_I, 0x06 MSO_I }
-};
-static const mso_CustomShape msoSeal24 =
-{
- (SvxMSDffVertPair*)mso_sptSeal24Vert, sizeof( mso_sptSeal24Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptSeal24Calc, sizeof( mso_sptSeal24Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2500,
- (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-static const SvxMSDffCalculationData mso_sptSeal32Calc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0x00
- { 0x2081, 0x400, 10800, 3150 }, // 0x01 ( textframe )
- { 0x2082, 0x400, 10800, 3150 }, // 0x02
- { 0x2081, 0x400, 10800, 1350 }, // 0x03
- { 0x2082, 0x400, 10800, 1350 }, // 0x04
- { 0x0081, 0, 10800, 0 },
- { 0x0082, 0, 10800, 0 },
- { 0x2081, 0x400, 10800, 56 },
- { 0x2082, 0x400, 10800, 56 },
- { 0x0081, 0, 10800, 113 },
- { 0x0082, 0, 10800, 113 },
- { 0x2081, 0x400, 10800, 169 },
- { 0x2082, 0x400, 10800, 169 },
- { 0x0081, 0, 10800, 225 },
- { 0x0082, 0, 10800, 225 },
- { 0x2081, 0x400, 10800, 281 },
- { 0x2082, 0x400, 10800, 281 },
- { 0x0081, 0, 10800, 338 },
- { 0x0082, 0, 10800, 338 },
- { 0x2081, 0x400, 10800, 394 },
- { 0x2082, 0x400, 10800, 394 },
- { 0x0081, 0, 10800, 450 },
- { 0x0082, 0, 10800, 450 },
- { 0x2081, 0x400, 10800, 506 },
- { 0x2082, 0x400, 10800, 506 },
- { 0x0081, 0, 10800, 563 },
- { 0x0082, 0, 10800, 563 },
- { 0x2081, 0x400, 10800, 619 },
- { 0x2082, 0x400, 10800, 619 },
- { 0x0081, 0, 10800, 675 },
- { 0x0082, 0, 10800, 675 },
- { 0x2081, 0x400, 10800, 731 },
- { 0x2082, 0x400, 10800, 731 },
- { 0x0081, 0, 10800, 788 },
- { 0x0082, 0, 10800, 788 },
- { 0x2081, 0x400, 10800, 843 },
- { 0x2082, 0x400, 10800, 843 },
- { 0x0081, 0, 10800, 900 },
- { 0x0082, 0, 10800, 900 },
- { 0x2081, 0x400, 10800, 956 },
- { 0x2082, 0x400, 10800, 956 },
- { 0x0081, 0, 10800, 1013 },
- { 0x0082, 0, 10800, 1013 },
- { 0x2081, 0x400, 10800, 1069 },
- { 0x2082, 0x400, 10800, 1069 },
- { 0x0081, 0, 10800, 1125 },
- { 0x0082, 0, 10800, 1125 },
- { 0x2081, 0x400, 10800, 1181 },
- { 0x2082, 0x400, 10800, 1181 },
- { 0x0081, 0, 10800, 1238 },
- { 0x0082, 0, 10800, 1238 },
- { 0x2081, 0x400, 10800, 1294 },
- { 0x2082, 0x400, 10800, 1294 },
- { 0x0081, 0, 10800, 1350 },
- { 0x0082, 0, 10800, 1350 },
- { 0x2081, 0x400, 10800, 1406 },
- { 0x2082, 0x400, 10800, 1406 },
- { 0x0081, 0, 10800, 1462 },
- { 0x0082, 0, 10800, 1462 },
- { 0x2081, 0x400, 10800, 1519 },
- { 0x2082, 0x400, 10800, 1519 },
- { 0x0081, 0, 10800, 1575 },
- { 0x0082, 0, 10800, 1575 },
- { 0x2081, 0x400, 10800, 1631 },
- { 0x2082, 0x400, 10800, 1631 },
- { 0x0081, 0, 10800, 1688 },
- { 0x0082, 0, 10800, 1688 },
- { 0x2081, 0x400, 10800, 1744 },
- { 0x2082, 0x400, 10800, 1744 },
- { 0x0081, 0, 10800, 1800 },
- { 0x0082, 0, 10800, 1800 },
- { 0x2081, 0x400, 10800, 1856 },
- { 0x2082, 0x400, 10800, 1856 },
- { 0x0081, 0, 10800, 1913 },
- { 0x0082, 0, 10800, 1913 },
- { 0x2081, 0x400, 10800, 1969 },
- { 0x2082, 0x400, 10800, 1969 },
- { 0x0081, 0, 10800, 2025 },
- { 0x0082, 0, 10800, 2025 },
- { 0x2081, 0x400, 10800, 2081 },
- { 0x2082, 0x400, 10800, 2081 },
- { 0x0081, 0, 10800, 2138 },
- { 0x0082, 0, 10800, 2138 },
- { 0x2081, 0x400, 10800, 2194 },
- { 0x2082, 0x400, 10800, 2194 },
- { 0x0081, 0, 10800, 2250 },
- { 0x0082, 0, 10800, 2250 },
- { 0x2081, 0x400, 10800, 2306 },
- { 0x2082, 0x400, 10800, 2306 },
- { 0x0081, 0, 10800, 2362 },
- { 0x0082, 0, 10800, 2362 },
- { 0x2081, 0x400, 10800, 2418 },
- { 0x2082, 0x400, 10800, 2418 },
- { 0x0081, 0, 10800, 2475 },
- { 0x0082, 0, 10800, 2475 },
- { 0x2081, 0x400, 10800, 2531 },
- { 0x2082, 0x400, 10800, 2531 },
- { 0x0081, 0, 10800, 2587 },
- { 0x0082, 0, 10800, 2587 },
- { 0x2081, 0x400, 10800, 2643 },
- { 0x2082, 0x400, 10800, 2643 },
- { 0x0081, 0, 10800, 2700 },
- { 0x0082, 0, 10800, 2700 },
- { 0x2081, 0x400, 10800, 2756 },
- { 0x2082, 0x400, 10800, 2756 },
- { 0x0081, 0, 10800, 2812 },
- { 0x0082, 0, 10800, 2812 },
- { 0x2081, 0x400, 10800, 2868 },
- { 0x2082, 0x400, 10800, 2868 },
- { 0x0081, 0, 10800, 2925 },
- { 0x0082, 0, 10800, 2925 },
- { 0x2081, 0x400, 10800, 2981 },
- { 0x2082, 0x400, 10800, 2981 },
- { 0x0081, 0, 10800, 3037 },
- { 0x0082, 0, 10800, 3037 },
- { 0x2081, 0x400, 10800, 3093 },
- { 0x2082, 0x400, 10800, 3093 },
- { 0x0081, 0, 10800, 3150 },
- { 0x0082, 0, 10800, 3150 },
- { 0x2081, 0x400, 10800, 3206 },
- { 0x2082, 0x400, 10800, 3206 },
- { 0x0081, 0, 10800, 3262 },
- { 0x0082, 0, 10800, 3262 },
- { 0x2081, 0x400, 10800, 3318 },
- { 0x2082, 0x400, 10800, 3318 },
- { 0x0081, 0, 10800, 3375 },
- { 0x0082, 0, 10800, 3375 },
- { 0x2081, 0x400, 10800, 3431 },
- { 0x2082, 0x400, 10800, 3431 },
- { 0x0081, 0, 10800, 3487 },
- { 0x0082, 0, 10800, 3487 },
- { 0x2081, 0x400, 10800, 3543 },
- { 0x2082, 0x400, 10800, 3543 }
-};
-static const SvxMSDffVertPair mso_sptSeal32Vert[] =
-{
- { 0x05 MSO_I, 0x06 MSO_I }, { 0x07 MSO_I, 0x08 MSO_I }, { 0x09 MSO_I, 0x0a MSO_I }, { 0x0b MSO_I, 0x0c MSO_I },
- { 0x0d MSO_I, 0x0e MSO_I }, { 0x0f MSO_I, 0x10 MSO_I }, { 0x11 MSO_I, 0x12 MSO_I }, { 0x13 MSO_I, 0x14 MSO_I },
- { 0x15 MSO_I, 0x16 MSO_I }, { 0x17 MSO_I, 0x18 MSO_I }, { 0x19 MSO_I, 0x1a MSO_I }, { 0x1b MSO_I, 0x1c MSO_I },
- { 0x1d MSO_I, 0x1e MSO_I }, { 0x1f MSO_I, 0x20 MSO_I }, { 0x21 MSO_I, 0x22 MSO_I }, { 0x23 MSO_I, 0x24 MSO_I },
- { 0x25 MSO_I, 0x26 MSO_I }, { 0x27 MSO_I, 0x28 MSO_I }, { 0x29 MSO_I, 0x2a MSO_I }, { 0x2b MSO_I, 0x2c MSO_I },
- { 0x2d MSO_I, 0x2e MSO_I }, { 0x2f MSO_I, 0x30 MSO_I }, { 0x31 MSO_I, 0x32 MSO_I }, { 0x33 MSO_I, 0x34 MSO_I },
- { 0x35 MSO_I, 0x36 MSO_I }, { 0x37 MSO_I, 0x38 MSO_I }, { 0x39 MSO_I, 0x3a MSO_I }, { 0x3b MSO_I, 0x3c MSO_I },
- { 0x3d MSO_I, 0x3e MSO_I }, { 0x3f MSO_I, 0x40 MSO_I }, { 0x41 MSO_I, 0x42 MSO_I }, { 0x43 MSO_I, 0x44 MSO_I },
- { 0x45 MSO_I, 0x46 MSO_I }, { 0x47 MSO_I, 0x48 MSO_I }, { 0x49 MSO_I, 0x4a MSO_I }, { 0x4b MSO_I, 0x4c MSO_I },
- { 0x4d MSO_I, 0x4e MSO_I }, { 0x4f MSO_I, 0x50 MSO_I }, { 0x51 MSO_I, 0x52 MSO_I }, { 0x53 MSO_I, 0x54 MSO_I },
- { 0x55 MSO_I, 0x56 MSO_I }, { 0x57 MSO_I, 0x58 MSO_I }, { 0x59 MSO_I, 0x5a MSO_I }, { 0x5b MSO_I, 0x5c MSO_I },
- { 0x5d MSO_I, 0x5e MSO_I }, { 0x5f MSO_I, 0x60 MSO_I }, { 0x61 MSO_I, 0x62 MSO_I }, { 0x63 MSO_I, 0x64 MSO_I },
- { 0x65 MSO_I, 0x66 MSO_I }, { 0x67 MSO_I, 0x68 MSO_I }, { 0x69 MSO_I, 0x6a MSO_I }, { 0x6b MSO_I, 0x6c MSO_I },
- { 0x6d MSO_I, 0x6e MSO_I }, { 0x6f MSO_I, 0x70 MSO_I }, { 0x71 MSO_I, 0x72 MSO_I }, { 0x73 MSO_I, 0x74 MSO_I },
- { 0x75 MSO_I, 0x76 MSO_I }, { 0x77 MSO_I, 0x78 MSO_I }, { 0x79 MSO_I, 0x7a MSO_I }, { 0x7b MSO_I, 0x7c MSO_I },
- { 0x7d MSO_I, 0x7e MSO_I }, { 0x7f MSO_I, 0x80 MSO_I }, { 0x81 MSO_I, 0x82 MSO_I }, { 0x83 MSO_I, 0x84 MSO_I },
- { 0x05 MSO_I, 0x06 MSO_I }
-};
-static const mso_CustomShape msoSeal32 =
-{
- (SvxMSDffVertPair*)mso_sptSeal32Vert, sizeof( mso_sptSeal32Vert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptSeal32Calc, sizeof( mso_sptSeal32Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2500,
- (SvxMSDffTextRectangles*)mso_sptSealTextRect, sizeof( mso_sptSealTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptRibbon2Vert[] = // adjustment1 : x 2700 - 8100 def 5400
-{ // adjustment2 : y 14400 - 21600 def 18900
- { 12 MSO_I, 1 MSO_I }, { 12 MSO_I, 13 MSO_I }, // pp
- { 12 MSO_I, 14 MSO_I }, { 15 MSO_I, 21600 }, { 16 MSO_I, 21600 }, // ccp
- { 0, 21600 }, { 2750, 7 MSO_I }, { 0, 2 MSO_I }, { 0 MSO_I, 2 MSO_I }, // pppp
- { 0 MSO_I, 4 MSO_I }, // p
- { 0 MSO_I, 5 MSO_I }, { 10 MSO_I, 0 }, { 11 MSO_I, 0 }, // ccp
- { 17 MSO_I, 0 }, // p
- { 18 MSO_I, 0 }, { 19 MSO_I, 5 MSO_I }, { 19 MSO_I, 4 MSO_I }, // ccp
- { 19 MSO_I, 2 MSO_I }, { 21600, 2 MSO_I }, { 18850, 7 MSO_I }, { 21600, 21600 }, // pppp
- { 20 MSO_I, 21600 }, // p
- { 21 MSO_I, 21600 }, { 22 MSO_I, 14 MSO_I }, { 22 MSO_I, 13 MSO_I }, // ccp
- { 22 MSO_I, 1 MSO_I }, { 12 MSO_I, 1 MSO_I }, { 12 MSO_I, 13 MSO_I }, // ppp
- { 12 MSO_I, 23 MSO_I }, { 15 MSO_I, 24 MSO_I }, { 16 MSO_I, 24 MSO_I }, // ccp
- { 11 MSO_I, 24 MSO_I }, // p
- { 10 MSO_I, 24 MSO_I }, { 0 MSO_I, 26 MSO_I }, { 0 MSO_I, 25 MSO_I }, // ccp
- { 0 MSO_I, 27 MSO_I }, { 10 MSO_I, 1 MSO_I }, { 11 MSO_I, 1 MSO_I }, // ccp
-
- { 22 MSO_I, 1 MSO_I }, { 22 MSO_I, 13 MSO_I }, // pp
- { 22 MSO_I, 23 MSO_I }, { 21 MSO_I, 24 MSO_I }, { 20 MSO_I, 24 MSO_I }, // ccp
- { 17 MSO_I, 24 MSO_I }, // p
- { 18 MSO_I, 24 MSO_I }, { 19 MSO_I, 26 MSO_I }, { 19 MSO_I, 25 MSO_I }, // ccp
- { 19 MSO_I, 27 MSO_I }, { 18 MSO_I, 1 MSO_I }, { 17 MSO_I, 1 MSO_I }, // ccp
-
- { 0 MSO_I, 25 MSO_I }, { 0 MSO_I, 2 MSO_I }, // pp
-
- { 19 MSO_I, 25 MSO_I }, { 19 MSO_I, 2 MSO_I } // pp
-};
-static const sal_uInt16 mso_sptRibbon2Segm[] =
-{
- 0x4000, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x6001, 0x8000,
- 0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000,
- 0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptRibbon2Calc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 00
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 01
- { 0x8000, 21600, 0, 0x401 }, // 02
- { 0x2001, 0x402, 1, 2 }, // 03
- { 0x2001, 0x403, 1, 2 }, // 04
- { 0x2001, 0x404, 1, 2 }, // 05
- { 0x2001, 0x401, 1, 2 }, // 06
- { 0x8000, 21600, 0, 0x406 }, // 07
- { 0x0000, 420, 0, 0 }, // 08
- { 0x2001, 0x408, 2, 1 }, // 09
- { 0x6000, 0x400, 0x408, 0 }, // 10
- { 0x6000, 0x400, 0x409, 0 }, // 11
- { 0x2000, 0x400, 2700, 0 }, // 12
- { 0x8000, 21600, 0, 0x404 }, // 13
- { 0x8000, 21600, 0, 0x405 }, // 14
- { 0xa000, 0x40c, 0, 0x408 }, // 15
- { 0xa000, 0x40c, 0, 0x409 }, // 16
-
- { 0x8000, 21600, 0, 0x40b }, // 17
- { 0x8000, 21600, 0, 0x40a }, // 18
- { 0x8000, 21600, 0, 0x400 }, // 19
- { 0x8000, 21600, 0, 0x410 }, // 20
- { 0x8000, 21600, 0, 0x40f }, // 21
- { 0x8000, 21600, 0, 0x40c }, // 22
-
- { 0xa000, 0x40d, 0, 0x405 }, // 23
- { 0x6000, 0x401, 0x403, 0 }, // 24
- { 0x6000, 0x401, 0x404, 0 }, // 25
- { 0x6000, 0x419, 0x405, 0 }, // 26
- { 0xa000, 0x419, 0, 0x405 } // 27
-};
-static const sal_Int32 mso_sptRibbon2Default[] =
-{
- 2, 5400, 18900
-};
-static const SvxMSDffTextRectangles mso_sptRibbon2TextRect[] =
-{
- { { 0 MSO_I, 0 }, { 19 MSO_I, 1 MSO_I } }
-};
-static const mso_CustomShape msoRibbon2 =
-{
- (SvxMSDffVertPair*)mso_sptRibbon2Vert, sizeof( mso_sptRibbon2Vert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptRibbon2Segm, sizeof( mso_sptRibbon2Segm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptRibbon2Calc, sizeof( mso_sptRibbon2Calc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptRibbon2Default,
- (SvxMSDffTextRectangles*)mso_sptRibbon2TextRect, sizeof( mso_sptRibbon2TextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptVerticalScrollVert[] = // adjustment1 : 0 - 5400
-{
- { 1 MSO_I, 21600 }, { 0, 2 MSO_I }, { 1 MSO_I, 3 MSO_I }, { 0 MSO_I, 3 MSO_I },
- { 0 MSO_I, 1 MSO_I }, { 4 MSO_I, 0 }, { 2 MSO_I, 0 }, { 21600, 1 MSO_I },
- { 2 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 2 MSO_I }, { 5 MSO_I, 21600 },
-
- { 6 MSO_I, 1 MSO_I }, { 4 MSO_I, 0 MSO_I }, { 8 MSO_I, 9 MSO_I }, { 4 MSO_I, 1 MSO_I },
-
- { 0 MSO_I, 2 MSO_I }, { 1 MSO_I, 21600 }, { 0, 2 MSO_I }, { 1 MSO_I, 3 MSO_I },
- { 9 MSO_I, 10 MSO_I }, { 1 MSO_I, 2 MSO_I },
-
- { 4 MSO_I, 0 }, { 6 MSO_I, 1 MSO_I },
-
- { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 2 MSO_I },
-
- { 4 MSO_I, 0 MSO_I },
- { 2 MSO_I, 0 MSO_I }
-};
-static const sal_uInt16 mso_sptVerticalScrollSegm[] =
-{
- 0x4000, 0xa702, 0x0002, 0xa801, 0x0001, 0xa702, 0x0002, 0xa801, 0x6001, 0x8000,
- 0x4000, 0xa801, 0xa702, 0x6000, 0x8000,
- 0x4000, 0xa803, 0xa702, 0x6001, 0x8000,
- 0x4000, 0xa701, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptScrollCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 },
- { 0x2001, 0x400, 1, 2 },
- { 0x8000, 21600, 0, 0x401 },
- { 0x8000, 21600, 0, 0x400 },
- { 0x6000, 0x400, 0x401, 0 },
- { 0x8000, 21600, 0, 0x404 },
- { 0x2001, 0x400, 2, 1 },
- { 0x2001, 0x401, 1, 2 },
- { 0x6000, 0x400, 0x407, 0 },
- { 0x6000, 0x401, 0x407, 0 },
- { 0x8000, 21600, 0, 0x409 }
-};
-static const SvxMSDffTextRectangles mso_sptScrollTextRect[] =
-{
- { { 0 MSO_I, 0 MSO_I }, { 3 MSO_I, 3 MSO_I } }
-};
-static const mso_CustomShape msoVerticalScroll =
-{
- (SvxMSDffVertPair*)mso_sptVerticalScrollVert, sizeof( mso_sptVerticalScrollVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptVerticalScrollSegm, sizeof( mso_sptVerticalScrollSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptScrollCalc, sizeof( mso_sptScrollCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2700,
- (SvxMSDffTextRectangles*)mso_sptScrollTextRect, sizeof( mso_sptScrollTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 11000, 10800,
- NULL, 0
-};
-static const SvxMSDffVertPair mso_sptHorizontalScrollVert[] = // adjustment1 : 0 - 5400
-{
- { 0, 4 MSO_I }, { 1 MSO_I, 0 MSO_I }, { 3 MSO_I, 0 MSO_I }, { 3 MSO_I, 1 MSO_I },
- { 2 MSO_I, 0 }, { 21600, 1 MSO_I }, { 21600, 5 MSO_I }, { 2 MSO_I, 3 MSO_I },
- { 0 MSO_I, 3 MSO_I }, { 0 MSO_I, 2 MSO_I }, { 1 MSO_I, 21600 }, { 0, 2 MSO_I },
-
- { 1 MSO_I, 4 MSO_I }, { 9 MSO_I, 8 MSO_I }, { 0 MSO_I, 4 MSO_I }, { 1 MSO_I, 6 MSO_I },
-
- { 2 MSO_I, 1 MSO_I }, { 10 MSO_I,9 MSO_I }, { 3 MSO_I, 1 MSO_I }, { 2 MSO_I, 0 },
- { 21600, 1 MSO_I }, { 2 MSO_I, 0 MSO_I },
-
- { 1 MSO_I, 6 MSO_I },
- { 0, 4 MSO_I },
-
- { 2 MSO_I, 0 MSO_I },
- { 3 MSO_I, 0 MSO_I },
-
- { 0 MSO_I, 4 MSO_I },
- { 0 MSO_I, 2 MSO_I }
-};
-static const sal_uInt16 mso_sptHorizontalScrollSegm[] =
-{
- 0x4000, 0xa801, 0x0002, 0xa802, 0x0001, 0xa801, 0x0002, 0xa802, 0x6001, 0x8000,
- 0x4000, 0xa803, 0x6000, 0x8000,
- 0x4000, 0xa803, 0xa702, 0x6000, 0x8000,
- 0x4000, 0xa701, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const mso_CustomShape msoHorizontalScroll =
-{
- (SvxMSDffVertPair*)mso_sptHorizontalScrollVert, sizeof( mso_sptHorizontalScrollVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptHorizontalScrollSegm, sizeof( mso_sptHorizontalScrollSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptScrollCalc, sizeof( mso_sptScrollCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDefault2700,
- (SvxMSDffTextRectangles*)mso_sptScrollTextRect, sizeof( mso_sptScrollTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 10800, 11000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartProcessVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 0 }
-};
-static const mso_CustomShape msoFlowChartProcess =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartProcessVert, sizeof( mso_sptFlowChartProcessVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- NULL, 0,
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartAlternateProcessVert[] =
-{
- { 0, 2 MSO_I }, { 0 MSO_I, 0 }, { 1 MSO_I, 0 }, { 21600, 2 MSO_I },
- { 21600, 3 MSO_I }, { 1 MSO_I, 21600 }, { 0 MSO_I, 21600 }, { 0, 3 MSO_I }
-};
-static const sal_uInt16 mso_sptFlowChartAlternateProcessSegm[] =
-{
- 0x4000, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x6000, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptFlowChartAlternateProcessCalc[] =
-{
- { 0x2000, DFF_Prop_geoLeft, 2540, 0 },
- { 0x2000, DFF_Prop_geoRight, 0, 2540 },
- { 0x2000, DFF_Prop_geoTop, 2540, 0 },
- { 0x2000, DFF_Prop_geoBottom, 0, 2540 },
- { 0x2000, DFF_Prop_geoLeft, 800, 0 },
- { 0x2000, DFF_Prop_geoRight, 0, 800 },
- { 0x2000, DFF_Prop_geoTop, 800, 0 },
- { 0x2000, DFF_Prop_geoBottom,0, 800 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartAlternateProcessTextRect[] =
-{
- { { 4 MSO_I, 6 MSO_I }, { 5 MSO_I, 7 MSO_I } }
-};
-static const mso_CustomShape msoFlowChartAlternateProcess =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartAlternateProcessVert, sizeof( mso_sptFlowChartAlternateProcessVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartAlternateProcessSegm, sizeof( mso_sptFlowChartAlternateProcessSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptFlowChartAlternateProcessCalc, sizeof( mso_sptFlowChartAlternateProcessCalc ) / sizeof( SvxMSDffCalculationData ),
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartAlternateProcessTextRect, sizeof( mso_sptFlowChartAlternateProcessTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartDecisionVert[] =
-{
- { 0, 10800 }, { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 10800 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartDecisionTextRect[] =
-{
- { { 5400, 5400 }, { 16200, 16200 } }
-};
-static const mso_CustomShape msoFlowChartDecision =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartDecisionVert, sizeof( mso_sptFlowChartDecisionVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartDecisionTextRect, sizeof( mso_sptFlowChartDecisionTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartInputOutputVert[] =
-{
- { 4230, 0 }, { 21600, 0 }, { 17370, 21600 }, { 0, 21600 }, { 4230, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartInputOutputTextRect[] =
-{
- { { 4230, 0 }, { 17370, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartInputOutputGluePoints[] =
-{
- { 12960, 0 }, { 10800, 0 }, { 2160, 10800 }, { 8600, 21600 }, { 10800, 21600 }, { 19400, 10800 }
-};
-static const mso_CustomShape msoFlowChartInputOutput =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartInputOutputVert, sizeof( mso_sptFlowChartInputOutputVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartInputOutputTextRect, sizeof( mso_sptFlowChartInputOutputTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartInputOutputGluePoints, sizeof( mso_sptFlowChartInputOutputGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartPredefinedProcessVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
-
- { 2540, 0 }, { 2540, 21600 },
-
- { 21600 - 2540, 0 }, { 21600 - 2540, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartPredefinedProcessSegm[] =
-{
- 0x4000, 0x0003, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartPredefinedProcessTextRect[] =
-{
- { { 2540, 0 }, { 21600 - 2540, 21600 } }
-};
-static const mso_CustomShape msoFlowChartPredefinedProcess =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartPredefinedProcessVert, sizeof( mso_sptFlowChartPredefinedProcessVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartPredefinedProcessSegm, sizeof( mso_sptFlowChartPredefinedProcessSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartPredefinedProcessTextRect, sizeof( mso_sptFlowChartPredefinedProcessTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartInternalStorageVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
-
- { 4230, 0 }, { 4230, 21600 },
-
- { 0, 4230 }, { 21600, 4230 }
-};
-static const sal_uInt16 mso_sptFlowChartInternalStorageSegm[] =
-{
- 0x4000, 0x0003, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartInternalStorageTextRect[] =
-{
- { { 4230, 4230 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoFlowChartInternalStorage =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartInternalStorageVert, sizeof( mso_sptFlowChartInternalStorageVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartInternalStorageSegm, sizeof( mso_sptFlowChartInternalStorageSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartInternalStorageTextRect, sizeof( mso_sptFlowChartInternalStorageTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartDocumentVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 17360 },
- { 13050, 17220 }, { 13340, 20770 }, { 5620, 21600 }, // ccp
- { 2860, 21100 }, { 1850, 20700 }, { 0, 20120 } // ccp
-};
-static const sal_uInt16 mso_sptFlowChartDocumentSegm[] =
-{
- 0x4000, 0x0002, 0x2002, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartDocumentTextRect[] =
-{
- { { 0, 0 }, { 21600, 17360 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartDocumentGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 20320 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartDocument =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartDocumentVert, sizeof( mso_sptFlowChartDocumentVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartDocumentSegm, sizeof( mso_sptFlowChartDocumentSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartDocumentTextRect, sizeof( mso_sptFlowChartDocumentTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartDocumentGluePoints, sizeof( mso_sptFlowChartDocumentGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartMultidocumentVert[] =
-{
- { 0, 3600 }, { 1500, 3600 }, { 1500, 1800 }, { 3000, 1800 },
- { 3000, 0 }, { 21600, 0 }, { 21600, 14409 }, { 21600 - 1500, 14409 },
- { 21600 - 1500, 14409 + 1800 }, { 21600 - 3000, 14409 + 1800 }, { 21600 - 3000, 14409 + 3600 },
- { 11610, 14293 + 3600 }, { 11472, 17239 + 3600 }, { 4833, 17928 + 3600 }, // ccp
- { 2450, 17513 + 3600 }, { 1591, 17181 + 3600 }, { 0, 16700 + 3600 }, // ccp
-
- { 1500, 3600 }, { 21600 - 3000, 3600 }, { 21600 - 3000, 14409 + 1800 },
-
- { 3000, 1800 }, { 21600 - 1500, 1800 }, { 21600 - 1500, 14409 }
-};
-static const sal_uInt16 mso_sptFlowChartMultidocumentSegm[] =
-{
- 0x4000, 0x000a, 0x2002, 0x6000, 0x8000,
- 0x4000, 0x0002, 0x8000,
- 0x4000, 0x0002, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartMultidocumentTextRect[] =
-{
- { { 0, 3600 }, { 21600 - 3000, 14409 + 3600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartMultidocumentGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 19890 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartMultidocument =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartMultidocumentVert, sizeof( mso_sptFlowChartMultidocumentVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartMultidocumentSegm, sizeof( mso_sptFlowChartMultidocumentSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartMultidocumentTextRect, sizeof( mso_sptFlowChartMultidocumentTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartMultidocumentGluePoints, sizeof( mso_sptFlowChartMultidocumentGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartTerminatorVert[] =
-{
- { 3470, 21600 }, { 0, 10800 }, { 3470, 0 }, { 18130, 0 },
- { 21600, 10800 }, { 18130, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartTerminatorSegm[] =
-{
- 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartTerminatorTextRect[] =
-{
- { { 1060, 3180 }, { 20540, 18420 } }
-};
-static const mso_CustomShape msoFlowChartTerminator =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartTerminatorVert, sizeof( mso_sptFlowChartTerminatorVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartTerminatorSegm, sizeof( mso_sptFlowChartTerminatorSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartTerminatorTextRect, sizeof( mso_sptFlowChartTerminatorTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartPreparationVert[] =
-{
- { 4350, 0 }, { 17250, 0 }, { 21600, 10800 }, { 17250, 21600 },
- { 4350, 21600 }, { 0, 10800 }, { 4350, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartPreparationTextRect[] =
-{
- { { 4350, 0 }, { 17250, 21600 } }
-};
-static const mso_CustomShape msoFlowChartPreparation =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartPreparationVert, sizeof( mso_sptFlowChartPreparationVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartPreparationTextRect, sizeof( mso_sptFlowChartPreparationTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartManualInputVert[] =
-{
- { 0, 4300 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 }, { 0, 4300 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartManualInputTextRect[] =
-{
- { { 0, 4300 }, { 21600, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartManualInputGluePoints[] =
-{
- { 10800, 2150 }, { 0, 10800 }, { 10800, 19890 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartManualInput =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartManualInputVert, sizeof( mso_sptFlowChartManualInputVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartManualInputTextRect, sizeof( mso_sptFlowChartManualInputTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartManualInputGluePoints, sizeof( mso_sptFlowChartManualInputGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartManualOperationVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 17250, 21600 }, { 4350, 21600 }, { 0, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartManualOperationTextRect[] =
-{
- { { 4350, 0 }, { 17250, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartManualOperationGluePoints[] =
-{
- { 10800, 0 }, { 2160, 10800 }, { 10800, 21600 }, { 19440, 10800 }
-};
-static const mso_CustomShape msoFlowChartManualOperation =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartManualOperationVert, sizeof( mso_sptFlowChartManualOperationVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartManualOperationTextRect, sizeof( mso_sptFlowChartManualOperationTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartManualOperationGluePoints, sizeof( mso_sptFlowChartManualOperationGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartConnectorVert[] =
-{
- { 0, 0 }, { 21600, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartConnectorSegm[] =
-{
- 0xa302, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartConnectorTextRect[] =
-{
- { { 3180, 3180 }, { 18420, 18420 } }
-};
-static const mso_CustomShape msoFlowChartConnector =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartConnectorVert, sizeof( mso_sptFlowChartConnectorVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartConnectorSegm, sizeof( mso_sptFlowChartConnectorSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartConnectorTextRect, sizeof( mso_sptFlowChartConnectorTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartOffpageConnectorVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 21600, 17150 }, { 10800, 21600 },
- { 0, 17150 }, { 0, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartOffpageConnectorTextRect[] =
-{
- { { 0, 0 }, { 21600, 17150 } }
-};
-static const mso_CustomShape msoFlowChartOffpageConnector =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartOffpageConnectorVert, sizeof( mso_sptFlowChartOffpageConnectorVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartOffpageConnectorTextRect, sizeof( mso_sptFlowChartOffpageConnectorTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartPunchedCardVert[] =
-{
- { 4300, 0 }, { 21600, 0 }, { 21600, 21600 }, { 0, 21600 },
- { 0, 4300 }, { 4300, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartPunchedCardTextRect[] =
-{
- { { 0, 4300 }, { 21600, 21600 } }
-};
-static const mso_CustomShape msoFlowChartPunchedCard =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartPunchedCardVert, sizeof( mso_sptFlowChartPunchedCardVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartPunchedCardTextRect, sizeof( mso_sptFlowChartPunchedCardTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartPunchedTapeVert[] =
-{
- { 0, 2230 }, // p
- { 820, 3990 }, { 3410, 3980 }, { 5370, 4360 }, // ccp
- { 7430, 4030 }, { 10110, 3890 }, { 10690, 2270 }, // ccp
- { 11440, 300 }, { 14200, 160 }, { 16150, 0 }, // ccp
- { 18670, 170 }, { 20690, 390 }, { 21600, 2230 }, // ccp
- { 21600, 19420 }, // p
- { 20640, 17510 }, { 18320, 17490 }, { 16140, 17240 }, // ccp
- { 14710, 17370 }, { 11310, 17510 }, { 10770, 19430 }, // ccp
- { 10150, 21150 }, { 7380, 21290 }, { 5290, 21600 }, // ccp
- { 3220, 21250 }, { 610, 21130 }, { 0, 19420 } // ccp
-};
-static const sal_uInt16 mso_sptFlowChartPunchedTapeSegm[] =
-{
- 0x4000, 0x2004, 0x0001, 0x2004, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartPunchedTapeTextRect[] =
-{
- { { 0, 4360 }, { 21600, 17240 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartPunchedTapeGluePoints[] =
-{
- { 10800, 2020 }, { 0, 10800 }, { 10800, 19320 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartPunchedTape =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartPunchedTapeVert, sizeof( mso_sptFlowChartPunchedTapeVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartPunchedTapeSegm, sizeof( mso_sptFlowChartPunchedTapeSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartPunchedTapeTextRect, sizeof( mso_sptFlowChartPunchedTapeTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartPunchedTapeGluePoints, sizeof( mso_sptFlowChartPunchedTapeGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartSummingJunctionVert[] =
-{
- { 0, 0 }, { 21600, 21600 },
-
- { 3100, 3100 },
- { 18500, 18500 },
-
- { 3100, 18500 },
- { 18500, 3100 }
-};
-static const sal_uInt16 mso_sptFlowChartSummingJunctionSegm[] =
-{
- 0xa302, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartSummingJunctionTextRect[] =
-{
- { { 3100, 3100 }, { 18500, 18500 } }
-};
-static const mso_CustomShape msoFlowChartSummingJunction =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartSummingJunctionVert, sizeof( mso_sptFlowChartSummingJunctionVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartSummingJunctionSegm, sizeof( mso_sptFlowChartSummingJunctionSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartSummingJunctionTextRect, sizeof( mso_sptFlowChartSummingJunctionTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartOrVert[] =
-{
- { 0, 0 }, { 21600, 21600 },
-
- { 0, 10800 }, { 21600, 10800 },
-
- { 10800, 0 }, { 10800, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartOrSegm[] =
-{
- 0xa302, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartOrTextRect[] =
-{
- { { 3100, 3100 }, { 18500, 18500 } }
-};
-static const mso_CustomShape msoFlowChartOr =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartOrVert, sizeof( mso_sptFlowChartOrVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartOrSegm, sizeof( mso_sptFlowChartOrSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartOrTextRect, sizeof( mso_sptFlowChartOrTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptEllipseGluePoints, sizeof( mso_sptEllipseGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartCollateVert[] =
-{
- { 0, 0 }, { 21600, 21600 }, { 0, 21600 }, { 21600, 0 }, { 0, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartCollateTextRect[] =
-{
- { { 5400, 5400 }, { 16200, 16200 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartCollateGluePoints[] =
-{
- { 10800, 0 }, { 10800, 10800 }, { 10800, 21600 }
-};
-static const mso_CustomShape msoFlowChartCollate =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartCollateVert, sizeof( mso_sptFlowChartCollateVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartCollateTextRect, sizeof( mso_sptFlowChartCollateTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartCollateGluePoints, sizeof( mso_sptFlowChartCollateGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartSortVert[] =
-{
- { 0, 10800 }, { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 },
-
- { 0, 10800 }, { 21600, 10800 }
-};
-static const sal_uInt16 mso_sptFlowChartSortSegm[] =
-{
- 0x4000, 0x0003, 0x6000, 0x8000,
- 0x4000, 0x0001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartSortTextRect[] =
-{
- { { 5400, 5400 }, { 16200, 16200 } }
-};
-static const mso_CustomShape msoFlowChartSort =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartSortVert, sizeof( mso_sptFlowChartSortVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartSortSegm, sizeof( mso_sptFlowChartSortSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartSortTextRect, sizeof( mso_sptFlowChartSortTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartExtractVert[] =
-{
- { 10800, 0 }, { 21600, 21600 }, { 0, 21600 }, { 10800, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartExtractTextRect[] =
-{
- { { 5400, 10800 }, { 16200, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartExtractGluePoints[] =
-{
- { 10800, 0 }, { 5400, 10800 }, { 10800, 21600 }, { 16200, 10800 }
-};
-static const mso_CustomShape msoFlowChartExtract =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartExtractVert, sizeof( mso_sptFlowChartExtractVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartExtractTextRect, sizeof( mso_sptFlowChartExtractTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartExtractGluePoints, sizeof( mso_sptFlowChartExtractGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartMergeVert[] =
-{
- { 0, 0 }, { 21600, 0 }, { 10800, 21600 }, { 0, 0 }
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartMergeTextRect[] =
-{
- { { 5400, 0 }, { 16200, 10800 } }
-};
-static const mso_CustomShape msoFlowChartMerge =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartMergeVert, sizeof( mso_sptFlowChartMergeVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartMergeTextRect, sizeof( mso_sptFlowChartMergeTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartExtractGluePoints, sizeof( mso_sptFlowChartExtractGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartOnlineStorageVert[] =
-{
- { 3600, 21600 }, { 0, 10800 }, { 3600, 0 }, { 21600, 0 },
- { 18000, 10800 }, { 21600, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartOnlineStorageSegm[] =
-{
- 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartOnlineStorageTextRect[] =
-{
- { { 3600, 0 }, { 18000, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartOnlineStorageGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 18000, 10800 }
-};
-static const mso_CustomShape msoFlowChartOnlineStorage =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartOnlineStorageVert, sizeof( mso_sptFlowChartOnlineStorageVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartOnlineStorageSegm, sizeof( mso_sptFlowChartOnlineStorageSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartOnlineStorageTextRect, sizeof( mso_sptFlowChartOnlineStorageTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartOnlineStorageGluePoints, sizeof( mso_sptFlowChartOnlineStorageGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartDelayVert[] =
-{
- { 10800, 0 }, { 21600, 10800 }, { 10800, 21600 }, { 0, 21600 },
- { 0, 0 }
-};
-static const sal_uInt16 mso_sptFlowChartDelaySegm[] =
-{
- 0x4000, 0xa702, 0x0002, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartDelayTextRect[] =
-{
- { { 0, 3100 }, { 18500, 18500 } }
-};
-static const mso_CustomShape msoFlowChartDelay =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartDelayVert, sizeof( mso_sptFlowChartDelayVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartDelaySegm, sizeof( mso_sptFlowChartDelaySegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartDelayTextRect, sizeof( mso_sptFlowChartDelayTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartMagneticTapeVert[] =
-{
- { 20980, 18150 }, { 20980, 21600 }, { 10670, 21600 },
- { 4770, 21540 }, { 0, 16720 }, { 0, 10800 }, // ccp
- { 0, 4840 }, { 4840, 0 }, { 10800, 0 }, // ccp
- { 16740, 0 }, { 21600, 4840 }, { 21600, 10800 }, // ccp
- { 21600, 13520 }, { 20550, 16160 }, { 18670, 18170 } // ccp
-};
-static const sal_uInt16 mso_sptFlowChartMagneticTapeSegm[] =
-{
- 0x4000, 0x0002, 0x2004, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartMagneticTapeTextRect[] =
-{
- { { 3100, 3100 }, { 18500, 18500 } }
-};
-static const mso_CustomShape msoFlowChartMagneticTape =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartMagneticTapeVert, sizeof( mso_sptFlowChartMagneticTapeVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartMagneticTapeSegm, sizeof( mso_sptFlowChartMagneticTapeSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticTapeTextRect, sizeof( mso_sptFlowChartMagneticTapeTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartMagneticDiskVert[] =
-{
- { 0, 3400 }, { 10800, 0 }, { 21600, 3400 }, { 21600, 18200 },
- { 10800, 21600 }, { 0, 18200 },
-
- { 0, 3400 }, { 10800, 6800 }, { 21600, 3400 }
-};
-static const sal_uInt16 mso_sptFlowChartMagneticDiskSegm[] =
-{
- 0x4000, 0xa802, 0x0001, 0xa802, 0x6000, 0x8000,
- 0x4000, 0xa802, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartMagneticDiskTextRect[] =
-{
- { { 0, 6800 }, { 21600, 18200 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartMagneticDiskGluePoints[] =
-{
- { 10800, 6800 }, { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartMagneticDisk =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartMagneticDiskVert, sizeof( mso_sptFlowChartMagneticDiskVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartMagneticDiskSegm, sizeof( mso_sptFlowChartMagneticDiskSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticDiskTextRect, sizeof( mso_sptFlowChartMagneticDiskTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartMagneticDiskGluePoints, sizeof( mso_sptFlowChartMagneticDiskGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartMagneticDrumVert[] =
-{
- { 18200, 0 }, { 21600, 10800 }, { 18200, 21600 }, { 3400, 21600 },
- { 0, 10800 }, { 3400, 0 },
-
- { 18200, 0 }, { 14800, 10800 }, { 18200, 21600 }
-};
-static const sal_uInt16 mso_sptFlowChartMagneticDrumSegm[] =
-{
- 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000,
- 0x4000, 0xa702, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartMagneticDrumTextRect[] =
-{
- { { 3400, 0 }, { 14800, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptFlowChartMagneticDrumGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 14800, 10800 }, { 21600, 10800 }
-};
-static const mso_CustomShape msoFlowChartMagneticDrum =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartMagneticDrumVert, sizeof( mso_sptFlowChartMagneticDrumVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartMagneticDrumSegm, sizeof( mso_sptFlowChartMagneticDrumSegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartMagneticDrumTextRect, sizeof( mso_sptFlowChartMagneticDrumTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptFlowChartMagneticDrumGluePoints, sizeof( mso_sptFlowChartMagneticDrumGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptFlowChartDisplayVert[] =
-{
- { 3600, 0 }, { 17800, 0 }, { 21600, 10800 }, { 17800, 21600 },
- { 3600, 21600 }, { 0, 10800 }
-};
-static const sal_uInt16 mso_sptFlowChartDisplaySegm[] =
-{
- 0x4000, 0x0001, 0xa702, 0x0002, 0x6000, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptFlowChartDisplayTextRect[] =
-{
- { { 3600, 0 }, { 17800, 21600 } }
-};
-static const mso_CustomShape msoFlowChartDisplay =
-{
- (SvxMSDffVertPair*)mso_sptFlowChartDisplayVert, sizeof( mso_sptFlowChartDisplayVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptFlowChartDisplaySegm, sizeof( mso_sptFlowChartDisplaySegm ) >> 1,
- NULL, 0,
- NULL,
- (SvxMSDffTextRectangles*)mso_sptFlowChartDisplayTextRect, sizeof( mso_sptFlowChartDisplayTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptStandardGluePoints, sizeof( mso_sptStandardGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptWedgeRectCalloutVert[] =
-{
- { 0, 0 },
- { 0, 3590 }, { 2 MSO_I, 3 MSO_I }, { 0, 8970 },
- { 0, 12630 },{ 4 MSO_I, 5 MSO_I }, { 0, 18010 },
- { 0, 21600 },
- { 3590, 21600 }, { 6 MSO_I, 7 MSO_I }, { 8970, 21600 },
- { 12630, 21600 }, { 8 MSO_I, 9 MSO_I }, { 18010, 21600 },
- { 21600, 21600 },
- { 21600, 18010 }, { 10 MSO_I, 11 MSO_I }, { 21600, 12630 },
- { 21600, 8970 }, { 12 MSO_I, 13 MSO_I }, { 21600, 3590 },
- { 21600, 0 },
- { 18010, 0 }, { 14 MSO_I, 15 MSO_I }, { 12630, 0 },
- { 8970, 0 }, { 16 MSO_I, 17 MSO_I }, { 3590, 0 },
- { 0, 0 }
-};
-static const SvxMSDffCalculationData mso_sptWedgeRectCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 10800 }, //0x400
- { 0x2000, DFF_Prop_adjust2Value, 0,10800 },
- { 0x6006, 0x412, DFF_Prop_adjustValue, 0 }, //0x402
- { 0x6006, 0x412, DFF_Prop_adjust2Value, 6280 },
- { 0x6006, 0x417, DFF_Prop_adjustValue, 0 }, //0x404
- { 0x6006, 0x417, DFF_Prop_adjust2Value, 15320 },
- { 0x6006, 0x41a, DFF_Prop_adjustValue, 6280 }, //0x406
- { 0x6006, 0x41a, DFF_Prop_adjust2Value, 21600 },
- { 0x6006, 0x41d, DFF_Prop_adjustValue, 15320 }, //0x408
- { 0x6006, 0x41d, DFF_Prop_adjust2Value, 21600 },
- { 0x6006, 0x420, DFF_Prop_adjustValue, 21600 }, //0x40a
- { 0x6006, 0x420, DFF_Prop_adjust2Value, 15320 },
- { 0x6006, 0x422, DFF_Prop_adjustValue, 21600 }, //0x40c
- { 0x6006, 0x422, DFF_Prop_adjust2Value, 6280 },
- { 0x6006, 0x424, DFF_Prop_adjustValue, 15320 }, //0x40e
- { 0x6006, 0x424, DFF_Prop_adjust2Value, 0 },
- { 0x6006, 0x426, DFF_Prop_adjustValue, 6280 }, //0x410
- { 0x6006, 0x426, DFF_Prop_adjust2Value, 0 },
- { 0xa006, DFF_Prop_adjustValue, -1, 0x413 }, //0x412
- { 0xa006, 0x401, -1, 0x416 },
- { 0x2003, 0x400, 0, 0 }, //0x414
- { 0x2003, 0x401, 0, 0 },
- { 0xa000, 0x414, 0, 0x415 }, //0x416
- { 0xa006, DFF_Prop_adjustValue, -1, 0x418 },
- { 0x6006, 0x401, 0x416, -1 }, //0x418
- { 0x2000, DFF_Prop_adjust2Value, 0, 21600 },
- { 0x6006, 0x419, 0x41b, -1 }, //0x41a
- { 0xa006, 0x400, -1, 0x41c },
- { 0xa000, 0x415, 0, 0x414 }, //0x41c
- { 0x6006, 0x419, 0x41e, -1 },
- { 0x6006, 0x400, 0x41c, -1 }, //0x41e
- { 0x2000, DFF_Prop_adjustValue, 0, 21600 },
- { 0x6006, 0x41f, 0x421, -1 }, //0x420
- { 0x6006, 0x401, 0x416, -1 },
- { 0x6006, 0x41f, 0x423, -1 }, //0x422
- { 0xa006, 0x401, -1, 0x416 },
- { 0xa006, DFF_Prop_adjust2Value, -1, 0x425 }, //0x424
- { 0x6006, 0x400, 0x41c, -1 },
- { 0xa006, DFF_Prop_adjust2Value, -1, 0x427 }, //0x426
- { 0xa006, 0x400, -1, 0x41c },
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, //0x428
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }
-};
-static const sal_Int32 mso_sptWedgeRectCalloutDefault[] =
-{
- 2, 1400, 25920
-};
-static const SvxMSDffTextRectangles mso_sptWedgeRectCalloutTextRect[] =
-{
- { { 0, 0 }, { 21600, 21600 } }
-};
-static const SvxMSDffVertPair mso_sptWedgeRectCalloutGluePoints[] =
-{
- { 10800, 0 }, { 0, 10800 }, { 10800, 21600 }, { 21600, 10800 }, { 40 MSO_I, 41 MSO_I }
-};
-static const mso_CustomShape msoWedgeRectCallout =
-{
- (SvxMSDffVertPair*)mso_sptWedgeRectCalloutVert, sizeof( mso_sptWedgeRectCalloutVert ) / sizeof( SvxMSDffVertPair ),
- NULL, 0,
- (SvxMSDffCalculationData*)mso_sptWedgeRectCalloutCalc, sizeof( mso_sptWedgeRectCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptWedgeRectCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptWedgeRectCalloutTextRect, sizeof( mso_sptWedgeRectCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptWedgeRectCalloutGluePoints, sizeof( mso_sptWedgeRectCalloutGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptWaveVert[] = // adjustment1 : 0 - 4460
-{ // adjustment2 : 8640 - 12960
- { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
- { 24 MSO_I, 1 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 29 MSO_I, 1 MSO_I }
-};
-static const SvxMSDffCalculationData mso_sptWaveCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, //400 (vert.adj)
- { 0x8000, 21600, 0, 0x400 }, //401
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },//402 (horz.adj)
- { 0x2000, 0x402, 0, 10800 }, //403 -2160 -> 2160 (horz.adj)
- { 0x2001, 0x403, 2, 1 }, //404 -4320 -> 4320 (horz.adj)
- { 0x2003, 0x404, 0, 0 }, //405 abs( 0x404 ) (horz.adj)
- { 0x8000, 4320, 0, 0x405 }, //406
- { 0xa006, 0x403, 0, 0x405 }, //407
- { 0x4001, 15800, 0x400, 4460 }, //408 0 -> 15800 (vert.adj)
- { 0xa000, 0x400, 0, 0x408 }, //409
- { 0x6000, 0x400, 0x408, 0 }, //40a
- { 0x8000, 21600, 0, 0x404 }, //40b
- { 0x6006, 0x403, 0x40b, 21600 }, //40c
- { 0xa000, 0x40c, 0, 0x407 }, //40d width between p0 and p1
- { 0x2001, 0x405, 1, 2 }, //40e
- { 0xa000, 0x407, 7200, 0x40e }, //40f
- { 0x6000, 0x40c, 0x40e, 7200 }, //410
- { 0x2001, 0x40d, 1, 2 }, //411 1/2 width
- { 0x6000, 0x407, 0x411, 0 }, //412 top center glue xpos
- { 0x8000, 21600, 0, 0x412 }, //413 bottom center glue xpos
- { 0x2001, 0x405, 1, 2 }, //414 left glue x pos
- { 0x8000, 21600, 0, 0x414 }, //415 right glue x pos
- { 0x2001, 0x400, 2, 1 }, //416 y1 (textbox)
- { 0x8000, 21600, 0, 0x416 }, //417 y2 (textbox)
-
- { 0x8000, 21600, 0, 0x407 }, //418 p2
-
- { 0x8000, 21600, 0, 0x40f }, //419 c
- { 0x6000, 0x401, 0x408, 0 }, //41a
-
- { 0x8000, 21600, 0, 0x410 }, //41b c
- { 0xa000, 0x401, 0, 0x408 }, //41c
-
- { 0x8000, 21600, 0, 0x40c } //41d p3
-};
-static const SvxMSDffVertPair mso_sptWaveGluePoints[] =
-{
- { 0x12 MSO_I, 0 MSO_I }, { 0x14 MSO_I, 10800 }, { 0x13 MSO_I, 1 MSO_I }, { 0x15 MSO_I, 10800 }
-};
-static const sal_uInt16 mso_sptWaveSegm[] =
-{
- 0x4000, 0x2001, 0x0001, 0x2001, 0x6000, 0x8000
-};
-static const sal_Int32 mso_sptWaveDefault[] =
-{
- 2, 1400, 10800
-};
-static const SvxMSDffTextRectangles mso_sptWaveTextRect[] =
-{
- { { 5 MSO_I, 22 MSO_I }, { 11 MSO_I, 23 MSO_I } }
-};
-static const mso_CustomShape msoWave =
-{
- (SvxMSDffVertPair*)mso_sptWaveVert, sizeof( mso_sptWaveVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptWaveSegm, sizeof( mso_sptWaveSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptWaveCalc, sizeof( mso_sptWaveCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptWaveDefault,
- (SvxMSDffTextRectangles*)mso_sptWaveTextRect, sizeof( mso_sptWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptWaveGluePoints, sizeof( mso_sptWaveGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-static const SvxMSDffVertPair mso_sptDoubleWaveVert[] = // adjustment1 : 0 - 2230
-{ // adjustment2 : 8640 - 12960
- { 7 MSO_I, 0 MSO_I }, { 15 MSO_I, 9 MSO_I }, { 0x1e MSO_I, 10 MSO_I }, { 0x12 MSO_I, 0 MSO_I }, { 0x1f MSO_I, 9 MSO_I }, { 16 MSO_I, 10 MSO_I }, { 12 MSO_I, 0 MSO_I },
- { 24 MSO_I, 1 MSO_I }, { 25 MSO_I, 26 MSO_I }, { 0x21 MSO_I, 28 MSO_I }, { 0x13 MSO_I, 1 MSO_I }, { 0x20 MSO_I, 26 MSO_I }, { 27 MSO_I, 28 MSO_I }, { 29 MSO_I, 1 MSO_I }
-};
-static const SvxMSDffCalculationData mso_sptDoubleWaveCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, //400 (vert.adj)
- { 0x8000, 21600, 0, 0x400 }, //401
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 },//402 (horz.adj)
- { 0x2000, 0x402, 0, 10800 }, //403 -2160 -> 2160 (horz.adj)
- { 0x2001, 0x403, 2, 1 }, //404 -4320 -> 4320 (horz.adj)
- { 0x2003, 0x404, 0, 0 }, //405 abs( 0x404 ) (horz.adj)
- { 0x8000, 4320, 0, 0x405 }, //406 -> not used
- { 0xa006, 0x403, 0, 0x405 }, //407
- { 0x4001, 7900, 0x400, 2230 }, //408 0 -> 7900 (vert.adj)
- { 0xa000, 0x400, 0, 0x408 }, //409
- { 0x6000, 0x400, 0x408, 0 }, //40a
- { 0x8000, 21600, 0, 0x404 }, //40b
- { 0x6006, 0x403, 0x40b, 21600 }, //40c
- { 0xa000, 0x40c, 0, 0x407 }, //40d width between p0 and p1
- { 0x2001, 0x405, 1, 2 }, //40e
- { 0xa000, 0x407, 3600, 0x40e }, //40f
- { 0x6000, 0x40c, 0x40e, 3600 }, //410
- { 0x2001, 0x40d, 1, 2 }, //411 1/2 width
- { 0x6000, 0x407, 0x411, 0 }, //412 top center glue xpos
- { 0x8000, 21600, 0, 0x412 }, //413 bottom center glue xpos
- { 0x2001, 0x405, 1, 2 }, //414 left glue x pos
- { 0x8000, 21600, 0, 0x414 }, //415 right glue x pos
- { 0x2001, 0x400, 2, 1 }, //416 y1 (textbox)
- { 0x8000, 21600, 0, 0x416 }, //417 y2 (textbox)
-
- { 0x8000, 21600, 0, 0x407 }, //418 p2
-
- { 0x8000, 21600, 0, 0x40f }, //419 c
- { 0x6000, 0x401, 0x408, 0 }, //41a
-
- { 0x8000, 21600, 0, 0x410 }, //41b c
- { 0xa000, 0x401, 0, 0x408 }, //41c
-
- { 0x8000, 21600, 0, 0x40c }, //41d p3
- { 0xa000, 0x412, 0, 0x40e }, //41e
- { 0x6000, 0x412, 0x40e, 0 }, //41f
- { 0xa000, 0x413, 0, 0x40e }, //420
- { 0x6000, 0x413, 0x40e, 0 } //421
-};
-static const SvxMSDffVertPair mso_sptDoubleWaveGluePoints[] =
-{
- { 0x12 MSO_I, 0 MSO_I }, { 0x14 MSO_I, 10800 }, { 0x13 MSO_I, 1 MSO_I }, { 0x15 MSO_I, 10800 }
-};
-static const sal_uInt16 mso_sptDoubleWaveSegm[] =
-{
- 0x4000, 0x2002, 0x0001, 0x2002, 0x6000, 0x8000
-};
-static const sal_Int32 mso_sptDoubleWaveDefault[] =
-{
- 2, 1400, 10800
-};
-static const SvxMSDffTextRectangles mso_sptDoubleWaveTextRect[] =
-{
- { { 5 MSO_I, 22 MSO_I }, { 11 MSO_I, 23 MSO_I } }
-};
-static const mso_CustomShape msoDoubleWave =
-{
- (SvxMSDffVertPair*)mso_sptDoubleWaveVert, sizeof( mso_sptDoubleWaveVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptDoubleWaveSegm, sizeof( mso_sptDoubleWaveSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptDoubleWaveCalc, sizeof( mso_sptDoubleWaveCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptDoubleWaveDefault,
- (SvxMSDffTextRectangles*)mso_sptDoubleWaveTextRect, sizeof( mso_sptDoubleWaveTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptDoubleWaveGluePoints, sizeof( mso_sptDoubleWaveGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-static const SvxMSDffVertPair mso_sptWedgeRRectCalloutVert[] =
-{
- { 3590, 0 },
- { 0, 3590 },
- { 2 MSO_I, 3 MSO_I }, { 0, 8970 },
- { 0, 12630 },{ 4 MSO_I, 5 MSO_I }, { 0, 18010 },
- { 3590, 21600 },
- { 6 MSO_I, 7 MSO_I }, { 8970, 21600 },
- { 12630, 21600 }, { 8 MSO_I, 9 MSO_I }, { 18010, 21600 },
- { 21600, 18010 },
- { 10 MSO_I, 11 MSO_I }, { 21600, 12630 },
- { 21600, 8970 }, { 12 MSO_I, 13 MSO_I }, { 21600, 3590 },
- { 18010, 0 },
- { 14 MSO_I, 15 MSO_I }, { 12630, 0 },
- { 8970, 0 }, { 16 MSO_I, 17 MSO_I }
-};
-static const sal_uInt16 mso_sptWedgeRRectCalloutSegm[] =
-{
- 0x4000, 0xa701, 0x0005, 0xa801, 0x0005, 0xa701, 0x0005, 0xa801, 0x0004, 0x6001, 0x8000
-};
-static const SvxMSDffTextRectangles mso_sptWedgeRRectCalloutTextRect[] =
-{
- { { 800, 800 }, { 20800, 20800 } }
-};
-static const mso_CustomShape msoWedgeRRectCallout =
-{
- (SvxMSDffVertPair*)mso_sptWedgeRRectCalloutVert, sizeof( mso_sptWedgeRRectCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptWedgeRRectCalloutSegm, sizeof( mso_sptWedgeRRectCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptWedgeRectCalloutCalc, sizeof( mso_sptWedgeRectCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptWedgeRectCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptWedgeRRectCalloutTextRect, sizeof( mso_sptWedgeRRectCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-static const SvxMSDffVertPair mso_sptWedgeEllipseCalloutVert[] =
-{
- { 0, 0 }, { 21600, 21600 }, { 0x16 MSO_I, 0x17 MSO_I }, { 0x12 MSO_I, 0x13 MSO_I }, { 0xe MSO_I, 0xf MSO_I }
-};
-static const sal_uInt16 mso_sptWedgeEllipseCalloutSegm[] =
-{
- 0xa504, 0x0001, 0x6001, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptWedgeEllipseCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 10800 }, // 00 rad x
- { 0x2000, DFF_Prop_adjust2Value, 0, 10800 }, // 01 rad y
- { 0x6001, 0x400, 0x400, 1 }, // 02 rad x^2
- { 0x6001, 0x401, 0x401, 1 }, // 03 rad y^2
- { 0x6000, 0x402, 0x403, 0 }, // 04
- { 0x200d, 0x404, 0, 0 }, // 05
- { 0x2000, 0x405, 0, 10800 }, // 06 > 0 ? spur needs to be drawn : 10800
- { 0x6008, 0x400, 0x401, 0 }, // 07 atan2 -> angle
- { 0x2000, 0x407, 0, 10 }, // 08
- { 0x2000, 0x407, 10, 0 }, // 09
- { 0x400a, 10800, 0x407, 0 }, // 0a
- { 0x4009, 10800, 0x407, 0 }, // 0b
- { 0x2000, 0x40a, 10800, 0 }, // 0c
- { 0x2000, 0x40b, 10800, 0 }, // 0d
- { 0xe006, 0x406, DFF_Prop_adjustValue, 0x40c }, // 0e
- { 0xe006, 0x406, DFF_Prop_adjust2Value, 0x40d },// 0f
- { 0x400a, 10800, 0x408, 0 }, // 10
- { 0x4009, 10800, 0x408, 0 }, // 11
- { 0x2000, 0x410, 10800, 0 }, // 12
- { 0x2000, 0x411, 10800, 0 }, // 13
- { 0x400a, 10800, 0x409, 0 }, // 14
- { 0x4009, 10800, 0x409, 0 }, // 15
- { 0x2000, 0x414, 10800, 0 }, // 16
- { 0x2000, 0x415, 10800, 0 }, // 17
-};
-static const sal_Int32 mso_sptWedgeEllipseCalloutDefault[] =
-{
- 2, 1350, 25920
-};
-static const SvxMSDffVertPair mso_sptWedgeEllipseCalloutGluePoints[] =
-{
- { 10800, 0 }, { 3160, 3160 }, { 0, 10800 }, { 3160, 18440 }, { 10800, 21600 }, { 18440, 18440 }, { 21600, 10800 }, { 18440, 3160 }, { 0xe MSO_I, 0xf MSO_I }
-};
-static const SvxMSDffTextRectangles mso_sptWedgeEllipseCalloutTextRect[] =
-{
- { { 3200, 3200 }, { 18400, 18400 } }
-};
-static const mso_CustomShape msoWedgeEllipseCallout =
-{
- (SvxMSDffVertPair*)mso_sptWedgeEllipseCalloutVert, sizeof( mso_sptWedgeEllipseCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptWedgeEllipseCalloutSegm, sizeof( mso_sptWedgeEllipseCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptWedgeEllipseCalloutCalc, sizeof( mso_sptWedgeEllipseCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptWedgeEllipseCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptWedgeEllipseCalloutTextRect, sizeof( mso_sptWedgeEllipseCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- (SvxMSDffVertPair*)mso_sptWedgeEllipseCalloutGluePoints, sizeof( mso_sptWedgeEllipseCalloutGluePoints ) / sizeof( SvxMSDffVertPair )
-};
-
-static const SvxMSDffVertPair mso_sptCloudCalloutVert[] =
-{
- { 1930,7160 }, // p
- { 1530,4490 }, { 3400,1970 }, { 5270,1970 }, // ccp
- { 5860,1950 }, { 6470,2210 }, { 6970,2600 }, // ccp
- { 7450,1390 }, { 8340,650 }, { 9340,650 }, // ccp
- { 10004,690 }, { 10710,1050 }, { 11210,1700 }, // ccp
- { 11570,630 }, { 12330,0 }, { 13150,0 }, // ccp
- { 13840,0 }, { 14470,460 }, { 14870,1160 }, // ccp
- { 15330,440 }, { 16020,0 }, { 16740,0 }, // ccp
- { 17910,0 }, { 18900,1130 }, { 19110,2710 }, // ccp
- { 20240,3150 }, { 21060,4580 }, { 21060,6220 }, // ccp
- { 21060,6720 }, { 21000,7200 }, { 20830,7660 }, // ccp
- { 21310,8460 }, { 21600,9450 }, { 21600,10460 }, // ccp
- { 21600,12750 }, { 20310,14680 }, { 18650,15010 }, // ccp
- { 18650,17200 }, { 17370,18920 }, { 15770,18920 }, // ccp
- { 15220,18920 }, { 14700,18710 }, { 14240,18310 }, // ccp
- { 13820,20240 }, { 12490,21600 }, { 11000,21600 }, // ccp
- { 9890,21600 }, { 8840,20790 }, { 8210,19510 }, // ccp
- { 7620,20000 }, { 7930,20290 }, { 6240,20290 }, // ccp
- { 4850,20290 }, { 3570,19280 }, { 2900,17640 }, // ccp
- { 1300,17600 }, { 480,16300 }, { 480,14660 }, // ccp
- { 480,13900 }, { 690,13210 }, { 1070,12640 }, // ccp
- { 380,12160 }, { 0,11210 }, { 0,10120 }, // ccp
- { 0,8590 }, { 840,7330 }, { 1930,7160 }, // ccp
-
- { 1930, 7160 }, { 1950, 7410 }, { 2040, 7690 }, { 2090, 7920 }, // pccp
- { 6970, 2600 }, { 7200, 2790 }, { 7480, 3050 }, { 7670, 3310 }, // pccp
- { 11210, 1700 }, { 11130, 1910 }, { 11080, 2160 }, { 11030, 2400 }, // pccp
- { 14870, 1160 }, { 14720, 1400 }, { 14640, 1720 }, { 14540, 2010 }, // pccp
- { 19110, 2710 }, { 19130, 2890 }, { 19230, 3290 }, { 19190, 3380 }, // pccp
- { 20830, 7660 }, { 20660, 8170 }, { 20430, 8620 }, { 20110, 8990 }, // pccp
- { 18660, 15010 }, { 18740, 14200 }, { 18280, 12200 }, { 17000, 11450 }, // pccp
- { 14240, 18310 }, { 14320, 17980 }, { 14350, 17680 }, { 14370, 17360 }, // pccp
- { 8220, 19510 }, { 8060, 19250 }, { 7960, 18950 }, { 7860, 18640 }, // pccp
- { 2900, 17640 }, { 3090, 17600 }, { 3280, 17540 }, { 3460, 17450 }, // pccp
- { 1070, 12640 }, { 1400, 12900 }, { 1780, 13130 }, { 2330, 13040 } // pccp
-};
-static const sal_uInt16 mso_sptCloudCalloutSegm[] =
-{
- 0x4000, 0x2016, 0x6001, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000,
- 0x4000, 0x2001, 0xaa00, 0x8000
-};
-static const SvxMSDffCalculationData mso_sptCloudCalloutCalc[] =
-{
- { 0x2000, DFF_Prop_adjustValue, 0, 10800 },
- { 0x2000, DFF_Prop_adjust2Value, 0, 10800 },
- { 0x6008, 0x400, 0x401, 0 },
- { 0x400a, 10800, 0x402, 0 }, // 3
- { 0x4009, 10800, 0x402, 0 }, // 4
- { 0x2000, 0x403, 10800, 0 }, // 5
- { 0x2000, 0x404, 10800, 0 }, // 6
- { 0xa000, DFF_Prop_adjustValue, 0, 0x405 }, // 7
- { 0xa000, DFF_Prop_adjust2Value,0, 0x406 }, // 8
- { 0x2001, 0x407, 1, 3 }, // 9
- { 0x2001, 0x408, 1, 3 }, // 0xa
- { 0x2001, 0x407, 2, 3 }, // 0xb
- { 0x2001, 0x408, 2, 3 }, // 0xc
- { 0x2000, DFF_Prop_adjustValue, 0, 0 }, // 0xd
- { 0x2000, DFF_Prop_adjust2Value, 0, 0 }, // 0xe
- { 0x2001, 0x403, 1, 10800 / 900 }, // 0xf taking half x distance of the radius from the first bobble
- { 0x2001, 0x404, 1, 10800 / 900 }, // 0x10
- { 0xe000, 0x409, 0x405, 0x40f }, // 0x11
- { 0xe000, 0x40a, 0x406, 0x410 }, // 0x12
- { 0x6000, 0x40b, 0x405, 0 }, // 0x13
- { 0x6000, 0x40c, 0x406, 0 } // 0x14
-};
-static const sal_Int32 mso_sptCloudCalloutDefault[] =
-{
- 2, 1350, 25920
-};
-static const SvxMSDffTextRectangles mso_sptCloudCalloutTextRect[] =
-{
- { { 3000, 3320 }, { 17110, 17330 } }
-};
-static const mso_CustomShape msoCloudCallout =
-{
- (SvxMSDffVertPair*)mso_sptCloudCalloutVert, sizeof( mso_sptCloudCalloutVert ) / sizeof( SvxMSDffVertPair ),
- (sal_uInt16*)mso_sptCloudCalloutSegm, sizeof( mso_sptCloudCalloutSegm ) >> 1,
- (SvxMSDffCalculationData*)mso_sptCloudCalloutCalc, sizeof( mso_sptCloudCalloutCalc ) / sizeof( SvxMSDffCalculationData ),
- (sal_Int32*)mso_sptCloudCalloutDefault,
- (SvxMSDffTextRectangles*)mso_sptCloudCalloutTextRect, sizeof( mso_sptCloudCalloutTextRect ) / sizeof( SvxMSDffTextRectangles ),
- 21600, 21600,
- 0x80000000, 0x80000000,
- NULL, 0
-};
-
-
-class SvxMSDffAdjustmentHandle
-{
- sal_Int32 nAdjustValue;
- sal_Int32 nDefaultValue;
- sal_Bool bIsDefault;
-
- public :
- SvxMSDffAdjustmentHandle() : nAdjustValue( 0 ), nDefaultValue( 0 ), bIsDefault( TRUE ) {};
-
- void SetAdjustValue( sal_Int32 nVal ) { nAdjustValue = nVal; bIsDefault = FALSE; };
- sal_Int32 GetAdjustValue() const { return bIsDefault ? nDefaultValue : nAdjustValue; };
- void SetDefaultValue( sal_Int32 nVal ) { nDefaultValue = nVal; };
- sal_Bool IsDefault() const { return bIsDefault; };
-};
-
-const mso_CustomShape* GetCustomShapeContent2( MSO_SPT eSpType )
-{
- const mso_CustomShape* pCustomShape = NULL;
- switch( eSpType )
- {
- case mso_sptArc : pCustomShape = &msoArc; break;
- case mso_sptRectangle : pCustomShape = &msoRectangle; break;
- case mso_sptParallelogram : pCustomShape = &msoParallelogram; break;
- case mso_sptTrapezoid : pCustomShape = &msoTrapezoid; break;
- case mso_sptDiamond : pCustomShape = &msoDiamond; break;
- case mso_sptRoundRectangle : pCustomShape = &msoRoundRectangle; break;
- case mso_sptOctagon : pCustomShape = &msoOctagon; break;
- case mso_sptIsocelesTriangle : pCustomShape = &msoIsocelesTriangle; break;
- case mso_sptRightTriangle : pCustomShape = &msoRightTriangle; break;
- case mso_sptEllipse : pCustomShape = &msoEllipse; break;
- case mso_sptHexagon : pCustomShape = &msoHexagon; break;
- case mso_sptPlus : pCustomShape = &msoPlus; break;
- case mso_sptPentagon : pCustomShape = &msoPentagon; break;
- case mso_sptCan : pCustomShape = &msoCan; break;
- case mso_sptCube : pCustomShape = &msoCube; break;
- case mso_sptActionButtonBlank : pCustomShape = &msoActionButtonBlank; break;
- case mso_sptActionButtonHome : pCustomShape = &msoActionButtonHome; break;
- case mso_sptActionButtonHelp : pCustomShape = &msoActionButtonHelp; break;
- case mso_sptActionButtonInformation : pCustomShape = &msoActionButtonInformation; break;
- case mso_sptActionButtonBackPrevious : pCustomShape = &msoActionButtonBackPrevious; break;
- case mso_sptActionButtonForwardNext : pCustomShape = &msoActionButtonForwardNext; break;
- case mso_sptActionButtonBeginning : pCustomShape = &msoActionButtonBeginning; break;
- case mso_sptActionButtonEnd : pCustomShape = &msoActionButtonEnd; break;
- case mso_sptActionButtonReturn : pCustomShape = &msoActionButtonReturn; break;
- case mso_sptActionButtonDocument : pCustomShape = &msoActionButtonDocument; break;
- case mso_sptActionButtonSound : pCustomShape = &msoActionButtonSound; break;
- case mso_sptActionButtonMovie : pCustomShape = &msoActionButtonMovie; break;
- case mso_sptBevel : pCustomShape = &msoBevel; break;
- case mso_sptFoldedCorner : pCustomShape = &msoFoldedCorner; break;
- case mso_sptSmileyFace : pCustomShape = &msoSmileyFace; break;
- case mso_sptDonut : pCustomShape = &msoDonut; break;
- case mso_sptNoSmoking : pCustomShape = &msoNoSmoking; break;
- case mso_sptBlockArc : pCustomShape = &msoBlockArc; break;
- case mso_sptHeart : pCustomShape = &msoHeart; break;
- case mso_sptLightningBolt : pCustomShape = &msoLightningBold; break;
- case mso_sptSun : pCustomShape = &msoSun; break;
- case mso_sptMoon : pCustomShape = &msoMoon; break;
- case mso_sptBracketPair : pCustomShape = &msoBracketPair; break;
- case mso_sptBracePair : pCustomShape = &msoBracePair; break;
- case mso_sptPlaque : pCustomShape = &msoPlaque; break;
- case mso_sptLeftBracket : pCustomShape = &msoLeftBracket; break;
- case mso_sptRightBracket : pCustomShape = &msoRightBracket; break;
- case mso_sptLeftBrace : pCustomShape = &msoLeftBrace; break;
- case mso_sptRightBrace : pCustomShape = &msoRightBrace; break;
- case mso_sptArrow : pCustomShape = &msoArrow; break;
- case mso_sptUpArrow : pCustomShape = &msoUpArrow; break;
- case mso_sptDownArrow : pCustomShape = &msoDownArrow; break;
- case mso_sptLeftArrow : pCustomShape = &msoLeftArrow; break;
- case mso_sptLeftRightArrow : pCustomShape = &msoLeftRightArrow; break;
- case mso_sptUpDownArrow : pCustomShape = &msoUpDownArrow; break;
- case mso_sptQuadArrow : pCustomShape = &msoQuadArrow; break;
- case mso_sptLeftRightUpArrow : pCustomShape = &msoLeftRightUpArrow; break;
- case mso_sptBentArrow : pCustomShape = &msoBentArrow; break;
- case mso_sptUturnArrow : pCustomShape = &msoUturnArrow; break;
- case mso_sptLeftUpArrow : pCustomShape = &msoLeftUpArrow; break;
- case mso_sptBentUpArrow : pCustomShape = &msoBentUpArrow; break;
- case mso_sptCurvedRightArrow : pCustomShape = &msoCurvedArrow; break;
- case mso_sptCurvedLeftArrow : pCustomShape = &msoCurvedArrow; break;
- case mso_sptCurvedUpArrow : pCustomShape = &msoCurvedArrow; break;
- case mso_sptCurvedDownArrow : pCustomShape = &msoCurvedArrow; break;
- case mso_sptStripedRightArrow : pCustomShape = &msoStripedRightArrow; break;
- case mso_sptNotchedRightArrow : pCustomShape = &msoNotchedRightArrow; break;
- case mso_sptHomePlate : pCustomShape = &msoHomePlate; break;
- case mso_sptChevron : pCustomShape = &msoChevron; break;
- case mso_sptRightArrowCallout : pCustomShape = &msoRightArrowCallout; break;
- case mso_sptLeftArrowCallout : pCustomShape = &msoLeftArrowCallout; break;
- case mso_sptUpArrowCallout : pCustomShape = &msoUpArrowCallout; break;
- case mso_sptDownArrowCallout : pCustomShape = &msoDownArrowCallout; break;
- case mso_sptLeftRightArrowCallout : pCustomShape = &msoLeftRightArrowCallout; break;
- case mso_sptUpDownArrowCallout : pCustomShape = &msoUpDownArrowCallout; break;
- case mso_sptQuadArrowCallout : pCustomShape = &msoQuadArrowCallout; break;
- case mso_sptCircularArrow : pCustomShape = &msoCircularArrow; break;
- case mso_sptIrregularSeal1 : pCustomShape = &msoIrregularSeal1; break;
- case mso_sptIrregularSeal2 : pCustomShape = &msoIrregularSeal2; break;
- case mso_sptSeal4 : pCustomShape = &msoSeal4; break;
- case mso_sptStar : pCustomShape = &msoStar; break;
- case mso_sptSeal8 : pCustomShape = &msoSeal8; break;
- case mso_sptSeal16 : pCustomShape = &msoSeal16; break;
- case mso_sptSeal24 : pCustomShape = &msoSeal24; break;
- case mso_sptSeal32 : pCustomShape = &msoSeal32; break;
- case mso_sptRibbon2 : pCustomShape = &msoRibbon2; break;
- case mso_sptRibbon : pCustomShape = &msoRibbon2; break;
- case mso_sptEllipseRibbon2 : pCustomShape = &msoRibbon2; break; //!!!!!
- case mso_sptEllipseRibbon : pCustomShape = &msoRibbon2; break; //!!!!!
- case mso_sptVerticalScroll : pCustomShape = &msoVerticalScroll; break;
- case mso_sptHorizontalScroll : pCustomShape = &msoHorizontalScroll; break;
- case mso_sptFlowChartProcess : pCustomShape = &msoFlowChartProcess; break;
- case mso_sptFlowChartAlternateProcess : pCustomShape = &msoFlowChartAlternateProcess; break;
- case mso_sptFlowChartDecision : pCustomShape = &msoFlowChartDecision; break;
- case mso_sptFlowChartInputOutput : pCustomShape = &msoFlowChartInputOutput; break;
- case mso_sptFlowChartPredefinedProcess :pCustomShape = &msoFlowChartPredefinedProcess; break;
- case mso_sptFlowChartInternalStorage : pCustomShape = &msoFlowChartInternalStorage; break;
- case mso_sptFlowChartDocument : pCustomShape = &msoFlowChartDocument; break;
- case mso_sptFlowChartMultidocument : pCustomShape = &msoFlowChartMultidocument; break;
- case mso_sptFlowChartTerminator : pCustomShape = &msoFlowChartTerminator; break;
- case mso_sptFlowChartPreparation : pCustomShape = &msoFlowChartPreparation; break;
- case mso_sptFlowChartManualInput : pCustomShape = &msoFlowChartManualInput; break;
- case mso_sptFlowChartManualOperation : pCustomShape = &msoFlowChartManualOperation; break;
- case mso_sptFlowChartConnector : pCustomShape = &msoFlowChartConnector; break;
- case mso_sptFlowChartOffpageConnector : pCustomShape = &msoFlowChartOffpageConnector; break;
- case mso_sptFlowChartPunchedCard : pCustomShape = &msoFlowChartPunchedCard; break;
- case mso_sptFlowChartPunchedTape : pCustomShape = &msoFlowChartPunchedTape; break;
- case mso_sptFlowChartSummingJunction : pCustomShape = &msoFlowChartSummingJunction; break;
- case mso_sptFlowChartOr : pCustomShape = &msoFlowChartOr; break;
- case mso_sptFlowChartCollate : pCustomShape = &msoFlowChartCollate; break;
- case mso_sptFlowChartSort : pCustomShape = &msoFlowChartSort; break;
- case mso_sptFlowChartExtract : pCustomShape = &msoFlowChartExtract; break;
- case mso_sptFlowChartMerge : pCustomShape = &msoFlowChartMerge; break;
- case mso_sptFlowChartOnlineStorage : pCustomShape = &msoFlowChartOnlineStorage; break;
- case mso_sptFlowChartDelay : pCustomShape = &msoFlowChartDelay; break;
- case mso_sptFlowChartMagneticTape : pCustomShape = &msoFlowChartMagneticTape; break;
- case mso_sptFlowChartMagneticDisk : pCustomShape = &msoFlowChartMagneticDisk; break;
- case mso_sptFlowChartMagneticDrum : pCustomShape = &msoFlowChartMagneticDrum; break;
- case mso_sptFlowChartDisplay : pCustomShape = &msoFlowChartDisplay; break;
- case mso_sptWave : pCustomShape = &msoWave; break;
- case mso_sptDoubleWave : pCustomShape = &msoDoubleWave; break;
- case mso_sptWedgeRectCallout : pCustomShape = &msoWedgeRectCallout; break;
- case mso_sptBalloon :
- case mso_sptWedgeRRectCallout : pCustomShape = &msoWedgeRRectCallout; break;
- case mso_sptWedgeEllipseCallout : pCustomShape = &msoWedgeEllipseCallout; break;
- case mso_sptCloudCallout : pCustomShape = &msoCloudCallout; break;
-
- default :
- break;
- }
- return pCustomShape;
-}
-
-SvxMSDffCustomShape::~SvxMSDffCustomShape()
-{
- if ( bVertAlloc )
- delete[] pVertData;
- if ( bSegAlloc )
- delete[] pSegData;
- if ( bTextRectAlloc )
- delete[] pTextRectData;
- if ( bCalcAlloc )
- delete[] pCalculationData;
- delete[] pAdjustmentHandles;
-}
-
-SvxMSDffCustomShape::SvxMSDffCustomShape( const DffPropertyReader& rPropReader, SvStream& rSt,
- DffObjData& rData, Rectangle& rSnapRect, sal_Int32 nAngle, MSFilterTracer* pT ) :
- pTracer ( pT ),
- eSpType ( rData.eShapeType ),
- aSnapRect ( rSnapRect ),
- nFix16Angle ( nAngle ),
- nXRef ( 0x80000000 ),
- nYRef ( 0x80000000 ),
- nFlags ( 0 ),
- nColorData ( 0 ),
- pVertData ( NULL ),
- pSegData ( NULL ),
- nTextRectData ( 0 ),
- pTextRectData ( NULL ),
- nCalculationData ( 0 ),
- pCalculationData ( NULL ),
- nAdjustmentHandles ( 0 ),
- pAdjustmentHandles ( NULL ),
- nGluePoints ( 0 ),
- pGluePoints ( NULL ),
- bIsEmpty ( TRUE ),
- bVertAlloc ( FALSE ),
- bSegAlloc ( FALSE ),
- bCalcAlloc ( FALSE ),
- bTextRectAlloc ( FALSE ),
- bTextFlow ( ( (MSO_TextFlow)rPropReader.GetPropertyValue( DFF_Prop_txflTextFlow ) ) == mso_txflTtoBA ),
- bFilled ( ( rPropReader.GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 ) != 0 ), // pie <-> arc
- bFlipH ( ( rData.nSpFlags & SP_FFLIPH ) != 0 ),
- bFlipV ( ( rData.nSpFlags & SP_FFLIPV ) != 0 )
-{
- const sal_Int32* pDefData = NULL;
- const mso_CustomShape* pDefCustomShape = NULL;
-
-
- // cloning DFF_Prop_adjustValues from DffPropertyReader to be able
- // to manipulate them and not destroying the original properties
-
- sal_uInt32 nHandles[ 10 ];
- sal_uInt32 nHandlesSet = 0;
- sal_uInt32 i, nHandlesUsed = 0;
-
- for ( i = DFF_Prop_adjustValue; i < DFF_Prop_adjust10Value; i++ )
- {
- if ( rPropReader.IsProperty( i ) )
- {
- sal_Int32 nIndex = i - DFF_Prop_adjustValue;
- nHandles[ nIndex ] = rPropReader.GetPropertyValue( i );
- nHandlesSet |= 1 << nIndex;
- nHandlesUsed = nIndex + 1;
- }
- }
- pDefCustomShape = GetCustomShapeContent2( eSpType );
- if ( pDefCustomShape )
- {
- switch( eSpType )
- {
- case mso_sptCan : nColorData = 0x20200000; break;
- case mso_sptCube : nColorData = 0x302d0000; break;
- case mso_sptActionButtonBlank : nColorData = 0x502ad400; break;
- case mso_sptActionButtonHome : nColorData = 0x702ad4ad; break;
- case mso_sptActionButtonHelp : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonInformation : nColorData = 0x702ad4a5; break;
- case mso_sptActionButtonBackPrevious : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonForwardNext : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonBeginning : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonEnd : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonReturn : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonDocument : nColorData = 0x702ad4da; break;
- case mso_sptActionButtonSound : nColorData = 0x602ad4a0; break;
- case mso_sptActionButtonMovie : nColorData = 0x602ad4a0; break;
- case mso_sptBevel : nColorData = 0x502ad400; break;
- case mso_sptFoldedCorner : nColorData = 0x20d00000; break;
- case mso_sptSmileyFace : nColorData = 0x20d00000; break;
- case mso_sptCurvedLeftArrow :
- {
- if ( nHandlesSet & 4 )
- nHandles[ 2 ] = 21600 - nHandles[ 2 ];
- nFlags |= DFF_CUSTOMSHAPE_FLIP_H;
- }
- break;
- case mso_sptCurvedUpArrow :
- {
- if ( nHandlesSet & 4 )
- nHandles[ 2 ] = 21600 - nHandles[ 2 ];
- nFlags |= DFF_CUSTOMSHAPE_FLIP_V | DFF_CUSTOMSHAPE_EXCH;
- }
- break;
- case mso_sptCurvedDownArrow : nFlags |= DFF_CUSTOMSHAPE_EXCH; break;
- case mso_sptRibbon2 : nColorData = 0x30dd0000; break;
- case mso_sptRibbon : nColorData = 0x30dd0000; break;
-
- case mso_sptEllipseRibbon2 : nColorData = 0x30dd0000; break;
- case mso_sptEllipseRibbon : nColorData = 0x30dd0000; break;
-
- case mso_sptVerticalScroll : nColorData = 0x30dd0000; break;
- case mso_sptHorizontalScroll : nColorData = 0x30dd0000; break;
- default: break;
- }
- }
- nCoordHeight = nCoordWidth = 21600;
- if ( pDefCustomShape )
- {
- bIsEmpty = FALSE;
- nNumElemVert = pDefCustomShape->nVertices;
- pVertData = pDefCustomShape->pVertices;
- nNumElemSeg = pDefCustomShape->nElements;
- pSegData = pDefCustomShape->pElements;
- nCalculationData = pDefCustomShape->nCalculation;
- pCalculationData = pDefCustomShape->pCalculation;
- pDefData = pDefCustomShape->pDefData;
- pTextRectData = pDefCustomShape->pTextRect;
- nTextRectData = pDefCustomShape->nTextRect;
- nCoordWidth = pDefCustomShape->nCoordWidth;
- nCoordHeight = pDefCustomShape->nCoordHeight;
- nXRef = pDefCustomShape->nXRef;
- nYRef = pDefCustomShape->nYRef;
- pGluePoints = pDefCustomShape->pGluePoints;
- nGluePoints = pDefCustomShape->nGluePoints;
- }
- sal_Int32 nGeoRight = rPropReader.GetPropertyValue( DFF_Prop_geoRight, 0 );
- if ( nGeoRight )
- {
- nGeoRight -= rPropReader.GetPropertyValue( DFF_Prop_geoLeft, 0 );
- nCoordWidth = labs( nGeoRight );
- }
- sal_Int32 nGeoBottom = rPropReader.GetPropertyValue( DFF_Prop_geoBottom, 0 );
- if ( nGeoBottom )
- {
- nGeoBottom -= rPropReader.GetPropertyValue( DFF_Prop_geoTop, 0 );
- nCoordHeight = labs( nGeoBottom );
- }
-
- if ( rPropReader.SeekToContent( DFF_Prop_pVertices, rSt ) )
- {
- sal_uInt16 nTmp16, nNumElemMemVert, nElemSizeVert;
- rSt >> nTmp16 >> nNumElemMemVert >> nElemSizeVert;
- if ( nTmp16 )
- {
- bIsEmpty = FALSE;
- nNumElemVert = nTmp16;
- sal_uInt32 k = nNumElemVert;
- bVertAlloc = TRUE;
- pVertData = new SvxMSDffVertPair[ nNumElemVert ];
- SvxMSDffVertPair* pTmp = pVertData;
- if ( nElemSizeVert == 8 )
- {
- while( k-- )
- {
- rSt >> pTmp->nValA
- >> pTmp->nValB;
- pTmp++;
- }
- }
- else
- {
- sal_Int16 nTmpA, nTmpB;
- while ( k-- )
- {
- rSt >> nTmpA
- >> nTmpB;
-
- pTmp->nValA = nTmpA;
- pTmp->nValB = nTmpB;
- pTmp++;
- }
- }
- }
- }
- if ( !bIsEmpty ) // we can import an customshape if either pVertData or pDefCustomShape is set
- {
- if ( rPropReader.SeekToContent( DFF_Prop_pSegmentInfo, rSt ) )
- {
- sal_uInt16 nTmp16, nNumElemMemSeg, nElemSizeSeg;
- rSt >> nTmp16 >> nNumElemMemSeg >> nElemSizeSeg;
- if ( nTmp16 )
- {
- nNumElemSeg = nTmp16;
- bSegAlloc = TRUE;
- pSegData = new sal_uInt16[ nNumElemSeg + 1 ]; // #97948# allocate one more element,
-#ifdef OSL_BIGENDIAN // so it won't be difficult to append
- sal_uInt32 k = nNumElemSeg; // a missing end segment action
- sal_uInt16* pTmp = pSegData;
- while( k-- )
- {
- rSt >> *pTmp++;
- }
-#else
- rSt.Read( pSegData, nNumElemSeg << 1 );
-#endif
- if ( pSegData[ nNumElemSeg - 1 ] != 0x8000 ) // #97948# append the missing segm action
- pSegData[ nNumElemSeg++ ] = 0x8000;
- }
- }
- if ( rPropReader.SeekToContent( 342, rSt ) )
- {
- sal_uInt16 nTmp16, nNumElemMem, nElemSize;
- rSt >> nTmp16 >> nNumElemMem >> nElemSize;
- if ( nTmp16 && ( nElemSize == 8 ) )
- {
- nCalculationData = nTmp16;
- pCalculationData = new SvxMSDffCalculationData[ nCalculationData ];
- bCalcAlloc = TRUE;
- sal_uInt32 k;
- sal_uInt16 nVal0, nVal1, nVal2;
- for ( k = 0; k < nCalculationData; k++ )
- {
- SvxMSDffCalculationData& rDat = pCalculationData[ k ];
- rSt >> rDat.nFlags
- >> nVal0 >> nVal1 >> nVal2;
- rDat.nVal1 = nVal0;
- rDat.nVal2 = nVal1;
- rDat.nVal3 = nVal2;
- }
- }
- }
-
- if ( rPropReader.SeekToContent( 343, rSt ) )
- {
- sal_uInt16 nTmp16, nNumElemMem, nElemSize;
- rSt >> nTmp16 >> nNumElemMem >> nElemSize;
- if ( nTmp16 && ( nElemSize == 16 ) )
- {
- sal_uInt32 nNumElem = nTmp16;
- if ( nNumElem > 1 )
- nNumElem = 2;
- bTextRectAlloc = sal_True;
- nTextRectData = nNumElem;
- pTextRectData = new SvxMSDffTextRectangles[ nNumElem ];
- SvxMSDffTextRectangles* pTmp = pTextRectData;
- for ( i = 0; i < nNumElem; i++ )
- {
- rSt >> pTmp->nPairA.nValA
- >> pTmp->nPairA.nValB
- >> pTmp->nPairB.nValA
- >> pTmp->nPairB.nValB;
- pTmp++;
- }
- }
- }
-
- const sal_Int32* pTmp = pDefData;
- sal_uInt32 nDefaults = 0;
- if ( pTmp )
- nDefaults = nAdjustmentHandles = *pTmp++;
-
- if ( nHandlesUsed > nAdjustmentHandles )
- nAdjustmentHandles = nHandlesUsed;
-
- if ( nAdjustmentHandles )
- {
- pAdjustmentHandles = new SvxMSDffAdjustmentHandle[ nAdjustmentHandles ];
- for ( i = 0; i < nAdjustmentHandles; i++ )
- {
- if ( i < nDefaults )
- pAdjustmentHandles[ i ].SetDefaultValue( *pTmp++ );
- if ( nHandlesSet & ( 1 << i ) )
- pAdjustmentHandles[ i ].SetAdjustValue( nHandles[ i ] );
- }
- }
-
- fXScale = (double)aSnapRect.GetWidth() / (double)nCoordWidth;
- fYScale = (double)aSnapRect.GetHeight() / (double)nCoordHeight;
-
- if ( rPropReader.IsProperty( 339 ) )
- nXRef = rPropReader.GetPropertyValue( 339 );
- if ( rPropReader.IsProperty( 340 ) )
- nYRef = rPropReader.GetPropertyValue( 340 );
- }
-}
-
-sal_Int32 SvxMSDffCustomShape::Fix16ToAngle( sal_Int32 nAngle ) const
-{
- if ( nAngle )
- {
- nAngle = ( (sal_Int16)( nAngle >> 16) * 100L ) + ( ( ( nAngle & 0x0000ffff) * 100L ) >> 16 );
- nAngle = NormAngle360( -nAngle );
- }
- return nAngle;
-}
-
-sal_Int32 SvxMSDffCustomShape::GetAdjustValue( sal_uInt32 nIndex ) const
-{
- return ( nIndex < nAdjustmentHandles ) ? pAdjustmentHandles[ nIndex ].GetAdjustValue() : 0;
-}
-
-sal_Int32 SvxMSDffCustomShape::GetAdjustValue( sal_uInt32 nIndex, sal_Int32 nDefault ) const
-{
- if ( ( nIndex >= nAdjustmentHandles ) || pAdjustmentHandles[ nIndex ].IsDefault() )
- return nDefault;
- else
- return pAdjustmentHandles[ nIndex ].GetAdjustValue();
-}
-
-Point SvxMSDffCustomShape::GetPoint( const SvxMSDffVertPair& rPair, sal_Bool bScale ) const
-{
- Point aRetValue;
- sal_Bool bExchange = ( nFlags & DFF_CUSTOMSHAPE_EXCH ) != 0; // x <-> y
- sal_uInt32 nPass = 0;
- do
- {
- sal_uInt32 nIndex = nPass;
-
- if ( bExchange )
- nIndex ^= 1;
-
- sal_uInt32 nDat = nIndex ? (sal_uInt32)rPair.nValB : (sal_uInt32)rPair.nValA;
- sal_Bool bScaleWidth = nPass == 0;
-
- double fVal;
- sal_uInt32 nGeometryFlags = 0;
- if ( ( nDat >> 16 ) == 0x8000 )
- fVal = ImplGetValue( (sal_uInt16)nDat, nGeometryFlags );
- else
- fVal = (sal_Int32)nDat;
-
- if ( bScale )
- {
- if ( nGeometryFlags & bExchange ) // left <-> top, right <-> bottom
- {
- nGeometryFlags = ( ( nGeometryFlags & 1 ) << 1 ) | ( ( nGeometryFlags & 2 ) >> 1 ) |
- ( ( nGeometryFlags & 4 ) << 1 ) | ( ( nGeometryFlags & 8 ) >> 1 );
- }
- if ( bScaleWidth )
- {
- if ( ( aSnapRect.GetWidth() > aSnapRect.GetHeight() ) && ( ( nXRef != (sal_Int32)0x80000000 ) || nGeometryFlags ) )
- {
- sal_Bool bGeo = ( ( ( nGeometryFlags & GEOMETRY_USED_LEFT ) == 0 ) && ( fVal > nXRef ) )
- || ( ( nGeometryFlags & GEOMETRY_USED_RIGHT ) != 0 );
- if ( ( nGeometryFlags & ( GEOMETRY_USED_LEFT | GEOMETRY_USED_RIGHT ) ) == ( GEOMETRY_USED_LEFT | GEOMETRY_USED_RIGHT ) )
- {
- fVal -= (double)nCoordWidth * 0.5;
- fVal *= fYScale;
- fVal += (double)aSnapRect.GetWidth() * 0.5;
- }
- else
- {
- fVal *= fYScale;
- if ( bGeo )
- fVal += (double)nCoordWidth * fXScale - (double)nCoordWidth * fYScale;
- }
- }
- else
- fVal *= fXScale;
- if ( nFlags & DFF_CUSTOMSHAPE_FLIP_H )
- fVal = aSnapRect.GetWidth() - fVal;
- }
- else
- {
- if ( ( aSnapRect.GetHeight() > aSnapRect.GetWidth() ) && ( ( nYRef != (sal_Int32)0x80000000 ) || nGeometryFlags ) )
- {
- sal_Bool bGeo = ( ( ( nGeometryFlags & GEOMETRY_USED_TOP ) == 0 ) && ( fVal > nYRef ) )
- || ( ( nGeometryFlags & GEOMETRY_USED_BOTTOM ) != 0 );
- if ( ( nGeometryFlags & ( GEOMETRY_USED_TOP | GEOMETRY_USED_BOTTOM ) ) == ( GEOMETRY_USED_TOP | GEOMETRY_USED_BOTTOM ) )
- {
- fVal -= (double)nCoordHeight * 0.5;
- fVal *= fXScale;
- fVal += (double)aSnapRect.GetHeight() * 0.5;
- }
- else
- {
- fVal *= fXScale;
- if ( bGeo )
- fVal += (double)nCoordHeight * fYScale - (double)nCoordHeight * fXScale;
- }
- }
- else
- fVal *= fYScale;
- if ( nFlags & DFF_CUSTOMSHAPE_FLIP_V )
- fVal = aSnapRect.GetHeight() - fVal;
- }
- }
- if ( nPass )
- aRetValue.Y() = (sal_Int32)fVal;
- else
- aRetValue.X() = (sal_Int32)fVal;
- }
- while ( ++nPass < 2 );
- return aRetValue;
-}
-
-double SvxMSDffCustomShape::ImplGetValue( sal_uInt16 nIndex, sal_uInt32& nGeometryFlags ) const
-{
- if ( !pCalculationData )
- return 0;
- if ( nCalculationData <= nIndex )
- return 0;
-
- double fVal[ 3 ];
- sal_Int16 i, nF = pCalculationData[ nIndex ].nFlags;
- for ( i = 0; i < 3; i++ )
- {
- if ( nF & ( 0x2000 << i ) )
- {
- sal_Int16 nVal = 0;
- switch( i )
- {
- case 0: nVal = pCalculationData[ nIndex ].nVal1; break;
- case 1: nVal = pCalculationData[ nIndex ].nVal2; break;
- case 2: nVal = pCalculationData[ nIndex ].nVal3; break;
- }
- if ( nVal & 0x400 )
- fVal[ i ] = ImplGetValue( nVal & 0xff, nGeometryFlags );
- else
- {
- switch ( nVal )
- {
- case DFF_Prop_adjustValue :
- case DFF_Prop_adjust2Value :
- case DFF_Prop_adjust3Value :
- case DFF_Prop_adjust4Value :
- case DFF_Prop_adjust5Value :
- case DFF_Prop_adjust6Value :
- case DFF_Prop_adjust7Value :
- case DFF_Prop_adjust8Value :
- case DFF_Prop_adjust9Value :
- case DFF_Prop_adjust10Value :
- fVal[ i ] = GetAdjustValue( nVal - DFF_Prop_adjustValue );
- break;
- case DFF_Prop_geoLeft :
- {
- nGeometryFlags |= GEOMETRY_USED_LEFT;
- fVal[ i ] = 0.0;
- }
- break;
- case DFF_Prop_geoTop :
- {
- nGeometryFlags |= GEOMETRY_USED_TOP;
- fVal[ i ] = 0.0;
- }
- break;
- case DFF_Prop_geoRight :
- {
- nGeometryFlags |= GEOMETRY_USED_RIGHT;
- fVal[ i ] = nCoordWidth;
- }
- break;
- case DFF_Prop_geoBottom :
- {
- nGeometryFlags |= GEOMETRY_USED_BOTTOM;
- fVal[ i ] = nCoordWidth;
- }
- break;
- default:
- fVal[ i ] = 0.0;
- break;
- }
- }
- }
- else
- {
- switch( i )
- {
- case 0 : fVal[ 0 ] = pCalculationData[ nIndex ].nVal1; break;
- case 1 : fVal[ 1 ] = pCalculationData[ nIndex ].nVal2; break;
- case 2 : fVal[ 2 ] = pCalculationData[ nIndex ].nVal3; break;
- }
-
-
- }
- }
-
- switch ( nF & 0xff )
- {
- case 0 : // sum
- {
- fVal[ 0 ] += fVal[ 1 ];
- fVal[ 0 ] -= fVal[ 2 ];
- }
- break;
-
- case 1 : // product
- {
- if ( fVal[ 1 ] != 0.0 )
- fVal[ 0 ] *= fVal[ 1 ];
- if ( fVal[ 2 ] != 0.0 )
- fVal[ 0 ] /= fVal[ 2 ];
- }
- break;
-
- case 2 : // mid
- {
- fVal[ 0 ] += fVal[ 1 ];
- fVal[ 0 ] /= 2.0;
- }
- break;
-
- case 3 : // abs
- {
- fVal[ 0 ] = fabs( fVal[ 0 ] );
- }
- break;
-
- case 4 : // min
- {
- if ( fVal[ 1 ] < fVal[ 0 ] )
- fVal[ 0 ] = fVal[ 1 ];
- }
- break;
-
- case 5 :
- {
- if ( fVal[ 1 ] > fVal[ 0 ] ) // max
- fVal[ 0 ] = fVal[ 1 ];
- }
- break;
-
- case 6 : // if > 0 ? a : b
- {
- if ( fVal[ 0 ] > 0.0 )
- fVal[ 0 ] = fVal[ 1 ];
- else
- fVal[ 0 ] = fVal[ 2 ];
- }
- break;
-
- case 7 : // mod
- {
- fVal[ 0 ] = sqrt( fVal[ 0 ] * fVal[ 0 ] + fVal[ 1 ] * fVal[ 1 ]
- + fVal[ 2 ] * fVal[ 2 ] );
- }
- break;
-
- case 8 : // atan2
- {
- fVal[ 0 ] = atan2( fVal[ 1 ], fVal[ 0 ] ) / F_PI180;
- fVal[ 0 ] *= 65536.0;
- }
- break;
-
- case 9 : // in this special case the second parameter is a fixed fload
- { // which has to be divided by 0x10000
- fVal[ 0 ] *= sin( ( fVal[ 1 ] / 65536 ) * F_PI180 );
- }
- break;
-
- case 0xa : // in this special case the second parameter is a fixed fload
- { // which has to be divided by 0x10000
- fVal[ 0 ] *= cos( ( fVal[ 1 ] / 65536 ) * F_PI180 );
- }
- break;
-
- case 0xb : // cosatan2
- {
- fVal[ 0 ] *= cos( atan2( fVal[ 2 ], fVal[ 1 ] ) );
- }
- break;
-
- case 0xc : // sinatan2
- {
- fVal[ 0 ] *= sin( atan2( fVal[ 2 ], fVal[ 1 ] ) );
- }
- break;
-
- case 0xd : // sqrt
- {
- fVal[ 0 ] = sqrt( fVal[ 0 ] );
- }
- break;
-
- case 0xe : // sumangle
- {
- fVal[ 0 ] += fVal[ 1 ] * 65536.0;
- fVal[ 0 ] -= fVal[ 2 ] * 65536.0;
- }
- break;
-
- case 0xf : // ellipse
- {
- if ( fVal[ 1 ] != 0.0 )
- {
- fVal[ 0 ] /= fVal[ 1 ];
- fVal[ 0 ] = fVal[ 2 ] * sqrt( 1 - fVal[ 0 ] * fVal[ 0 ] );
- }
- }
- break;
-
- case 0x10 : // tan
- {
- fVal[ 0 ] *= tan( fVal[ 1 ] );
- }
- break;
-
- case 0x80 :
- {
- // fVal[0]^2 + fVal[1]^2 = fVal[2]^2
- if ( fVal[ 2 ] == 0.0 )
- fVal[ 0 ] = sqrt( fVal[ 0 ] * fVal[ 0 ] + fVal[ 1 ] * fVal[ 1 ] );
- else
- {
- double fA = fVal[ 0 ] != 0.0 ? fVal[ 0 ] : fVal[ 1 ];
- fVal[ 0 ] = sqrt( fVal[ 2 ] * fVal[ 2 ] - fA * fA );
- }
- }
- break;
- case 0x81 :
- {
- double fAngle = F_PI1800 * fVal[ 2 ];
- fVal[ 0 ] = ( cos( fAngle ) * ( fVal[ 0 ] - 10800 )
- + sin( fAngle ) * ( fVal[ 1 ] - 10800 ) ) + 10800;
- }
- break;
- case 0x82 :
- {
- double fAngle = F_PI1800 * fVal[ 2 ];
- fVal[ 0 ] = - ( sin( fAngle ) * ( fVal[ 0 ] - 10800 )
- - cos( fAngle ) * ( fVal[ 1 ] - 10800 ) ) + 10800;
- }
- break;
- default :
- {
-// sal_Bool bStop = sal_True;
- }
- break;
- }
- return fVal[ 0 ];
-}
-
-// nLumDat 28-31 = number of luminance entries in nLumDat
-// nLumDat 27-24 = nLumDatEntry 0
-// nLumDat 23-20 = nLumDatEntry 1 ...
-// each 4bit entry is to be interpreted as a 10 percent signed luminance changing
-Color SvxMSDffCustomShape::ImplGetColorData( const Color& rFillColor, sal_uInt32 nIndex )
-{
- Color aRetColor;
-
- sal_uInt32 i, nColor, nTmp, nCount = nColorData >> 28;
-
- if ( nCount )
- {
- if ( nIndex >= nCount )
- nIndex = nCount - 1;
-
- sal_uInt32 nFillColor = (sal_uInt32)rFillColor.GetRed() |
- ((sal_uInt32)rFillColor.GetGreen() << 8 ) |
- ((sal_uInt32)rFillColor.GetBlue() << 16 );
-
- sal_Int32 nLumDat = nColorData << ( ( 1 + nIndex ) << 2 );
- sal_Int32 nLuminance = ( nLumDat >> 28 ) * 12;
-
- nTmp = nFillColor;
- nColor = 0;
- for ( i = 0; i < 3; i++ )
- {
- sal_Int32 nC = (sal_uInt8)nTmp;
- nTmp >>= 8;
- nC += ( ( nLuminance * nC ) >> 8 );
- if ( nC < 0 )
- nC = 0;
- else if ( nC &~ 0xff )
- nC = 0xff;
- nColor >>= 8;
- nColor |= nC << 16;
- }
- aRetColor = Color( (sal_uInt8)nColor, (sal_uInt8)( nColor >> 8 ), (sal_uInt8)( nColor >> 16 ) );
- }
- return aRetColor;
-}
-
-sal_Bool SvxMSDffCustomShape::IsEmpty() const
-{
- return bIsEmpty;
-}
-
-Rectangle SvxMSDffCustomShape::GetTextRect() const
-{
- if ( !nTextRectData )
- return aSnapRect;
-
- sal_uInt32 nIndex = 0;
- if ( bTextFlow && ( nTextRectData > 1 ) )
- nIndex++;
-
- Point aTopLeft( GetPoint( pTextRectData[ nIndex ].nPairA, sal_True ) );
- Point aBottomRight( GetPoint( pTextRectData[ nIndex ].nPairB, sal_True ) );
- Rectangle aRect( aTopLeft, aBottomRight );
- aRect.Move( aSnapRect.Left(), aSnapRect.Top() );
- if ( bFlipH )
- {
- sal_Int32 nXDist = aSnapRect.Right() - aRect.Right();
- aRect = Rectangle( Point( nXDist + aSnapRect.Left(), aRect.Top() ), aRect.GetSize() );
- }
- if ( bFlipV )
- {
- sal_Int32 nYDist = aSnapRect.Bottom() - aRect.Bottom();
- aRect = Rectangle( Point( aRect.Left(), nYDist + aSnapRect.Top() ), aRect.GetSize() );
- }
- return aRect;
-}
-
-sal_Bool SvxMSDffCustomShape::HasGluePointList( const MSO_SPT eShapeType )
-{
- const mso_CustomShape* pCustomShape = GetCustomShapeContent2( eShapeType );
- return pCustomShape && pCustomShape->nGluePoints;
-}
-
-MSO_SPT SvxMSDffCustomShape::GetShapeTypeFromSdrObject( const SdrObject* pObj )
-{
- MSO_SPT eShapeType = mso_sptNil;
- const SfxPoolItem* pAdjustItem = NULL;
- const SfxItemSet& rItemSet = pObj->GetMergedItemSet();
- rItemSet.GetItemState( SDRATTR_CUSTOMSHAPE_ADJUSTMENT, FALSE, &pAdjustItem );
- if ( pAdjustItem )
- {
- SdrCustomShapeAdjustmentItem& rAdjustItem = *(SdrCustomShapeAdjustmentItem*)pAdjustItem;
- sal_uInt32 nCount = rAdjustItem.GetCount();
- if ( nCount >= 3 )
- {
- /* checking magic number, so we can get sure that the SdrObject was a customshape
- and we can get the customshape type */
- if ( rAdjustItem.GetValue( nCount - 1 ).GetValue() == (sal_Int32)0x80001234 )
- eShapeType = (MSO_SPT)((sal_uInt32)(rAdjustItem.GetValue( nCount - 2 ).GetValue()) >> 16);
- }
- }
- return eShapeType;
-}
-
-void SvxMSDffCustomShape::SwapStartAndEndArrow( SdrObject* pObj ) //#108274
-{
- XLineStartItem aLineStart;
- const SfxItemSet& rObjItemSet = pObj->GetMergedItemSet();
-
- aLineStart.SetLineStartValue(((XLineStartItem&)rObjItemSet.Get( XATTR_LINEEND )).GetLineStartValue());
- XLineStartWidthItem aLineStartWidth(((XLineStartWidthItem&)rObjItemSet.Get( XATTR_LINEENDWIDTH )).GetValue());
- XLineStartCenterItem aLineStartCenter(((XLineStartCenterItem&)rObjItemSet.Get( XATTR_LINEENDCENTER )).GetValue());
-
- XLineEndItem aLineEnd;
- aLineEnd.SetLineEndValue(((XLineEndItem&)rObjItemSet.Get( XATTR_LINESTART )).GetLineEndValue());
- XLineEndWidthItem aLineEndWidth(((XLineEndWidthItem&)rObjItemSet.Get( XATTR_LINESTARTWIDTH )).GetValue());
- XLineEndCenterItem aLineEndCenter(((XLineEndCenterItem&)rObjItemSet.Get( XATTR_LINESTARTCENTER )).GetValue());
-
- SfxItemSet aNew(*rObjItemSet.GetPool());
-
- aNew.Put( aLineStart );
- aNew.Put( aLineStartWidth );
- aNew.Put( aLineStartCenter );
- aNew.Put( aLineEnd );
- aNew.Put( aLineEndWidth );
- aNew.Put( aLineEndCenter );
-
- pObj->SetMergedItemSet(aNew);
-}
-
-SdrObject* SvxMSDffCustomShape::GetObject( SdrModel* pSdrModel, SfxItemSet& rSet, sal_Bool bSetCustomShapeAdjustItem )
-{
- SdrObject* pRet = NULL;
-
- if ( !IsEmpty() )
- {
- if ( eSpType == mso_sptRectangle )
- {
- pRet = new SdrRectObj( aSnapRect );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(rSet);
- }
- else if ( eSpType == mso_sptRoundRectangle )
- {
- sal_Int32 nW = aSnapRect.Right() - aSnapRect.Left();
- sal_Int32 nH = aSnapRect.Bottom() - aSnapRect.Top();
- if ( nH < nW )
- nW = nH;
- double fAdjust = (double)GetAdjustValue( 0, 3600 ) / 21600.0;
- nW = (sal_Int32)( (double)nW * fAdjust );
- rSet.Put( SdrEckenradiusItem( nW ) );
- pRet = new SdrRectObj( aSnapRect );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(rSet);
- }
- else if ( eSpType == mso_sptEllipse )
- {
- pRet = new SdrCircObj( OBJ_CIRC, aSnapRect );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(rSet);
- }
- else if ( eSpType == mso_sptArc )
- { // the arc is something special, because sometimes the snaprect does not match
- Rectangle aPolyBoundRect;
- if ( nNumElemVert )
- {
- XPolygon aXP( (sal_uInt16)nNumElemVert );
- const SvxMSDffVertPair* pTmp = pVertData;
- sal_uInt32 nPtNum;
- for ( nPtNum = 0; nPtNum < nNumElemVert; nPtNum++ )
- aXP[ (sal_uInt16)nPtNum ] = GetPoint( *pTmp++, sal_False );
- aPolyBoundRect = Rectangle( aXP.GetBoundRect() );
- }
- else
- aPolyBoundRect = aSnapRect;
-
- sal_Int32 nEndAngle = Fix16ToAngle( GetAdjustValue( 0 ) );
- sal_Int32 nStartAngle = Fix16ToAngle( GetAdjustValue( 1 ) );
-
- if ( nStartAngle == nEndAngle )
- return NULL;
-
- if ( bFilled ) // ( filled ) ? we have to import an pie : we have to construct an arc
- {
- pRet = new SdrCircObj( OBJ_SECT, aPolyBoundRect, nStartAngle, nEndAngle );
- pRet->NbcSetSnapRect( aSnapRect );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(rSet);
- }
- else
- {
- Point aStart, aEnd, aCenter( aPolyBoundRect.Center() );
- aStart.X() = (sal_Int32)( ( cos( ( (double)nStartAngle * F_PI18000 ) ) * 1000.0 ) );
- aStart.Y() = - (sal_Int32)( ( sin( ( (double)nStartAngle * F_PI18000 ) ) * 1000.0 ) );
- aEnd.X() = (sal_Int32)( ( cos( ( (double)nEndAngle * F_PI18000 ) ) * 1000.0 ) );
- aEnd.Y() = - (sal_Int32)( ( sin( ( (double)nEndAngle * F_PI18000 ) ) * 1000.0 ) );
- aStart.X() += aCenter.X();
- aStart.Y() += aCenter.Y();
- aEnd.X() += aCenter.X();
- aEnd.Y() += aCenter.Y();
-
- Polygon aPolygon( aPolyBoundRect, aStart, aEnd, POLY_PIE );
- Rectangle aPolyPieRect( aPolygon.GetBoundRect() );
-
- USHORT nPt = aPolygon.GetSize();
-
- if ( nPt < 4 )
- return NULL;
-
- aPolygon[ 0 ] = aPolygon[ 1 ]; // try to get the arc boundrect
- aPolygon[ nPt - 1 ] = aPolygon[ nPt - 2 ];
- Rectangle aPolyArcRect( aPolygon.GetBoundRect() );
-
- double fYSc, fXSc;
- double fYOfs, fXOfs;
- int nCond;
-
- fYOfs = fXOfs = 0.0;
- if ( aPolyPieRect.GetWidth() != aPolyArcRect.GetWidth() )
- {
- nCond = ( (sal_uInt32)( nStartAngle - 9000 ) > 18000 ) && ( (sal_uInt32)( nEndAngle - 9000 ) > 18000 ) ? 1 : 0;
- nCond ^= bFlipH ? 1 : 0;
- if ( nCond )
- {
- fXSc = (double)aSnapRect.GetWidth() / (double)aPolyPieRect.GetWidth();
- fXOfs = ( (double)aPolyPieRect.GetWidth() - (double)aPolyArcRect.GetWidth() ) * fXSc;
- }
- }
- if ( aPolyPieRect.GetHeight() != aPolyArcRect.GetHeight() )
- {
- nCond = ( ( nStartAngle > 18000 ) && ( nEndAngle > 18000 ) ) ? 1 : 0;
- nCond ^= bFlipV ? 1 : 0;
- if ( nCond )
- {
- fYSc = (double)aSnapRect.GetHeight() / (double)aPolyPieRect.GetHeight();
- fYOfs = ( (double)aPolyPieRect.GetHeight() - (double)aPolyArcRect.GetHeight() ) * fYSc;
- }
- }
- fXSc = (double)aPolyArcRect.GetWidth() / (double)aPolyPieRect.GetWidth();
- fYSc = (double)aPolyArcRect.GetHeight() / (double)aPolyPieRect.GetHeight();
-
- aPolyArcRect = Rectangle( Point( aSnapRect.Left() + (sal_Int32)fXOfs, aSnapRect.Top() + (sal_Int32)fYOfs ),
- Size( (sal_Int32)( aSnapRect.GetWidth() * fXSc ), (sal_Int32)( aSnapRect.GetHeight() * fYSc ) ) );
-
- SdrCircObj* pObjCirc = new SdrCircObj( OBJ_CARC, aPolyBoundRect, nStartAngle, nEndAngle );
- pObjCirc->SetSnapRect( aPolyArcRect );
- pObjCirc->SetModel( pSdrModel );
- pObjCirc->SetMergedItemSet( rSet );
-
- int nSwap = bFlipH ? 1 : 0;
- nSwap ^= bFlipV ? 1 : 0;
- if ( nSwap )
- SwapStartAndEndArrow( pObjCirc );
-
- SdrRectObj* pRect = new SdrRectObj( aPolyArcRect );
- pRect->SetSnapRect( aPolyArcRect );
- pRect->SetModel( pSdrModel );
- pRect->SetMergedItemSet( rSet );
- pRect->SetMergedItem( XLineStyleItem( XLINE_NONE ) );
- pRect->SetMergedItem( XFillStyleItem( XFILL_NONE ) );
-
- pRet = new SdrObjGroup();
- pRet->SetModel( pSdrModel );
- ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pRect );
- ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pObjCirc );
- }
- }
- if ( !pRet && nNumElemVert )
- {
- // Header auswerten
- XPolygon aXP( (sal_uInt16)nNumElemVert );
- const SvxMSDffVertPair* pT = pVertData;
- sal_uInt32 nPtNum;
- for ( nPtNum = 0; nPtNum < nNumElemVert; nPtNum++ )
- aXP[ (sal_uInt16)nPtNum ] = GetPoint( *pT++, sal_True );
- Rectangle aPolyBoundRect( aXP.GetBoundRect() );
-
- if ( !pSegData )
- {
- FASTBOOL bClosed = aXP[ 0 ] == aXP[ (sal_uInt16)( aXP.GetPointCount() - 1 ) ];
- Rectangle aUnion( aXP.GetBoundRect() );
- pRet = new SdrPathObj( bClosed ? OBJ_POLY : OBJ_PLIN, basegfx::B2DPolyPolygon(aXP.getB2DPolygon()));
- pRet->NbcSetSnapRect( Rectangle( Point( aSnapRect.Left() + aUnion.Left(),
- aSnapRect.Top() + aUnion.Top() ),
- aUnion.GetSize() ) );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(rSet);
- }
- else
- {
- SdrObjGroup* pGrp = NULL;
- SdrObject* pSdrPathObj = NULL;
-
- XPolyPolygon aPolyPoly;
- XPolygon aPoly;
-
- XPolyPolygon aEmptyPolyPoly;
- XPolygon aEmptyPoly;
-
- BOOL bClosed = FALSE;
- sal_uInt16 nPolyFlags;
-
- Color aFillColor( COL_WHITE );
- sal_uInt32 nColorCount = nColorData >> 28;
- sal_uInt32 nColorIndex = 0;
- sal_uInt16 nSrcPt = 0;
-
- Rectangle aUnion;
-
- const sal_uInt16* pS = pSegData;
-
- if ( nColorCount )
- {
- const SfxPoolItem* pPoolItem = NULL;
- SfxItemState eState = rSet.GetItemState( XATTR_FILLCOLOR, FALSE, &pPoolItem );
- if( SFX_ITEM_SET == eState )
- {
- if ( pPoolItem )
- aFillColor = ((XFillColorItem*)pPoolItem)->GetColorValue();
- }
- }
- for ( sal_uInt16 i = 0; i < nNumElemSeg; i++ )
- {
- nPolyFlags = *pS++;
- switch ( nPolyFlags >> 12 )
- {
- case 0x4 :
- {
- if ( aPoly.GetPointCount() > 1 )
- {
- if ( bClosed )
- aPoly[ aPoly.GetPointCount() ] = aPoly[ 0 ];
- aPolyPoly.Insert( aPoly );
- }
- bClosed = FALSE;
- aPoly = aEmptyPoly;
- aPoly[ 0 ] = aXP[ nSrcPt++ ];
- }
- break;
- case 0x8 :
- {
- if ( aPoly.GetPointCount() > 1 )
- {
- if ( bClosed )
- aPoly[ aPoly.GetPointCount() ] = aPoly[ 0 ];
- aPolyPoly.Insert( aPoly );
- }
- aPoly = aEmptyPoly;
- if ( aPolyPoly.Count() )
- {
- if ( pSdrPathObj )
- {
- pGrp = new SdrObjGroup();
- pGrp->SetModel( pSdrModel );
- pGrp->NbcSetLogicRect( aSnapRect );
- pGrp->GetSubList()->NbcInsertObject( pSdrPathObj );
- }
- aUnion.Union( aPolyPoly.GetBoundRect() );
- pSdrPathObj = new SdrPathObj( bClosed ? OBJ_POLY : OBJ_PLIN, aPolyPoly.getB2DPolyPolygon() );
- pSdrPathObj->SetModel( pSdrModel );
- if ( !bClosed )
- rSet.Put( SdrShadowItem( FALSE ) );
- else
- {
- if ( nColorIndex < nColorCount )
- {
- Color aColor( ImplGetColorData( aFillColor, nColorIndex++ ) );
- rSet.Put( XFillColorItem( String(), aColor ) );
- }
- }
- pSdrPathObj->SetMergedItemSet(rSet);
- if ( pGrp )
- {
- if ( pSdrPathObj )
- {
- pGrp->GetSubList()->NbcInsertObject( pSdrPathObj );
- pSdrPathObj = NULL;
- }
- }
- aPolyPoly = aEmptyPolyPoly;
- }
- }
- break;
- case 0x6 :
- {
- bClosed = TRUE;
- }
- break;
- case 0x2 :
- {
- sal_uInt16 nDstPt = aPoly.GetPointCount();
- for ( sal_uInt16 k = 0; k < ( nPolyFlags & 0xfff ); k++ )
- {
- aPoly[ nDstPt ] = aXP[ nSrcPt++ ];
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt ] = aXP[ nSrcPt++ ];
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt++ ] = aXP[ nSrcPt++ ];
- }
- }
- break;
- case 0xa :
- case 0xb :
- {
- sal_uInt16 nPntCount = (BYTE)nPolyFlags;
- if ( nPntCount )
- {
- sal_uInt32 nMod = ( nPolyFlags >> 8 ) & 0xf;
- switch ( nMod )
- {
- case 3 :
- case 4 :
- case 5 :
- {
- sal_uInt16 nDstPt = aPoly.GetPointCount();
- if ( nPntCount == 2 )
- { // create a circle
- Rectangle aRect( aXP[ nSrcPt ], aXP[ nSrcPt + 1 ] );
- sal_Int32 nXControl = (sal_Int32)((double)aRect.GetWidth() * 0.2835 );
- sal_Int32 nYControl = (sal_Int32)((double)aRect.GetHeight() * 0.2835 );
- Point aCenter( aRect.Center() );
- aPoly[ nDstPt++ ] = Point( aCenter.X(), aRect.Top() );
- aPoly[ nDstPt ] = Point( aCenter.X() + nXControl, aRect.Top() );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt ] = Point( aRect.Right(), aCenter.Y() - nYControl );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt++ ] = Point( aRect.Right(), aCenter.Y() );
- aPoly[ nDstPt ] = Point( aRect.Right(), aCenter.Y() + nYControl );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt ] = Point( aCenter.X() + nXControl, aRect.Bottom() );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt++ ] = Point( aCenter.X(), aRect.Bottom() );
- aPoly[ nDstPt ] = Point( aCenter.X() - nXControl, aRect.Bottom() );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt ] = Point( aRect.Left(), aCenter.Y() + nYControl );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt++ ] = Point( aRect.Left(), aCenter.Y() );
- aPoly[ nDstPt ] = Point( aRect.Left(), aCenter.Y() - nYControl );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt ] = Point( aCenter.X() - nXControl, aRect.Top() );
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- aPoly[ nDstPt++ ] = Point( aCenter.X(), aRect.Top() );
- nSrcPt += 2;
- }
- else
- {
- sal_uInt32 nXor = ( nMod == 5 ) ? 3 : 2;
- for ( sal_uInt16 k = 0; k < ( nPntCount >> 2 ); k++ )
- {
- PolyStyle ePolyStyle = POLY_ARC;
- Rectangle aRect( aXP[ nSrcPt ], aXP[ nSrcPt + 1 ] );
- Point aCenter( aRect.Center() );
- Point aStart( aXP[ (sal_uInt16)( nSrcPt + nXor ) ] );
- Point aEnd( aXP[ (sal_uInt16)( nSrcPt + ( nXor ^ 1 ) ) ] );
- aStart.X() = (sal_Int32)( ( (double)( aStart.X() - aCenter.X() ) / fXScale ) ) + aCenter.X();
- aStart.Y() = (sal_Int32)( ( (double)( aStart.Y() - aCenter.Y() ) / fYScale ) ) + aCenter.Y();
- aEnd.X() = (sal_Int32)( ( (double)( aEnd.X() - aCenter.X() ) / fXScale ) ) + aCenter.X();
- aEnd.Y() = (sal_Int32)( ( (double)( aEnd.Y() - aCenter.Y() ) / fYScale ) ) + aCenter.Y();
-
- Polygon aTempPoly( aRect, aStart, aEnd, ePolyStyle );
- if ( nMod == 5 )
- {
- for ( sal_uInt16 j = aTempPoly.GetSize(); j--; )
- aPoly[ nDstPt++ ] = aTempPoly[ j ];
- }
- else
- {
- for ( sal_uInt16 j = 0; j < aTempPoly.GetSize(); j++ )
- aPoly[ nDstPt++ ] = aTempPoly[ j ];
- }
- nSrcPt += 4;
- }
- }
- }
- break;
- case 0 :
- case 1 :
- case 2 :
- case 6 :
- case 9 :
- case 0xa :
- case 0xb :
- case 0xc :
- case 0xd :
- case 0xe :
- case 0xf :
-
- case 7 :
- case 8 :
- {
- BOOL bFirstDirection = TRUE;
- sal_uInt16 nDstPt = aPoly.GetPointCount();
- for ( sal_uInt16 k = 0; k < ( nPolyFlags & 0xff ); k++ )
- {
- sal_uInt32 nModT = ( nMod == 7 ) ? 1 : 0;
- Point aCurrent( aXP[ nSrcPt ] );
- if ( nSrcPt ) // we need a previous point
- {
- Point aPrev( aXP[ nSrcPt - 1 ] );
- sal_Int32 nX, nY;
- nX = aCurrent.X() - aPrev.X();
- nY = aCurrent.Y() - aPrev.Y();
- if ( ( nY ^ nX ) & 0x80000000 )
- {
- if ( !k )
- bFirstDirection = TRUE;
- else if ( !bFirstDirection )
- nModT ^= 1;
- }
- else
- {
- if ( !k )
- bFirstDirection = FALSE;
- else if ( bFirstDirection )
- nModT ^= 1;
- }
- if ( nModT ) // get the right corner
- {
- nX = aCurrent.X();
- nY = aPrev.Y();
- }
- else
- {
- nX = aPrev.X();
- nY = aCurrent.Y();
- }
- sal_Int32 nXVec = ( nX - aPrev.X() ) >> 1;
- sal_Int32 nYVec = ( nY - aPrev.Y() ) >> 1;
- Point aControl1( aPrev.X() + nXVec, aPrev.Y() + nYVec );
- aPoly[ nDstPt ] = aControl1;
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- nXVec = ( nX - aCurrent.X() ) >> 1;
- nYVec = ( nY - aCurrent.Y() ) >> 1;
- Point aControl2( aCurrent.X() + nXVec, aCurrent.Y() + nYVec );
- aPoly[ nDstPt ] = aControl2;
- aPoly.SetFlags( nDstPt++, XPOLY_CONTROL );
- }
- aPoly[ nDstPt ] = aCurrent;
- nSrcPt++;
- nDstPt++;
- }
- }
- break;
- }
- }
- }
- break;
- case 0x0 :
- {
- sal_uInt16 nDstPt = aPoly.GetPointCount();
- for ( sal_uInt16 k = 0; k < ( nPolyFlags & 0xfff ); k++ )
- aPoly[ nDstPt++ ] = aXP[ nSrcPt++ ];
- }
- break;
- case 0xf :
- {
- sal_Bool bOwn = TRUE;
- switch ( nPolyFlags )
- {
- case 0xf8ff : // This value is not ms specific and is used
- { // to create a dummy object that is not visible.
- SdrObject* pLast = pSdrPathObj; // This solves the problem of customshapes that
- if ( !pLast ) // did not use the whole space of the boundrect.
- { // eg. the BlockArc
- if ( pGrp )
- {
- SdrObjList* pList = pGrp->GetSubList();
- if ( pList && pList->GetObjCount() )
- pLast = pList->GetObj( pList->GetObjCount() - 1 );
- }
- }
- if ( pLast )
- {
- pLast->SetMergedItem( XLineStyleItem( XLINE_NONE ) );
- pLast->SetMergedItem( XFillStyleItem( XFILL_NONE ) );
- }
- }
- break;
- case 0xf8fe : // nearly the same as 0x4000
- { // but the first point is ignored
- if ( aPoly.GetPointCount() > 1 )
- {
- if ( bClosed )
- aPoly[ aPoly.GetPointCount() ] = aPoly[ 0 ];
- aPolyPoly.Insert( aPoly );
- }
- aPoly = aEmptyPoly;
- }
- break;
- default :
- bOwn = FALSE;
- }
- if ( bOwn )
- break;
- }
-#ifdef DBG_CUSTOMSHAPE
- default :
- {
- ByteString aString( "customshapes::unknown PolyFlagValue :" );
- aString.Append( ByteString::CreateFromInt32( nPolyFlags ) );
- DBG_ERROR( aString.GetBuffer() );
- }
- break;
-#endif
- }
- }
- if ( pGrp )
- pRet = pGrp;
- else
- pRet = pSdrPathObj;
- if ( pRet )
- {
- pRet->NbcSetSnapRect( Rectangle( Point( aSnapRect.Left() + aUnion.Left(),
- aSnapRect.Top() + aUnion.Top() ),
- aUnion.GetSize() ) );
- }
- }
- }
- }
- if ( pRet )
- {
- // some objects needs to have their own GluePoint list
- if ( HasGluePointList( eSpType ) )
- {
- sal_uInt32 i;
- const SvxMSDffVertPair* pTmp = pGluePoints;
- for ( i = 0; i < nGluePoints; i++ )
- {
- SdrGluePoint aGluePoint;
- Rectangle aNewSnapRect( pRet->GetSnapRect() );
- sal_Int32 nXMove = aSnapRect.Left() - aNewSnapRect.Left();
- sal_Int32 nYMove = aSnapRect.Top() - aNewSnapRect.Top();
-
- const Point& rPoint = GetPoint( *pTmp++, sal_True );
- double fXRel = rPoint.X() + nXMove;
- double fYRel = rPoint.Y() + nYMove;
- fXRel = fXRel / aNewSnapRect.GetWidth() * 10000;
- fYRel = fYRel / aNewSnapRect.GetHeight() * 10000;
- aGluePoint.SetPos( Point( (sal_Int32)fXRel, (sal_Int32)fYRel ) );
- aGluePoint.SetPercent( sal_True );
- aGluePoint.SetAlign( SDRVERTALIGN_TOP | SDRHORZALIGN_LEFT );
- aGluePoint.SetEscDir( SDRESC_SMART );
- SdrGluePointList* pList = pRet->ForceGluePointList();
- if( pList )
- /* sal_uInt16 nId = */ pList->Insert( aGluePoint );
- }
- }
- if ( bSetCustomShapeAdjustItem )
- {
- if ( pRet->ISA( SdrObjGroup ) || pRet->ISA( SdrPathObj ) )
- {
- sal_uInt32 i, nCount = 0;
- SdrObject* pFirstObject = pRet;
- SdrObjList* pObjectList = NULL;
- if ( pRet->ISA( SdrPathObj ) )
- nCount = 1;
- else
- {
- pObjectList = ((SdrObjGroup*)pRet)->GetSubList();
- if ( pObjectList )
- nCount = pObjectList->GetObjCount();
- if ( nCount )
- pFirstObject = pObjectList->GetObj( 0 );
- }
- if ( nCount )
- {
- SdrCustomShapeAdjustmentItem aAdjustItem;
- SdrCustomShapeAdjustmentValue aAdjustValue;
- if ( nAdjustmentHandles )
- {
- for ( i = 0; i < nAdjustmentHandles; i++ )
- {
- aAdjustValue.SetValue( pAdjustmentHandles[ i ].GetAdjustValue() );
- aAdjustItem.SetValue( i, aAdjustValue );
- }
- }
- if ( bVertAlloc == FALSE )
- {
- sal_uInt32 nMagicNumber = 0x80001234; // this magic number identifies ms objects
- sal_uInt32 nType = (sal_uInt32)eSpType << 16 // hiword is the shapetype
- | nCount; // loword the number of Path objects
- sal_uInt32 nChecksum = 0; // checksum is used later to be sure that
- // the object is not changed
-
- // here we are calculating the checksum
- Rectangle aTRect( pRet->GetSnapRect() );
- sal_Int32 nLeft = aTRect.Left();
- sal_Int32 nTop = aTRect.Top();
-
- SdrObject* pNext = pFirstObject;
- for ( i = 0; i < nCount; i++ )
- {
- if ( i )
- pNext = pObjectList->GetObj( i );
-
- if ( !pNext->ISA( SdrPathObj ) ) // just only SdrPathObjs are valid as Customshapes
- {
- nChecksum = 0;
- break;
- }
-
- // #i74631# use explicit constructor here. Also XPolyPolygon is not necessary,
- // reducing to PolyPolygon
- const PolyPolygon aPolyPolygon(((SdrPathObj*)pNext)->GetPathPoly());
-
- sal_uInt16 j, k = aPolyPolygon.Count();
- sal_Int32 aVal[ 3 ];
- while( k )
- {
- const Polygon& rPoly = aPolyPolygon[ --k ];
- j = rPoly.GetSize();
- while( j )
- {
- const Point& rPoint = rPoly[ --j ];
-#ifdef OSL_LITENDIAN
- aVal[ 0 ] = SWAPLONG( rPoint.X() - nLeft );
- aVal[ 1 ] = SWAPLONG( rPoint.Y() - nTop );
- aVal[ 2 ] = SWAPLONG( rPoly.GetFlags( j ) );
-#else
- aVal[ 0 ] = rPoint.X() - nLeft;
- aVal[ 1 ] = rPoint.Y() - nTop;
- aVal[ 2 ] = rPoly.GetFlags( j );
-#endif
- nChecksum = rtl_crc32( nChecksum, &aVal[ 0 ], 12 );
- }
- }
- }
-
- if ( nChecksum )
- {
- i = aAdjustItem.GetCount();
- aAdjustValue.SetValue( nChecksum ); // the last 3 entries in the adjustment item must be in this
- aAdjustItem.SetValue( i++, aAdjustValue ); // order, otherwise it will be not possible to recreate the original
- aAdjustValue.SetValue( nType ); // customshape when exporting into ms formats
- aAdjustItem.SetValue( i++, aAdjustValue );
- aAdjustValue.SetValue( nMagicNumber );
- aAdjustItem.SetValue( i++, aAdjustValue );
- }
- }
- SfxItemSet aSet( pSdrModel->GetItemPool() );
- aSet.Put( aAdjustItem );
- pFirstObject->SetMergedItemSet(aSet);
- }
- }
- }
- }
- return pRet;
-}
diff --git a/svx/source/msfilter/msashape.hxx b/svx/source/msfilter/msashape.hxx
deleted file mode 100644
index d8691a45f4..0000000000
--- a/svx/source/msfilter/msashape.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msashape.hxx,v $
- * $Revision: 1.13 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _MSASHAPE_HXX
-#define _MSASHAPE_HXX
-
-#include <svx/msdffdef.hxx>
-#include <svx/msdffimp.hxx>
-
-#define DFF_CUSTOMSHAPE_FLIP_V 1
-#define DFF_CUSTOMSHAPE_FLIP_H 2
-#define DFF_CUSTOMSHAPE_EXCH 4
-
-class SdrModel;
-class SfxItemSet;
-struct SvxMSDffVertPair;
-struct SvxMSDffCalculationData;
-struct SvxMSDffTextRectangles;
-class SvxMSDffAdjustmentHandle;
-class SvxMSDffCustomShape
-{
- MSFilterTracer* pTracer;
- MSO_SPT eSpType;
-
- sal_Int32 nCoordWidth;
- sal_Int32 nCoordHeight;
- Rectangle aSnapRect;
-
- double fXScale;
- double fYScale;
-
- sal_Int32 nFix16Angle;
- sal_Int32 nXRef;
- sal_Int32 nYRef;
- sal_uInt32 nFlags;
-
- sal_uInt32 nNumElemVert;
- sal_uInt32 nNumElemSeg;
-
- sal_uInt32 nColorData;
-
- SvxMSDffVertPair* pVertData;
- sal_uInt16* pSegData;
-
- sal_uInt32 nTextRectData;
- SvxMSDffTextRectangles* pTextRectData;
- sal_uInt32 nCalculationData;
- SvxMSDffCalculationData* pCalculationData;
- sal_uInt32 nAdjustmentHandles;
- SvxMSDffAdjustmentHandle* pAdjustmentHandles;
- sal_uInt32 nGluePoints;
- SvxMSDffVertPair* pGluePoints;
-
- sal_Bool bIsEmpty : 1;
- sal_Bool bVertAlloc : 1;
- sal_Bool bSegAlloc : 1;
- sal_Bool bCalcAlloc : 1;
- sal_Bool bTextRectAlloc : 1;
-
- sal_Bool bTextFlow : 1;
- sal_Bool bFilled : 1;
- sal_Bool bFlipH : 1;
- sal_Bool bFlipV : 1;
-
- sal_Int32 GetAdjustValue( sal_uInt32 nIndex ) const;
- sal_Int32 GetAdjustValue( sal_uInt32 nIndex, sal_Int32 nDefault ) const;
- sal_Int32 Fix16ToAngle( sal_Int32 nAngle ) const;
- Color ImplGetColorData( const Color& rFillColor, sal_uInt32 nIndex );
- double ImplGetValue( sal_uInt16 nIndex, sal_uInt32& nGeometryFlags ) const;
- Point GetPoint( const SvxMSDffVertPair&, sal_Bool bScale = sal_True ) const;
-
- static void SwapStartAndEndArrow( SdrObject* pObj );
-
- public :
-
- SdrObject* GetObject( SdrModel* pSdrModel, SfxItemSet& rSet, sal_Bool bSetAdjustmentItem );
- sal_Bool IsEmpty() const;
-
- Rectangle GetTextRect() const;
- static sal_Bool HasGluePointList( const MSO_SPT eShapeType );
- static MSO_SPT GetShapeTypeFromSdrObject( const SdrObject* );
-
- SvxMSDffCustomShape( const DffPropertyReader& rPropReader, SvStream&,
- DffObjData& rObjDat, Rectangle& rSnapRect, sal_Int32 nFix16Angle, MSFilterTracer* pTracer );
- ~SvxMSDffCustomShape();
-};
-
-#endif
-
diff --git a/svx/source/msfilter/msashape3d.cxx b/svx/source/msfilter/msashape3d.cxx
deleted file mode 100644
index 092ccadc36..0000000000
--- a/svx/source/msfilter/msashape3d.cxx
+++ /dev/null
@@ -1,564 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msashape3d.cxx,v $
- * $Revision: 1.13.226.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <msashape3d.hxx>
-#include <tools/poly.hxx>
-#include <svditer.hxx>
-#include <svx/svdobj.hxx>
-#include <svtools/poolitem.hxx>
-#include <svtools/itemset.hxx>
-#include <svx/xfillit0.hxx>
-#include <svx/xit.hxx>
-#include <svx/xbtmpit.hxx>
-#include <svx/xflclit.hxx>
-#include <svx/svdopath.hxx>
-#include <svx/svdogrp.hxx>
-#include <svx/svdpage.hxx>
-#include <svx/polysc3d.hxx>
-#include <svx/svddef.hxx>
-#include <svx/svx3ditems.hxx>
-#include <svx/extrud3d.hxx>
-#include <svx/xflbmtit.hxx>
-#include <vcl/svapp.hxx>
-#include <svx/xlnclit.hxx>
-
-#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
-
-double SvxMSDffCustomShape3D::Fix16ToAngle( sal_Int32 nFixAngle )
-{
- double fAngle = 0.0;
- if ( nFixAngle )
- {
- fAngle = nFixAngle;
- fAngle /= 65536.0;
- }
- return fAngle;
-}
-
-SvxMSDffCustomShape3D::Transformation2D::Transformation2D( const DffPropSet& rPropSet, const Rectangle& rSnapRect ) :
- aCenter( rSnapRect.Center() )
-{
- bParallel = ( rPropSet.GetPropertyValue( DFF_Prop_fc3DFillHarsh, 0 ) & 4 ) != 0;
- if ( bParallel )
- {
- fSkewAngle = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DSkewAngle, sal::static_int_cast< UINT32 >( -135 * 65536 ) ) ) * F_PI180;
- nSkewAmount = rPropSet.GetPropertyValue( DFF_Prop_c3DSkewAmount, 50 );
- }
- else
- {
- fZScreen = 0.0;
- fViewPointOriginX = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginX, 32768 )) * rSnapRect.GetWidth()) / 65536.0;
- fViewPointOriginY = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginY, (sal_uInt32)-32768 )) * rSnapRect.GetHeight()) / 65536.0;
- fViewPoint.setX((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DXViewpoint, 1250000 )) / 360); // 360 emu = 0,01 mm
- fViewPoint.setY((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DYViewpoint, (sal_uInt32)-1250000 )) / 360);
- fViewPoint.setZ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DZViewpoint, (sal_uInt32)-9000000 )) / 360);
- }
-}
-
-basegfx::B3DPolygon SvxMSDffCustomShape3D::Transformation2D::ApplySkewSettings( const basegfx::B3DPolygon& rPoly3D )
-{
- basegfx::B3DPolygon aRetval;
- sal_uInt32 j;
-
- for ( j = 0L; j < rPoly3D.count(); j++ )
- {
- const basegfx::B3DPoint aPoint(rPoly3D.getB3DPoint(j));
- const double fDepth(-( aPoint.getZ() * nSkewAmount ) / 100.0);
- const basegfx::B3DPoint aNewPoint(
- aPoint.getX() + (fDepth * cos( fSkewAngle )),
- aPoint.getY() - ( fDepth * sin( fSkewAngle )),
- aPoint.getZ());
- aRetval.append(aNewPoint);
- }
-
- return aRetval;
-}
-
-Point SvxMSDffCustomShape3D::Transformation2D::Transform2D( const basegfx::B3DPoint& rPoint3D )
-{
- Point aPoint2D;
- if ( bParallel )
- {
- aPoint2D.X() = (sal_Int32)rPoint3D.getX();
- aPoint2D.Y() = (sal_Int32)rPoint3D.getY();
- }
- else
- {
- double fX = rPoint3D.getX() - fViewPointOriginX;
- double fY = rPoint3D.getY() - fViewPointOriginY;
- double f = ( fZScreen - fViewPoint.getZ() ) / ( rPoint3D.getZ() - fViewPoint.getZ() );
- aPoint2D.X() = (sal_Int32)(( fX - fViewPoint.getX() ) * f + fViewPoint.getX() + fViewPointOriginX );
- aPoint2D.Y() = (sal_Int32)(( fY - fViewPoint.getY() ) * f + fViewPoint.getY() + fViewPointOriginY );
- }
- aPoint2D.Move( aCenter.X(), aCenter.Y() );
- return aPoint2D;
-}
-
-basegfx::B3DPoint SvxMSDffCustomShape3D::Rotate( const basegfx::B3DPoint& rPoint, const double x, const double y, const double z )
-{
- basegfx::B3DPoint aRetval(rPoint);
- basegfx::B3DPoint aPoint( rPoint );
-
- // rotation z axis
- aRetval.setX(aPoint.getX() * cos( z ) + aPoint.getY() * sin( z ));
- aRetval.setY(-( aPoint.getX() * sin( z ) ) + aPoint.getY() * cos( z ));
-
- // rotation y axis
- aPoint = aRetval;
- aRetval.setX(aPoint.getX() * cos( y ) + aPoint.getZ() * sin( y ));
- aRetval.setZ(-( aPoint.getX() * sin( y ) ) + aPoint.getZ() * cos( y ));
-
- // rotation x axis
- aPoint = aRetval;
- aRetval.setY(aPoint.getY() * cos( x ) + aPoint.getZ() * sin( x ));
- aRetval.setZ(-( aPoint.getY() * sin( x ) ) + aPoint.getZ() * cos( x ));
-
- return aRetval;
-}
-
-//basegfx::B3DPolyPolygon SvxMSDffCustomShape3D::Rotate( const basegfx::B3DPolyPolygon& rPolyPoly3D, const basegfx::B3DPoint& rOrigin, const double x, const double y, const double z )
-//{
-// basegfx::B3DPolyPolygon aRetval;
-// sal_uInt32 i, j;
-//
-// for( i = 0L; i < rPolyPoly3D.count(); i++ )
-// {
-// const basegfx::B3DPolygon aPoly3D(rPolyPoly3D.getB3DPolygon(i));
-// basegfx::B3DPolygon rNewPoly;
-//
-// for( j = 0L; j < aPoly3D.count(); j++ )
-// {
-// basegfx::B3DPoint aPoint(aPoly3D.getB3DPoint(j));
-//
-// aPoint -= rOrigin;
-// aPoint = Rotate( aPoint, x, y, z );
-// aPoint += rOrigin;
-//
-// rNewPoly.append(aPoint);
-// }
-//
-// aRetval.append(rNewPoly);
-// }
-//
-// return aRetval;
-//}
-
-SdrObject* SvxMSDffCustomShape3D::Create3DObject( const SdrObject* pObj, const DffPropSet& rPropSet,
- SfxItemSet& aSet, Rectangle& rSnapRect, sal_uInt32 nSpFlags )
-{
- SdrObject* pRet = NULL;
- std::vector< E3dCompoundObject* > aPlaceholderObjectList;
-
- double fExtrusionBackward = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DExtrudeBackward, 457200 )) / 360.0; // in emus
- double fExtrusionForward = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DExtrudeForward, 0 )) / 360.0;
- double fDepth = fExtrusionBackward - fExtrusionForward;
- if ( fDepth < 1.0 )
- fDepth = 1.0;
- ProjectionType eProjectionType( rPropSet.GetPropertyValue( DFF_Prop_fc3DFillHarsh, 0 ) & 4 ? PR_PARALLEL : PR_PERSPECTIVE );
-
- // pObj Umwandeln in Szene mit 3D Objekt
- E3dDefaultAttributes a3DDefaultAttr;
- a3DDefaultAttr.SetDefaultLatheCharacterMode( TRUE );
- a3DDefaultAttr.SetDefaultExtrudeCharacterMode( TRUE );
-
- E3dScene* pScene = new E3dPolyScene( a3DDefaultAttr );
-
- sal_Bool bSceneHasObjects ( sal_False );
- sal_Bool bUseTwoFillStyles( sal_False );
-
- MSO_3DRenderMode eRenderMode( (MSO_3DRenderMode)rPropSet.GetPropertyValue( DFF_Prop_c3DRenderMode, mso_FullRender ) );
- XFillStyle eFillStyle( ITEMVALUE( aSet, XATTR_FILLSTYLE, XFillStyleItem ) );
- pScene->SetMergedItem( Svx3DShadeModeItem( 0 ) );
- aSet.Put( Svx3DPercentDiagonalItem( 0 ) );
- aSet.Put( Svx3DTextureModeItem( 1 ) );
- if ( eRenderMode == mso_Wireframe )
- {
- aSet.Put( XLineStyleItem( XLINE_SOLID ) );
- aSet.Put( XFillStyleItem ( XFILL_NONE ) );
- aSet.Put( Svx3DDoubleSidedItem( TRUE ) );
- }
- else
- {
- aSet.Put( XLineStyleItem( XLINE_NONE ) );
- if ( eFillStyle == XFILL_NONE )
- aSet.Put( XFillStyleItem( XFILL_SOLID ) );
- else if ( ( eFillStyle == XFILL_BITMAP ) || ( eFillStyle == XFILL_GRADIENT ) )
- bUseTwoFillStyles = sal_True;
- }
- const SdrObject* pNext = NULL;
- SdrObjListIter* pIter = NULL;
- if ( pObj->IsGroupObject() )
- {
- pIter = new SdrObjListIter( *pObj, IM_DEEPWITHGROUPS );
- if ( pIter->IsMore() )
- pNext = pIter->Next();
- }
- else
- pNext = pObj;
- while ( pNext )
- {
- const SfxItemSet& rNextItemSet = pNext->GetMergedItemSet();
-
- sal_Bool bIsPlaceholderObject = (((XFillStyleItem&)rNextItemSet.Get( XATTR_FILLSTYLE )).GetValue() == XFILL_NONE )
- && (((XLineStyleItem&)rNextItemSet.Get( XATTR_LINESTYLE )).GetValue() == XLINE_NONE );
-
- SdrObject* pNewObj = pNext->ConvertToPolyObj( FALSE, FALSE );
- SdrPathObj* pPath = PTR_CAST( SdrPathObj, pNewObj );
- if( pPath )
- {
- const basegfx::B2DPolyPolygon aPolyPolygon(pPath->GetPathPoly());
- E3dCompoundObject* p3DObj = new E3dExtrudeObj( a3DDefaultAttr, aPolyPolygon, bUseTwoFillStyles ? 1 : fDepth );
- p3DObj->NbcSetLayer( pObj->GetLayer() );
- p3DObj->SetMergedItemSet( aSet );
- if ( bIsPlaceholderObject )
- aPlaceholderObjectList.push_back( p3DObj );
- else if ( bUseTwoFillStyles )
- {
- Bitmap aFillBmp;
- sal_Bool bFillBmpTile = ((XFillBmpTileItem&)p3DObj->GetMergedItem( XATTR_FILLBMP_TILE )).GetValue();
- if ( bFillBmpTile )
- {
- const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem( XATTR_FILLBITMAP );
- const XOBitmap& rXOBmp = rBmpItm.GetBitmapValue();
- aFillBmp = rXOBmp.GetBitmap();
- Size aLogicalSize = aFillBmp.GetPrefSize();
- if ( aFillBmp.GetPrefMapMode() == MAP_PIXEL )
- aLogicalSize = Application::GetDefaultDevice()->PixelToLogic( aLogicalSize, MAP_100TH_MM );
- else
- aLogicalSize = OutputDevice::LogicToLogic( aLogicalSize, aFillBmp.GetPrefMapMode(), MAP_100TH_MM );
- aLogicalSize.Width() *= 5; ;// :-( nice scaling, look at engine3d/obj3d.cxx
- aLogicalSize.Height() *= 5;
- aFillBmp.SetPrefSize( aLogicalSize );
- aFillBmp.SetPrefMapMode( MAP_100TH_MM );
- p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) );
- }
- else
- {
- Rectangle aBoundRect( PolyPolygon(aPolyPolygon).GetBoundRect() );
- if ( rSnapRect != aBoundRect )
- {
- const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem( XATTR_FILLBITMAP );
- const XOBitmap& rXOBmp = rBmpItm.GetBitmapValue();
- aFillBmp = rXOBmp.GetBitmap();
- Size aBmpSize( aFillBmp.GetSizePixel() );
- double fXScale = (double)aBoundRect.GetWidth() / (double)rSnapRect.GetWidth();
- double fYScale = (double)aBoundRect.GetHeight() / (double)rSnapRect.GetHeight();
-
- Point aPt( (sal_Int32)( (double)( aBoundRect.Left() - rSnapRect.Left() )* (double)aBmpSize.Width() / (double)rSnapRect.GetWidth() ),
- (sal_Int32)( (double)( aBoundRect.Top() - rSnapRect.Top() ) * (double)aBmpSize.Height() / (double)rSnapRect.GetHeight() ) );
- Size aSize( (sal_Int32)( aBmpSize.Width() * fXScale ),
- (sal_Int32)( aBmpSize.Height() * fYScale ) );
- Rectangle aCropRect( aPt, aSize );
- aFillBmp.Crop( aCropRect );
- p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) );
- }
- }
- pScene->Insert3DObj( p3DObj );
- p3DObj = new E3dExtrudeObj( a3DDefaultAttr, pPath->GetPathPoly(), fDepth );
- p3DObj->NbcSetLayer( pObj->GetLayer() );
- p3DObj->SetMergedItemSet( aSet );
- p3DObj->SetMergedItem( XFillStyleItem( XFILL_SOLID ) );
- p3DObj->SetMergedItem( Svx3DCloseFrontItem( sal_False ) );
- p3DObj->SetMergedItem( Svx3DCloseBackItem( sal_False ) );
- pScene->Insert3DObj( p3DObj );
- p3DObj = new E3dExtrudeObj( a3DDefaultAttr, pPath->GetPathPoly(), 1 );
- p3DObj->NbcSetLayer( pObj->GetLayer() );
- p3DObj->SetMergedItemSet( aSet );
- basegfx::B3DHomMatrix aFrontTransform( p3DObj->GetTransform() );
- aFrontTransform.translate( 0.0, 0.0, fDepth );
- p3DObj->NbcSetTransform( aFrontTransform );
- if ( ( eFillStyle == XFILL_BITMAP ) && !aFillBmp.IsEmpty() )
- p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) );
- }
- else if ( eFillStyle == XFILL_NONE )
- {
- XLineColorItem& rLineColor = (XLineColorItem&)p3DObj->GetMergedItem( XATTR_LINECOLOR );
- p3DObj->SetMergedItem( XFillColorItem( String(), rLineColor.GetColorValue() ) );
- p3DObj->SetMergedItem( Svx3DDoubleSidedItem( sal_True ) );
- p3DObj->SetMergedItem( Svx3DCloseFrontItem( sal_False ) );
- p3DObj->SetMergedItem( Svx3DCloseBackItem( sal_False ) );
- }
- pScene->Insert3DObj( p3DObj );
- bSceneHasObjects = sal_True;
- }
- SdrObject::Free( pNewObj );
- pNext = NULL;
- if ( pIter && pIter->IsMore() )
- pNext = pIter->Next();
- }
- delete pIter;
-
- if ( bSceneHasObjects ) // is the SdrObject properly converted
- {
- // then we can change the return value
- pRet = pScene;
-
- // Kameraeinstellungen, Perspektive ...
- Camera3D& rCamera = (Camera3D&)pScene->GetCamera();
- const basegfx::B3DRange& rVolume = pScene->GetBoundVolume();
- pScene->NbcSetSnapRect( rSnapRect );
-
- // InitScene replacement
- double fW(rVolume.getWidth());
- double fH(rVolume.getHeight());
-
- rCamera.SetAutoAdjustProjection( FALSE );
- rCamera.SetViewWindow( -fW / 2, - fH / 2, fW, fH);
- basegfx::B3DPoint aLookAt( 0.0, 0.0, 0.0 );
- basegfx::B3DPoint aCamPos( 0.0, 0.0, 100.0 );
-
- rCamera.SetDefaults( basegfx::B3DPoint( 0.0, 0.0, 100.0 ), aLookAt, 100.0 );
- rCamera.SetPosAndLookAt( aCamPos, aLookAt );
- rCamera.SetFocalLength( 1.0 );
- rCamera.SetProjection( eProjectionType );
- pScene->SetCamera( rCamera );
- pScene->SetRectsDirty();
-
- double fViewPointOriginX = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginX, 32768 )) * rSnapRect.GetWidth()) / 65536.0;
- double fViewPointOriginY = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginY, (sal_uInt32)-32768 )) * rSnapRect.GetHeight()) / 65536.0;
-
- basegfx::B3DHomMatrix aNewTransform( pScene->GetTransform() );
- Point aCenter( rSnapRect.Center() );
- aNewTransform.translate( -aCenter.X(), aCenter.Y(), -pScene->GetBoundVolume().getDepth() );
- double fXRotate = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DXRotationAngle, 0 ) );
- double fYRotate = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DYRotationAngle, 0 ) );
- double fZRotate = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_Rotation, 0 ) );
- if ( fZRotate != 0.0 )
- {
- aNewTransform.rotate(0.0, 0.0, -fZRotate * F_PI180 );
- }
- if ( nSpFlags & SP_FFLIPH )
- {
- aNewTransform.scale( -1.0, 0.0, 0.0 );
- }
- if ( nSpFlags & SP_FFLIPV )
- {
- aNewTransform.scale(0.0, -1.0, 0.0 );
- }
- if( fYRotate != 0.0 )
- {
- aNewTransform.rotate( 0.0, -fYRotate * F_PI180, 0.0 );
- }
- if( fXRotate != 0.0 )
- {
- aNewTransform.rotate( -fXRotate * F_PI180, 0.0, 0.0 );
- }
- if ( eProjectionType == PR_PARALLEL )
- {
- sal_Int32 nSkewAmount = rPropSet.GetPropertyValue( DFF_Prop_c3DSkewAmount, 50 );
- if ( nSkewAmount )
- {
- sal_Int32 nSkewAngle = ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DSkewAngle, sal::static_int_cast< UINT32 >( -135 * 65536 ) ) ) >> 16;
-
- double fAlpha( (double)nSkewAngle * F_PI180 );
- double fInvTanBeta( (double)nSkewAmount / 100.0 );
- if(fInvTanBeta)
- {
- aNewTransform.shearXY(
- fInvTanBeta * cos(fAlpha),
- fInvTanBeta * sin(fAlpha));
- }
- }
- }
- else
- {
- aNewTransform.translate( -fViewPointOriginX, fViewPointOriginY, 0.0 );
- // now set correct camera position
-// double fViewPointOriginX = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginX, 32768 )) * rSnapRect.GetWidth()) / 65536.0;
-// double fViewPointOriginY = ((double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DOriginY, (sal_uInt32)-32768 )) * rSnapRect.GetHeight()) / 65536.0;
- double fViewPointX = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DXViewpoint, 1250000 )) / 360;
- double fViewPointY = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DYViewpoint,(sal_uInt32)-1250000 )) / 360;
- double fViewPointZ = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DZViewpoint,(sal_uInt32)-9000000 )) / 360;
-
- basegfx::B3DPoint aNewLookAt( fViewPointX, -fViewPointY, 0 );
- basegfx::B3DPoint aNewCamPos( fViewPointX, -fViewPointY, -fViewPointZ );
- rCamera.SetPosAndLookAt( aNewCamPos, aNewLookAt );
- pScene->SetCamera( rCamera );
- }
- pScene->NbcSetTransform( aNewTransform );
-
- ///////////
- // light //
- ///////////
- double fAmbientIntensity = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DAmbientIntensity, 22178 )) / 65536.0;
-
- sal_Int32 nLightX = ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DKeyX, 50000 )) / 360;
- sal_Int32 nLightY = - ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DKeyY, 0 )) / 360;
- sal_Int32 nLightZ = - ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DKeyZ, 10000 )) / 360;
- if ( !nLightZ )
- nLightZ = 1;
- double fLightIntensity = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DKeyIntensity, 43712 )) / 65536.0;
-// sal_Bool bLightHarsh = ( rPropSet.GetPropertyValue( DFF_Prop_fc3DFillHarsh, 0 ) & 2 ) != 0;
-
- sal_Int32 nLight2X = ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DFillX, (sal_uInt32)-50000 )) / 360;
- sal_Int32 nLight2Y = - ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DFillY, 0 )) / 360;
- sal_Int32 nLight2Z = - ((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DFillZ, 10000 )) / 360;
- if ( !nLight2Z )
- nLight2Z = -1;
- double fLight2Intensity = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DFillIntensity, 43712 )) / 65536.0;
-// sal_Bool bLight2Harsh = ( rPropSet.GetPropertyValue( DFF_Prop_fc3DFillHarsh, 0 ) & 1 ) != 0;
-// sal_Bool bLightFace = ( rPropSet.GetPropertyValue( DFF_Prop_fc3DLightFace, 0 ) & 1 ) != 0;
-
- sal_uInt16 nAmbientColor = (sal_uInt16)( fAmbientIntensity * 255.0 );
- if ( nAmbientColor > 255 )
- nAmbientColor = 255;
- Color aGlobalAmbientColor( (sal_uInt8)nAmbientColor, (sal_uInt8)nAmbientColor, (sal_uInt8)nAmbientColor );
- pScene->SetMergedItem( Svx3DAmbientcolorItem( aGlobalAmbientColor ) );
-
- sal_uInt8 nSpotLight1 = (sal_uInt8)( fLightIntensity * 255.0 );
- basegfx::B3DVector aSpotLight1( (double)nLightX, (double)nLightY, (double)nLightZ );
- aSpotLight1.normalize();
- pScene->SetMergedItem( Svx3DLightOnOff1Item( sal_True ) );
- Color aAmbientSpot1Color( nSpotLight1, nSpotLight1, nSpotLight1 );
- pScene->SetMergedItem( Svx3DLightcolor1Item( aAmbientSpot1Color ) );
- pScene->SetMergedItem( Svx3DLightDirection1Item( aSpotLight1 ) );
-
- sal_uInt8 nSpotLight2 = (sal_uInt8)( fLight2Intensity * 255.0 );
- basegfx::B3DVector aSpotLight2( (double)nLight2X, (double)nLight2Y, (double)nLight2Z );
- aSpotLight2.normalize();
- pScene->SetMergedItem( Svx3DLightOnOff2Item( sal_True ) );
- Color aAmbientSpot2Color( nSpotLight2, nSpotLight2, nSpotLight2 );
- pScene->SetMergedItem( Svx3DLightcolor2Item( aAmbientSpot2Color ) );
- pScene->SetMergedItem( Svx3DLightDirection2Item( aSpotLight2 ) );
-
- if ( nLightX || nLightY )
- {
- sal_uInt8 nSpotLight3 = 70;
- basegfx::B3DVector aSpotLight3( 0.0, 0.0, 1.0 );
- pScene->SetMergedItem( Svx3DLightOnOff3Item( sal_True ) );
- Color aAmbientSpot3Color( nSpotLight3, nSpotLight3, nSpotLight3 );
- pScene->SetMergedItem( Svx3DLightcolor3Item( aAmbientSpot3Color ) );
- pScene->SetMergedItem( Svx3DLightDirection3Item( aSpotLight3 ) );
- }
-
- double fSpecular = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DSpecularAmt, 0 )) / 65536.0;
-// double fDiffuse = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DDiffuseAmt, 0 )) / 65536.0;
-// double fShininess = ((double)rPropSet.GetPropertyValue( DFF_Prop_c3DShininess, 0 )) / 65536.0;
-
- sal_uInt16 nItensity = 25;
- Color aSpecularCol( COL_BLACK );
- if ( fSpecular == 0.0 )
- {
- aSpecularCol = Color( 51, 51, 51 );
- }
- else if ( fSpecular > 1.2 )
- {
- aSpecularCol = Color( 128, 128, 128 );
- }
- pScene->SetMergedItem( Svx3DMaterialSpecularItem( aSpecularCol ) );
- pScene->SetMergedItem( Svx3DMaterialSpecularIntensityItem( nItensity ) );
-
- pScene->SetModel( pObj->GetModel() );
- pRet->SetSnapRect( CalculateNewSnapRect( rSnapRect, rPropSet ) );
-
- // removing placeholder objects
- std::vector< E3dCompoundObject* >::iterator aObjectListIter( aPlaceholderObjectList.begin() );
- while ( aObjectListIter != aPlaceholderObjectList.end() )
- {
- pScene->Remove3DObj( *aObjectListIter );
- delete *aObjectListIter++;
- }
- }
- else
- delete pScene;
- return pRet;
-}
-
-Rectangle SvxMSDffCustomShape3D::CalculateNewSnapRect( const Rectangle& rOriginalSnapRect, const DffPropSet& rPropSet )
-{
- const Point aCenter( rOriginalSnapRect.Center() );
- //double fExtrusionBackward = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DExtrudeBackward, 457200 )) / 360.0;
- double fExtrusionForward = (double)((sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_c3DExtrudeForward, 0 )) / 360.0;
- sal_uInt32 i;
-
- // creating initial bound volume ( without rotation. skewing.and camera )
- basegfx::B3DPolygon aBoundVolume;
- const Polygon aPolygon( rOriginalSnapRect );
-
- for ( i = 0L; i < 4L; i++ )
- {
- aBoundVolume.append(basegfx::B3DPoint(
- aPolygon[ (sal_uInt16)i ].X() - aCenter.X(),
- aPolygon[ (sal_uInt16)i ].Y() - aCenter.Y(),
- fExtrusionForward));
- }
-
- for ( ; i < 8L; i++ )
- {
- aBoundVolume.append(basegfx::B3DPoint(
- aPolygon[ (sal_uInt16)i ].X() - aCenter.X(),
- aPolygon[ (sal_uInt16)i ].Y() - aCenter.Y(),
- fExtrusionForward));
- }
-
- basegfx::B3DPoint aRotateCenter;
- aRotateCenter.setX(0.0);
- aRotateCenter.setY(0.0);
- aRotateCenter.setZ(rPropSet.GetPropertyValue( DFF_Prop_c3DRotationCenterZ, 0 ) / 360);
-
- // double XCenterInGUnits = rPropSet.GetPropertyValue( DFF_Prop_c3DRotationCenterX, 0 );
- // double YCenterInGUnits = rPropSet.GetPropertyValue( DFF_Prop_c3DRotationCenterY, 0 );
-
- // sal_Int32 nRotationXAxisInProz = rPropSet.GetPropertyValue( DFF_Prop_c3DRotationAxisX, 100 );
- // sal_Int32 nRotationYAxisInProz = rPropSet.GetPropertyValue( DFF_Prop_c3DRotationAxisY, 0 );
- // sal_Int32 nRotationZAxisInProz = rPropSet.GetPropertyValue( DFF_Prop_c3DRotationAxisZ, 0 );
-
- double fXRotate = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DXRotationAngle, 0 ) ) * F_PI180;
- double fYRotate = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DYRotationAngle, 0 ) ) * F_PI180;
- double fZRotate = -Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_Rotation, 0 ) ) * F_PI180;
- // double fRotationAngle = Fix16ToAngle( rPropSet.GetPropertyValue( DFF_Prop_c3DRotationAngle, 0 ) ); // * F_PI180;
-
- for( i = 0; i < 8; i++ ) // rotating bound volume
- {
- basegfx::B3DPoint aPoint(aBoundVolume.getB3DPoint(i));
- aPoint -= aRotateCenter;
- aPoint = Rotate( aPoint, fXRotate, fYRotate, fZRotate );
- aPoint += aRotateCenter;
- aBoundVolume.setB3DPoint(i, aPoint);
- }
-
- Transformation2D aTransformation2D( rPropSet, rOriginalSnapRect );
- if ( aTransformation2D.IsParallel() )
- {
- aBoundVolume = aTransformation2D.ApplySkewSettings( aBoundVolume );
- }
-
- Polygon aTransformed( 8 );
- for ( i = 0L; i < 8L; i++ )
- {
- aTransformed[ (sal_uInt16)i ] = aTransformation2D.Transform2D( aBoundVolume.getB3DPoint(i) );
- }
-
- return aTransformed.GetBoundRect();
-}
-
-// eof
diff --git a/svx/source/msfilter/msashape3d.hxx b/svx/source/msfilter/msashape3d.hxx
deleted file mode 100644
index 6a325a7240..0000000000
--- a/svx/source/msfilter/msashape3d.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msashape3d.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _MSASHAPE3D_HXX
-#define _MSASHAPE3D_HXX
-
-#include <svx/msdffimp.hxx>
-#include <basegfx/point/b3dpoint.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-
-#include <vector>
-//#include <poly3d.hxx>
-//#include <goodies/point3d.hxx>
-
-class SvxMSDffCustomShape3D
-{
- class Transformation2D
- {
- Point aCenter;
- sal_Bool bParallel;
-
- // parallel projection
- double fSkewAngle;
- sal_Int32 nSkewAmount; // in percent
-
- // perspective projection
- double fZScreen;
- basegfx::B3DPoint fViewPoint;
- double fViewPointOriginX;
- double fViewPointOriginY;
-
- public :
-
- Transformation2D( const DffPropSet& rPropSet, const Rectangle& rSnapRect );
- basegfx::B3DPolygon ApplySkewSettings( const basegfx::B3DPolygon& rPoly3D );
- Point Transform2D( const basegfx::B3DPoint& rPoint );
- sal_Bool IsParallel() const { return bParallel; };
- };
-
- friend class Transformation2D;
-
- protected :
-
- static basegfx::B3DPoint Rotate( const basegfx::B3DPoint& rPoint, const double x, const double y, const double z );
-// static void Rotate( basegfx::B3DPolyPolygon&, const basegfx::B3DPoint& rRotateCenter, const double x, const double y, const double z );
- static double Fix16ToAngle( sal_Int32 nFixAngle );
- static Rectangle CalculateNewSnapRect( const Rectangle& rOriginalSnapRect, const DffPropSet& );
-
- public :
-
- static SdrObject* Create3DObject( const SdrObject* pSource, const DffPropSet&,
- SfxItemSet&, Rectangle& rSnapRect, sal_uInt32 nSpFlags );
-};
-
-#endif
-
diff --git a/svx/source/msfilter/msdffimp.cxx b/svx/source/msfilter/msdffimp.cxx
index fe00bcebb9..e69de29bb2 100644
--- a/svx/source/msfilter/msdffimp.cxx
+++ b/svx/source/msfilter/msdffimp.cxx
@@ -1,7996 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msdffimp.cxx,v $
- * $Revision: 1.157 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
-#include <com/sun/star/embed/Aspects.hpp>
-
-#include <math.h>
-#include <limits.h>
-#include <vector>
-#include <osl/endian.h>
-#include <tools/solar.h> // UINTXX
-#include <rtl/math.hxx>
-
-#include <sot/clsids.hxx>
-#include <toolkit/helper/vclunohelper.hxx>
-#include <unotools/streamwrap.hxx>
-#include <comphelper/processfactory.hxx>
-#include <sot/exchange.hxx>
-#include <sot/storinfo.hxx>
-#include <vcl/cvtgrf.hxx>
-
-#include "viscache.hxx"
-
-// SvxItem-Mapping. Wird benoetigt um die SvxItem-Header erfolgreich zu includen
-#include <svx/eeitem.hxx>
-#ifndef _EDITDATA_HXX
-#include <svx/editdata.hxx>
-#endif
-
-#include <svtools/urihelper.hxx>
-
-// textitem.hxx editdata.hxx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// paraitem.hxx editdata.hxx
-
-
-#include <tools/stream.hxx>
-#include <tools/debug.hxx>
-#ifndef _TOOLS_ZCODEC_HXX
-#include <tools/zcodec.hxx>
-#endif
-#ifndef _UNOTOOLS_UCBSTREAMHELPER_HXX
-#include <unotools/ucbstreamhelper.hxx>
-#endif
-#include <unotools/localfilehelper.hxx>
-#include <svx/escherex.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <com/sun/star/container/XIdentifierContainer.hpp>
-#include <com/sun/star/drawing/XGluePointsSupplier.hpp>
-#include <com/sun/star/drawing/Position3D.hpp>
-#include <com/sun/star/drawing/Direction3D.hpp>
-#include <com/sun/star/drawing/GluePoint2.hpp>
-#include <com/sun/star/drawing/XShapes.hpp>
-#include <svx/charscaleitem.hxx>
-#include <svx/kernitem.hxx>
-#include <svtools/filter.hxx>
-#include <tools/string.hxx>
-#ifndef _TOOLS_URLOBJ_HXX
-#include <tools/urlobj.hxx>
-#endif
-#include <vcl/virdev.hxx>
-#include <vcl/bmpacc.hxx>
-#ifndef _SVSTOR_HXX //autogen
-#include <sot/storage.hxx>
-#endif
-#include <sfx2/docfac.hxx>
-#include <sfx2/docfilt.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/fcontnr.hxx>
-#include <sfx2/module.hxx>
-//#ifndef _SFX_INTERNO_HXX
-//#include <sfx2/interno.hxx>
-//#endif
-
-#ifndef _SDGCPITM_HXX
-
-//#endif
-#include <svx/sdgcpitm.hxx>
-#endif
-#include <svx/sdgmoitm.hxx>
-#include <svx/tstpitem.hxx>
-#include <svx/fmmodel.hxx>
-#include <svx/svdmodel.hxx>
-#include <svx/svdobj.hxx>
-#include <svx/svdpage.hxx>
-#include <svx/svdogrp.hxx>
-#include <svx/svdograf.hxx>
-#include <svx/svdotext.hxx>
-#include <svx/svdorect.hxx>
-#ifndef _SVDOCAPT_HXX
-#include <svx/svdocapt.hxx>
-#endif
-#include <svx/svdoedge.hxx>
-#include <svx/svdocirc.hxx>
-#include <svx/svdoutl.hxx>
-#include <svx/svdoole2.hxx>
-#include <svx/svdopath.hxx>
-#include <svx/frmdir.hxx>
-#include <svx/frmdiritem.hxx>
-#include <svx/svdtrans.hxx>
-#include <svx/sxenditm.hxx>
-#include <svx/sdgluitm.hxx>
-#include <svx/fhgtitem.hxx>
-#include <svx/wghtitem.hxx>
-#include <svx/postitem.hxx>
-#include <svx/udlnitem.hxx>
-#include <svx/crsditem.hxx>
-#include <svx/shdditem.hxx>
-#include <fontitem.hxx>
-#include <svx/colritem.hxx>
-#include <svx/sxekitm.hxx>
-#include <bulitem.hxx>
-#include <svx/polysc3d.hxx>
-#include <svx/extrud3d.hxx>
-#include "svditer.hxx"
-#include <svx/xpoly.hxx>
-#include "xattr.hxx"
-
-#ifndef _IMPGRF_HXX //autogen
-#include "impgrf.hxx"
-#endif
-#include <svx/msdffimp.hxx> // extern sichtbare Header-Datei
-#include <svx/outliner.hxx>
-#include <svx/outlobj.hxx>
-#include <svx/editobj.hxx>
-#include <svx/editeng.hxx>
-#include "msashape.hxx"
-#include "msashape3d.hxx"
-#include "gallery.hxx"
-#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <svtools/itempool.hxx>
-#include <vcl/svapp.hxx>
-#include <svx/svx3ditems.hxx>
-#include <svx/svdoashp.hxx>
-#include <svx/sdasaitm.hxx>
-#ifndef _UCBHELPER_CONTENT_HXX_
-#include <ucbhelper/content.hxx>
-#endif
-#ifndef _UCBHELPER_CONTENTBROKER_HXX_
-#include <ucbhelper/contentbroker.hxx>
-#endif
-#include <vos/xception.hxx>
-#ifndef _VOS_NO_NAMESPACE
-using namespace vos;
-#endif
-#include "../customshapes/EnhancedCustomShapeTypeNames.hxx"
-#include "../customshapes/EnhancedCustomShapeGeometry.hxx"
-#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
-#ifndef __com_sun_star_beans_PropertyValues_hpp__
-#include <com/sun/star/beans/PropertyValues.hpp>
-#endif
-#include <com/sun/star/drawing/ProjectionMode.hpp>
-#include "../customshapes/EnhancedCustomShape2d.hxx"
-
-using namespace ::com::sun::star ;
-using namespace ::com::sun::star::drawing;
-using namespace uno ;
-using namespace beans ;
-using namespace drawing ;
-using namespace container ;
-
-#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
-
-// static counter for OLE-Objects
-static sal_uInt32 nMSOleObjCntr = 0;
-#define MSO_OLE_Obj "MSO_OLE_Obj"
-
-
-/*************************************************************************/
-BOOL Impl_OlePres::Read( SvStream & rStm )
-{
- ULONG nBeginPos = rStm.Tell();
- INT32 n;
- rStm >> n;
- if( n != -1 )
- {
- pBmp = new Bitmap;
- rStm >> *pBmp;
- if( rStm.GetError() == SVSTREAM_OK )
- {
- nFormat = FORMAT_BITMAP;
- aSize = pBmp->GetPrefSize();
- MapMode aMMSrc;
- if( !aSize.Width() || !aSize.Height() )
- {
- // letzte Chance
- aSize = pBmp->GetSizePixel();
- aMMSrc = MAP_PIXEL;
- }
- else
- aMMSrc = pBmp->GetPrefMapMode();
- MapMode aMMDst( MAP_100TH_MM );
- aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
- return TRUE;
- }
- else
- {
- delete pBmp;
- pBmp = NULL;
-
- pMtf = new GDIMetaFile();
- rStm.ResetError();
- rStm >> *pMtf;
- if( rStm.GetError() == SVSTREAM_OK )
- {
- nFormat = FORMAT_GDIMETAFILE;
- aSize = pMtf->GetPrefSize();
- MapMode aMMSrc = pMtf->GetPrefMapMode();
- MapMode aMMDst( MAP_100TH_MM );
- aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
- return TRUE;
- }
- else
- {
- delete pMtf;
- pMtf = NULL;
- }
- }
-
- }
-
- rStm.ResetError();
- rStm.Seek( nBeginPos );
- nFormat = ReadClipboardFormat( rStm );
- // JobSetup, bzw. TargetDevice ueberlesen
- // Information aufnehmen, um sie beim Schreiben nicht zu verlieren
- nJobLen = 0;
- rStm >> nJobLen;
- if( nJobLen >= 4 )
- {
- nJobLen -= 4;
- if( nJobLen )
- {
- pJob = new BYTE[ nJobLen ];
- rStm.Read( pJob, nJobLen );
- }
- }
- else
- {
- rStm.SetError( SVSTREAM_GENERALERROR );
- return FALSE;
- }
- UINT32 nAsp;
- rStm >> nAsp;
- USHORT nSvAsp = USHORT( nAsp );
- SetAspect( nSvAsp );
- rStm.SeekRel( 4 ); //L-Index ueberlesen
- rStm >> nAdvFlags;
- rStm.SeekRel( 4 ); //Compression
- UINT32 nWidth = 0;
- UINT32 nHeight = 0;
- UINT32 nSize = 0;
- rStm >> nWidth >> nHeight >> nSize;
- aSize.Width() = nWidth;
- aSize.Height() = nHeight;
-
- if( nFormat == FORMAT_GDIMETAFILE )
- {
- pMtf = new GDIMetaFile();
- ReadWindowMetafile( rStm, *pMtf, NULL );
- }
- else if( nFormat == FORMAT_BITMAP )
- {
- pBmp = new Bitmap();
- rStm >> *pBmp;
- }
- else
- {
- BYTE * p = new BYTE[ nSize ];
- rStm.Read( p, nSize );
- delete p;
- return FALSE;
- }
- return TRUE;
-}
-
-/************************************************************************/
-void Impl_OlePres::Write( SvStream & rStm )
-{
- WriteClipboardFormat( rStm, FORMAT_GDIMETAFILE );
- rStm << (INT32)(nJobLen +4); // immer leeres TargetDevice
- if( nJobLen )
- rStm.Write( pJob, nJobLen );
- rStm << (UINT32)nAspect;
- rStm << (INT32)-1; //L-Index immer -1
- rStm << (INT32)nAdvFlags;
- rStm << (INT32)0; //Compression
- rStm << (INT32)aSize.Width();
- rStm << (INT32)aSize.Height();
- ULONG nPos = rStm.Tell();
- rStm << (INT32)0;
-
- if( GetFormat() == FORMAT_GDIMETAFILE && pMtf )
- {
- // Immer auf 1/100 mm, bis Mtf-Loesung gefunden
- // Annahme (keine Skalierung, keine Org-Verschiebung)
- DBG_ASSERT( pMtf->GetPrefMapMode().GetScaleX() == Fraction( 1, 1 ),
- "X-Skalierung im Mtf" );
- DBG_ASSERT( pMtf->GetPrefMapMode().GetScaleY() == Fraction( 1, 1 ),
- "Y-Skalierung im Mtf" );
- DBG_ASSERT( pMtf->GetPrefMapMode().GetOrigin() == Point(),
- "Origin-Verschiebung im Mtf" );
- MapUnit nMU = pMtf->GetPrefMapMode().GetMapUnit();
- if( MAP_100TH_MM != nMU )
- {
- Size aPrefS( pMtf->GetPrefSize() );
- Size aS( aPrefS );
- aS = OutputDevice::LogicToLogic( aS, nMU, MAP_100TH_MM );
-
- pMtf->Scale( Fraction( aS.Width(), aPrefS.Width() ),
- Fraction( aS.Height(), aPrefS.Height() ) );
- pMtf->SetPrefMapMode( MAP_100TH_MM );
- pMtf->SetPrefSize( aS );
- }
- WriteWindowMetafileBits( rStm, *pMtf );
- }
- else
- {
- DBG_ERROR( "unknown format" );
- }
- ULONG nEndPos = rStm.Tell();
- rStm.Seek( nPos );
- rStm << (UINT32)(nEndPos - nPos - 4);
- rStm.Seek( nEndPos );
-}
-
-Impl_OlePres * CreateCache_Impl( SotStorage * pStor )
-{
- SotStorageStreamRef xOleObjStm =pStor->OpenSotStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "Ole-Object" ) ),
- STREAM_READ | STREAM_NOCREATE );
- if( xOleObjStm->GetError() )
- return NULL;
- SotStorageRef xOleObjStor = new SotStorage( *xOleObjStm );
- if( xOleObjStor->GetError() )
- return NULL;
-
- String aStreamName;
- if( xOleObjStor->IsContained( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres000" ) ) ) )
- aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres000" ) );
- else if( xOleObjStor->IsContained( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) ) ) )
- aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) );
-
- if( aStreamName.Len() == 0 )
- return NULL;
-
-
- for( USHORT i = 1; i < 10; i++ )
- {
- SotStorageStreamRef xStm = xOleObjStor->OpenSotStream( aStreamName,
- STREAM_READ | STREAM_NOCREATE );
- if( xStm->GetError() )
- break;
-
- xStm->SetBufferSize( 8192 );
- Impl_OlePres * pEle = new Impl_OlePres( 0 );
- if( pEle->Read( *xStm ) && !xStm->GetError() )
- {
- if( pEle->GetFormat() == FORMAT_GDIMETAFILE || pEle->GetFormat() == FORMAT_BITMAP )
- return pEle;
- }
- delete pEle;
- aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres00" ) );
- aStreamName += String( i );
- };
- return NULL;
-}
-
-
-
-//---------------------------------------------------------------------------
-// Hilfs Klassen aus MSDFFDEF.HXX
-//---------------------------------------------------------------------------
-
-SvStream& operator>>( SvStream& rIn, DffRecordHeader& rRec )
-{
- rRec.nFilePos = rIn.Tell();
- UINT16 nTmp(0);
- rIn >> nTmp;
- rRec.nImpVerInst = nTmp;
- rRec.nRecVer = sal::static_int_cast< BYTE >(nTmp & 0x000F);
- rRec.nRecInstance = nTmp >> 4;
- rIn >> rRec.nRecType;
- rIn >> rRec.nRecLen;
- return rIn;
-}
-
-// Masse fuer dashed lines
-#define LLEN_MIDDLE (450)
-#define LLEN_SPACE_MIDDLE (360)
-#define LLEN_LONG (LLEN_MIDDLE * 2)
-#define LLEN_SPACE_LONG (LLEN_SPACE_MIDDLE + 20)
-#define LLEN_POINT (LLEN_MIDDLE / 4)
-#define LLEN_SPACE_POINT (LLEN_SPACE_MIDDLE / 4)
-
-SvStream& operator>>( SvStream& rIn, DffPropSet& rRec )
-{
- rRec.InitializePropSet();
-
- DffRecordHeader aHd;
- rIn >> aHd;
- UINT32 nPropCount = aHd.nRecInstance;
-
- // FilePos der ComplexData merken
- UINT32 nComplexDataFilePos = rIn.Tell() + ( nPropCount * 6 );
-
- for( UINT32 nPropNum = 0; nPropNum < nPropCount; nPropNum++ )
- {
- sal_uInt16 nTmp;
- sal_uInt32 nRecType, nContent, nContentEx = 0xffff0000;
- rIn >> nTmp
- >> nContent;
-
- nRecType = nTmp & 0x3fff;
-
- if ( nRecType > 0x3ff )
- break;
- if ( ( nRecType & 0x3f ) == 0x3f )
- { // clear flags that have to be cleared
- rRec.mpContents[ nRecType ] &= ( ( nContent >> 16 ) ^ 0xffffffff );
- // set flags that have to be set
- rRec.mpContents[ nRecType ] |= nContent;
- nContentEx |= ( nContent >> 16 );
- rRec.Replace( nRecType, (void*)nContentEx );
- }
- else
- {
- DffPropFlags aPropFlag = { 1, 0, 0, 0 };
- if ( nTmp & 0x4000 )
- aPropFlag.bBlip = sal_True;
- if ( nTmp & 0x8000 )
- aPropFlag.bComplex = sal_True;
- if ( aPropFlag.bComplex && nContent && ( nComplexDataFilePos < aHd.GetRecEndFilePos() ) )
- {
- // normally nContent is the complete size of the complex property,
- // but this is not always true for IMsoArrays ( what the hell is a IMsoArray ? )
-
- // I love special threatments :-(
- if ( ( nRecType == DFF_Prop_pVertices ) || ( nRecType == DFF_Prop_pSegmentInfo )
- || ( nRecType == DFF_Prop_fillShadeColors ) || ( nRecType == DFF_Prop_lineDashStyle )
- || ( nRecType == DFF_Prop_pWrapPolygonVertices ) || ( nRecType == DFF_Prop_connectorPoints )
- || ( nRecType == DFF_Prop_Handles ) || ( nRecType == DFF_Prop_pFormulas )
- || ( nRecType == DFF_Prop_textRectangles ) )
- {
- // now check if the current content size is possible, or 6 bytes too small
- sal_uInt32 nOldPos = rIn.Tell();
- sal_Int16 nNumElem, nNumElemReserved, nSize;
-
- rIn.Seek( nComplexDataFilePos );
- rIn >> nNumElem >> nNumElemReserved >> nSize;
- if ( nNumElemReserved >= nNumElem )
- {
- // the size of these array elements is nowhere defined,
- // what if the size is negative ?
- // ok, we will make it positive and shift it.
- // for -16 this works
- if ( nSize < 0 )
- nSize = ( -nSize ) >> 2;
- sal_uInt32 nDataSize = (sal_uInt32)( nSize * nNumElem );
-
- // sometimes the content size is 6 bytes too small (array header information is missing )
- if ( nDataSize == nContent )
- nContent += 6;
-
- // check if array fits into the PropertyContainer
- if ( ( nComplexDataFilePos + nContent ) > aHd.GetRecEndFilePos() )
- nContent = 0;
- }
- else
- nContent = 0;
- rIn.Seek( nOldPos );
- }
- if ( nContent )
- {
- nContentEx = nComplexDataFilePos; // insert the filepos of this property;
- nComplexDataFilePos += nContent; // store filepos, that is used for the next complex property
- }
- else // a complex property needs content
- aPropFlag.bSet = sal_False; // otherwise something is wrong
- }
- rRec.mpContents[ nRecType ] = nContent;
- rRec.mpFlags[ nRecType ] = aPropFlag;
- rRec.Insert( nRecType, (void*)nContentEx );
- }
- }
- aHd.SeekToEndOfRecord( rIn );
- return rIn;
-}
-
-void DffPropSet::InitializePropSet() const
-{
- /*
- cmc:
- " Boolean properties are grouped in bitfields by property set; note that
- the Boolean properties in each property set are contiguous. They are saved
- under the property ID of the last Boolean property in the set, and are
- placed in the value field in reverse order starting with the last property
- in the low bit. "
-
- e.g.
-
- fEditedWrap
- fBehindDocument
- fOnDblClickNotify
- fIsButton
- fOneD
- fHidden
- fPrint
-
- are all part of a group and all are by default false except for fPrint,
- which equates to a default bit sequence for the group of 0000001 -> 0x1
-
- If at a later stage word sets fBehindDocument away from the default it
- will be done by having a property named fPrint whose bitsequence will have
- the fBehindDocument bit set. e.g. a DFF_Prop_fPrint with value 0x200020
- has set bit 6 on so as to enable fBehindDocument (as well as disabling
- everything else)
- */
-
- memset( ( (DffPropSet*) this )->mpFlags, 0, 0x400 * sizeof(DffPropFlags) );
- ( (DffPropSet*) this )->Clear();
-
- DffPropFlags nFlags = { 1, 0, 0, 1 };
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_LockAgainstGrouping ] = 0x0000; //0x01ff0000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_LockAgainstGrouping ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_LockAgainstGrouping, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_FitTextToShape ] = 0x0010; //0x001f0010;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_FitTextToShape ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_FitTextToShape, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_gtextFStrikethrough ] = 0x0000; //0xffff0000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_gtextFStrikethrough ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_gtextFStrikethrough, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_pictureActive ] = 0x0000; //0x000f0000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_pictureActive ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_pictureActive, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fFillOK ] = 0x0039; //0x003f0039;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fFillOK ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fFillOK, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fNoFillHitTest ] = 0x001c; //0x001f001c;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fNoFillHitTest ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fNoFillHitTest, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fNoLineDrawDash ] = 0x001e; //0x001f000e;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fNoLineDrawDash ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fNoLineDrawDash, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fshadowObscured ] = 0x0000; //0x00030000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fshadowObscured ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fshadowObscured, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fPerspective ] = 0x0000; //0x00010000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fPerspective ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fPerspective, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fc3DLightFace ] = 0x0001; //0x000f0001;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fc3DLightFace ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fc3DLightFace, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fc3DFillHarsh ] = 0x0016; //0x001f0016;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fc3DFillHarsh ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fc3DFillHarsh, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fBackground ] = 0x0000; //0x001f0000;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fBackground ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fBackground, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fCalloutLengthSpecified ] = 0x0010; //0x00ef0010;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fCalloutLengthSpecified ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fCalloutLengthSpecified, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fPrint ] = 0x0001; //0x00ef0001;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fPrint ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fPrint, (void*)0xffff0000 );
-
- ( (DffPropSet*) this )->mpContents[ DFF_Prop_fillColor ] = 0xffffff;
- ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fillColor ] = nFlags;
- ( (DffPropSet*) this )->Insert( DFF_Prop_fillColor, (void*)0xffff0000 );
-}
-
-void DffPropSet::Merge( DffPropSet& rMaster ) const
-{
- for ( void* pDummy = rMaster.First(); pDummy; pDummy = rMaster.Next() )
- {
- UINT32 nRecType = rMaster.GetCurKey();
- if ( ( nRecType & 0x3f ) == 0x3f ) // this is something called FLAGS
- {
- UINT32 nCurrentFlags = mpContents[ nRecType ];
- UINT32 nMergeFlags = rMaster.mpContents[ nRecType ];
- nMergeFlags &= ( nMergeFlags >> 16 ) | 0xffff0000; // clearing low word
- nMergeFlags &= ( ( nCurrentFlags & 0xffff0000 ) // remove allready hard set
- | ( nCurrentFlags >> 16 ) ) ^ 0xffffffff; // attributes from mergeflags
- nCurrentFlags &= ( ( nMergeFlags & 0xffff0000 ) // apply zero master bits
- | ( nMergeFlags >> 16 ) ) ^ 0xffffffff;
- nCurrentFlags |= (UINT16)nMergeFlags; // apply filled master bits
- ( (DffPropSet*) this )->mpContents[ nRecType ] = nCurrentFlags;
-
-
- sal_uInt32 nNewContentEx = (sal_uInt32)(sal_uIntPtr)rMaster.GetCurObject();
- if ( ((DffPropSet*)this)->Seek( nRecType ) )
- nNewContentEx |= (sal_uInt32)(sal_uIntPtr)GetCurObject();
- ( (DffPropSet*) this )->Replace( nRecType, (void*)nNewContentEx );
- }
- else
- {
- if ( !IsProperty( nRecType ) || !IsHardAttribute( nRecType ) )
- {
- ( (DffPropSet*) this )->mpContents[ nRecType ] = rMaster.mpContents[ nRecType ];
- DffPropFlags nFlags( rMaster.mpFlags[ nRecType ] );
- nFlags.bSoftAttr = TRUE;
- ( (DffPropSet*) this )->mpFlags[ nRecType ] = nFlags;
- ( (DffPropSet*) this )->Insert( nRecType, pDummy );
- }
- }
- }
-}
-
-BOOL DffPropSet::IsHardAttribute( UINT32 nId ) const
-{
- BOOL bRetValue = TRUE;
- nId &= 0x3ff;
- if ( ( nId & 0x3f ) >= 48 ) // is this a flag id
- {
- if ( ((DffPropSet*)this)->Seek( nId | 0x3f ) )
- {
- sal_uInt32 nContentEx = (sal_uInt32)(sal_uIntPtr)GetCurObject();
- bRetValue = ( nContentEx & ( 1 << ( 0xf - ( nId & 0xf ) ) ) ) != 0;
- }
- }
- else
- bRetValue = ( mpFlags[ nId ].bSoftAttr == 0 );
- return bRetValue;
-};
-
-UINT32 DffPropSet::GetPropertyValue( UINT32 nId, UINT32 nDefault ) const
-{
- nId &= 0x3ff;
- return ( mpFlags[ nId ].bSet ) ? mpContents[ nId ] : nDefault;
-};
-
-bool DffPropSet::GetPropertyBool( UINT32 nId, bool bDefault ) const
-{
- UINT32 nBaseId = nId | 31; // base ID to get the UINT32 property value
- UINT32 nMask = 1 << (nBaseId - nId); // bit mask of the boolean property
-
- UINT32 nPropValue = GetPropertyValue( nBaseId, bDefault ? nMask : 0 );
- return (nPropValue & nMask) != 0;
-}
-
-::rtl::OUString DffPropSet::GetPropertyString( UINT32 nId, SvStream& rStrm ) const
-{
- sal_Size nOldPos = rStrm.Tell();
- ::rtl::OUStringBuffer aBuffer;
- sal_uInt32 nBufferSize = GetPropertyValue( nId );
- if( (nBufferSize > 0) && SeekToContent( nId, rStrm ) )
- {
- sal_Int32 nStrLen = static_cast< sal_Int32 >( nBufferSize / 2 );
- aBuffer.ensureCapacity( nStrLen );
- for( sal_Int32 nCharIdx = 0; nCharIdx < nStrLen; ++nCharIdx )
- {
- sal_uInt16 nChar = 0;
- rStrm >> nChar;
- if( nChar > 0 )
- aBuffer.append( static_cast< sal_Unicode >( nChar ) );
- else
- break;
- }
- }
- rStrm.Seek( nOldPos );
- return aBuffer.makeStringAndClear();
-}
-
-void DffPropSet::SetPropertyValue( UINT32 nId, UINT32 nValue ) const
-{
- if ( !mpFlags[ nId ].bSet )
- {
- ( (DffPropSet*) this )->Insert( nId, (void*)nValue );
- ( (DffPropSet*) this )->mpFlags[ nId ].bSet = TRUE;
- }
- ( (DffPropSet*) this )->mpContents[ nId ] = nValue;
-};
-
-BOOL DffPropSet::SeekToContent( UINT32 nRecType, SvStream& rStrm ) const
-{
- nRecType &= 0x3ff;
- if ( mpFlags[ nRecType ].bSet )
- {
- if ( mpFlags[ nRecType ].bComplex )
- {
- if ( ((DffPropSet*)this)->Seek( nRecType ) )
- {
- sal_uInt32 nOffset = (sal_uInt32)(sal_uIntPtr)GetCurObject();
- if ( nOffset && ( ( nOffset & 0xffff0000 ) != 0xffff0000 ) )
- {
- rStrm.Seek( nOffset );
- return TRUE;
- }
- }
- }
- }
- return FALSE;
-}
-
-DffPropertyReader::DffPropertyReader( const SvxMSDffManager& rMan ) :
- rManager( rMan ),
- pDefaultPropSet( NULL )
-{
- InitializePropSet();
-}
-
-void DffPropertyReader::SetDefaultPropSet( SvStream& rStCtrl, UINT32 nOffsDgg ) const
-{
- delete pDefaultPropSet;
- UINT32 nMerk = rStCtrl.Tell();
- rStCtrl.Seek( nOffsDgg );
- DffRecordHeader aRecHd;
- rStCtrl >> aRecHd;
- if ( aRecHd.nRecType == DFF_msofbtDggContainer )
- {
- if ( rManager.SeekToRec( rStCtrl, DFF_msofbtOPT, aRecHd.GetRecEndFilePos() ) )
- {
- ( (DffPropertyReader*) this )->pDefaultPropSet = new DffPropSet;
- rStCtrl >> *pDefaultPropSet;
- }
- }
- rStCtrl.Seek( nMerk );
-}
-
-#ifdef DBG_CUSTOMSHAPE
-void DffPropertyReader::ReadPropSet( SvStream& rIn, void* pClientData, UINT32 nShapeId ) const
-#else
-void DffPropertyReader::ReadPropSet( SvStream& rIn, void* pClientData ) const
-#endif
-{
- ULONG nFilePos = rIn.Tell();
- rIn >> (DffPropertyReader&)*this;
-
- if ( IsProperty( DFF_Prop_hspMaster ) )
- {
- if ( rManager.SeekToShape( rIn, pClientData, GetPropertyValue( DFF_Prop_hspMaster ) ) )
- {
- DffRecordHeader aRecHd;
- rIn >> aRecHd;
- if ( rManager.SeekToRec( rIn, DFF_msofbtOPT, aRecHd.GetRecEndFilePos() ) )
- {
- DffPropSet aMasterPropSet;
- rIn >> aMasterPropSet;
- Merge( aMasterPropSet );
- }
- }
- }
-// if ( pDefaultPropSet )
-// Merge( *( pDefaultPropSet ) );
-
- ( (DffPropertyReader*) this )->mnFix16Angle = Fix16ToAngle( GetPropertyValue( DFF_Prop_Rotation, 0 ) );
-
-#ifdef DBG_CUSTOMSHAPE
-
- String aURLStr;
-
- if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( String( RTL_CONSTASCII_STRINGPARAM( "d:\\ashape.dbg" ) ), aURLStr ) )
- {
- SvStream* pOut = ::utl::UcbStreamHelper::CreateStream( aURLStr, STREAM_WRITE );
-
- if( pOut )
- {
- pOut->Seek( STREAM_SEEK_TO_END );
-
- if ( IsProperty( DFF_Prop_adjustValue ) || IsProperty( DFF_Prop_pVertices ) )
- {
- pOut->WriteLine( "" );
- ByteString aString( "ShapeId: " );
- aString.Append( ByteString::CreateFromInt32( nShapeId ) );
- pOut->WriteLine( aString );
- }
- for ( sal_uInt32 i = DFF_Prop_adjustValue; i <= DFF_Prop_adjust10Value; i++ )
- {
- if ( IsProperty( i ) )
- {
- ByteString aString( "Prop_adjustValue" );
- aString.Append( ByteString::CreateFromInt32( ( i - DFF_Prop_adjustValue ) + 1 ) );
- aString.Append( ":" );
- aString.Append( ByteString::CreateFromInt32( GetPropertyValue( i ) ) );
- pOut->WriteLine( aString );
- }
- }
- sal_Int32 i;
- for ( i = 320; i < 383; i++ )
- {
- if ( ( i >= DFF_Prop_adjustValue ) && ( i <= DFF_Prop_adjust10Value ) )
- continue;
- if ( IsProperty( i ) )
- {
- if ( SeekToContent( i, rIn ) )
- {
- INT32 nLen = (INT32)GetPropertyValue( i );
- if ( nLen )
- {
- pOut->WriteLine( "" );
- ByteString aDesc( "Property:" );
- aDesc.Append( ByteString::CreateFromInt32( i ) );
- aDesc.Append( ByteString( " Size:" ) );
- aDesc.Append( ByteString::CreateFromInt32( nLen ) );
- pOut->WriteLine( aDesc );
- INT16 nNumElem, nNumElemMem, nNumSize;
- rIn >> nNumElem >> nNumElemMem >> nNumSize;
- aDesc = ByteString( "Entries: " );
- aDesc.Append( ByteString::CreateFromInt32( nNumElem ) );
- aDesc.Append( ByteString( " Size:" ) );
- aDesc.Append( ByteString::CreateFromInt32( nNumSize ) );
- pOut->WriteLine( aDesc );
- if ( nNumSize < 0 )
- nNumSize = ( ( -nNumSize ) >> 2 );
- if ( !nNumSize )
- nNumSize = 16;
- nLen -= 6;
- while ( nLen > 0 )
- {
- ByteString aString;
- for ( UINT32 j = 0; nLen && ( j < ( nNumSize >> 1 ) ); j++ )
- {
- for ( UINT32 k = 0; k < 2; k++ )
- {
- if ( nLen )
- {
- BYTE nVal;
- rIn >> nVal;
- if ( ( nVal >> 4 ) > 9 )
- *pOut << (BYTE)( ( nVal >> 4 ) + 'A' - 10 );
- else
- *pOut << (BYTE)( ( nVal >> 4 ) + '0' );
-
- if ( ( nVal & 0xf ) > 9 )
- *pOut << (BYTE)( ( nVal & 0xf ) + 'A' - 10 );
- else
- *pOut << (BYTE)( ( nVal & 0xf ) + '0' );
-
- nLen--;
- }
- }
- *pOut << (char)( ' ' );
- }
- pOut->WriteLine( aString );
- }
- }
- }
- else
- {
- ByteString aString( "Property" );
- aString.Append( ByteString::CreateFromInt32( i ) );
- aString.Append( ":" );
- aString.Append( ByteString::CreateFromInt32( GetPropertyValue( i ) ) );
- pOut->WriteLine( aString );
- }
- }
- }
-
- delete pOut;
- }
- }
-
-#endif
-
- rIn.Seek( nFilePos );
-}
-
-
-INT32 DffPropertyReader::Fix16ToAngle( INT32 nContent ) const
-{
- INT32 nAngle = 0;
- if ( nContent )
- {
- nAngle = ( (INT16)( nContent >> 16) * 100L ) + ( ( ( nContent & 0x0000ffff) * 100L ) >> 16 );
- nAngle = NormAngle360( -nAngle );
- }
- return nAngle;
-}
-
-DffPropertyReader::~DffPropertyReader()
-{
- delete pDefaultPropSet;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rRule )
-{
- rIn >> rRule.nRuleId
- >> rRule.nShapeA
- >> rRule.nShapeB
- >> rRule.nShapeC
- >> rRule.ncptiA
- >> rRule.ncptiB;
-
- return rIn;
-}
-
-SvxMSDffSolverContainer::SvxMSDffSolverContainer()
-{
-}
-
-SvxMSDffSolverContainer::~SvxMSDffSolverContainer()
-{
- for ( SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)aCList.First();
- pPtr; pPtr = (SvxMSDffConnectorRule*)aCList.Next() )
- delete pPtr;
-}
-
-SvStream& operator>>( SvStream& rIn, SvxMSDffSolverContainer& rContainer )
-{
- DffRecordHeader aHd;
- rIn >> aHd;
- if ( aHd.nRecType == DFF_msofbtSolverContainer )
- {
- DffRecordHeader aCRule;
- while ( ( rIn.GetError() == 0 ) && ( rIn.Tell() < aHd.GetRecEndFilePos() ) )
- {
- rIn >> aCRule;
- if ( aCRule.nRecType == DFF_msofbtConnectorRule )
- {
- SvxMSDffConnectorRule* pRule = new SvxMSDffConnectorRule;
- rIn >> *pRule;
- rContainer.aCList.Insert( pRule, LIST_APPEND );
- }
- aCRule.SeekToEndOfRecord( rIn );
- }
- }
- return rIn;
-}
-
-void SvxMSDffManager::SolveSolver( const SvxMSDffSolverContainer& rSolver )
-{
- sal_Int32 i, nCnt;
- for ( i = 0, nCnt = rSolver.aCList.Count(); i < nCnt; i++ )
- {
- SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)rSolver.aCList.GetObject( i );
- if ( pPtr->pCObj )
- {
- for ( int nN = 0; nN < 2; nN++ )
- {
- SdrObject* pO;
- sal_uInt32 nC, nSpFlags;
- sal_Bool bTail;
- if ( !nN )
- {
- bTail = sal_True;
- pO = pPtr->pAObj;
- nC = pPtr->ncptiA;
- nSpFlags = pPtr->nSpFlagsA;
- }
- else
- {
- bTail = sal_False;
- pO = pPtr->pBObj;
- nC = pPtr->ncptiB;
- nSpFlags = pPtr->nSpFlagsB;
- }
- if ( pO )
- {
- Any aAny;
- SdrGluePoint aGluePoint;
- Reference< XShape > aXShape( pO->getUnoShape(), UNO_QUERY );
- Reference< XShape > aXConnector( pPtr->pCObj->getUnoShape(), UNO_QUERY );
- SdrGluePointList* pList = pO->ForceGluePointList();
-
- sal_Bool bValidGluePoint = sal_False;
- sal_Int32 nId = nC;
- sal_uInt32 nInventor = pO->GetObjInventor();
-
- if( nInventor == SdrInventor )
- {
- sal_uInt32 nObjId = pO->GetObjIdentifier();
- switch( nObjId )
- {
- case OBJ_GRUP :
- case OBJ_GRAF :
- case OBJ_RECT :
- case OBJ_TEXT :
- case OBJ_PAGE :
- case OBJ_TEXTEXT :
- case OBJ_wegFITTEXT :
- case OBJ_wegFITALLTEXT :
- case OBJ_TITLETEXT :
- case OBJ_OUTLINETEXT :
- {
- if ( nC & 1 )
- {
- if ( nSpFlags & SP_FFLIPH )
- nC ^= 2; // 1 <-> 3
- }
- else
- {
- if ( nSpFlags & SP_FFLIPV )
- nC ^= 1; // 0 <-> 2
- }
- switch( nC )
- {
- case 0 :
- nId = 0; // SDRVERTALIGN_TOP;
- break;
- case 1 :
- nId = 3; // SDRHORZALIGN_RIGHT;
- break;
- case 2 :
- nId = 2; // SDRVERTALIGN_BOTTOM;
- break;
- case 3 :
- nId = 1; // SDRHORZALIGN_LEFT;
- break;
- }
- if ( nId <= 3 )
- bValidGluePoint = sal_True;
- }
- break;
- case OBJ_POLY :
- case OBJ_PLIN :
- case OBJ_LINE :
- case OBJ_PATHLINE :
- case OBJ_PATHFILL :
- case OBJ_FREELINE :
- case OBJ_FREEFILL :
- case OBJ_SPLNLINE :
- case OBJ_SPLNFILL :
- case OBJ_PATHPOLY :
- case OBJ_PATHPLIN :
- {
- if ( pList && ( pList->GetCount() > nC ) )
- {
- bValidGluePoint = sal_True;
- nId = (sal_Int32)((*pList)[ (sal_uInt16)nC].GetId() + 3 );
- }
- else
- {
- sal_Bool bNotFound = sal_True;
-
- PolyPolygon aPolyPoly( EscherPropertyContainer::GetPolyPolygon( aXShape ) );
- sal_uInt16 k, j, nPolySize = aPolyPoly.Count();
- if ( nPolySize )
- {
- sal_uInt32 nPointCount = 0;
- Rectangle aBoundRect( aPolyPoly.GetBoundRect() );
- if ( aBoundRect.GetWidth() && aBoundRect.GetHeight() )
- {
- for ( k = 0; bNotFound && ( k < nPolySize ); k++ )
- {
- const Polygon& rPolygon = aPolyPoly.GetObject( k );
- for ( j = 0; bNotFound && ( j < rPolygon.GetSize() ); j++ )
- {
- PolyFlags eFlags = rPolygon.GetFlags( j );
- if ( eFlags == POLY_NORMAL )
- {
- if ( nC == nPointCount )
- {
- const Point& rPoint = rPolygon.GetPoint( j );
- double fXRel = rPoint.X() - aBoundRect.Left();
- double fYRel = rPoint.Y() - aBoundRect.Top();
- sal_Int32 nWidth = aBoundRect.GetWidth();
- if ( !nWidth )
- nWidth = 1;
- sal_Int32 nHeight= aBoundRect.GetHeight();
- if ( !nHeight )
- nHeight = 1;
- fXRel /= (double)nWidth;
- fXRel *= 10000;
- fYRel /= (double)nHeight;
- fYRel *= 10000;
- aGluePoint.SetPos( Point( (sal_Int32)fXRel, (sal_Int32)fYRel ) );
- aGluePoint.SetPercent( sal_True );
- aGluePoint.SetAlign( SDRVERTALIGN_TOP | SDRHORZALIGN_LEFT );
- aGluePoint.SetEscDir( SDRESC_SMART );
- nId = (sal_Int32)((*pList)[ pList->Insert( aGluePoint ) ].GetId() + 3 );
- bNotFound = sal_False;
- }
- nPointCount++;
- }
- }
- }
- }
- }
- if ( !bNotFound )
- {
- bValidGluePoint = sal_True;
- }
- }
- }
- break;
-
- case OBJ_CUSTOMSHAPE :
- {
- SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pO)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
- const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
- const rtl::OUString sGluePointType( RTL_CONSTASCII_USTRINGPARAM ( "GluePointType" ) );
- sal_Int16 nGluePointType = EnhancedCustomShapeGluePointType::SEGMENTS;
- com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sPath, sGluePointType );
- if ( pAny )
- *pAny >>= nGluePointType;
- else
- {
- const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
- rtl::OUString sShapeType;
- pAny = aGeometryItem.GetPropertyValueByName( sType );
- if ( pAny )
- *pAny >>= sShapeType;
- MSO_SPT eSpType = EnhancedCustomShapeTypeNames::Get( sShapeType );
- nGluePointType = GetCustomShapeConnectionTypeDefault( eSpType );
- }
- if ( nGluePointType == EnhancedCustomShapeGluePointType::CUSTOM )
- {
- if ( pList && ( pList->GetCount() > nC ) )
- {
- bValidGluePoint = sal_True;
- nId = (sal_Int32)((*pList)[ (sal_uInt16)nC].GetId() + 3 );
- }
- }
- else if ( nGluePointType == EnhancedCustomShapeGluePointType::RECT )
- {
- if ( nC & 1 )
- {
- if ( nSpFlags & SP_FFLIPH )
- nC ^= 2; // 1 <-> 3
- }
- else
- {
- if ( nSpFlags & SP_FFLIPV )
- nC ^= 1; // 0 <-> 2
- }
- switch( nC )
- {
- case 0 :
- nId = 0; // SDRVERTALIGN_TOP;
- break;
- case 1 :
- nId = 3; // SDRHORZALIGN_RIGHT;
- break;
- case 2 :
- nId = 2; // SDRVERTALIGN_BOTTOM;
- break;
- case 3 :
- nId = 1; // SDRHORZALIGN_LEFT;
- break;
- }
- if ( nId <= 3 )
- bValidGluePoint = sal_True;
- }
- else if ( nGluePointType == EnhancedCustomShapeGluePointType::SEGMENTS )
- {
- const rtl::OUString sSegments( RTL_CONSTASCII_USTRINGPARAM ( "Segments" ) );
- const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
-
- sal_uInt32 k, nPt = nC;
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
- pAny = aGeometryItem.GetPropertyValueByName( sPath, sSegments );
- if ( pAny )
- {
- if ( *pAny >>= aSegments )
- {
- for ( nPt = 0, k = 1; nC && ( k < (sal_uInt32)aSegments.getLength() ); k++ )
- {
- sal_Int16 j, nCnt2 = aSegments[ k ].Count;
- if ( aSegments[ k ].Command != EnhancedCustomShapeSegmentCommand::UNKNOWN )
- {
- for ( j = 0; nC && ( j < nCnt2 ); j++ )
- {
- switch( aSegments[ k ].Command )
- {
- case EnhancedCustomShapeSegmentCommand::ENDSUBPATH :
- case EnhancedCustomShapeSegmentCommand::CLOSESUBPATH :
- case EnhancedCustomShapeSegmentCommand::LINETO :
- case EnhancedCustomShapeSegmentCommand::MOVETO :
- {
- nC--;
- nPt++;
- }
- break;
- case EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX :
- case EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY :
- break;
-
- case EnhancedCustomShapeSegmentCommand::CURVETO :
- {
- nC--;
- nPt += 3;
- }
- break;
-
- case EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO :
- case EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE :
- {
- nC--;
- nPt += 3;
- }
- break;
- case EnhancedCustomShapeSegmentCommand::ARCTO :
- case EnhancedCustomShapeSegmentCommand::ARC :
- case EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO :
- case EnhancedCustomShapeSegmentCommand::CLOCKWISEARC :
- {
- nC--;
- nPt += 4;
- }
- break;
- }
- }
- }
- }
- }
- }
- pAny = aGeometryItem.GetPropertyValueByName( sPath, sCoordinates );
- if ( pAny )
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
- *pAny >>= aCoordinates;
- if ( nPt < (sal_uInt32)aCoordinates.getLength() )
- {
- nId = 4;
- com::sun::star::drawing::EnhancedCustomShapeParameterPair& rPara = aCoordinates[ nPt ];
- sal_Int32 nX = 0, nY = 0;
- if ( ( rPara.First.Value >>= nX ) && ( rPara.Second.Value >>= nY ) )
- {
- const rtl::OUString sGluePoints( RTL_CONSTASCII_USTRINGPARAM ( "GluePoints" ) );
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aGluePoints;
- pAny = aGeometryItem.GetPropertyValueByName( sPath, sGluePoints );
- if ( pAny )
- *pAny >>= aGluePoints;
- sal_Int32 nGluePoints = aGluePoints.getLength();
- aGluePoints.realloc( nGluePoints + 1 );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ nGluePoints ].First, nX );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ nGluePoints ].Second, nY );
- PropertyValue aProp;
- aProp.Name = sGluePoints;
- aProp.Value <<= aGluePoints;
- aGeometryItem.SetPropertyValue( sPath, aProp );
- bValidGluePoint = sal_True;
- ((SdrObjCustomShape*)pO)->SetMergedItem( aGeometryItem );
- SdrGluePointList* pLst = pO->ForceGluePointList();
- if ( pLst->GetCount() > nGluePoints )
- nId = (sal_Int32)((*pLst)[ (sal_uInt16)nGluePoints ].GetId() + 3 );
- }
- }
- }
- }
- }
- break;
- }
- if ( bValidGluePoint )
- {
- Reference< XPropertySet > xPropSet( aXConnector, UNO_QUERY );
- if ( xPropSet.is() )
- {
- if ( nN )
- {
- String aPropName( RTL_CONSTASCII_USTRINGPARAM( "EndShape" ) );
- aAny <<= aXShape;
- SetPropValue( aAny, xPropSet, aPropName, sal_True );
- aPropName = String( RTL_CONSTASCII_USTRINGPARAM( "EndGluePointIndex" ) );
- aAny <<= nId;
- SetPropValue( aAny, xPropSet, aPropName, sal_True );
- }
- else
- {
- String aPropName( RTL_CONSTASCII_USTRINGPARAM( "StartShape" ) );
- aAny <<= aXShape;
- SetPropValue( aAny, xPropSet, aPropName, sal_True );
- aPropName = String( RTL_CONSTASCII_USTRINGPARAM( "StartGluePointIndex" ) );
- aAny <<= nId;
- SetPropValue( aAny, xPropSet, aPropName, sal_True );
- }
-
- // Not sure what this is good for, repaint or broadcast of object change.
- //( Thus i am adding repaint here
- pO->SetChanged();
- pO->BroadcastObjectChange();
- }
- }
- }
- }
- }
- }
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-static basegfx::B2DPolygon GetLineArrow( const sal_Int32 nLineWidth, const MSO_LineEnd eLineEnd,
- const MSO_LineEndWidth eLineWidth, const MSO_LineEndLength eLineLenght,
- sal_Int32& rnArrowWidth, sal_Bool& rbArrowCenter,
- String& rsArrowName, sal_Bool bScaleArrow )
-{
- basegfx::B2DPolygon aRetval;
- double fLineWidth = nLineWidth < 70 ? 70.0 : nLineWidth;
- double fLenghtMul, fWidthMul;
- sal_Int32 nLineNumber;
- switch( eLineLenght )
- {
- default :
- case mso_lineMediumLenArrow : fLenghtMul = 3.0; nLineNumber = 2; break;
- case mso_lineShortArrow : fLenghtMul = 2.0; nLineNumber = 1; break;
- case mso_lineLongArrow : fLenghtMul = 5.0; nLineNumber = 3; break;
- }
- switch( eLineWidth )
- {
- default :
- case mso_lineMediumWidthArrow : fWidthMul = 3.0; nLineNumber += 3; break;
- case mso_lineNarrowArrow : fWidthMul = 2.0; break;
- case mso_lineWideArrow : fWidthMul = 5.0; nLineNumber += 6; break;
- }
-
- if ( bScaleArrow ) // #i33630 arrows imported from Word are too big
- {
- fWidthMul /= 1.75;
- fLenghtMul/= 1.75;
- }
-
- rbArrowCenter = sal_False;
- switch ( eLineEnd )
- {
- case mso_lineArrowEnd :
- {
- basegfx::B2DPolygon aTriangle;
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50, 0.0 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth, fLenghtMul * fLineWidth ));
- aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth ));
- aTriangle.setClosed(true);
- aRetval = aTriangle;
- rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowEnd " ), RTL_TEXTENCODING_UTF8 );
- }
- break;
-
- case mso_lineArrowOpenEnd :
- {
- switch( eLineLenght )
- {
- default :
- case mso_lineMediumLenArrow : fLenghtMul = 4.5; break;
- case mso_lineShortArrow : fLenghtMul = 3.5; break;
- case mso_lineLongArrow : fLenghtMul = 6.0; break;
- }
- switch( eLineWidth )
- {
- default :
- case mso_lineMediumWidthArrow : fWidthMul = 4.5; break;
- case mso_lineNarrowArrow : fWidthMul = 3.5; break;
- case mso_lineWideArrow : fWidthMul = 6.0; break;
- }
- basegfx::B2DPolygon aTriangle;
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth, fLenghtMul * fLineWidth * 0.91 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.85, fLenghtMul * fLineWidth ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50, fLenghtMul * fLineWidth * 0.36 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.15, fLenghtMul * fLineWidth ));
- aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth * 0.91 ));
- aTriangle.setClosed(true);
- aRetval = aTriangle;
- rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowOpenEnd " ), RTL_TEXTENCODING_UTF8 );
- }
- break;
- case mso_lineArrowStealthEnd :
- {
- basegfx::B2DPolygon aTriangle;
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth , fLenghtMul * fLineWidth ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , fLenghtMul * fLineWidth * 0.60 ));
- aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth ));
- aTriangle.setClosed(true);
- aRetval = aTriangle;
- rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowStealthEnd " ), RTL_TEXTENCODING_UTF8 );
- }
- break;
- case mso_lineArrowDiamondEnd :
- {
- basegfx::B2DPolygon aTriangle;
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth , fLenghtMul * fLineWidth * 0.50 ));
- aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , fLenghtMul * fLineWidth ));
- aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth * 0.50 ));
- aTriangle.setClosed(true);
- aRetval = aTriangle;
- rbArrowCenter = sal_True;
- rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowDiamondEnd " ), RTL_TEXTENCODING_UTF8 );
- }
- break;
- case mso_lineArrowOvalEnd :
- {
- aRetval = XPolygon( Point( (sal_Int32)( fWidthMul * fLineWidth * 0.50 ), 0 ),
- (sal_Int32)( fWidthMul * fLineWidth * 0.50 ),
- (sal_Int32)( fLenghtMul * fLineWidth * 0.50 ), 0, 3600 ).getB2DPolygon();
- rbArrowCenter = sal_True;
- rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowOvalEnd " ), RTL_TEXTENCODING_UTF8 );
- }
- break;
- default: break;
- }
- rsArrowName.Append( String::CreateFromInt32( nLineNumber ) );
- rnArrowWidth = (sal_Int32)( fLineWidth * fWidthMul );
-
- return aRetval;
-}
-
-void DffPropertyReader::ApplyLineAttributes( SfxItemSet& rSet, const MSO_SPT eShapeType ) const // #i28269#
-{
- UINT32 nLineFlags(GetPropertyValue( DFF_Prop_fNoLineDrawDash ));
-
- if(!IsHardAttribute( DFF_Prop_fLine ) && !IsCustomShapeStrokedByDefault( eShapeType ))
- {
- nLineFlags &= ~0x08;
- }
-
- if ( nLineFlags & 8 )
- {
- // Linienattribute
- sal_Int32 nLineWidth = (INT32)GetPropertyValue( DFF_Prop_lineWidth, 9525 );
-
- MSO_LineDashing eLineDashing = (MSO_LineDashing)GetPropertyValue( DFF_Prop_lineDashing, mso_lineSolid );
- if ( eLineDashing == mso_lineSolid )
- rSet.Put(XLineStyleItem( XLINE_SOLID ) );
- else
- {
-// MSO_LineCap eLineCap = (MSO_LineCap)GetPropertyValue( DFF_Prop_lineEndCapStyle, mso_lineEndCapSquare );
-
- XDashStyle eDash = XDASH_RECT;
- sal_uInt16 nDots = 1;
- sal_uInt32 nDotLen = nLineWidth / 360;
- sal_uInt16 nDashes = 0;
- sal_uInt32 nDashLen = ( 8 * nLineWidth ) / 360;
- sal_uInt32 nDistance = ( 3 * nLineWidth ) / 360;;
-
- switch ( eLineDashing )
- {
- default:
- case mso_lineDotSys :
- {
- nDots = 1;
- nDashes = 0;
- nDistance = nDotLen;
- }
- break;
-
- case mso_lineDashGEL :
- {
- nDots = 0;
- nDashes = 1;
- nDashLen = ( 4 * nLineWidth ) / 360;
- }
- break;
-
- case mso_lineDashDotGEL :
- {
- nDots = 1;
- nDashes = 1;
- nDashLen = ( 4 * nLineWidth ) / 360;
- }
- break;
-
- case mso_lineLongDashGEL :
- {
- nDots = 0;
- nDashes = 1;
- }
- break;
-
- case mso_lineLongDashDotGEL :
- {
- nDots = 1;
- nDashes = 1;
- }
- break;
-
- case mso_lineLongDashDotDotGEL:
- {
- nDots = 2;
- nDashes = 1;
- }
- break;
- }
-
- rSet.Put( XLineDashItem( String(), XDash( eDash, nDots, nDotLen, nDashes, nDashLen, nDistance ) ) );
- rSet.Put( XLineStyleItem( XLINE_DASH ) );
- }
- rSet.Put( XLineColorItem( String(), rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_lineColor ), DFF_Prop_lineColor ) ) );
- if ( IsProperty( DFF_Prop_lineOpacity ) )
- {
- double nTrans = GetPropertyValue(DFF_Prop_lineOpacity, 0x10000);
- nTrans = (nTrans * 100) / 65536;
- rSet.Put(XLineTransparenceItem(
- sal_uInt16(100 - ::rtl::math::round(nTrans))));
- }
-
- rManager.ScaleEmu( nLineWidth );
- rSet.Put( XLineWidthItem( nLineWidth ) );
-
- // SJ: LineJoint (setting each time a line is set, because our internal joint type has another default)
- MSO_LineJoin eLineJointDefault = mso_lineJoinMiter;
- if ( eShapeType == mso_sptMin )
- eLineJointDefault = mso_lineJoinRound;
- MSO_LineJoin eLineJoint = (MSO_LineJoin)GetPropertyValue( DFF_Prop_lineJoinStyle, eLineJointDefault );
- XLineJoint eXLineJoint( XLINEJOINT_MITER );
- if ( eLineJoint == mso_lineJoinBevel )
- eXLineJoint = XLINEJOINT_BEVEL;
- else if ( eLineJoint == mso_lineJoinRound )
- eXLineJoint = XLINEJOINT_ROUND;
- rSet.Put( XLineJointItem( eXLineJoint ) );
-
- if ( nLineFlags & 0x10 )
- {
- sal_Bool bScaleArrows = rManager.pSdrModel->GetScaleUnit() == MAP_TWIP;
- ///////////////
- // LineStart //
- ///////////////
- if ( IsProperty( DFF_Prop_lineStartArrowhead ) )
- {
- MSO_LineEnd eLineEnd = (MSO_LineEnd)GetPropertyValue( DFF_Prop_lineStartArrowhead );
- MSO_LineEndWidth eWidth = (MSO_LineEndWidth)GetPropertyValue( DFF_Prop_lineStartArrowWidth, mso_lineMediumWidthArrow );
- MSO_LineEndLength eLenght = (MSO_LineEndLength)GetPropertyValue( DFF_Prop_lineStartArrowLength, mso_lineMediumLenArrow );
-
- sal_Int32 nArrowWidth;
- sal_Bool bArrowCenter;
- String aArrowName;
- basegfx::B2DPolygon aPoly(GetLineArrow( nLineWidth, eLineEnd, eWidth, eLenght, nArrowWidth, bArrowCenter, aArrowName, bScaleArrows ));
-
- rSet.Put( XLineStartWidthItem( nArrowWidth ) );
- rSet.Put( XLineStartItem( aArrowName, basegfx::B2DPolyPolygon(aPoly) ) );
- rSet.Put( XLineStartCenterItem( bArrowCenter ) );
- }
- /////////////
- // LineEnd //
- /////////////
- if ( IsProperty( DFF_Prop_lineEndArrowhead ) )
- {
- MSO_LineEnd eLineEnd = (MSO_LineEnd)GetPropertyValue( DFF_Prop_lineEndArrowhead );
- MSO_LineEndWidth eWidth = (MSO_LineEndWidth)GetPropertyValue( DFF_Prop_lineEndArrowWidth, mso_lineMediumWidthArrow );
- MSO_LineEndLength eLenght = (MSO_LineEndLength)GetPropertyValue( DFF_Prop_lineEndArrowLength, mso_lineMediumLenArrow );
-
- sal_Int32 nArrowWidth;
- sal_Bool bArrowCenter;
- String aArrowName;
- basegfx::B2DPolygon aPoly(GetLineArrow( nLineWidth, eLineEnd, eWidth, eLenght, nArrowWidth, bArrowCenter, aArrowName, bScaleArrows ));
-
- rSet.Put( XLineEndWidthItem( nArrowWidth ) );
- rSet.Put( XLineEndItem( aArrowName, basegfx::B2DPolyPolygon(aPoly) ) );
- rSet.Put( XLineEndCenterItem( bArrowCenter ) );
- }
- if ( IsProperty( DFF_Prop_lineEndCapStyle ) )
- {
- MSO_LineCap eLineCap = (MSO_LineCap)GetPropertyValue( DFF_Prop_lineEndCapStyle );
- const SfxPoolItem* pPoolItem = NULL;
- if ( rSet.GetItemState( XATTR_LINEDASH, FALSE, &pPoolItem ) == SFX_ITEM_SET )
- {
- XDashStyle eNewStyle = XDASH_RECT;
- if ( eLineCap == mso_lineEndCapRound )
- eNewStyle = XDASH_ROUND;
- const XDash& rOldDash = ( (const XLineDashItem*)pPoolItem )->GetDashValue();
- if ( rOldDash.GetDashStyle() != eNewStyle )
- {
- XDash aNew( rOldDash );
- aNew.SetDashStyle( eNewStyle );
- rSet.Put( XLineDashItem( XubString(), aNew ) );
- }
- }
- }
- }
- }
- else
- rSet.Put( XLineStyleItem( XLINE_NONE ) );
-}
-
-
-void DffPropertyReader::ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT eShapeType ) const
-{
- UINT32 nFillFlags(GetPropertyValue( DFF_Prop_fNoFillHitTest ));
-
- if(!IsHardAttribute( DFF_Prop_fFilled ) && !IsCustomShapeFilledByDefault( eShapeType ))
- {
- nFillFlags &= ~0x10;
- }
-
- if ( nFillFlags & 0x10 )
- {
- MSO_FillType eMSO_FillType = (MSO_FillType)GetPropertyValue( DFF_Prop_fillType, mso_fillSolid );
- XFillStyle eXFill = XFILL_NONE;
- switch( eMSO_FillType )
- {
- case mso_fillSolid : // Fill with a solid color
- eXFill = XFILL_SOLID;
- break;
- case mso_fillPattern : // Fill with a pattern (bitmap)
- case mso_fillTexture : // A texture (pattern with its own color map)
- case mso_fillPicture : // Center a picture in the shape
- eXFill = XFILL_BITMAP;
- break;
- case mso_fillShadeShape : // Shade from shape outline to end point
- case mso_fillShade : // Shade from start to end points
- case mso_fillShadeCenter : // Shade from bounding rectangle to end point
- case mso_fillShadeScale : // Similar to mso_fillShade, but the fillAngle
- case mso_fillShadeTitle : // special type - shade to title --- for PP
- eXFill = XFILL_GRADIENT;
- break;
-// case mso_fillBackground : // Use the background fill color/pattern
- default: break;
- }
- rSet.Put( XFillStyleItem( eXFill ) );
-
- if (IsProperty(DFF_Prop_fillOpacity))
- {
- double nTrans = GetPropertyValue(DFF_Prop_fillOpacity);
- nTrans = (nTrans * 100) / 65536;
- rSet.Put(XFillTransparenceItem(
- sal_uInt16(100 - ::rtl::math::round(nTrans))));
- }
-
- if ( eXFill == XFILL_GRADIENT )
- {
- sal_Int32 nAngle = 3600 - ( ( Fix16ToAngle( GetPropertyValue( DFF_Prop_fillAngle, 0 ) ) + 5 ) / 10 );
-
- // Rotationswinkel in Bereich zwingen
- while ( nAngle >= 3600 )
- nAngle -= 3600;
- while ( nAngle < 0 )
- nAngle += 3600;
-
- sal_Int32 nFocus = GetPropertyValue( DFF_Prop_fillFocus, 0 );
- XGradientStyle eGrad = XGRAD_LINEAR;
- sal_Int32 nChgColors = 0;
-
- if ( !nAngle )
- nChgColors ^= 1;
-
- if ( !nFocus )
- nChgColors ^= 1;
- else if ( nFocus < 0 ) // Bei negativem Focus sind die Farben zu tauschen
- {
- nFocus =- nFocus;
- nChgColors ^= 1;
- }
- if( nFocus > 40 && nFocus < 60 )
- {
- eGrad = XGRAD_AXIAL; // Besser gehts leider nicht
- nChgColors ^= 1;
- }
- USHORT nFocusX = (USHORT)nFocus;
- USHORT nFocusY = (USHORT)nFocus;
-
- switch( eMSO_FillType )
- {
- case mso_fillShadeShape :
- {
- eGrad = XGRAD_RECT;
- nFocusY = nFocusX = 50;
- nChgColors ^= 1;
- }
- break;
- case mso_fillShadeCenter :
- {
- eGrad = XGRAD_RECT;
- nFocusX = ( IsProperty( DFF_Prop_fillToRight ) ) ? 100 : 0;
- nFocusY = ( IsProperty( DFF_Prop_fillToBottom ) ) ? 100 : 0;
- nChgColors ^= 1;
- }
- break;
- default: break;
- }
- Color aCol1( rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillColor, COL_WHITE ), DFF_Prop_fillColor ) );
- Color aCol2( rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillBackColor, COL_WHITE ), DFF_Prop_fillBackColor ) );
-
- if ( nChgColors )
- {
- Color aZwi( aCol1 );
- aCol1 = aCol2;
- aCol2 = aZwi;
- }
- if ( ( eShapeType == mso_sptEllipse ) && ( eMSO_FillType == mso_fillShadeShape ) )
- eGrad = XGRAD_ELLIPTICAL;
-
- XGradient aGrad( aCol2, aCol1, eGrad, nAngle, nFocusX, nFocusY );
- aGrad.SetStartIntens( 100 );
- aGrad.SetEndIntens( 100 );
- rSet.Put( XFillGradientItem( String(), aGrad ) );
- }
- else if ( eXFill == XFILL_BITMAP )
- {
- if( IsProperty( DFF_Prop_fillBlip ) )
- {
- Graphic aGraf;
- // first try to get BLIP from cache
- BOOL bOK = rManager.GetBLIP( GetPropertyValue( DFF_Prop_fillBlip ), aGraf, NULL );
- // then try directly from stream (i.e. Excel chart hatches/bitmaps)
- if ( !bOK )
- bOK = SeekToContent( DFF_Prop_fillBlip, rIn ) && rManager.GetBLIPDirect( rIn, aGraf, NULL );
- if ( bOK )
- {
- Bitmap aBmp( aGraf.GetBitmap() );
-
- if ( eMSO_FillType == mso_fillPattern )
- {
- Color aCol1( COL_WHITE ), aCol2( COL_WHITE );
- if ( IsProperty( DFF_Prop_fillColor ) )
- aCol1 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillColor ), DFF_Prop_fillColor );
- if ( IsProperty( DFF_Prop_fillBackColor ) )
- aCol2 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillBackColor ), DFF_Prop_fillBackColor );
-
- XOBitmap aXOBitmap;
-
- // Bitmap einsetzen
- aXOBitmap.SetBitmap( aBmp );
- aXOBitmap.SetBitmapType( XBITMAP_IMPORT );
-
- if( aBmp.GetSizePixel().Width() == 8 && aBmp.GetSizePixel().Height() == 8 && aBmp.GetColorCount() == 2)
- {
- aXOBitmap.Bitmap2Array();
- aXOBitmap.SetBitmapType( XBITMAP_8X8 );
- aXOBitmap.SetPixelSize( aBmp.GetSizePixel() );
-
- if( aXOBitmap.GetBackgroundColor() == COL_BLACK )
- {
- aXOBitmap.SetPixelColor( aCol1 );
- aXOBitmap.SetBackgroundColor( aCol2 );
- }
- else
- {
- aXOBitmap.SetPixelColor( aCol2 );
- aXOBitmap.SetBackgroundColor( aCol1 );
- }
- }
- rSet.Put( XFillBitmapItem( String(), aXOBitmap ) );
- }
- else if ( eMSO_FillType == mso_fillTexture )
- {
- XOBitmap aXBmp( aBmp, XBITMAP_STRETCH );
- rSet.Put( XFillBmpTileItem( sal_True ) );
- rSet.Put( XFillBitmapItem( String(), aXBmp ) );
- rSet.Put( XFillBmpSizeXItem( GetPropertyValue( DFF_Prop_fillWidth, 0 ) / 360 ) );
- rSet.Put( XFillBmpSizeYItem( GetPropertyValue( DFF_Prop_fillHeight, 0 ) / 360 ) );
- rSet.Put( XFillBmpSizeLogItem( sal_True ) );
- }
- else
- {
- XOBitmap aXBmp( aBmp, XBITMAP_STRETCH );
- rSet.Put( XFillBitmapItem( String(), aXBmp ) );
- rSet.Put( XFillBmpTileItem( sal_False ) );
- }
- }
- }
- }
- }
- else
- rSet.Put( XFillStyleItem( XFILL_NONE ) );
-}
-
-void DffPropertyReader::ApplyCustomShapeTextAttributes( SfxItemSet& rSet ) const
-{
-// sal_uInt32 nTextFlags = aTextObj.GetTextFlags();
- sal_Bool bVerticalText = sal_False;
- sal_Int32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, 25 * 3600 ) / 360; // 0.25 cm (emu)
- sal_Int32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, 25 * 3600 ) / 360; // 0.25 cm (emu)
- sal_Int32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, 13 * 3600 ) / 360; // 0.13 cm (emu)
- sal_Int32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, 13 * 3600 ) /360; // 0.13 cm (emu)
-
- SdrTextVertAdjust eTVA;
- SdrTextHorzAdjust eTHA;
-
- if ( IsProperty( DFF_Prop_txflTextFlow ) )
- {
- MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
- switch( eTextFlow )
- {
- case mso_txflTtoBA : /* #68110# */ // Top to Bottom @-font, oben -> unten
- case mso_txflTtoBN : // Top to Bottom non-@, oben -> unten
- case mso_txflVertN : // Vertical, non-@, oben -> unten
- bVerticalText = sal_True; // nTextRotationAngle += 27000;
- break;
- default: break;
- }
- }
- sal_Int32 nFontDirection = GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 );
- if ( ( nFontDirection == 1 ) || ( nFontDirection == 3 ) )
- bVerticalText = !bVerticalText;
-
- if ( bVerticalText )
- {
- eTVA = SDRTEXTVERTADJUST_BLOCK;
- eTHA = SDRTEXTHORZADJUST_CENTER;
-
- // Textverankerung lesen
- MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
-
- switch( eTextAnchor )
- {
- case mso_anchorTop:
- case mso_anchorTopCentered:
- case mso_anchorTopBaseline:
- case mso_anchorTopCenteredBaseline:
- eTHA = SDRTEXTHORZADJUST_RIGHT;
- break;
-
- case mso_anchorMiddle :
- case mso_anchorMiddleCentered:
- eTHA = SDRTEXTHORZADJUST_CENTER;
- break;
-
- case mso_anchorBottom:
- case mso_anchorBottomCentered:
- case mso_anchorBottomBaseline:
- case mso_anchorBottomCenteredBaseline:
- eTHA = SDRTEXTHORZADJUST_LEFT;
- break;
- }
- // if there is a 100% use of following attributes, the textbox can been aligned also in vertical direction
- switch ( eTextAnchor )
- {
- case mso_anchorTopCentered :
- case mso_anchorMiddleCentered :
- case mso_anchorBottomCentered :
- case mso_anchorTopCenteredBaseline:
- case mso_anchorBottomCenteredBaseline:
- eTVA = SDRTEXTVERTADJUST_CENTER;
- break;
-
- default :
- eTVA = SDRTEXTVERTADJUST_TOP;
- break;
- }
- }
- else
- {
- eTVA = SDRTEXTVERTADJUST_CENTER;
- eTHA = SDRTEXTHORZADJUST_BLOCK;
-
- // Textverankerung lesen
- MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
-
- switch( eTextAnchor )
- {
- case mso_anchorTop:
- case mso_anchorTopCentered:
- case mso_anchorTopBaseline:
- case mso_anchorTopCenteredBaseline:
- eTVA = SDRTEXTVERTADJUST_TOP;
- break;
-
- case mso_anchorMiddle :
- case mso_anchorMiddleCentered:
- eTVA = SDRTEXTVERTADJUST_CENTER;
- break;
-
- case mso_anchorBottom:
- case mso_anchorBottomCentered:
- case mso_anchorBottomBaseline:
- case mso_anchorBottomCenteredBaseline:
- eTVA = SDRTEXTVERTADJUST_BOTTOM;
- break;
- }
- // if there is a 100% usage of following attributes, the textbox can be aligned also in horizontal direction
- switch ( eTextAnchor )
- {
- case mso_anchorTopCentered :
- case mso_anchorMiddleCentered :
- case mso_anchorBottomCentered :
- case mso_anchorTopCenteredBaseline:
- case mso_anchorBottomCenteredBaseline:
- eTHA = SDRTEXTHORZADJUST_CENTER; // the text has to be displayed using the full width;
- break;
-
- default :
- eTHA = SDRTEXTHORZADJUST_LEFT;
- break;
- }
- }
- rSet.Put( SvxFrameDirectionItem( bVerticalText ? FRMDIR_VERT_TOP_RIGHT : FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
-
- rSet.Put( SdrTextVertAdjustItem( eTVA ) );
- rSet.Put( SdrTextHorzAdjustItem( eTHA ) );
-
- rSet.Put( SdrTextLeftDistItem( nTextLeft ) );
- rSet.Put( SdrTextRightDistItem( nTextRight ) );
- rSet.Put( SdrTextUpperDistItem( nTextTop ) );
- rSet.Put( SdrTextLowerDistItem( nTextBottom ) );
-
- rSet.Put( SdrTextWordWrapItem( (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) != mso_wrapNone ? sal_True : sal_False ) );
- rSet.Put( SdrTextAutoGrowHeightItem( ( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) != 0 ) );
-
-// rSet.Put( SdrTextAutoGrowWidthItem( (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) != mso_wrapNone ? sal_False : sal_True ) );
-// rSet.Put( SdrTextAutoGrowHeightItem( ( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) != 0 ) );
-}
-
-void DffPropertyReader::ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT eShapeType, const sal_uInt32 /* nShapeFlags */ ) const
-{
-
- sal_uInt32 nAdjustmentsWhichNeedsToBeConverted = 0;
-
- ///////////////////////////////////////
- // creating SdrCustomShapeGeometryItem //
- ///////////////////////////////////////
- typedef uno::Sequence< beans::PropertyValue > PropSeq;
- typedef std::vector< beans::PropertyValue > PropVec;
- typedef PropVec::iterator PropVecIter;
- PropVecIter aIter;
- PropVecIter aEnd;
-
-
- // aPropVec will be filled with all PropertyValues
- PropVec aPropVec;
- PropertyValue aProp;
-
- /////////////////////////////////////////////////////////////////////
- // "Type" property, including the predefined CustomShape type name //
- /////////////////////////////////////////////////////////////////////
- const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
- aProp.Name = sType;
- aProp.Value <<= EnhancedCustomShapeTypeNames::Get( eShapeType );
- aPropVec.push_back( aProp );
-
-/*
- /////////////////
- // "MirroredX" //
- /////////////////
- if ( nShapeFlags & SP_FFLIPH )
- {
- const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
- sal_Bool bMirroredX = sal_True;
- aProp.Name = sMirroredX;
- aProp.Value <<= bMirroredX;
- aPropVec.push_back( aProp );
- }
- /////////////////
- // "MirroredY" //
- /////////////////
- if ( nShapeFlags & SP_FFLIPV )
- {
- const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
- sal_Bool bMirroredY = sal_True;
- aProp.Name = sMirroredY;
- aProp.Value <<= bMirroredY;
- aPropVec.push_back( aProp );
- }
-*/
- ///////////////
- // "ViewBox" //
- ///////////////
-
- sal_Int32 nCoordWidth = 21600; // needed to replace handle type center with absolute value
- sal_Int32 nCoordHeight= 21600;
- if ( IsProperty( DFF_Prop_geoLeft ) || IsProperty( DFF_Prop_geoTop ) || IsProperty( DFF_Prop_geoRight ) || IsProperty( DFF_Prop_geoBottom ) )
- {
- com::sun::star::awt::Rectangle aViewBox;
- const rtl::OUString sViewBox( RTL_CONSTASCII_USTRINGPARAM ( "ViewBox" ) );
- aViewBox.X = GetPropertyValue( DFF_Prop_geoLeft, 0 );
- aViewBox.Y = GetPropertyValue( DFF_Prop_geoTop, 0 );
- aViewBox.Width = nCoordWidth = ((sal_Int32)GetPropertyValue( DFF_Prop_geoRight, 21600 ) ) - aViewBox.X;
- aViewBox.Height = nCoordHeight = ((sal_Int32)GetPropertyValue( DFF_Prop_geoBottom, 21600 ) ) - aViewBox.Y;
- aProp.Name = sViewBox;
- aProp.Value <<= aViewBox;
- aPropVec.push_back( aProp );
- }
- /////////////////////
- // TextRotateAngle //
- /////////////////////
- if ( IsProperty( DFF_Prop_txflTextFlow ) || IsProperty( DFF_Prop_cdirFont ) )
- {
- sal_Int32 nTextRotateAngle = 0;
- MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
-/* sal_Int32 nFontDirection = GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 ); */
-
- if ( eTextFlow == mso_txflBtoT ) // Bottom to Top non-@, unten -> oben
- nTextRotateAngle += 90;
- switch( GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 ) ) // SJ: mso_cdir90 and mso_cdir270 will be simulated by
- { // activating vertical writing for the text objects
- case mso_cdir90 :
- {
- if ( eTextFlow == mso_txflTtoBA )
- nTextRotateAngle -= 180;
- }
- break;
- case mso_cdir180: nTextRotateAngle -= 180; break;
- case mso_cdir270:
- {
- if ( eTextFlow != mso_txflTtoBA )
- nTextRotateAngle -= 180;
- }
- break;
- default: break;
- }
- if ( nTextRotateAngle )
- {
- double fTextRotateAngle = nTextRotateAngle;
- const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) );
- aProp.Name = sTextRotateAngle;
- aProp.Value <<= fTextRotateAngle;
- aPropVec.push_back( aProp );
- }
- }
- //////////////////////////////////////////
- // "Extrusion" PropertySequence element //
- //////////////////////////////////////////
- sal_Bool bExtrusionOn = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 8 ) != 0;
- if ( bExtrusionOn )
- {
- PropVec aExtrusionPropVec;
-
- // "Extrusion"
- const rtl::OUString sExtrusionOn( RTL_CONSTASCII_USTRINGPARAM ( "Extrusion" ) );
- aProp.Name = sExtrusionOn;
- aProp.Value <<= bExtrusionOn;
- aExtrusionPropVec.push_back( aProp );
-
- // "Brightness"
- if ( IsProperty( DFF_Prop_c3DAmbientIntensity ) )
- {
- const rtl::OUString sExtrusionBrightness( RTL_CONSTASCII_USTRINGPARAM ( "Brightness" ) );
- double fBrightness = (sal_Int32)GetPropertyValue( DFF_Prop_c3DAmbientIntensity );
- fBrightness /= 655.36;
- aProp.Name = sExtrusionBrightness;
- aProp.Value <<= fBrightness;
- aExtrusionPropVec.push_back( aProp );
- }
- // "Depth" in 1/100mm
- if ( IsProperty( DFF_Prop_c3DExtrudeBackward ) || IsProperty( DFF_Prop_c3DExtrudeForward ) )
- {
- const rtl::OUString sDepth( RTL_CONSTASCII_USTRINGPARAM ( "Depth" ) );
- double fBackDepth = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DExtrudeBackward, 1270 * 360 )) / 360.0;
- double fForeDepth = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DExtrudeForward ), 0 ) / 360.0;
- double fDepth = fBackDepth + fForeDepth;
- double fFraction = fDepth != 0.0 ? fForeDepth / fDepth : 0;
- EnhancedCustomShapeParameterPair aDepthParaPair;
- aDepthParaPair.First.Value <<= fDepth;
- aDepthParaPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
- aDepthParaPair.Second.Value <<= fFraction;
- aDepthParaPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
- aProp.Name = sDepth;
- aProp.Value <<= aDepthParaPair;
- aExtrusionPropVec.push_back( aProp );
- }
- // "Diffusion"
- if ( IsProperty( DFF_Prop_c3DDiffuseAmt ) )
- {
- const rtl::OUString sExtrusionDiffusion( RTL_CONSTASCII_USTRINGPARAM ( "Diffusion" ) );
- double fDiffusion = (sal_Int32)GetPropertyValue( DFF_Prop_c3DDiffuseAmt );
- fDiffusion /= 655.36;
- aProp.Name = sExtrusionDiffusion;
- aProp.Value <<= fDiffusion;
- aExtrusionPropVec.push_back( aProp );
- }
- // "NumberOfLineSegments"
- if ( IsProperty( DFF_Prop_c3DTolerance ) )
- {
- const rtl::OUString sExtrusionNumberOfLineSegments( RTL_CONSTASCII_USTRINGPARAM ( "NumberOfLineSegments" ) );
- aProp.Name = sExtrusionNumberOfLineSegments;
- aProp.Value <<= (sal_Int32)GetPropertyValue( DFF_Prop_c3DTolerance );
- aExtrusionPropVec.push_back( aProp );
- }
- // "LightFace"
- const rtl::OUString sExtrusionLightFace( RTL_CONSTASCII_USTRINGPARAM ( "LightFace" ) );
- sal_Bool bExtrusionLightFace = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 1 ) != 0;
- aProp.Name = sExtrusionLightFace;
- aProp.Value <<= bExtrusionLightFace;
- aExtrusionPropVec.push_back( aProp );
- // "FirstLightHarsh"
- const rtl::OUString sExtrusionFirstLightHarsh( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightHarsh" ) );
- sal_Bool bExtrusionFirstLightHarsh = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 2 ) != 0;
- aProp.Name = sExtrusionFirstLightHarsh;
- aProp.Value <<= bExtrusionFirstLightHarsh;
- aExtrusionPropVec.push_back( aProp );
- // "SecondLightHarsh"
- const rtl::OUString sExtrusionSecondLightHarsh( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightHarsh" ) );
- sal_Bool bExtrusionSecondLightHarsh = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 1 ) != 0;
- aProp.Name = sExtrusionSecondLightHarsh;
- aProp.Value <<= bExtrusionSecondLightHarsh;
- aExtrusionPropVec.push_back( aProp );
- // "FirstLightLevel"
- if ( IsProperty( DFF_Prop_c3DKeyIntensity ) )
- {
- const rtl::OUString sExtrusionFirstLightLevel( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightLevel" ) );
- double fFirstLightLevel = (sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyIntensity );
- fFirstLightLevel /= 655.36;
- aProp.Name = sExtrusionFirstLightLevel;
- aProp.Value <<= fFirstLightLevel;
- aExtrusionPropVec.push_back( aProp );
- }
- // "SecondLightLevel"
- if ( IsProperty( DFF_Prop_c3DFillIntensity ) )
- {
- const rtl::OUString sExtrusionSecondLightLevel( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightLevel" ) );
- double fSecondLightLevel = (sal_Int32)GetPropertyValue( DFF_Prop_c3DFillIntensity );
- fSecondLightLevel /= 655.36;
- aProp.Name = sExtrusionSecondLightLevel;
- aProp.Value <<= fSecondLightLevel;
- aExtrusionPropVec.push_back( aProp );
- }
- // "FirtstLightDirection"
- if ( IsProperty( DFF_Prop_c3DKeyX ) || IsProperty( DFF_Prop_c3DKeyY ) || IsProperty( DFF_Prop_c3DKeyZ ) )
- {
- double fLightX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyX, 50000 ));
- double fLightY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyY, 0 ));
- double fLightZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyZ, 10000 ));
- ::com::sun::star::drawing::Direction3D aExtrusionFirstLightDirection( fLightX, fLightY, fLightZ );
- const rtl::OUString sExtrusionFirstLightDirection( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightDirection" ) );
- aProp.Name = sExtrusionFirstLightDirection;
- aProp.Value <<= aExtrusionFirstLightDirection;
- aExtrusionPropVec.push_back( aProp );
- }
- // "SecondLightDirection"
- if ( IsProperty( DFF_Prop_c3DFillX ) || IsProperty( DFF_Prop_c3DFillY ) || IsProperty( DFF_Prop_c3DFillZ ) )
- {
- double fLight2X = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillX, (sal_uInt32)-50000 ));
- double fLight2Y = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillY, 0 ));
- double fLight2Z = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillZ, 10000 ));
- ::com::sun::star::drawing::Direction3D aExtrusionSecondLightDirection( fLight2X, fLight2Y, fLight2Z );
- const rtl::OUString sExtrusionSecondLightDirection( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightDirection" ) );
- aProp.Name = sExtrusionSecondLightDirection;
- aProp.Value <<= aExtrusionSecondLightDirection;
- aExtrusionPropVec.push_back( aProp );
- }
-
-/* LockRotationCenter, OrientationAngle and Orientation needs to be converted to use the properties AngleX, AngleY and RotationAngle instead.
- // "LockRotationCenter"
- const rtl::OUString sExtrusionLockRotationCenter( RTL_CONSTASCII_USTRINGPARAM ( "LockRotationCenter" ) );
- sal_Bool bExtrusionLockRotationCenter = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 16 ) != 0;
- aProp.Name = sExtrusionLockRotationCenter;
- aProp.Value <<= bExtrusionLockRotationCenter;
- aExtrusionPropVec.push_back( aProp );
-
- // "Orientation"
- if ( IsProperty( DFF_Prop_c3DRotationAxisX ) || IsProperty( DFF_Prop_c3DRotationAxisY ) || IsProperty( DFF_Prop_c3DRotationAxisZ ) )
- {
- double fRotX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisX, 100 ));
- double fRotY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisY, 0 ));
- double fRotZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisZ, 0 ));
- ::com::sun::star::drawing::Direction3D aExtrusionDirection( fRotX, fRotY, fRotZ );
- const rtl::OUString sExtrusionDirection( RTL_CONSTASCII_USTRINGPARAM ( "Orientation" ) );
- aProp.Name = sExtrusionDirection;
- aProp.Value <<= aExtrusionDirection;
- aExtrusionPropVec.push_back( aProp );
- }
- // "OrientationAngle" in Grad
- if ( IsProperty( DFF_Prop_c3DRotationAngle ) )
- {
- const rtl::OUString sExtrusionOrientationAngle( RTL_CONSTASCII_USTRINGPARAM ( "OrientationAngle" ) );
- double fOrientationAngle = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAngle )) / 65536.0;
- aProp.Name = sExtrusionOrientationAngle;
- aProp.Value <<= fOrientationAngle;
- aExtrusionPropVec.push_back( aProp );
- }
-*/
-
- // "Metal"
- const rtl::OUString sExtrusionMetal( RTL_CONSTASCII_USTRINGPARAM ( "Metal" ) );
- sal_Bool bExtrusionMetal = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 4 ) != 0;
- aProp.Name = sExtrusionMetal;
- aProp.Value <<= bExtrusionMetal;
- aExtrusionPropVec.push_back( aProp );
-// if ( IsProperty( DFF_Prop_c3DExtrudePlane ) )
-// {
-// UPS
-// }
- // "ShadeMode"
- if ( IsProperty( DFF_Prop_c3DRenderMode ) )
- {
- const rtl::OUString sExtrusionShadeMode( RTL_CONSTASCII_USTRINGPARAM ( "ShadeMode" ) );
- sal_uInt32 nExtrusionRenderMode = GetPropertyValue( DFF_Prop_c3DRenderMode );
- com::sun::star::drawing::ShadeMode eExtrusionShadeMode( com::sun::star::drawing::ShadeMode_FLAT );
- if ( nExtrusionRenderMode == mso_Wireframe )
- eExtrusionShadeMode = com::sun::star::drawing::ShadeMode_DRAFT;
-
- aProp.Name = sExtrusionShadeMode;
- aProp.Value <<= eExtrusionShadeMode;
- aExtrusionPropVec.push_back( aProp );
- }
- // "RotateAngle" in Grad
- if ( IsProperty( DFF_Prop_c3DXRotationAngle ) || IsProperty( DFF_Prop_c3DYRotationAngle ) )
- {
- const rtl::OUString sExtrusionAngle( RTL_CONSTASCII_USTRINGPARAM ( "RotateAngle" ) );
- double fAngleX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DXRotationAngle, 0 )) / 65536.0;
- double fAngleY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DYRotationAngle, 0 )) / 65536.0;
- EnhancedCustomShapeParameterPair aRotateAnglePair;
- aRotateAnglePair.First.Value <<= fAngleX;
- aRotateAnglePair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
- aRotateAnglePair.Second.Value <<= fAngleY;
- aRotateAnglePair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
- aProp.Name = sExtrusionAngle;
- aProp.Value <<= aRotateAnglePair;
- aExtrusionPropVec.push_back( aProp );
- }
-
- // "AutoRotationCenter"
- if ( ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 8 ) == 0 )
- {
- // "RotationCenter"
- if ( IsProperty( DFF_Prop_c3DRotationCenterX ) || IsProperty( DFF_Prop_c3DRotationCenterY ) || IsProperty( DFF_Prop_c3DRotationCenterZ ) )
- {
- ::com::sun::star::drawing::Direction3D aRotationCenter(
- (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterX, 0 )) / 360.0,
- (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterY, 0 )) / 360.0,
- (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterZ, 0 )) / 360.0 );
-
- const rtl::OUString sExtrusionRotationCenter( RTL_CONSTASCII_USTRINGPARAM ( "RotationCenter" ) );
- aProp.Name = sExtrusionRotationCenter;
- aProp.Value <<= aRotationCenter;
- aExtrusionPropVec.push_back( aProp );
- }
- }
- // "Shininess"
- if ( IsProperty( DFF_Prop_c3DShininess ) )
- {
- const rtl::OUString sExtrusionShininess( RTL_CONSTASCII_USTRINGPARAM ( "Shininess" ) );
- double fShininess = (sal_Int32)GetPropertyValue( DFF_Prop_c3DShininess );
- fShininess /= 655.36;
- aProp.Name = sExtrusionShininess;
- aProp.Value <<= fShininess;
- aExtrusionPropVec.push_back( aProp );
- }
- // "Skew"
- if ( IsProperty( DFF_Prop_c3DSkewAmount ) || IsProperty( DFF_Prop_c3DSkewAngle ) )
- {
- const rtl::OUString sExtrusionSkew( RTL_CONSTASCII_USTRINGPARAM ( "Skew" ) );
- double fSkewAmount = (sal_Int32)GetPropertyValue( DFF_Prop_c3DSkewAmount, 50 );
- double fSkewAngle = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DSkewAngle, sal::static_int_cast< UINT32 >(-135 * 65536) )) / 65536.0;
-
- EnhancedCustomShapeParameterPair aSkewPair;
- aSkewPair.First.Value <<= fSkewAmount;
- aSkewPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
- aSkewPair.Second.Value <<= fSkewAngle;
- aSkewPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
- aProp.Name = sExtrusionSkew;
- aProp.Value <<= aSkewPair;
- aExtrusionPropVec.push_back( aProp );
- }
- // "Specularity"
- if ( IsProperty( DFF_Prop_c3DSpecularAmt ) )
- {
- const rtl::OUString sExtrusionSpecularity( RTL_CONSTASCII_USTRINGPARAM ( "Specularity" ) );
- double fSpecularity = (sal_Int32)GetPropertyValue( DFF_Prop_c3DSpecularAmt );
- fSpecularity /= 1333;
- aProp.Name = sExtrusionSpecularity;
- aProp.Value <<= fSpecularity;
- aExtrusionPropVec.push_back( aProp );
- }
- // "ProjectionMode"
- const rtl::OUString sExtrusionProjectionMode( RTL_CONSTASCII_USTRINGPARAM ( "ProjectionMode" ) );
- ProjectionMode eProjectionMode = GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 4 ? ProjectionMode_PARALLEL : ProjectionMode_PERSPECTIVE;
- aProp.Name = sExtrusionProjectionMode;
- aProp.Value <<= eProjectionMode;
- aExtrusionPropVec.push_back( aProp );
-
- // "ViewPoint" in 1/100mm
- if ( IsProperty( DFF_Prop_c3DXViewpoint ) || IsProperty( DFF_Prop_c3DYViewpoint ) || IsProperty( DFF_Prop_c3DZViewpoint ) )
- {
- double fViewX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DXViewpoint, 1249920 )) / 360.0;
- double fViewY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DYViewpoint, (sal_uInt32)-1249920 ))/ 360.0;
- double fViewZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DZViewpoint, 9000000 )) / 360.0;
- ::com::sun::star::drawing::Position3D aExtrusionViewPoint( fViewX, fViewY, fViewZ );
- const rtl::OUString sExtrusionViewPoint( RTL_CONSTASCII_USTRINGPARAM ( "ViewPoint" ) );
- aProp.Name = sExtrusionViewPoint;
- aProp.Value <<= aExtrusionViewPoint;
- aExtrusionPropVec.push_back( aProp );
- }
- // "Origin"
- if ( IsProperty( DFF_Prop_c3DOriginX ) || IsProperty( DFF_Prop_c3DOriginY ) )
- {
- const rtl::OUString sExtrusionOrigin( RTL_CONSTASCII_USTRINGPARAM ( "Origin" ) );
- double fOriginX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DOriginX, 0 ));
- double fOriginY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DOriginY, 0 ));
- fOriginX /= 65536;
- fOriginY /= 65536;
- EnhancedCustomShapeParameterPair aOriginPair;
- aOriginPair.First.Value <<= fOriginX;
- aOriginPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
- aOriginPair.Second.Value <<= fOriginY;
- aOriginPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
- aProp.Name = sExtrusionOrigin;
- aProp.Value <<= aOriginPair;
- aExtrusionPropVec.push_back( aProp );
- }
- // "ExtrusionColor"
- const rtl::OUString sExtrusionColor( RTL_CONSTASCII_USTRINGPARAM ( "Color" ) );
- sal_Bool bExtrusionColor = IsProperty( DFF_Prop_c3DExtrusionColor ); // ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 2 ) != 0;
- aProp.Name = sExtrusionColor;
- aProp.Value <<= bExtrusionColor;
- aExtrusionPropVec.push_back( aProp );
- if ( IsProperty( DFF_Prop_c3DExtrusionColor ) )
- rSet.Put( XSecondaryFillColorItem( String(), rManager.MSO_CLR_ToColor(
- GetPropertyValue( DFF_Prop_c3DExtrusionColor ), DFF_Prop_c3DExtrusionColor ) ) );
- // pushing the whole Extrusion element
- const rtl::OUString sExtrusion( RTL_CONSTASCII_USTRINGPARAM ( "Extrusion" ) );
- PropSeq aExtrusionPropSeq( aExtrusionPropVec.size() );
- aIter = aExtrusionPropVec.begin();
- aEnd = aExtrusionPropVec.end();
- beans::PropertyValue* pExtrusionValues = aExtrusionPropSeq.getArray();
- while ( aIter != aEnd )
- *pExtrusionValues++ = *aIter++;
- aProp.Name = sExtrusion;
- aProp.Value <<= aExtrusionPropSeq;
- aPropVec.push_back( aProp );
- }
-
- /////////////////////////////////////////
- // "Equations" PropertySequence element //
- /////////////////////////////////////////
- if ( IsProperty( DFF_Prop_pFormulas ) )
- {
- sal_uInt16 i;
- sal_uInt16 nNumElem = 0;
- sal_uInt16 nNumElemMem = 0;
- sal_uInt16 nElemSize = 8;
-
- if ( SeekToContent( DFF_Prop_pFormulas, rIn ) )
- rIn >> nNumElem >> nNumElemMem >> nElemSize;
-
- sal_Int16 nP1, nP2, nP3;
- sal_uInt16 nFlags;
-
- uno::Sequence< rtl::OUString > aEquations( nNumElem );
- for ( i = 0; i < nNumElem; i++ )
- {
- rIn >> nFlags >> nP1 >> nP2 >> nP3;
- aEquations[ i ] = EnhancedCustomShape2d::GetEquation( nFlags, nP1, nP2, nP3 );
- }
- // pushing the whole Equations element
- const rtl::OUString sEquations( RTL_CONSTASCII_USTRINGPARAM ( "Equations" ) );
- aProp.Name = sEquations;
- aProp.Value <<= aEquations;
- aPropVec.push_back( aProp );
- }
-
- ////////////////////////////////////////
- // "Handles" PropertySequence element //
- ////////////////////////////////////////
- if ( IsProperty( DFF_Prop_Handles ) )
- {
- sal_uInt16 i;
- sal_uInt16 nNumElem = 0;
- sal_uInt16 nNumElemMem = 0;
- sal_uInt16 nElemSize = 36;
-
- if ( SeekToContent( DFF_Prop_Handles, rIn ) )
- rIn >> nNumElem >> nNumElemMem >> nElemSize;
- if ( nElemSize == 36 )
- {
- uno::Sequence< beans::PropertyValues > aHandles( nNumElem );
- for ( i = 0; i < nNumElem; i++ )
- {
- PropVec aHandlePropVec;
- sal_uInt32 nFlags;
- sal_Int32 nPositionX, nPositionY, nCenterX, nCenterY, nRangeXMin, nRangeXMax, nRangeYMin, nRangeYMax;
- rIn >> nFlags
- >> nPositionX
- >> nPositionY
- >> nCenterX
- >> nCenterY
- >> nRangeXMin
- >> nRangeXMax
- >> nRangeYMin
- >> nRangeYMax;
-
- if ( nPositionX == 2 ) // replacing center position with absolute value
- nPositionX = nCoordWidth / 2;
- if ( nPositionY == 2 )
- nPositionY = nCoordHeight / 2;
- EnhancedCustomShapeParameterPair aPosition;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.First, nPositionX, sal_True, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.Second, nPositionY, sal_True, sal_False );
- const rtl::OUString sHandlePosition( RTL_CONSTASCII_USTRINGPARAM ( "Position" ) );
- aProp.Name = sHandlePosition;
- aProp.Value <<= aPosition;
- aHandlePropVec.push_back( aProp );
-
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
- {
- sal_Bool bMirroredX = sal_True;
- const rtl::OUString sHandleMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
- aProp.Name = sHandleMirroredX;
- aProp.Value <<= bMirroredX;
- aHandlePropVec.push_back( aProp );
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
- {
- sal_Bool bMirroredY = sal_True;
- const rtl::OUString sHandleMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
- aProp.Name = sHandleMirroredY;
- aProp.Value <<= bMirroredY;
- aHandlePropVec.push_back( aProp );
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
- {
- sal_Bool bSwitched = sal_True;
- const rtl::OUString sHandleSwitched( RTL_CONSTASCII_USTRINGPARAM ( "Switched" ) );
- aProp.Name = sHandleSwitched;
- aProp.Value <<= bSwitched;
- aHandlePropVec.push_back( aProp );
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- if ( nCenterX == 2 )
- nCenterX = nCoordWidth / 2;
- if ( nCenterY == 2 )
- nCenterY = nCoordHeight / 2;
- if ( ( nPositionY >= 0x256 ) || ( nPositionY <= 0x107 ) ) // position y
- nAdjustmentsWhichNeedsToBeConverted |= ( 1 << i );
- EnhancedCustomShapeParameterPair aPolar;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPolar.First, nCenterX, ( nFlags & 0x800 ) != 0, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPolar.Second, nCenterY, ( nFlags & 0x1000 ) != 0, sal_False );
- const rtl::OUString sHandlePolar( RTL_CONSTASCII_USTRINGPARAM ( "Polar" ) );
- aProp.Name = sHandlePolar;
- aProp.Value <<= aPolar;
- aHandlePropVec.push_back( aProp );
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MAP )
- {
- if ( nCenterX == 2 )
- nCenterX = nCoordWidth / 2;
- if ( nCenterY == 2 )
- nCenterY = nCoordHeight / 2;
- EnhancedCustomShapeParameterPair aMap;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aMap.First, nCenterX, ( nFlags & 0x800 ) != 0, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aMap.Second, nCenterY, ( nFlags & 0x1000 ) != 0, sal_False );
- const rtl::OUString sHandleMap( RTL_CONSTASCII_USTRINGPARAM ( "Map" ) );
- aProp.Name = sHandleMap;
- aProp.Value <<= aMap;
- aHandlePropVec.push_back( aProp );
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
- {
- if ( (sal_uInt32)nRangeXMin != 0x80000000 )
- {
- if ( nRangeXMin == 2 )
- nRangeXMin = nCoordWidth / 2;
- EnhancedCustomShapeParameter aRangeXMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMinimum, nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- const rtl::OUString sHandleRangeXMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMinimum" ) );
- aProp.Name = sHandleRangeXMinimum;
- aProp.Value <<= aRangeXMinimum;
- aHandlePropVec.push_back( aProp );
- }
- if ( (sal_uInt32)nRangeXMax != 0x7fffffff )
- {
- if ( nRangeXMax == 2 )
- nRangeXMax = nCoordWidth / 2;
- EnhancedCustomShapeParameter aRangeXMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMaximum, nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- const rtl::OUString sHandleRangeXMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMaximum" ) );
- aProp.Name = sHandleRangeXMaximum;
- aProp.Value <<= aRangeXMaximum;
- aHandlePropVec.push_back( aProp );
- }
- if ( (sal_uInt32)nRangeYMin != 0x80000000 )
- {
- if ( nRangeYMin == 2 )
- nRangeYMin = nCoordHeight / 2;
- EnhancedCustomShapeParameter aRangeYMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMinimum, nRangeYMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL ) != 0, sal_True );
- const rtl::OUString sHandleRangeYMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMinimum" ) );
- aProp.Name = sHandleRangeYMinimum;
- aProp.Value <<= aRangeYMinimum;
- aHandlePropVec.push_back( aProp );
- }
- if ( (sal_uInt32)nRangeYMax != 0x7fffffff )
- {
- if ( nRangeYMax == 2 )
- nRangeYMax = nCoordHeight / 2;
- EnhancedCustomShapeParameter aRangeYMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMaximum, nRangeYMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL ) != 0, sal_False );
- const rtl::OUString sHandleRangeYMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMaximum" ) );
- aProp.Name = sHandleRangeYMaximum;
- aProp.Value <<= aRangeYMaximum;
- aHandlePropVec.push_back( aProp );
- }
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
- {
- if ( (sal_uInt32)nRangeXMin != 0x7fffffff )
- {
- if ( nRangeXMin == 2 )
- nRangeXMin = nCoordWidth / 2;
- EnhancedCustomShapeParameter aRadiusRangeMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMinimum, nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- const rtl::OUString sHandleRadiusRangeMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMinimum" ) );
- aProp.Name = sHandleRadiusRangeMinimum;
- aProp.Value <<= aRadiusRangeMinimum;
- aHandlePropVec.push_back( aProp );
- }
- if ( (sal_uInt32)nRangeXMax != 0x80000000 )
- {
- if ( nRangeXMax == 2 )
- nRangeXMax = nCoordWidth / 2;
- EnhancedCustomShapeParameter aRadiusRangeMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMaximum, nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- const rtl::OUString sHandleRadiusRangeMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMaximum" ) );
- aProp.Name = sHandleRadiusRangeMaximum;
- aProp.Value <<= aRadiusRangeMaximum;
- aHandlePropVec.push_back( aProp );
- }
- }
- if ( aHandlePropVec.size() )
- {
- PropSeq aHandlePropSeq( aHandlePropVec.size() );
- aIter = aHandlePropVec.begin();
- aEnd = aHandlePropVec.end();
- beans::PropertyValue* pHandleValues = aHandlePropSeq.getArray();
- while ( aIter != aEnd )
- *pHandleValues++ = *aIter++;
- aHandles[ i ] = aHandlePropSeq;
- }
- }
- // pushing the whole Handles element
- const rtl::OUString sHandles( RTL_CONSTASCII_USTRINGPARAM ( "Handles" ) );
- aProp.Name = sHandles;
- aProp.Value <<= aHandles;
- aPropVec.push_back( aProp );
- }
- }
- else
- {
- const mso_CustomShape* pDefCustomShape = GetCustomShapeContent( eShapeType );
- if ( pDefCustomShape && pDefCustomShape->nHandles && pDefCustomShape->pHandles )
- {
- sal_Int32 i, nCnt = pDefCustomShape->nHandles;
- const SvxMSDffHandle* pData = pDefCustomShape->pHandles;
- for ( i = 0; i < nCnt; i++, pData++ )
- {
- if ( pData->nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- if ( ( pData->nPositionY >= 0x256 ) || ( pData->nPositionY <= 0x107 ) )
- nAdjustmentsWhichNeedsToBeConverted |= ( 1 << i );
- }
- }
- }
- }
- /////////////////////////////////////
- // "Path" PropertySequence element //
- /////////////////////////////////////
- {
- PropVec aPathPropVec;
-
- // "Path/ExtrusionAllowed"
- if ( IsHardAttribute( DFF_Prop_f3DOK ) )
- {
- const rtl::OUString sExtrusionAllowed( RTL_CONSTASCII_USTRINGPARAM ( "ExtrusionAllowed" ) );
- sal_Bool bExtrusionAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 16 ) != 0;
- aProp.Name = sExtrusionAllowed;
- aProp.Value <<= bExtrusionAllowed;
- aPathPropVec.push_back( aProp );
- }
- // "Path/ConcentricGradientFillAllowed"
- if ( IsHardAttribute( DFF_Prop_fFillShadeShapeOK ) )
- {
- const rtl::OUString sConcentricGradientFillAllowed( RTL_CONSTASCII_USTRINGPARAM ( "ConcentricGradientFillAllowed" ) );
- sal_Bool bConcentricGradientFillAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 2 ) != 0;
- aProp.Name = sConcentricGradientFillAllowed;
- aProp.Value <<= bConcentricGradientFillAllowed;
- aPathPropVec.push_back( aProp );
- }
- // "Path/TextPathAllowed"
- if ( IsHardAttribute( DFF_Prop_fGtextOK ) || ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x4000 ) )
- {
- const rtl::OUString sTextPathAllowed( RTL_CONSTASCII_USTRINGPARAM ( "TextPathAllowed" ) );
- sal_Bool bTextPathAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 4 ) != 0;
- aProp.Name = sTextPathAllowed;
- aProp.Value <<= bTextPathAllowed;
- aPathPropVec.push_back( aProp );
- }
- // Path/Coordinates
- if ( IsProperty( DFF_Prop_pVertices ) )
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
-
- sal_uInt16 i;
- sal_uInt16 nNumElemVert = 0;
- sal_uInt16 nNumElemMemVert = 0;
- sal_uInt16 nElemSizeVert = 8;
-
- if ( SeekToContent( DFF_Prop_pVertices, rIn ) )
- rIn >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
- if ( nNumElemVert )
- {
- sal_Int32 nX, nY;
- sal_Int16 nTmpA, nTmpB;
- aCoordinates.realloc( nNumElemVert );
- for ( i = 0; i < nNumElemVert; i++ )
- {
- if ( nElemSizeVert == 8 )
- {
- rIn >> nX
- >> nY;
- }
- else
- {
- rIn >> nTmpA
- >> nTmpB;
-
- nX = nTmpA;
- nY = nTmpB;
- }
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aCoordinates[ i ].First, nX );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aCoordinates[ i ].Second, nY );
- }
- }
- const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
- aProp.Name = sCoordinates;
- aProp.Value <<= aCoordinates;
- aPathPropVec.push_back( aProp );
- }
- // Path/Segments
- if ( IsProperty( DFF_Prop_pSegmentInfo ) )
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
-
- sal_uInt16 i, nTmp;
- sal_uInt16 nNumElemSeg = 0;
- sal_uInt16 nNumElemMemSeg = 0;
- sal_uInt16 nElemSizeSeg = 2;
-
- if ( SeekToContent( DFF_Prop_pSegmentInfo, rIn ) )
- rIn >> nNumElemSeg >> nNumElemMemSeg >> nElemSizeSeg;
- if ( nNumElemSeg )
- {
- sal_Int16 nCommand;
- sal_Int16 nCnt;
- aSegments.realloc( nNumElemSeg );
- for ( i = 0; i < nNumElemSeg; i++ )
- {
- rIn >> nTmp;
- nCommand = EnhancedCustomShapeSegmentCommand::UNKNOWN;
- nCnt = (sal_Int16)( nTmp & 0xfff );
- switch( nTmp >> 12 )
- {
- case 0x0: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break;
- case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break; // seems to the relative lineto
- case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
- case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
- case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break; // seems to be the relative curveto
- case 0x8: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
- case 0x6: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
- case 0xa:
- case 0xb:
- {
- switch ( ( nTmp >> 8 ) & 0xf )
- {
- case 0x0:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::LINETO;
- if ( !nCnt )
- nCnt = 1;
- }
- break;
- case 0x1:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO;
- nCnt = ( nTmp & 0xff ) / 3;
- }
- break;
- case 0x2:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE;
- nCnt = ( nTmp & 0xff ) / 3;
- }
- break;
- case 0x3:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ARCTO;
- nCnt = ( nTmp & 0xff ) >> 2;
- };
- break;
- case 0x4:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ARC;
- nCnt = ( nTmp & 0xff ) >> 2;
- }
- break;
- case 0x5:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO;
- nCnt = ( nTmp & 0xff ) >> 2;
- }
- break;
- case 0x6:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::CLOCKWISEARC;
- nCnt = ( nTmp & 0xff ) >> 2;
- }
- break;
- case 0x7:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX;
- nCnt = nTmp & 0xff;
- }
- break;
- case 0x8:
- {
- nCommand = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY;
- nCnt = nTmp & 0xff;
- }
- break;
- case 0xa: nCommand = EnhancedCustomShapeSegmentCommand::NOFILL; nCnt = 0; break;
- case 0xb: nCommand = EnhancedCustomShapeSegmentCommand::NOSTROKE; nCnt = 0; break;
- }
- }
- break;
- }
- // if the command is unknown, we will store all the data in nCnt, so it will be possible to export without loss
- if ( nCommand == EnhancedCustomShapeSegmentCommand::UNKNOWN )
- nCnt = (sal_Int16)nTmp;
- aSegments[ i ].Command = nCommand;
- aSegments[ i ].Count = nCnt;
- }
- }
- const rtl::OUString sSegments( RTL_CONSTASCII_USTRINGPARAM ( "Segments" ) );
- aProp.Name = sSegments;
- aProp.Value <<= aSegments;
- aPathPropVec.push_back( aProp );
- }
- // Path/StretchX
- if ( IsProperty( DFF_Prop_stretchPointX ) )
- {
- const rtl::OUString sStretchX( RTL_CONSTASCII_USTRINGPARAM ( "StretchX" ) );
- sal_Int32 nStretchX = GetPropertyValue( DFF_Prop_stretchPointX, 0 );
- aProp.Name = sStretchX;
- aProp.Value <<= nStretchX;
- aPathPropVec.push_back( aProp );
- }
- // Path/StretchX
- if ( IsProperty( DFF_Prop_stretchPointY ) )
- {
- const rtl::OUString sStretchY( RTL_CONSTASCII_USTRINGPARAM ( "StretchY" ) );
- sal_Int32 nStretchY = GetPropertyValue( DFF_Prop_stretchPointY, 0 );
- aProp.Name = sStretchY;
- aProp.Value <<= nStretchY;
- aPathPropVec.push_back( aProp );
- }
- // Path/TextFrames
- if ( IsProperty( DFF_Prop_textRectangles ) )
- {
- sal_uInt16 i;
- sal_uInt16 nNumElem = 0;
- sal_uInt16 nNumElemMem = 0;
- sal_uInt16 nElemSize = 16;
-
- if ( SeekToContent( DFF_Prop_textRectangles, rIn ) )
- rIn >> nNumElem >> nNumElemMem >> nElemSize;
- if ( nElemSize == 16 )
- {
- sal_Int32 nLeft, nTop, nRight, nBottom;
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aTextFrames( nNumElem );
- for ( i = 0; i < nNumElem; i++ )
- {
- rIn >> nLeft
- >> nTop
- >> nRight
- >> nBottom;
-
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].TopLeft.First, nLeft );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].TopLeft.Second, nTop );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].BottomRight.First, nRight );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].BottomRight.Second, nBottom);
- }
- const rtl::OUString sTextFrames( RTL_CONSTASCII_USTRINGPARAM ( "TextFrames" ) );
- aProp.Name = sTextFrames;
- aProp.Value <<= aTextFrames;
- aPathPropVec.push_back( aProp );
- }
- }
- //Path/GluePoints
- if ( IsProperty( DFF_Prop_connectorPoints ) )
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aGluePoints;
-
- sal_uInt16 i;
- sal_uInt16 nNumElemVert = 0;
- sal_uInt16 nNumElemMemVert = 0;
- sal_uInt16 nElemSizeVert = 8;
-
- if ( SeekToContent( DFF_Prop_connectorPoints, rIn ) )
- rIn >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
-
- sal_Int32 nX, nY;
- sal_Int16 nTmpA, nTmpB;
- aGluePoints.realloc( nNumElemVert );
- for ( i = 0; i < nNumElemVert; i++ )
- {
- if ( nElemSizeVert == 8 )
- {
- rIn >> nX
- >> nY;
- }
- else
- {
- rIn >> nTmpA
- >> nTmpB;
-
- nX = nTmpA;
- nY = nTmpB;
- }
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ i ].First, nX );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ i ].Second, nY );
- }
- const rtl::OUString sGluePoints( RTL_CONSTASCII_USTRINGPARAM ( "GluePoints" ) );
- aProp.Name = sGluePoints;
- aProp.Value <<= aGluePoints;
- aPathPropVec.push_back( aProp );
- }
- if ( IsProperty( DFF_Prop_connectorType ) )
- {
- sal_Int16 nGluePointType = (sal_uInt16)GetPropertyValue( DFF_Prop_connectorType );
- const rtl::OUString sGluePointType( RTL_CONSTASCII_USTRINGPARAM ( "GluePointType" ) );
- aProp.Name = sGluePointType;
- aProp.Value <<= nGluePointType;
- aPathPropVec.push_back( aProp );
- }
- // pushing the whole Path element
- if ( aPathPropVec.size() )
- {
- const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
- PropSeq aPathPropSeq( aPathPropVec.size() );
- aIter = aPathPropVec.begin();
- aEnd = aPathPropVec.end();
- beans::PropertyValue* pPathValues = aPathPropSeq.getArray();
- while ( aIter != aEnd )
- *pPathValues++ = *aIter++;
- aProp.Name = sPath;
- aProp.Value <<= aPathPropSeq;
- aPropVec.push_back( aProp );
- }
- }
- /////////////////////////////////////////
- // "TextPath" PropertySequence element //
- /////////////////////////////////////////
- sal_Bool bTextPathOn = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x4000 ) != 0;
- if ( bTextPathOn )
- {
- PropVec aTextPathPropVec;
-
- // TextPath
- const rtl::OUString sTextPathOn( RTL_CONSTASCII_USTRINGPARAM ( "TextPath" ) );
- aProp.Name = sTextPathOn;
- aProp.Value <<= bTextPathOn;
- aTextPathPropVec.push_back( aProp );
-
- // TextPathMode
- const rtl::OUString sTextPathMode( RTL_CONSTASCII_USTRINGPARAM ( "TextPathMode" ) );
- sal_Bool bTextPathFitPath = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x100 ) != 0;
-
- sal_Bool bTextPathFitShape;
- if ( IsHardAttribute( DFF_Prop_gtextFStretch ) )
- bTextPathFitShape = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x400 ) != 0;
- else
- {
- bTextPathFitShape = true;
- switch( eShapeType )
- {
- case mso_sptTextArchUpCurve :
- case mso_sptTextArchDownCurve :
- case mso_sptTextCircleCurve :
- case mso_sptTextButtonCurve :
- bTextPathFitShape = false;
- default : break;
- }
- }
- EnhancedCustomShapeTextPathMode eTextPathMode( EnhancedCustomShapeTextPathMode_NORMAL );
- if ( bTextPathFitShape )
- eTextPathMode = EnhancedCustomShapeTextPathMode_SHAPE;
- else if ( bTextPathFitPath )
- eTextPathMode = EnhancedCustomShapeTextPathMode_PATH;
- aProp.Name = sTextPathMode;
- aProp.Value <<= eTextPathMode;
- aTextPathPropVec.push_back( aProp );
-
- // ScaleX
- const rtl::OUString sTextPathScaleX( RTL_CONSTASCII_USTRINGPARAM ( "ScaleX" ) );
- sal_Bool bTextPathScaleX = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x40 ) != 0;
- aProp.Name = sTextPathScaleX;
- aProp.Value <<= bTextPathScaleX;
- aTextPathPropVec.push_back( aProp );
- // SameLetterHeights
- const rtl::OUString sSameLetterHeight( RTL_CONSTASCII_USTRINGPARAM ( "SameLetterHeights" ) );
- sal_Bool bSameLetterHeight = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x80 ) != 0;
- aProp.Name = sSameLetterHeight;
- aProp.Value <<= bSameLetterHeight;
- aTextPathPropVec.push_back( aProp );
-
- // pushing the whole TextPath element
- const rtl::OUString sTextPath( RTL_CONSTASCII_USTRINGPARAM ( "TextPath" ) );
- PropSeq aTextPathPropSeq( aTextPathPropVec.size() );
- aIter = aTextPathPropVec.begin();
- aEnd = aTextPathPropVec.end();
- beans::PropertyValue* pTextPathValues = aTextPathPropSeq.getArray();
- while ( aIter != aEnd )
- *pTextPathValues++ = *aIter++;
- aProp.Name = sTextPath;
- aProp.Value <<= aTextPathPropSeq;
- aPropVec.push_back( aProp );
- }
- ////////////////////////
- // "AdjustmentValues" // The AdjustmentValues are imported at last, because depending to the type of the
- //////////////////////// handle (POLAR) we will convert the adjustment value from a fixed float to double
-
- // checking the last used adjustment handle, so we can determine how many handles are to allocate
- sal_Int32 i = DFF_Prop_adjust10Value;
- while ( ( i >= DFF_Prop_adjustValue ) && !IsProperty( i ) )
- i--;
- sal_Int32 nAdjustmentValues = ( i - DFF_Prop_adjustValue ) + 1;
- if ( nAdjustmentValues )
- {
- uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentSeq( nAdjustmentValues );
- while( --nAdjustmentValues >= 0 )
- {
- sal_Int32 nValue = 0;
- beans::PropertyState ePropertyState = beans::PropertyState_DEFAULT_VALUE;
- if ( IsProperty( i ) )
- {
- nValue = GetPropertyValue( i );
- ePropertyState = beans::PropertyState_DIRECT_VALUE;
- }
- if ( nAdjustmentsWhichNeedsToBeConverted & ( 1 << ( i - DFF_Prop_adjustValue ) ) )
- {
- double fValue = nValue;
- fValue /= 65536;
- aAdjustmentSeq[ nAdjustmentValues ].Value <<= fValue;
- }
- else
- aAdjustmentSeq[ nAdjustmentValues ].Value <<= nValue;
- aAdjustmentSeq[ nAdjustmentValues ].State = ePropertyState;
- i--;
- }
- const rtl::OUString sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
- aProp.Name = sAdjustmentValues;
- aProp.Value <<= aAdjustmentSeq;
- aPropVec.push_back( aProp );
- }
-
- // creating the whole property set
- PropSeq aSeq( aPropVec.size() );
- beans::PropertyValue* pValues = aSeq.getArray();
- aIter = aPropVec.begin();
- aEnd = aPropVec.end();
- while ( aIter != aEnd )
- *pValues++ = *aIter++;
- rSet.Put( SdrCustomShapeGeometryItem( aSeq ) );
-}
-
-void DffPropertyReader::ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const MSO_SPT eShapeType, const sal_uInt32 nShapeFlags ) const
-{
-// MapUnit eMap( rManager.GetModel()->GetScaleUnit() );
-
- for ( void* pDummy = ((DffPropertyReader*)this)->First(); pDummy; pDummy = ((DffPropertyReader*)this)->Next() )
- {
- UINT32 nRecType = GetCurKey();
- UINT32 nContent = mpContents[ nRecType ];
- switch ( nRecType )
- {
- case DFF_Prop_gtextSize :
- rSet.Put( SvxFontHeightItem( rManager.ScalePt( nContent ), 100, EE_CHAR_FONTHEIGHT ) );
- break;
- // GeoText
- case DFF_Prop_gtextFStrikethrough :
- {
- if ( nContent & 0x20 )
- rSet.Put( SvxWeightItem( nContent ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
- if ( nContent & 0x10 )
- rSet.Put( SvxPostureItem( nContent ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC ) );
- if ( nContent & 0x08 )
- rSet.Put( SvxUnderlineItem( nContent ? UNDERLINE_SINGLE : UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
- if ( nContent & 0x40 )
- rSet.Put(SvxShadowedItem( nContent != 0, EE_CHAR_SHADOW ) );
-// if ( nContent & 0x02 )
-// rSet.Put( SvxCaseMapItem( nContent ? SVX_CASEMAP_KAPITAELCHEN : SVX_CASEMAP_NOT_MAPPED ) );
- if ( nContent & 0x01 )
- rSet.Put( SvxCrossedOutItem( nContent ? STRIKEOUT_SINGLE : STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
- }
- break;
-
- case DFF_Prop_fillColor :
- rSet.Put( XFillColorItem( String(), rManager.MSO_CLR_ToColor( nContent, DFF_Prop_fillColor ) ) );
- break;
-
- // ShadowStyle
- case DFF_Prop_shadowType :
- {
- MSO_ShadowType eShadowType = (MSO_ShadowType)nContent;
- if( eShadowType != mso_shadowOffset )
- {
- // mso_shadowDouble
- // mso_shadowRich
- // mso_shadowEmbossOrEngrave
- // koennen wir nicht, kreiere Default-Schatten mit default-
- // Abstand
- rSet.Put( SdrShadowXDistItem( 35 ) ); // 0,35 mm Schattendistanz
- rSet.Put( SdrShadowYDistItem( 35 ) );
- }
- }
- break;
- case DFF_Prop_shadowColor :
- rSet.Put( SdrShadowColorItem( String(), rManager.MSO_CLR_ToColor( nContent, DFF_Prop_shadowColor ) ) );
- break;
- case DFF_Prop_shadowOpacity :
- rSet.Put( SdrShadowTransparenceItem( (sal_uInt16)( ( 0x10000 - nContent ) / 655 ) ) );
- break;
- case DFF_Prop_shadowOffsetX :
- {
- INT32 nVal = (INT32)nContent;
- rManager.ScaleEmu( nVal );
- if ( nVal )
- rSet.Put( SdrShadowXDistItem( nVal ) );
- }
- break;
- case DFF_Prop_shadowOffsetY :
- {
- INT32 nVal = (INT32)nContent;
- rManager.ScaleEmu( nVal );
- if ( nVal )
- rSet.Put( SdrShadowYDistItem( nVal ) );
- }
- break;
- case DFF_Prop_fshadowObscured :
- {
- sal_Bool bHasShadow = ( nContent & 2 ) != 0;
- rSet.Put( SdrShadowItem( bHasShadow ) );
- if ( bHasShadow )
- {
- if ( !IsProperty( DFF_Prop_shadowOffsetX ) )
- rSet.Put( SdrShadowXDistItem( 35 ) );
- if ( !IsProperty( DFF_Prop_shadowOffsetY ) )
- rSet.Put( SdrShadowYDistItem( 35 ) );
- }
- }
- break;
- }
- }
-
- ApplyLineAttributes( rSet, eShapeType ); // #i28269#
- ApplyFillAttributes( rIn, rSet, eShapeType );
- if ( rManager.GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_IMPORT_IAS )
- {
- if ( eShapeType != mso_sptNil )
- {
- ApplyCustomShapeGeometryAttributes( rIn, rSet, eShapeType, nShapeFlags );
- ApplyCustomShapeTextAttributes( rSet );
- }
- }
-}
-
-//---------------------------------------------------------------------------
-//- Record Manager ----------------------------------------------------------
-//---------------------------------------------------------------------------
-
-DffRecordList::DffRecordList( DffRecordList* pList ) :
- nCount ( 0 ),
- nCurrent ( 0 ),
- pPrev ( pList ),
- pNext ( NULL )
-{
- if ( pList )
- pList->pNext = this;
-}
-
-DffRecordList::~DffRecordList()
-{
- delete pNext;
-}
-
-DffRecordManager::DffRecordManager() :
- DffRecordList ( NULL ),
- pCList ( (DffRecordList*)this )
-{
-}
-
-DffRecordManager::DffRecordManager( SvStream& rIn ) :
- DffRecordList ( NULL ),
- pCList ( (DffRecordList*)this )
-{
- Consume( rIn );
-}
-
-DffRecordManager::~DffRecordManager()
-{
-};
-
-
-void DffRecordManager::Consume( SvStream& rIn, BOOL bAppend, UINT32 nStOfs )
-{
- if ( !bAppend )
- Clear();
- UINT32 nOldPos = rIn.Tell();
- if ( !nStOfs )
- {
- DffRecordHeader aHd;
- rIn >> aHd;
- if ( aHd.nRecVer == DFF_PSFLAG_CONTAINER )
- nStOfs = aHd.GetRecEndFilePos();
- }
- if ( nStOfs )
- {
- pCList = (DffRecordList*)this;
- while ( pCList->pNext )
- pCList = pCList->pNext;
- while ( ( rIn.GetError() == 0 ) && ( ( rIn.Tell() + 8 ) <= nStOfs ) )
- {
- if ( pCList->nCount == DFF_RECORD_MANAGER_BUF_SIZE )
- pCList = new DffRecordList( pCList );
- rIn >> pCList->mHd[ pCList->nCount ];
- pCList->mHd[ pCList->nCount++ ].SeekToEndOfRecord( rIn );
- }
- rIn.Seek( nOldPos );
- }
-}
-
-void DffRecordManager::Clear()
-{
- pCList = (DffRecordList*)this;
- delete pNext, pNext = NULL;
- nCurrent = 0;
- nCount = 0;
-}
-
-DffRecordHeader* DffRecordManager::Current()
-{
- DffRecordHeader* pRet = NULL;
- if ( pCList->nCurrent < pCList->nCount )
- pRet = &pCList->mHd[ pCList->nCurrent ];
- return pRet;
-}
-
-DffRecordHeader* DffRecordManager::First()
-{
- DffRecordHeader* pRet = NULL;
- pCList = (DffRecordList*)this;
- if ( pCList->nCount )
- {
- pCList->nCurrent = 0;
- pRet = &pCList->mHd[ 0 ];
- }
- return pRet;
-}
-
-DffRecordHeader* DffRecordManager::Next()
-{
- DffRecordHeader* pRet = NULL;
- UINT32 nC = pCList->nCurrent + 1;
- if ( nC < pCList->nCount )
- {
- pCList->nCurrent++;
- pRet = &pCList->mHd[ nC ];
- }
- else if ( pCList->pNext )
- {
- pCList = pCList->pNext;
- pCList->nCurrent = 0;
- pRet = &pCList->mHd[ 0 ];
- }
- return pRet;
-}
-
-DffRecordHeader* DffRecordManager::Prev()
-{
- DffRecordHeader* pRet = NULL;
- UINT32 nCur = pCList->nCurrent;
- if ( !nCur && pCList->pPrev )
- {
- pCList = pCList->pPrev;
- nCur = pCList->nCount;
- }
- if ( nCur-- )
- {
- pCList->nCurrent = nCur;
- pRet = &pCList->mHd[ nCur ];
- }
- return pRet;
-}
-
-DffRecordHeader* DffRecordManager::Last()
-{
- DffRecordHeader* pRet = NULL;
- while ( pCList->pNext )
- pCList = pCList->pNext;
- UINT32 nCnt = pCList->nCount;
- if ( nCnt-- )
- {
- pCList->nCurrent = nCnt;
- pRet = &pCList->mHd[ nCnt ];
- }
- return pRet;
-}
-
-BOOL DffRecordManager::SeekToContent( SvStream& rIn, UINT16 nRecId, DffSeekToContentMode eMode )
-{
- DffRecordHeader* pHd = GetRecordHeader( nRecId, eMode );
- if ( pHd )
- {
- pHd->SeekToContent( rIn );
- return TRUE;
- }
- else
- return FALSE;
-}
-
-DffRecordHeader* DffRecordManager::GetRecordHeader( UINT16 nRecId, DffSeekToContentMode eMode )
-{
- UINT32 nOldCurrent = pCList->nCurrent;
- DffRecordList* pOldList = pCList;
- DffRecordHeader* pHd;
-
- if ( eMode == SEEK_FROM_BEGINNING )
- pHd = First();
- else
- pHd = Next();
-
- while ( pHd )
- {
- if ( pHd->nRecType == nRecId )
- break;
- pHd = Next();
- }
- if ( !pHd && eMode == SEEK_FROM_CURRENT_AND_RESTART )
- {
- DffRecordHeader* pBreak = &pOldList->mHd[ nOldCurrent ];
- pHd = First();
- if ( pHd )
- {
- while ( pHd != pBreak )
- {
- if ( pHd->nRecType == nRecId )
- break;
- pHd = Next();
- }
- if ( pHd->nRecType != nRecId )
- pHd = NULL;
- }
- }
- if ( !pHd )
- {
- pCList = pOldList;
- pOldList->nCurrent = nOldCurrent;
- }
- return pHd;
-}
-
-//---------------------------------------------------------------------------
-// private Methoden
-//---------------------------------------------------------------------------
-
-struct EscherBlipCacheEntry
-{
- ByteString aUniqueID;
- sal_uInt32 nBlip;
-
- EscherBlipCacheEntry( sal_uInt32 nBlipId, const ByteString& rUniqueID ) :
- aUniqueID( rUniqueID ),
- nBlip( nBlipId ) {}
-};
-
-void SvxMSDffManager::Scale( sal_Int32& rVal ) const
-{
- if ( bNeedMap )
- rVal = BigMulDiv( rVal, nMapMul, nMapDiv );
-}
-
-void SvxMSDffManager::Scale( Point& rPos ) const
-{
- rPos.X() += nMapXOfs;
- rPos.Y() += nMapYOfs;
- if ( bNeedMap )
- {
- rPos.X() = BigMulDiv( rPos.X(), nMapMul, nMapDiv );
- rPos.Y() = BigMulDiv( rPos.Y(), nMapMul, nMapDiv );
- }
-}
-
-void SvxMSDffManager::Scale( Size& rSiz ) const
-{
- if ( bNeedMap )
- {
- rSiz.Width() = BigMulDiv( rSiz.Width(), nMapMul, nMapDiv );
- rSiz.Height() = BigMulDiv( rSiz.Height(), nMapMul, nMapDiv );
- }
-}
-
-void SvxMSDffManager::Scale( Rectangle& rRect ) const
-{
- rRect.Move( nMapXOfs, nMapYOfs );
- if ( bNeedMap )
- {
- rRect.Left() =BigMulDiv( rRect.Left() , nMapMul, nMapDiv );
- rRect.Top() =BigMulDiv( rRect.Top() , nMapMul, nMapDiv );
- rRect.Right() =BigMulDiv( rRect.Right() , nMapMul, nMapDiv );
- rRect.Bottom()=BigMulDiv( rRect.Bottom(), nMapMul, nMapDiv );
- }
-}
-
-void SvxMSDffManager::Scale( Polygon& rPoly ) const
-{
- if ( !bNeedMap )
- return;
- USHORT nPointAnz = rPoly.GetSize();
- for ( USHORT nPointNum = 0; nPointNum < nPointAnz; nPointNum++ )
- Scale( rPoly[ nPointNum ] );
-}
-
-void SvxMSDffManager::Scale( PolyPolygon& rPoly ) const
-{
- if ( !bNeedMap )
- return;
- USHORT nPolyAnz = rPoly.Count();
- for ( USHORT nPolyNum = 0; nPolyNum < nPolyAnz; nPolyNum++ )
- Scale( rPoly[ nPolyNum ] );
-}
-
-void SvxMSDffManager::ScaleEmu( sal_Int32& rVal ) const
-{
- rVal = BigMulDiv( rVal, nEmuMul, nEmuDiv );
-}
-
-UINT32 SvxMSDffManager::ScalePt( UINT32 nVal ) const
-{
- MapUnit eMap = pSdrModel->GetScaleUnit();
- Fraction aFact( GetMapFactor( MAP_POINT, eMap ).X() );
- long aMul = aFact.GetNumerator();
- long aDiv = aFact.GetDenominator() * 65536;
- aFact = Fraction( aMul, aDiv ); // nochmal versuchen zu kuerzen
- return BigMulDiv( nVal, aFact.GetNumerator(), aFact.GetDenominator() );
-}
-
-INT32 SvxMSDffManager::ScalePoint( INT32 nVal ) const
-{
- return BigMulDiv( nVal, nPntMul, nPntDiv );
-};
-
-void SvxMSDffManager::SetModel(SdrModel* pModel, long nApplicationScale)
-{
- pSdrModel = pModel;
- if( pModel && (0 < nApplicationScale) )
- {
- // PPT arbeitet nur mit Einheiten zu 576DPI
- // WW hingegen verwendet twips, dh. 1440DPI.
- MapUnit eMap = pSdrModel->GetScaleUnit();
- Fraction aFact( GetMapFactor(MAP_INCH, eMap).X() );
- long nMul=aFact.GetNumerator();
- long nDiv=aFact.GetDenominator()*nApplicationScale;
- aFact=Fraction(nMul,nDiv); // nochmal versuchen zu kuerzen
- // Bei 100TH_MM -> 2540/576=635/144
- // Bei Twip -> 1440/576=5/2
- nMapMul = aFact.GetNumerator();
- nMapDiv = aFact.GetDenominator();
- bNeedMap = nMapMul!=nMapDiv;
-
- // MS-DFF-Properties sind grossteils in EMU (English Metric Units) angegeben
- // 1mm=36000emu, 1twip=635emu
- aFact=GetMapFactor(MAP_100TH_MM,eMap).X();
- nMul=aFact.GetNumerator();
- nDiv=aFact.GetDenominator()*360;
- aFact=Fraction(nMul,nDiv); // nochmal versuchen zu kuerzen
- // Bei 100TH_MM -> 1/360
- // Bei Twip -> 14,40/(25,4*360)=144/91440=1/635
- nEmuMul=aFact.GetNumerator();
- nEmuDiv=aFact.GetDenominator();
-
- // Und noch was fuer typografische Points
- aFact=GetMapFactor(MAP_POINT,eMap).X();
- nPntMul=aFact.GetNumerator();
- nPntDiv=aFact.GetDenominator();
- }
- else
- {
- pModel = 0;
- nMapMul = nMapDiv = nMapXOfs = nMapYOfs = nEmuMul = nEmuDiv = nPntMul = nPntDiv = 0;
- bNeedMap = FALSE;
- }
-}
-
-BOOL SvxMSDffManager::SeekToShape( SvStream& rSt, void* /* pClientData */, UINT32 nId ) const
-{
- BOOL bRet = FALSE;
- if ( mpFidcls )
- {
- UINT32 nMerk = rSt.Tell();
- UINT32 nShapeId, nSec = ( nId >> 10 ) - 1;
- if ( nSec < mnIdClusters )
- {
- sal_IntPtr nOfs = (sal_IntPtr)maDgOffsetTable.Get( mpFidcls[ nSec ].dgid );
- if ( nOfs )
- {
- rSt.Seek( nOfs );
- DffRecordHeader aEscherF002Hd;
- rSt >> aEscherF002Hd;
- ULONG nEscherF002End = aEscherF002Hd.GetRecEndFilePos();
- DffRecordHeader aEscherObjListHd;
- while ( rSt.Tell() < nEscherF002End )
- {
- rSt >> aEscherObjListHd;
- if ( aEscherObjListHd.nRecVer != 0xf )
- aEscherObjListHd.SeekToEndOfRecord( rSt );
- else if ( aEscherObjListHd.nRecType == DFF_msofbtSpContainer )
- {
- DffRecordHeader aShapeHd;
- if ( SeekToRec( rSt, DFF_msofbtSp, aEscherObjListHd.GetRecEndFilePos(), &aShapeHd ) )
- {
- rSt >> nShapeId;
- if ( nId == nShapeId )
- {
- aEscherObjListHd.SeekToBegOfRecord( rSt );
- bRet = TRUE;
- break;
- }
- }
- aEscherObjListHd.SeekToEndOfRecord( rSt );
- }
- }
- }
- }
- if ( !bRet )
- rSt.Seek( nMerk );
- }
- return bRet;
-}
-
-FASTBOOL SvxMSDffManager::SeekToRec( SvStream& rSt, USHORT nRecId, ULONG nMaxFilePos, DffRecordHeader* pRecHd, ULONG nSkipCount ) const
-{
- FASTBOOL bRet = FALSE;
- ULONG nFPosMerk = rSt.Tell(); // FilePos merken fuer ggf. spaetere Restauration
- DffRecordHeader aHd;
- do
- {
- rSt >> aHd;
- if ( aHd.nRecType == nRecId )
- {
- if ( nSkipCount )
- nSkipCount--;
- else
- {
- bRet = TRUE;
- if ( pRecHd != NULL )
- *pRecHd = aHd;
- else
- aHd.SeekToBegOfRecord( rSt );
- }
- }
- if ( !bRet )
- aHd.SeekToEndOfRecord( rSt );
- }
- while ( rSt.GetError() == 0 && rSt.Tell() < nMaxFilePos && !bRet );
- if ( !bRet )
- rSt.Seek( nFPosMerk ); // FilePos restaurieren
- return bRet;
-}
-
-FASTBOOL SvxMSDffManager::SeekToRec2( USHORT nRecId1, USHORT nRecId2, ULONG nMaxFilePos, DffRecordHeader* pRecHd, ULONG nSkipCount ) const
-{
- FASTBOOL bRet = FALSE;
- ULONG nFPosMerk = rStCtrl.Tell(); // FilePos merken fuer ggf. spaetere Restauration
- DffRecordHeader aHd;
- do
- {
- rStCtrl >> aHd;
- if ( aHd.nRecType == nRecId1 || aHd.nRecType == nRecId2 )
- {
- if ( nSkipCount )
- nSkipCount--;
- else
- {
- bRet = TRUE;
- if ( pRecHd )
- *pRecHd = aHd;
- else
- aHd.SeekToBegOfRecord( rStCtrl );
- }
- }
- if ( !bRet )
- aHd.SeekToEndOfRecord( rStCtrl );
- }
- while ( rStCtrl.GetError() == 0 && rStCtrl.Tell() < nMaxFilePos && !bRet );
- if ( !bRet )
- rStCtrl.Seek( nFPosMerk ); // FilePos restaurieren
- return bRet;
-}
-
-
-FASTBOOL SvxMSDffManager::GetColorFromPalette( USHORT /* nNum */, Color& rColor ) const
-{
- // diese Methode ist in der zum Excel-Import
- // abgeleiteten Klasse zu ueberschreiben...
- rColor.SetColor( COL_WHITE );
- return TRUE;
-}
-
-
-Color SvxMSDffManager::MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nContentProperty ) const
-{
- Color aColor( mnDefaultColor );
-
- // Fuer Textfarben: Header ist 0xfeRRGGBB
- if ( ( nColorCode & 0xfe000000 ) == 0xfe000000 )
- nColorCode &= 0x00ffffff;
-
- sal_uInt8 nUpper = (sal_uInt8)( nColorCode >> 24 );
- if( nUpper & 0x19 ) // if( nUpper & 0x1f )
- {
- if( ( nUpper & 0x08 ) || ( ( nUpper & 0x10 ) == 0 ) )
- {
- // SCHEMECOLOR
- if ( !GetColorFromPalette( ( nUpper & 8 ) ? (sal_uInt16)nColorCode : nUpper, aColor ) )
- {
- switch( nContentProperty )
- {
- case DFF_Prop_pictureTransparent :
- case DFF_Prop_shadowColor :
- case DFF_Prop_fillBackColor :
- case DFF_Prop_fillColor :
- aColor = Color( COL_WHITE );
- break;
- case DFF_Prop_lineColor :
- {
- aColor = Color( COL_BLACK );
- }
- break;
- }
- }
- }
- else // SYSCOLOR
- {
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
-
-// UINT16 nParameter = (BYTE)( nColorCode >> 16); // SJ: nice compiler optimization bug on windows, though downcasting
- UINT16 nParameter = sal_uInt16(( nColorCode >> 16 ) & 0x00ff); // the HiByte of nParameter is not zero, an exclusive AND is helping :o
- UINT16 nFunctionBits = (UINT16)( ( nColorCode & 0x00000f00 ) >> 8 );
- UINT16 nAdditionalFlags = (UINT16)( ( nColorCode & 0x0000f000) >> 8 );
- UINT16 nColorIndex = sal_uInt16(nColorCode & 0x00ff);
- UINT32 nPropColor = 0;
-
- sal_uInt16 nCProp = 0;
-
- switch ( nColorIndex )
- {
- case mso_syscolorButtonFace : aColor = rStyleSettings.GetFaceColor(); break;
- case mso_syscolorWindowText : aColor = rStyleSettings.GetWindowTextColor(); break;
- case mso_syscolorMenu : aColor = rStyleSettings.GetMenuColor(); break;
- case mso_syscolor3DLight :
- case mso_syscolorButtonHighlight :
- case mso_syscolorHighlight : aColor = rStyleSettings.GetHighlightColor(); break;
- case mso_syscolorHighlightText : aColor = rStyleSettings.GetHighlightTextColor(); break;
- case mso_syscolorCaptionText : aColor = rStyleSettings.GetMenuTextColor(); break;
- case mso_syscolorActiveCaption : aColor = rStyleSettings.GetHighlightColor(); break;
- case mso_syscolorButtonShadow : aColor = rStyleSettings.GetShadowColor(); break;
- case mso_syscolorButtonText : aColor = rStyleSettings.GetButtonTextColor(); break;
- case mso_syscolorGrayText : aColor = rStyleSettings.GetDeactiveColor(); break;
- case mso_syscolorInactiveCaption : aColor = rStyleSettings.GetDeactiveColor(); break;
- case mso_syscolorInactiveCaptionText : aColor = rStyleSettings.GetDeactiveColor(); break;
- case mso_syscolorInfoBackground : aColor = rStyleSettings.GetFaceColor(); break;
- case mso_syscolorInfoText : aColor = rStyleSettings.GetInfoTextColor(); break;
- case mso_syscolorMenuText : aColor = rStyleSettings.GetMenuTextColor(); break;
- case mso_syscolorScrollbar : aColor = rStyleSettings.GetFaceColor(); break;
- case mso_syscolorWindow : aColor = rStyleSettings.GetWindowColor(); break;
- case mso_syscolorWindowFrame : aColor = rStyleSettings.GetWindowColor(); break;
-
- case mso_colorFillColor :
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff );
- nCProp = DFF_Prop_fillColor;
- }
- break;
- case mso_colorLineOrFillColor : // ( use the line color only if there is a line )
- {
- if ( GetPropertyValue( DFF_Prop_fNoLineDrawDash ) & 8 )
- {
- nPropColor = GetPropertyValue( DFF_Prop_lineColor, 0 );
- nCProp = DFF_Prop_lineColor;
- }
- else
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff );
- nCProp = DFF_Prop_fillColor;
- }
- }
- break;
- case mso_colorLineColor :
- {
- nPropColor = GetPropertyValue( DFF_Prop_lineColor, 0 );
- nCProp = DFF_Prop_lineColor;
- }
- break;
- case mso_colorShadowColor :
- {
- nPropColor = GetPropertyValue( DFF_Prop_shadowColor, 0x808080 );
- nCProp = DFF_Prop_shadowColor;
- }
- break;
- case mso_colorThis : // ( use this color ... )
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
- nCProp = DFF_Prop_fillColor;
- }
- break;
- case mso_colorFillBackColor :
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillBackColor, 0xffffff );
- nCProp = DFF_Prop_fillBackColor;
- }
- break;
- case mso_colorLineBackColor :
- {
- nPropColor = GetPropertyValue( DFF_Prop_lineBackColor, 0xffffff );
- nCProp = DFF_Prop_lineBackColor;
- }
- break;
- case mso_colorFillThenLine : // ( use the fillcolor unless no fill and line )
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
- nCProp = DFF_Prop_fillColor;
- }
- break;
- case mso_colorIndexMask : // ( extract the color index ) ?
- {
- nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
- nCProp = DFF_Prop_fillColor;
- }
- break;
- }
- if ( nCProp && ( nPropColor & 0x10000000 ) == 0 ) // beware of looping recursive
- aColor = MSO_CLR_ToColor( nPropColor, nCProp );
-
- if( nAdditionalFlags & 0x80 ) // make color gray
- {
- UINT8 nZwi = aColor.GetLuminance();
- aColor = Color( nZwi, nZwi, nZwi );
- }
- switch( nFunctionBits )
- {
- case 0x01 : // darken color by parameter
- {
- aColor.SetRed( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetRed() ) >> 8 ) );
- aColor.SetGreen( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetGreen() ) >> 8 ) );
- aColor.SetBlue( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetBlue() ) >> 8 ) );
- }
- break;
- case 0x02 : // lighten color by parameter
- {
- UINT16 nInvParameter = ( 0x00ff - nParameter ) * 0xff;
- aColor.SetRed( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetRed() ) ) >> 8 ) );
- aColor.SetGreen( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetGreen() ) ) >> 8 ) );
- aColor.SetBlue( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetBlue() ) ) >> 8 ) );
- }
- break;
- case 0x03 : // add grey level RGB(p,p,p)
- {
- INT16 nR = (INT16)aColor.GetRed() + (INT16)nParameter;
- INT16 nG = (INT16)aColor.GetGreen() + (INT16)nParameter;
- INT16 nB = (INT16)aColor.GetBlue() + (INT16)nParameter;
- if ( nR > 0x00ff )
- nR = 0x00ff;
- if ( nG > 0x00ff )
- nG = 0x00ff;
- if ( nB > 0x00ff )
- nB = 0x00ff;
- aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
- }
- break;
- case 0x04 : // substract grey level RGB(p,p,p)
- {
- INT16 nR = (INT16)aColor.GetRed() - (INT16)nParameter;
- INT16 nG = (INT16)aColor.GetGreen() - (INT16)nParameter;
- INT16 nB = (INT16)aColor.GetBlue() - (INT16)nParameter;
- if ( nR < 0 )
- nR = 0;
- if ( nG < 0 )
- nG = 0;
- if ( nB < 0 )
- nB = 0;
- aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
- }
- break;
- case 0x05 : // substract from grey level RGB(p,p,p)
- {
- INT16 nR = (INT16)nParameter - (INT16)aColor.GetRed();
- INT16 nG = (INT16)nParameter - (INT16)aColor.GetGreen();
- INT16 nB = (INT16)nParameter - (INT16)aColor.GetBlue();
- if ( nR < 0 )
- nR = 0;
- if ( nG < 0 )
- nG = 0;
- if ( nB < 0 )
- nB = 0;
- aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
- }
- break;
- case 0x06 : // per component: black if < p, white if >= p
- {
- aColor.SetRed( aColor.GetRed() < nParameter ? 0x00 : 0xff );
- aColor.SetGreen( aColor.GetGreen() < nParameter ? 0x00 : 0xff );
- aColor.SetBlue( aColor.GetBlue() < nParameter ? 0x00 : 0xff );
- }
- break;
- }
- if ( nAdditionalFlags & 0x40 ) // top-bit invert
- aColor = Color( aColor.GetRed() ^ 0x80, aColor.GetGreen() ^ 0x80, aColor.GetBlue() ^ 0x80 );
-
- if ( nAdditionalFlags & 0x20 ) // invert color
- aColor = Color(0xff - aColor.GetRed(), 0xff - aColor.GetGreen(), 0xff - aColor.GetBlue());
- }
- }
- else if ( ( nUpper & 4 ) && ( ( nColorCode & 0xfffff8 ) == 0 ) )
- { // case of nUpper == 4 powerpoint takes this as agrument for a colorschemecolor
- GetColorFromPalette( nUpper, aColor );
- }
- else // hart attributiert, eventuell mit Hinweis auf SYSTEMRGB
- aColor = Color( (BYTE)nColorCode, (BYTE)( nColorCode >> 8 ), (BYTE)( nColorCode >> 16 ) );
- return aColor;
-}
-
-FASTBOOL SvxMSDffManager::ReadDffString(SvStream& rSt, String& rTxt) const
-{
- FASTBOOL bRet=FALSE;
- DffRecordHeader aStrHd;
- if( !ReadCommonRecordHeader(aStrHd, rSt) )
- rSt.Seek( aStrHd.nFilePos );
- else if ( aStrHd.nRecType == DFF_PST_TextBytesAtom || aStrHd.nRecType == DFF_PST_TextCharsAtom )
- {
- FASTBOOL bUniCode=aStrHd.nRecType==DFF_PST_TextCharsAtom;
- bRet=TRUE;
- ULONG nBytes = aStrHd.nRecLen;
- MSDFFReadZString( rSt, rTxt, nBytes, bUniCode );
- if( !bUniCode )
- {
- for ( xub_StrLen n = 0; n < nBytes; n++ )
- {
- if( rTxt.GetChar( n ) == 0x0B )
- rTxt.SetChar( n, ' ' ); // Weicher Umbruch
- // TODO: Zeilenumbruch im Absatz via Outliner setzen.
- }
- }
- aStrHd.SeekToEndOfRecord( rSt );
- }
- else
- aStrHd.SeekToBegOfRecord( rSt );
- return bRet;
-}
-
-// sj: I just want to set a string for a text object that may contain multiple
-// paragraphs. If I now take a look at the follwing code I get the impression that
-// our outliner is too complicate to be used properly,
-void SvxMSDffManager::ReadObjText( const String& rText, SdrObject* pObj ) const
-{
- SdrTextObj* pText = PTR_CAST( SdrTextObj, pObj );
- if ( pText )
- {
- SdrOutliner& rOutliner = pText->ImpGetDrawOutliner();
- rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
-
- BOOL bOldUpdateMode = rOutliner.GetUpdateMode();
- rOutliner.SetUpdateMode( FALSE );
- rOutliner.SetVertical( pText->IsVerticalWriting() );
-
- sal_uInt16 nParaIndex = 0;
- sal_uInt32 nParaSize;
- const sal_Unicode* pCurrent, *pBuf = rText.GetBuffer();
- const sal_Unicode* pEnd = rText.GetBuffer() + rText.Len();
-
- while( pBuf < pEnd )
- {
- pCurrent = pBuf;
-
- for ( nParaSize = 0; pBuf < pEnd; )
- {
- sal_Unicode nChar = *pBuf++;
- if ( nChar == 0xa )
- {
- if ( ( pBuf < pEnd ) && ( *pBuf == 0xd ) )
- pBuf++;
- break;
- }
- else if ( nChar == 0xd )
- {
- if ( ( pBuf < pEnd ) && ( *pBuf == 0xa ) )
- pBuf++;
- break;
- }
- else
- nParaSize++;
- }
- ESelection aSelection( nParaIndex, 0, nParaIndex, 0 );
- String aParagraph( pCurrent, (sal_uInt16)nParaSize );
- if ( !nParaIndex && !aParagraph.Len() ) // SJ: we are crashing if the first paragraph is empty ?
- aParagraph += (sal_Unicode)' '; // otherwise these two lines can be removed.
- rOutliner.Insert( aParagraph, nParaIndex, 0 );
- rOutliner.SetParaAttribs( nParaIndex, rOutliner.GetEmptyItemSet() );
-
- SfxItemSet aParagraphAttribs( rOutliner.GetEmptyItemSet() );
- if ( !aSelection.nStartPos )
- aParagraphAttribs.Put( SfxBoolItem( EE_PARA_BULLETSTATE, FALSE ) );
- aSelection.nStartPos = 0;
- rOutliner.QuickSetAttribs( aParagraphAttribs, aSelection );
- nParaIndex++;
- }
- OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
- rOutliner.Clear();
- rOutliner.SetUpdateMode( bOldUpdateMode );
- pText->SetOutlinerParaObject( pNewText );
- }
-}
-
-FASTBOOL SvxMSDffManager::ReadObjText(SvStream& rSt, SdrObject* pObj) const
-{
- FASTBOOL bRet=FALSE;
- SdrTextObj* pText = PTR_CAST(SdrTextObj, pObj);
- if( pText )
- {
- DffRecordHeader aTextHd;
- if( !ReadCommonRecordHeader(aTextHd, rSt) )
- rSt.Seek( aTextHd.nFilePos );
- else if ( aTextHd.nRecType==DFF_msofbtClientTextbox )
- {
- bRet=TRUE;
- ULONG nRecEnd=aTextHd.GetRecEndFilePos();
- DffRecordHeader aHd;
- String aText;
-// UINT32 nInvent=pText->GetObjInventor();
-// UINT16 nIdent=pText->GetObjIdentifier();
-
- SdrOutliner& rOutliner=pText->ImpGetDrawOutliner();
-// sal_Int16 nMinDepth = rOutliner.GetMinDepth();
- USHORT nOutlMode = rOutliner.GetMode();
-
- { // Wohl 'nen kleiner Bug der EditEngine, das die
- // Absastzattribute bei Clear() nicht entfernt werden.
- FASTBOOL bClearParaAttribs = TRUE;
- rOutliner.SetStyleSheet( 0, NULL );
- SfxItemSet aSet(rOutliner.GetEmptyItemSet());
- aSet.Put(SvxColorItem( COL_BLACK ));
- rOutliner.SetParaAttribs(0,aSet);
- pText->SetMergedItemSet(aSet);
-
- bClearParaAttribs = FALSE;
- if( bClearParaAttribs )
- {
- // Wohl 'nen kleiner Bug der EditEngine, dass die
- // Absastzattribute bei Clear() nicht entfernt werden.
- rOutliner.SetParaAttribs(0,rOutliner.GetEmptyItemSet());
- }
- }
- rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
-
-// ULONG nFilePosMerker=rSt.Tell();
- ////////////////////////////////////
- // TextString und MetaChars lesen //
- ////////////////////////////////////
- do
- {
- if( !ReadCommonRecordHeader(aHd, rSt) )
- rSt.Seek( aHd.nFilePos );
- else
- {
- switch (aHd.nRecType)
- {
- //case TextHeaderAtom
- //case TextSpecInfoAtom
- case DFF_PST_TextBytesAtom:
- case DFF_PST_TextCharsAtom:
- {
- aHd.SeekToBegOfRecord(rSt);
- ReadDffString(rSt, aText);
- }
- break;
- case DFF_PST_TextRulerAtom :
- {
- UINT16 nLen = (UINT16)aHd.nRecLen;
- if(nLen)
- {
- UINT16 nVal1, nVal2, nVal3;
- UINT16 nDefaultTab = 2540; // PPT def: 1 Inch //rOutliner.GetDefTab();
- UINT16 nMostrightTab = 0;
- SfxItemSet aSet(rOutliner.GetEmptyItemSet());
- SvxTabStopItem aTabItem(0, 0, SVX_TAB_ADJUST_DEFAULT, EE_PARA_TABS);
-
- rSt >> nVal1;
- rSt >> nVal2;
- nLen -= 4;
-
- // Allg. TAB verstellt auf Wert in nVal3
- if(nLen && (nVal1 & 0x0001))
- {
- rSt >> nVal3;
- nLen -= 2;
- nDefaultTab = (UINT16)(((UINT32)nVal3 * 1000) / 240);
- }
-
- // Weitere, frei gesetzte TABs
- if(nLen && (nVal1 & 0x0004))
- {
- rSt >> nVal1;
- nLen -= 2;
-
- // fest gesetzte TABs importieren
- while(nLen && nVal1--)
- {
- rSt >> nVal2;
- rSt >> nVal3;
- nLen -= 4;
-
- UINT16 nNewTabPos = (UINT16)(((UINT32)nVal2 * 1000) / 240);
- if(nNewTabPos > nMostrightTab)
- nMostrightTab = nNewTabPos;
-
- SvxTabStop aTabStop(nNewTabPos);
- aTabItem.Insert(aTabStop);
- }
- }
-
- // evtl. noch default-TABs ergaenzen (immer)
- UINT16 nObjWidth = sal_uInt16(pObj->GetSnapRect().GetWidth() + 1);
- UINT16 nDefaultTabPos = nDefaultTab;
-
- while(nDefaultTabPos <= nObjWidth && nDefaultTabPos <= nMostrightTab)
- nDefaultTabPos =
- nDefaultTabPos + nDefaultTab;
-
- while(nDefaultTabPos <= nObjWidth)
- {
- SvxTabStop aTabStop(nDefaultTabPos);
- aTabItem.Insert(aTabStop);
- nDefaultTabPos =
- nDefaultTabPos + nDefaultTab;
- }
-
- // Falls TABs angelegt wurden, setze diese
- if(aTabItem.Count())
- {
- aSet.Put(aTabItem);
- rOutliner.SetParaAttribs(0, aSet);
- }
- }
- }
- break;
- }
- aHd.SeekToEndOfRecord( rSt );
- }
- }
- while ( rSt.GetError() == 0 && rSt.Tell() < nRecEnd );
-
- ////////////////////////
- // SHIFT-Ret ersetzen //
- ////////////////////////
- if ( aText.Len() )
- {
- aText += ' ';
- aText.SetChar( aText.Len()-1, 0x0D );
- rOutliner.SetText( aText, rOutliner.GetParagraph( 0 ) );
-
- // SHIFT-Ret ersetzen im Outliner
- if(aText.GetTokenCount(0x0B) > 1)
- {
- UINT32 nParaCount = rOutliner.GetParagraphCount();
- for(UINT16 a=0;a<nParaCount;a++)
- {
- Paragraph* pActPara = rOutliner.GetParagraph(a);
- String aParaText = rOutliner.GetText(pActPara);
- for(UINT16 b=0;b<aParaText.Len();b++)
- {
- if( aParaText.GetChar( b ) == 0x0B)
- {
- ESelection aSelection(a, b, a, b+1);
- rOutliner.QuickInsertLineBreak(aSelection);
- }
- }
- }
- }
- }
- OutlinerParaObject* pNewText=rOutliner.CreateParaObject();
- rOutliner.Init( nOutlMode );
- pText->NbcSetOutlinerParaObject(pNewText);
- }
- else
- aTextHd.SeekToBegOfRecord(rSt);
-
- }
- return bRet;
-}
-
-//static
-void SvxMSDffManager::MSDFFReadZString( SvStream& rIn, String& rStr,
- ULONG nRecLen, FASTBOOL bUniCode )
-{
- sal_uInt16 nLen = (sal_uInt16)nRecLen;
- if( nLen )
- {
- if ( bUniCode )
- nLen >>= 1;
-
- String sBuf;
- sal_Unicode* pBuf = sBuf.AllocBuffer( nLen );
-
- if( bUniCode )
- {
- rIn.Read( (sal_Char*)pBuf, nLen << 1 );
-
-#ifdef OSL_BIGENDIAN
- for( sal_uInt16 n = 0; n < nLen; ++n, ++pBuf )
- *pBuf = SWAPSHORT( *pBuf );
-#endif // ifdef OSL_BIGENDIAN
- }
- else
- {
- // use the String-Data as buffer for the 8bit characters and
- // change then all to unicode
- sal_Char* pReadPos = ((sal_Char*)pBuf) + nLen;
- rIn.Read( (sal_Char*)pReadPos, nLen );
- for( sal_uInt16 n = 0; n < nLen; ++n, ++pBuf, ++pReadPos )
- *pBuf = ByteString::ConvertToUnicode( *pReadPos, RTL_TEXTENCODING_MS_1252 );
- }
-
- rStr = sBuf.EraseTrailingChars( 0 );
- }
- else
- rStr.Erase();
-}
-
-SdrObject* SvxMSDffManager::ImportFontWork( SvStream& rStCt, SfxItemSet& rSet, Rectangle& rBoundRect ) const
-{
- SdrObject* pRet = NULL;
- String aObjectText;
- String aFontName;
- BOOL bTextRotate = FALSE;
-
- ((SvxMSDffManager*)this)->mnFix16Angle = 0; // we don't want to use this property in future
- if ( SeekToContent( DFF_Prop_gtextUNICODE, rStCt ) )
- MSDFFReadZString( rStCt, aObjectText, GetPropertyValue( DFF_Prop_gtextUNICODE ), TRUE );
- if ( SeekToContent( DFF_Prop_gtextFont, rStCt ) )
- MSDFFReadZString( rStCt, aFontName, GetPropertyValue( DFF_Prop_gtextFont ), TRUE );
- if ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x2000 )
- {
- // Text ist senkrecht formatiert, Box Kippen
- INT32 nHalfWidth = ( rBoundRect.GetWidth() + 1) >> 1;
- INT32 nHalfHeight = ( rBoundRect.GetHeight() + 1) >> 1;
- Point aTopLeft( rBoundRect.Left() + nHalfWidth - nHalfHeight,
- rBoundRect.Top() + nHalfHeight - nHalfWidth);
- Size aNewSize( rBoundRect.GetHeight(), rBoundRect.GetWidth() );
- Rectangle aNewRect( aTopLeft, aNewSize );
- rBoundRect = aNewRect;
-
- String aSrcText( aObjectText );
- aObjectText.Erase();
- for( UINT16 a = 0; a < aSrcText.Len(); a++ )
- {
- aObjectText += aSrcText.GetChar( a );
- aObjectText += '\n';
- }
- rSet.Put( SdrTextHorzAdjustItem( SDRTEXTHORZADJUST_CENTER ) );
- bTextRotate = TRUE;
- }
- if ( aObjectText.Len() )
- { // FontWork-Objekt Mit dem Text in aObjectText erzeugen
- SdrObject* pNewObj = new SdrRectObj( OBJ_TEXT, rBoundRect );
- if( pNewObj )
- {
- pNewObj->SetModel( pSdrModel );
- ((SdrRectObj*)pNewObj)->SetText( aObjectText );
- SdrFitToSizeType eFTS = SDRTEXTFIT_PROPORTIONAL;
- rSet.Put( SdrTextFitToSizeTypeItem( eFTS ) );
- rSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
- rSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
- rSet.Put( SvxFontItem( FAMILY_DONTKNOW, aFontName, String(),
- PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO ));
-
- pNewObj->SetMergedItemSet(rSet);
-
- pRet = pNewObj->ConvertToPolyObj( FALSE, FALSE );
- if( !pRet )
- pRet = pNewObj;
- else
- {
- pRet->NbcSetSnapRect( rBoundRect );
- SdrObject::Free( pNewObj );
- }
- if( bTextRotate )
- {
- double a = 9000 * nPi180;
- pRet->NbcRotate( rBoundRect.Center(), 9000, sin( a ), cos( a ) );
- }
- }
- }
- return pRet;
-}
-
-static Size lcl_GetPrefSize(const Graphic& rGraf, MapMode aWanted)
-{
- MapMode aPrefMapMode(rGraf.GetPrefMapMode());
- if (aPrefMapMode == aWanted)
- return rGraf.GetPrefSize();
- Size aRetSize;
- if (aPrefMapMode == MAP_PIXEL)
- {
- aRetSize = Application::GetDefaultDevice()->PixelToLogic(
- rGraf.GetPrefSize(), aWanted);
- }
- else
- {
- aRetSize = Application::GetDefaultDevice()->LogicToLogic(
- rGraf.GetPrefSize(), rGraf.GetPrefMapMode(), aWanted);
- }
- return aRetSize;
-}
-
-// sj: if the parameter pSet is null, then the resulting crop bitmap will be stored in rGraf,
-// otherwise rGraf is untouched and pSet is used to store the corresponding SdrGrafCropItem
-static void lcl_ApplyCropping( const DffPropSet& rPropSet, SfxItemSet* pSet, Graphic& rGraf )
-{
- sal_Int32 nCropTop = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromTop, 0 );
- sal_Int32 nCropBottom = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromBottom, 0 );
- sal_Int32 nCropLeft = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromLeft, 0 );
- sal_Int32 nCropRight = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromRight, 0 );
-
- if( nCropTop || nCropBottom || nCropLeft || nCropRight )
- {
- double fFactor;
- Size aCropSize;
- BitmapEx aCropBitmap;
- sal_uInt32 nTop( 0 ), nBottom( 0 ), nLeft( 0 ), nRight( 0 );
-
- if ( pSet ) // use crop attributes ?
- aCropSize = lcl_GetPrefSize( rGraf, MAP_100TH_MM );
- else
- {
- aCropBitmap = rGraf.GetBitmapEx();
- aCropSize = aCropBitmap.GetSizePixel();
- }
- if ( nCropTop )
- {
- fFactor = (double)nCropTop / 65536.0;
- nTop = (sal_uInt32)( ( (double)( aCropSize.Height() + 1 ) * fFactor ) + 0.5 );
- }
- if ( nCropBottom )
- {
- fFactor = (double)nCropBottom / 65536.0;
- nBottom = (sal_uInt32)( ( (double)( aCropSize.Height() + 1 ) * fFactor ) + 0.5 );
- }
- if ( nCropLeft )
- {
- fFactor = (double)nCropLeft / 65536.0;
- nLeft = (sal_uInt32)( ( (double)( aCropSize.Width() + 1 ) * fFactor ) + 0.5 );
- }
- if ( nCropRight )
- {
- fFactor = (double)nCropRight / 65536.0;
- nRight = (sal_uInt32)( ( (double)( aCropSize.Width() + 1 ) * fFactor ) + 0.5 );
- }
- if ( pSet ) // use crop attributes ?
- pSet->Put( SdrGrafCropItem( nLeft, nTop, nRight, nBottom ) );
- else
- {
- Rectangle aCropRect( nLeft, nTop, aCropSize.Width() - nRight, aCropSize.Height() - nBottom );
- aCropBitmap.Crop( aCropRect );
- rGraf = aCropBitmap;
- }
- }
-}
-
-SdrObject* SvxMSDffManager::ImportGraphic( SvStream& rSt, SfxItemSet& rSet, Rectangle& aBoundRect, const DffObjData& rObjData ) const
-{
- SdrObject* pRet = NULL;
- String aFilename;
- String aLinkFileName, aLinkFilterName;
- Rectangle aVisArea;
-
- MSO_BlipFlags eFlags = (MSO_BlipFlags)GetPropertyValue( DFF_Prop_pibFlags, mso_blipflagDefault );
- sal_uInt32 nBlipId = GetPropertyValue( DFF_Prop_pib, 0 );
- sal_Bool bGrfRead = sal_False,
-
- // Grafik verlinkt
- bLinkGrf = 0 != ( eFlags & mso_blipflagLinkToFile );
- {
- Graphic aGraf; // be sure this graphic is deleted before swapping out
- if( SeekToContent( DFF_Prop_pibName, rSt ) )
- MSDFFReadZString( rSt, aFilename, GetPropertyValue( DFF_Prop_pibName ), TRUE );
-
- // UND, ODER folgendes:
- if( !( eFlags & mso_blipflagDoNotSave ) ) // Grafik embedded
- {
- bGrfRead = GetBLIP( nBlipId, aGraf, &aVisArea );
- if ( !bGrfRead )
- {
- /*
- Still no luck, lets look at the end of this record for a FBSE pool,
- this fallback is a specific case for how word does it sometimes
- */
- rObjData.rSpHd.SeekToEndOfRecord( rSt );
- DffRecordHeader aHd;
- rSt >> aHd;
- if( DFF_msofbtBSE == aHd.nRecType )
- {
- const ULONG nSkipBLIPLen = 20;
- const ULONG nSkipShapePos = 4;
- const ULONG nSkipBLIP = 4;
- const ULONG nSkip =
- nSkipBLIPLen + 4 + nSkipShapePos + 4 + nSkipBLIP;
-
- if (nSkip <= aHd.nRecLen)
- {
- rSt.SeekRel(nSkip);
- if (0 == rSt.GetError())
- bGrfRead = GetBLIPDirect( rSt, aGraf, &aVisArea );
- }
- }
- }
- }
- if ( bGrfRead )
- {
- // the writer is doing it's own cropping, so this part affects only impress and calc
- if ( GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_CROP_BITMAPS )
- lcl_ApplyCropping( *this, ( rObjData.nSpFlags & SP_FOLESHAPE ) == 0 ? &rSet : NULL, aGraf );
-
- if ( IsProperty( DFF_Prop_pictureTransparent ) )
- {
- UINT32 nTransColor = GetPropertyValue( DFF_Prop_pictureTransparent, 0 );
-
- if ( aGraf.GetType() == GRAPHIC_BITMAP )
- {
- BitmapEx aBitmapEx( aGraf.GetBitmapEx() );
- Bitmap aBitmap( aBitmapEx.GetBitmap() );
- Bitmap aMask( aBitmap.CreateMask( MSO_CLR_ToColor( nTransColor, DFF_Prop_pictureTransparent ), 9 ) );
- if ( aBitmapEx.IsTransparent() )
- aMask.CombineSimple( aBitmapEx.GetMask(), BMP_COMBINE_OR );
- aGraf = BitmapEx( aBitmap, aMask );
- }
- }
-
- sal_Int32 nContrast = GetPropertyValue( DFF_Prop_pictureContrast, 0x10000 );
- /*
- 0x10000 is msoffice 50%
- < 0x10000 is in units of 1/50th of 0x10000 per 1%
- > 0x10000 is in units where
- a msoffice x% is stored as 50/(100-x) * 0x10000
-
- plus, a (ui) microsoft % ranges from 0 to 100, OOO
- from -100 to 100, so also normalize into that range
- */
- if ( nContrast > 0x10000 )
- {
- double fX = nContrast;
- fX /= 0x10000;
- fX /= 51; // 50 + 1 to round
- fX = 1/fX;
- nContrast = static_cast<sal_Int32>(fX);
- nContrast -= 100;
- nContrast = -nContrast;
- nContrast = (nContrast-50)*2;
- }
- else if ( nContrast == 0x10000 )
- nContrast = 0;
- else
- {
- nContrast *= 101; //100 + 1 to round
- nContrast /= 0x10000;
- nContrast -= 100;
- }
- sal_Int16 nBrightness = (sal_Int16)( (sal_Int32)GetPropertyValue( DFF_Prop_pictureBrightness, 0 ) / 327 );
- sal_Int32 nGamma = GetPropertyValue( DFF_Prop_pictureGamma, 0x10000 );
- GraphicDrawMode eDrawMode = GRAPHICDRAWMODE_STANDARD;
- switch ( GetPropertyValue( DFF_Prop_pictureActive ) & 6 )
- {
- case 4 : eDrawMode = GRAPHICDRAWMODE_GREYS; break;
- case 6 : eDrawMode = GRAPHICDRAWMODE_MONO; break;
- case 0 :
- {
- //office considers the converted values of (in OOo) 70 to be the
- //"watermark" values, which can vary slightly due to rounding from the
- //above values
- if (( nContrast == -70 ) && ( nBrightness == 70 ))
- {
- nContrast = 0;
- nBrightness = 0;
- eDrawMode = GRAPHICDRAWMODE_WATERMARK;
- };
- }
- break;
- }
-
- if ( nContrast || nBrightness || ( nGamma != 0x10000 ) || ( eDrawMode != GRAPHICDRAWMODE_STANDARD ) )
- {
- if ( ( rObjData.nSpFlags & SP_FOLESHAPE ) == 0 )
- {
- if ( nBrightness )
- rSet.Put( SdrGrafLuminanceItem( nBrightness ) );
- if ( nContrast )
- rSet.Put( SdrGrafContrastItem( (sal_Int16)nContrast ) );
- if ( nGamma != 0x10000 )
- rSet.Put( SdrGrafGamma100Item( nGamma / 655 ) );
- if ( eDrawMode != GRAPHICDRAWMODE_STANDARD )
- rSet.Put( SdrGrafModeItem( eDrawMode ) );
- }
- else
- {
- if ( eDrawMode == GRAPHICDRAWMODE_WATERMARK )
- {
- nContrast = 60;
- nBrightness = 70;
- eDrawMode = GRAPHICDRAWMODE_STANDARD;
- }
- switch ( aGraf.GetType() )
- {
- case GRAPHIC_BITMAP :
- {
- BitmapEx aBitmapEx( aGraf.GetBitmapEx() );
- if ( nBrightness || nContrast || ( nGamma != 0x10000 ) )
- aBitmapEx.Adjust( nBrightness, (sal_Int16)nContrast, 0, 0, 0, (double)nGamma / 0x10000, FALSE );
- if ( eDrawMode == GRAPHICDRAWMODE_GREYS )
- aBitmapEx.Convert( BMP_CONVERSION_8BIT_GREYS );
- else if ( eDrawMode == GRAPHICDRAWMODE_MONO )
- aBitmapEx.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
- aGraf = aBitmapEx;
-
- }
- break;
-
- case GRAPHIC_GDIMETAFILE :
- {
- GDIMetaFile aGdiMetaFile( aGraf.GetGDIMetaFile() );
- if ( nBrightness || nContrast || ( nGamma != 0x10000 ) )
- aGdiMetaFile.Adjust( nBrightness, (sal_Int16)nContrast, 0, 0, 0, (double)nGamma / 0x10000, FALSE );
- if ( eDrawMode == GRAPHICDRAWMODE_GREYS )
- aGdiMetaFile.Convert( MTF_CONVERSION_8BIT_GREYS );
- else if ( eDrawMode == GRAPHICDRAWMODE_MONO )
- aGdiMetaFile.Convert( MTF_CONVERSION_1BIT_THRESHOLD );
- aGraf = aGdiMetaFile;
- }
- break;
- default: break;
- }
- }
- }
- }
-
- // sollte es ein OLE-Object sein?
- if( bGrfRead && !bLinkGrf && IsProperty( DFF_Prop_pictureId ) )
- {
- // TODO/LATER: in future probably the correct aspect should be provided here
- sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
- // --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method
- pRet = ImportOLE( GetPropertyValue( DFF_Prop_pictureId ), aGraf, aBoundRect, aVisArea, rObjData.nCalledByGroup, nAspect );
- // <--
- }
- if( !pRet )
- {
- pRet = new SdrGrafObj;
- if( bGrfRead )
- ((SdrGrafObj*)pRet)->SetGraphic( aGraf );
-
- if( bLinkGrf && !bGrfRead ) // sj: #i55484# if the graphic was embedded ( bGrfRead == true ) then
- { // we do not need to set a link. TODO: not to lose the information where the graphic is linked from
- UniString aName( ::URIHelper::SmartRel2Abs( INetURLObject(maBaseURL), aFilename, URIHelper::GetMaybeFileHdl(), true, false,
- INetURLObject::WAS_ENCODED,
- INetURLObject::DECODE_UNAMBIGUOUS ) );
-
- String aFilterName;
- INetURLObject aURLObj( aName );
-
- if( aURLObj.GetProtocol() == INET_PROT_NOT_VALID )
- {
- String aValidURL;
-
- if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( aName, aValidURL ) )
- aURLObj = INetURLObject( aValidURL );
- }
-
- if( aURLObj.GetProtocol() != INET_PROT_NOT_VALID )
- {
- GraphicFilter* pGrfFilter = GetGrfFilter();
- aFilterName = pGrfFilter->GetImportFormatName(
- pGrfFilter->GetImportFormatNumberForShortName( aURLObj.getExtension() ) );
- }
-
- aLinkFileName = aName;
- aLinkFilterName = aFilterName;
- }
- }
-
- // set the size from BLIP if there is one
- if ( pRet && bGrfRead && !aVisArea.IsEmpty() )
- pRet->SetBLIPSizeRectangle( aVisArea );
-
- if ( !pRet->GetName().Len() ) // SJ 22.02.00 : PPT OLE IMPORT:
- { // name is already set in ImportOLE !!
- // JP 01.12.99: SetName before SetModel - because in the other order the Bug 70098 is active
- if ( ( eFlags & mso_blipflagType ) != mso_blipflagComment )
- {
- INetURLObject aURL;
- aURL.SetSmartURL( aFilename );
- pRet->SetName( aURL.getBase() );
- }
- else
- pRet->SetName( aFilename );
- }
- }
- pRet->SetModel( pSdrModel ); // fuer GraphicLink erforderlich
- pRet->SetLogicRect( aBoundRect );
-
- if ( pRet->ISA( SdrGrafObj ) )
- {
- if( aLinkFileName.Len() )
- ((SdrGrafObj*)pRet)->SetGraphicLink( aLinkFileName, aLinkFilterName );
-
- if ( bLinkGrf && !bGrfRead )
- {
- ((SdrGrafObj*)pRet)->ForceSwapIn();
- Graphic aGraf(((SdrGrafObj*)pRet)->GetGraphic());
- lcl_ApplyCropping( *this, &rSet, aGraf );
- }
- ((SdrGrafObj*)pRet)->ForceSwapOut();
- }
-
- return pRet;
-}
-
-// PptSlidePersistEntry& rPersistEntry, SdPage* pPage
-SdrObject* SvxMSDffManager::ImportObj( SvStream& rSt, void* pClientData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup, sal_Int32* pShapeId )
-{
- SdrObject* pRet = NULL;
- DffRecordHeader aObjHd;
- rSt >> aObjHd;
- if ( aObjHd.nRecType == DFF_msofbtSpgrContainer )
- {
- pRet = ImportGroup( aObjHd, rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup, pShapeId );
- }
- else if ( aObjHd.nRecType == DFF_msofbtSpContainer )
- {
- pRet = ImportShape( aObjHd, rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup, pShapeId );
- }
- aObjHd.SeekToBegOfRecord( rSt ); // FilePos restaurieren
- return pRet;
-}
-
-SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& rSt, void* pClientData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect,
- int nCalledByGroup, sal_Int32* pShapeId )
-{
- SdrObject* pRet = NULL;
-
- if( pShapeId )
- *pShapeId = 0;
-
- rHd.SeekToContent( rSt );
- DffRecordHeader aRecHd; // the first atom has to be the SpContainer for the GroupObject
- rSt >> aRecHd;
- if ( aRecHd.nRecType == DFF_msofbtSpContainer )
- {
- INT32 nGroupRotateAngle = 0;
- INT32 nSpFlags = 0;
- mnFix16Angle = 0;
- aRecHd.SeekToBegOfRecord( rSt );
- pRet = ImportObj( rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup + 1, pShapeId );
- if ( pRet )
- {
- nSpFlags = nGroupShapeFlags;
- nGroupRotateAngle = mnFix16Angle;
-
- Rectangle aClientRect( rClientRect );
-
- Rectangle aGlobalChildRect;
- if ( !nCalledByGroup || rGlobalChildRect.IsEmpty() )
- aGlobalChildRect = GetGlobalChildAnchor( rHd, rSt, aClientRect );
- else
- aGlobalChildRect = rGlobalChildRect;
-
- if ( ( nGroupRotateAngle > 4500 && nGroupRotateAngle <= 13500 )
- || ( nGroupRotateAngle > 22500 && nGroupRotateAngle <= 31500 ) )
- {
- sal_Int32 nHalfWidth = ( aGlobalChildRect.GetWidth() + 1 ) >> 1;
- sal_Int32 nHalfHeight = ( aGlobalChildRect.GetHeight() + 1 ) >> 1;
- Point aTopLeft( aGlobalChildRect.Left() + nHalfWidth - nHalfHeight,
- aGlobalChildRect.Top() + nHalfHeight - nHalfWidth );
- Size aNewSize( aGlobalChildRect.GetHeight(), aGlobalChildRect.GetWidth() );
- Rectangle aNewRect( aTopLeft, aNewSize );
- aGlobalChildRect = aNewRect;
- }
-
- // now importing the inner objects of the group
- aRecHd.SeekToEndOfRecord( rSt );
- while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aRecHd2;
- rSt >> aRecHd2;
- if ( aRecHd2.nRecType == DFF_msofbtSpgrContainer )
- {
- Rectangle aGroupClientAnchor, aGroupChildAnchor;
- GetGroupAnchors( aRecHd2, rSt, aGroupClientAnchor, aGroupChildAnchor, aClientRect, aGlobalChildRect );
- aRecHd2.SeekToBegOfRecord( rSt );
- sal_Int32 nShapeId;
- SdrObject* pTmp = ImportGroup( aRecHd2, rSt, pClientData, aGroupClientAnchor, aGroupChildAnchor, nCalledByGroup + 1, &nShapeId );
- if ( pTmp )
- {
- ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pTmp );
- if( nShapeId )
- insertShapeId( nShapeId, pTmp );
- }
- }
- else if ( aRecHd2.nRecType == DFF_msofbtSpContainer )
- {
- aRecHd2.SeekToBegOfRecord( rSt );
- sal_Int32 nShapeId;
- SdrObject* pTmp = ImportShape( aRecHd2, rSt, pClientData, aClientRect, aGlobalChildRect, nCalledByGroup + 1, &nShapeId );
- if ( pTmp )
- {
- ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pTmp );
- if( nShapeId )
- insertShapeId( nShapeId, pTmp );
- }
- }
- aRecHd2.SeekToEndOfRecord( rSt );
- }
-
- // pRet->NbcSetSnapRect( aGroupBound );
- if ( nGroupRotateAngle )
- {
- double a = nGroupRotateAngle * nPi180;
- pRet->NbcRotate( aClientRect.Center(), nGroupRotateAngle, sin( a ), cos( a ) );
- }
- if ( nSpFlags & SP_FFLIPV ) // Vertikal gespiegelt?
- { // BoundRect in aBoundRect
- Point aLeft( aClientRect.Left(), ( aClientRect.Top() + aClientRect.Bottom() ) >> 1 );
- Point aRight( aLeft.X() + 1000, aLeft.Y() );
- pRet->NbcMirror( aLeft, aRight );
- }
- if ( nSpFlags & SP_FFLIPH ) // Horizontal gespiegelt?
- { // BoundRect in aBoundRect
- Point aTop( ( aClientRect.Left() + aClientRect.Right() ) >> 1, aClientRect.Top() );
- Point aBottom( aTop.X(), aTop.Y() + 1000 );
- pRet->NbcMirror( aTop, aBottom );
- }
- }
- }
- return pRet;
-}
-
-SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& rSt, void* pClientData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect,
- int nCalledByGroup, sal_Int32* pShapeId )
-{
- SdrObject* pRet = NULL;
-
- if( pShapeId )
- *pShapeId = 0;
-
- rHd.SeekToBegOfRecord( rSt );
- Rectangle aBoundRect( rClientRect );
- DffObjData aObjData( rHd, aBoundRect, nCalledByGroup );
- maShapeRecords.Consume( rSt, FALSE );
- aObjData.bShapeType = maShapeRecords.SeekToContent( rSt, DFF_msofbtSp, SEEK_FROM_BEGINNING );
- if ( aObjData.bShapeType )
- {
- rSt >> aObjData.nShapeId
- >> aObjData.nSpFlags;
- aObjData.eShapeType = (MSO_SPT)maShapeRecords.Current()->nRecInstance;
- }
- else
- {
- aObjData.nShapeId = 0;
- aObjData.nSpFlags = 0;
- aObjData.eShapeType = mso_sptNil;
- }
-
- if( pShapeId )
- *pShapeId = aObjData.nShapeId;
-
- if ( mbTracing )
- mpTracer->AddAttribute( aObjData.nSpFlags & SP_FGROUP
- ? rtl::OUString::createFromAscii( "GroupShape" )
- : rtl::OUString::createFromAscii( "Shape" ),
- rtl::OUString::valueOf( (sal_Int32)aObjData.nShapeId ) );
- aObjData.bOpt = maShapeRecords.SeekToContent( rSt, DFF_msofbtOPT, SEEK_FROM_CURRENT_AND_RESTART );
- if ( aObjData.bOpt )
- {
- maShapeRecords.Current()->SeekToBegOfRecord( rSt );
-#ifdef DBG_AUTOSHAPE
- ReadPropSet( rSt, pClientData, (UINT32)aObjData.eShapeType );
-#else
- ReadPropSet( rSt, pClientData );
-#endif
- }
- else
- {
- InitializePropSet(); // get the default PropSet
- ( (DffPropertyReader*) this )->mnFix16Angle = 0;
- }
-
- aObjData.bChildAnchor = maShapeRecords.SeekToContent( rSt, DFF_msofbtChildAnchor, SEEK_FROM_CURRENT_AND_RESTART );
- if ( aObjData.bChildAnchor )
- {
- INT32 l, o, r, u;
- rSt >> l >> o >> r >> u;
- Scale( l );
- Scale( o );
- Scale( r );
- Scale( u );
- aObjData.aChildAnchor = Rectangle( l, o, r, u );
- if ( !rGlobalChildRect.IsEmpty() && !rClientRect.IsEmpty() && rGlobalChildRect.GetWidth() && rGlobalChildRect.GetHeight() )
- {
- double fl = l;
- double fo = o;
- double fWidth = r - l;
- double fHeight= u - o;
- double fXScale = (double)rClientRect.GetWidth() / (double)rGlobalChildRect.GetWidth();
- double fYScale = (double)rClientRect.GetHeight() / (double)rGlobalChildRect.GetHeight();
- fl = ( ( l - rGlobalChildRect.Left() ) * fXScale ) + rClientRect.Left();
- fo = ( ( o - rGlobalChildRect.Top() ) * fYScale ) + rClientRect.Top();
- fWidth *= fXScale;
- fHeight *= fYScale;
- aObjData.aChildAnchor = Rectangle( Point( (sal_Int32)fl, (sal_Int32)fo ), Size( (sal_Int32)( fWidth + 1 ), (sal_Int32)( fHeight + 1 ) ) );
- }
- }
-
- aObjData.bClientAnchor = maShapeRecords.SeekToContent( rSt, DFF_msofbtClientAnchor, SEEK_FROM_CURRENT_AND_RESTART );
- if ( aObjData.bClientAnchor )
- ProcessClientAnchor2( rSt, *maShapeRecords.Current(), pClientData, aObjData );
-
- if ( aObjData.bChildAnchor )
- aBoundRect = aObjData.aChildAnchor;
-
- if ( aObjData.nSpFlags & SP_FBACKGROUND )
- aBoundRect = Rectangle( Point(), Size( 1, 1 ) );
-
- Rectangle aTextRect;
- if ( !aBoundRect.IsEmpty() )
- { // Rotation auf BoundingBox anwenden, BEVOR ien Objekt generiert wurde
- if( mnFix16Angle )
- {
- long nAngle = mnFix16Angle;
- if ( ( nAngle > 4500 && nAngle <= 13500 ) || ( nAngle > 22500 && nAngle <= 31500 ) )
- {
- INT32 nHalfWidth = ( aBoundRect.GetWidth() + 1 ) >> 1;
- INT32 nHalfHeight = ( aBoundRect.GetHeight() + 1 ) >> 1;
- Point aTopLeft( aBoundRect.Left() + nHalfWidth - nHalfHeight,
- aBoundRect.Top() + nHalfHeight - nHalfWidth );
- Size aNewSize( aBoundRect.GetHeight(), aBoundRect.GetWidth() );
- Rectangle aNewRect( aTopLeft, aNewSize );
- aBoundRect = aNewRect;
- }
- }
- aTextRect = aBoundRect;
- FASTBOOL bGraphic = IsProperty( DFF_Prop_pib ) ||
- IsProperty( DFF_Prop_pibName ) ||
- IsProperty( DFF_Prop_pibFlags );
-
- if ( aObjData.nSpFlags & SP_FGROUP )
- {
- pRet = new SdrObjGroup;
- /* After CWS aw033 has been integrated, an empty group object
- cannot store its resulting bounding rectangle anymore. We have
- to return this rectangle via rClientRect now, but only, if
- caller has not passed an own bounding ractangle. */
- if ( rClientRect.IsEmpty() )
- rClientRect = aBoundRect;
- nGroupShapeFlags = aObjData.nSpFlags; // #73013#
- }
- else if ( ( aObjData.eShapeType != mso_sptNil ) || IsProperty( DFF_Prop_pVertices ) || bGraphic )
- {
- SfxItemSet aSet( pSdrModel->GetItemPool() );
-
- sal_Bool bIsConnector = ( ( aObjData.eShapeType >= mso_sptStraightConnector1 ) && ( aObjData.eShapeType <= mso_sptCurvedConnector5 ) );
- sal_Bool bIsCustomShape = sal_False;
- sal_Int32 nObjectRotation = mnFix16Angle;
- sal_uInt32 nSpFlags = aObjData.nSpFlags;
-
- if ( bGraphic )
- pRet = ImportGraphic( rSt, aSet, aBoundRect, aObjData ); // SJ: #68396# is no longer true (fixed in ppt2000)
- else
- {
- // Check if we are using our new as shape type. This is done by
- // the PowerPoint import now. As result nearly each escher object
- // will be imported as customshape, this is also done in the case for
- // simple text objects.
- // The new shape is having the advantage to fully support wordwrapping
- // and autogrow size attributes.
-
- if ( GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_IMPORT_IAS )
- {
- if ( GetCustomShapeContent( aObjData.eShapeType ) || IsProperty( DFF_Prop_pVertices ) )
- {
-
- ApplyAttributes( rSt, aSet, aObjData.eShapeType, aObjData.nSpFlags );
-
-// the com.sun.star.drawing.EnhancedCustomShapeEngine is default, so we do not need to set a hard attribute
-// aSet.Put( SdrCustomShapeEngineItem( String::CreateFromAscii( "com.sun.star.drawing.EnhancedCustomShapeEngine" ) ) );
- pRet = new SdrObjCustomShape();
- pRet->SetModel( pSdrModel );
-
- sal_Bool bIsFontwork = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x4000 ) != 0;
-
- // in case of a FontWork, the text is set by the escher import
- if ( bIsFontwork )
- {
- String aObjectText;
- String aFontName;
- MSO_GeoTextAlign eGeoTextAlign;
-
- if ( SeekToContent( DFF_Prop_gtextFont, rSt ) )
- {
- SvxFontItem aLatin(EE_CHAR_FONTINFO), aAsian(EE_CHAR_FONTINFO_CJK), aComplex(EE_CHAR_FONTINFO_CTL);
- GetDefaultFonts( aLatin, aAsian, aComplex );
-
- MSDFFReadZString( rSt, aFontName, GetPropertyValue( DFF_Prop_gtextFont ), TRUE );
- aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
- PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO ));
- aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
- PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO_CJK ) );
- aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
- PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO_CTL ) );
- }
-
- // SJ: applying fontattributes for Fontwork :
- if ( IsHardAttribute( DFF_Prop_gtextFItalic ) )
- aSet.Put( SvxPostureItem( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x0010 ) != 0 ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC ) );
-
- if ( IsHardAttribute( DFF_Prop_gtextFBold ) )
- aSet.Put( SvxWeightItem( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x0020 ) != 0 ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
-
- // SJ TODO: Vertical Writing is not correct, instead this should be
- // replaced through "CharacterRotation" by 90, therefore a new Item has to be
- // supported by svx core, api and xml file format
- ((SdrObjCustomShape*)pRet)->SetVerticalWriting( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x2000 ) != 0 );
-
- if ( SeekToContent( DFF_Prop_gtextUNICODE, rSt ) )
- {
- MSDFFReadZString( rSt, aObjectText, GetPropertyValue( DFF_Prop_gtextUNICODE ), TRUE );
- ReadObjText( aObjectText, pRet );
- }
-
- eGeoTextAlign = ( (MSO_GeoTextAlign)GetPropertyValue( DFF_Prop_gtextAlign, mso_alignTextCenter ) );
- {
- SdrTextHorzAdjust eHorzAdjust;
- switch( eGeoTextAlign )
- {
- case mso_alignTextLetterJust :
- case mso_alignTextWordJust :
- case mso_alignTextStretch : eHorzAdjust = SDRTEXTHORZADJUST_BLOCK; break;
- default:
- case mso_alignTextInvalid :
- case mso_alignTextCenter : eHorzAdjust = SDRTEXTHORZADJUST_CENTER; break;
- case mso_alignTextLeft : eHorzAdjust = SDRTEXTHORZADJUST_LEFT; break;
- case mso_alignTextRight : eHorzAdjust = SDRTEXTHORZADJUST_RIGHT; break;
- }
- aSet.Put( SdrTextHorzAdjustItem( eHorzAdjust ) );
-
- SdrFitToSizeType eFTS = SDRTEXTFIT_NONE;
- if ( eGeoTextAlign == mso_alignTextStretch )
- eFTS = SDRTEXTFIT_ALLLINES;
- aSet.Put( SdrTextFitToSizeTypeItem( eFTS ) );
- }
- if ( IsProperty( DFF_Prop_gtextSpacing ) )
- {
- sal_Int32 nTextWidth = GetPropertyValue( DFF_Prop_gtextSpacing, 100 < 16 ) / 655;
- if ( nTextWidth != 100 )
- aSet.Put( SvxCharScaleWidthItem( (sal_uInt16)nTextWidth, EE_CHAR_FONTWIDTH ) );
- }
- if ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x1000 ) // SJ: Font Kerning On ?
- aSet.Put( SvxKerningItem( 1, EE_CHAR_KERNING ) );
- }
- pRet->SetMergedItemSet( aSet );
-
- // sj: taking care of rtl, ltr. In case of fontwork mso. seems not to be able to set
- // proper text directions, instead the text default is depending to the string.
- // so we have to calculate the a text direction from string:
- if ( bIsFontwork )
- {
- OutlinerParaObject* pParaObj = ((SdrObjCustomShape*)pRet)->GetOutlinerParaObject();
- if ( pParaObj )
- {
- SdrOutliner& rOutliner = ((SdrObjCustomShape*)pRet)->ImpGetDrawOutliner();
- BOOL bOldUpdateMode = rOutliner.GetUpdateMode();
- SdrModel* pModel = pRet->GetModel();
- if ( pModel )
- rOutliner.SetStyleSheetPool( (SfxStyleSheetPool*)pModel->GetStyleSheetPool() );
- rOutliner.SetUpdateMode( FALSE );
- rOutliner.SetText( *pParaObj );
- VirtualDevice aVirDev( 1 );
- aVirDev.SetMapMode( MAP_100TH_MM );
- sal_uInt32 i, nParagraphs = rOutliner.GetParagraphCount();
- if ( nParagraphs )
- {
- sal_Bool bCreateNewParaObject = sal_False;
- for ( i = 0; i < nParagraphs; i++ )
- {
- BOOL bIsRTL = aVirDev.GetTextIsRTL( rOutliner.GetText( rOutliner.GetParagraph( i ) ), 0, STRING_LEN );
- if ( bIsRTL )
- {
- SfxItemSet aSet2( rOutliner.GetParaAttribs( (USHORT)i ) );
- aSet2.Put( SvxFrameDirectionItem( FRMDIR_HORI_RIGHT_TOP, EE_PARA_WRITINGDIR ) );
- rOutliner.SetParaAttribs( (USHORT)i, aSet2 );
- bCreateNewParaObject = sal_True;
- }
- }
- if ( bCreateNewParaObject )
- {
- OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
- rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
- ((SdrObjCustomShape*)pRet)->NbcSetOutlinerParaObject( pNewText );
- }
- }
- rOutliner.Clear();
- rOutliner.SetUpdateMode( bOldUpdateMode );
- }
- }
-
- // mso_sptArc special treating:
- // sj: since we actually can't render the arc because of its weird SnapRect settings,
- // we will create a new CustomShape, that can be saved/loaded without problems.
- // We will change the shape type, so this code applys only if importing arcs from msoffice.
- if ( aObjData.eShapeType == mso_sptArc )
- {
- const rtl::OUString sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
- const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
- const rtl::OUString sHandles( RTL_CONSTASCII_USTRINGPARAM ( "Handles" ) );
- const rtl::OUString sEquations( RTL_CONSTASCII_USTRINGPARAM ( "Equations" ) );
- const rtl::OUString sViewBox( RTL_CONSTASCII_USTRINGPARAM ( "ViewBox" ) );
- const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
- const rtl::OUString sTextFrames( RTL_CONSTASCII_USTRINGPARAM ( "TextFrames" ) );
- SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pRet)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair> seqCoordinates;
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > seqAdjustmentValues;
-
- // before clearing the GeometryItem we have to store the current Coordinates
- const uno::Any* pAny = ((SdrCustomShapeGeometryItem&)aGeometryItem).GetPropertyValueByName( sPath, sCoordinates );
- Rectangle aPolyBoundRect;
- if ( pAny && ( *pAny >>= seqCoordinates ) && ( seqCoordinates.getLength() >= 4 ) )
- {
- sal_Int32 nPtNum, nNumElemVert = seqCoordinates.getLength();
- XPolygon aXP( (sal_uInt16)nNumElemVert );
-// const EnhancedCustomShapeParameterPair* pTmp = seqCoordinates.getArray();
- for ( nPtNum = 0; nPtNum < nNumElemVert; nPtNum++ )
- {
- Point aP;
- sal_Int32 nX = 0, nY = 0;
- seqCoordinates[ nPtNum ].First.Value >>= nX;
- seqCoordinates[ nPtNum ].Second.Value >>= nY;
- aP.X() = nX;
- aP.Y() = nY;
- aXP[ (sal_uInt16)nPtNum ] = aP;
- }
- aPolyBoundRect = Rectangle( aXP.GetBoundRect() );
- }
- else
- aPolyBoundRect = Rectangle( -21600, 0, 21600, 43200 ); // defaulting
-
- // clearing items, so MergeDefaultAttributes will set the corresponding defaults from EnhancedCustomShapeGeometry
- aGeometryItem.ClearPropertyValue( sHandles );
- aGeometryItem.ClearPropertyValue( sEquations );
- aGeometryItem.ClearPropertyValue( sViewBox );
- aGeometryItem.ClearPropertyValue( sPath );
-
- sal_Int32 nEndAngle = 9000;
- sal_Int32 nStartAngle = 0;
- pAny = ((SdrCustomShapeGeometryItem&)aGeometryItem).GetPropertyValueByName( sAdjustmentValues );
- if ( pAny && ( *pAny >>= seqAdjustmentValues ) && seqAdjustmentValues.getLength() > 1 )
- {
- double fNumber;
- if ( seqAdjustmentValues[ 0 ].State == com::sun::star::beans::PropertyState_DIRECT_VALUE )
- {
- seqAdjustmentValues[ 0 ].Value >>= fNumber;
- nEndAngle = NormAngle360( - (sal_Int32)fNumber * 100 );
- }
- else
- {
- fNumber = 270.0;
- seqAdjustmentValues[ 0 ].Value <<= fNumber;
- seqAdjustmentValues[ 0 ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE; // so this value will properly be stored
- }
-
- if ( seqAdjustmentValues[ 1 ].State == com::sun::star::beans::PropertyState_DIRECT_VALUE )
- {
- seqAdjustmentValues[ 1 ].Value >>= fNumber;
- nStartAngle = NormAngle360( - (sal_Int32)fNumber * 100 );
- }
- else
- {
- fNumber = 0.0;
- seqAdjustmentValues[ 0 ].Value <<= fNumber;
- seqAdjustmentValues[ 1 ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
- }
-
- PropertyValue aPropVal;
- aPropVal.Name = sAdjustmentValues;
- aPropVal.Value <<= seqAdjustmentValues;
- aGeometryItem.SetPropertyValue( aPropVal ); // storing the angle attribute
- }
- if ( nStartAngle != nEndAngle )
- {
- XPolygon aXPoly( aPolyBoundRect.Center(), aPolyBoundRect.GetWidth() / 2, aPolyBoundRect.GetHeight() / 2,
- (USHORT)nStartAngle / 10, (USHORT)nEndAngle / 10, TRUE );
- Rectangle aPolyPieRect( aXPoly.GetBoundRect() );
-
- double fYScale, fXScale;
- double fYOfs, fXOfs;
-
- Point aP( aBoundRect.Center() );
- Size aS( aBoundRect.GetSize() );
- aP.X() -= aS.Width() / 2;
- aP.Y() -= aS.Height() / 2;
- Rectangle aLogicRect( aP, aS );
-
- fYOfs = fXOfs = 0.0;
-
- if ( aPolyBoundRect.GetWidth() && aPolyPieRect.GetWidth() )
- {
- fXScale = (double)aLogicRect.GetWidth() / (double)aPolyPieRect.GetWidth();
- if ( nSpFlags & SP_FFLIPH )
- fXOfs = ( (double)aPolyPieRect.Right() - (double)aPolyBoundRect.Right() ) * fXScale;
- else
- fXOfs = ( (double)aPolyBoundRect.Left() - (double)aPolyPieRect.Left() ) * fXScale;
- }
- if ( aPolyBoundRect.GetHeight() && aPolyPieRect.GetHeight() )
- {
- fYScale = (double)aLogicRect.GetHeight() / (double)aPolyPieRect.GetHeight();
- if ( nSpFlags & SP_FFLIPV )
- fYOfs = ( (double)aPolyPieRect.Bottom() - (double)aPolyBoundRect.Bottom() ) * fYScale;
- else
- fYOfs = ((double)aPolyBoundRect.Top() - (double)aPolyPieRect.Top() ) * fYScale;
- }
-
- fXScale = (double)aPolyBoundRect.GetWidth() / (double)aPolyPieRect.GetWidth();
- fYScale = (double)aPolyBoundRect.GetHeight() / (double)aPolyPieRect.GetHeight();
-
- Rectangle aOldBoundRect( aBoundRect );
- aBoundRect = Rectangle( Point( aLogicRect.Left() + (sal_Int32)fXOfs, aLogicRect.Top() + (sal_Int32)fYOfs ),
- Size( (sal_Int32)( aLogicRect.GetWidth() * fXScale ), (sal_Int32)( aLogicRect.GetHeight() * fYScale ) ) );
-
- // creating the text frame -> scaling into (0,0),(21600,21600) destination coordinate system
- double fTextFrameScaleX = (double)21600 / (double)aPolyBoundRect.GetWidth();
- double fTextFrameScaleY = (double)21600 / (double)aPolyBoundRect.GetHeight();
- sal_Int32 nLeft = (sal_Int32)(( aPolyPieRect.Left() - aPolyBoundRect.Left() ) * fTextFrameScaleX );
- sal_Int32 nTop = (sal_Int32)(( aPolyPieRect.Top() - aPolyBoundRect.Top() ) * fTextFrameScaleY );
- sal_Int32 nRight = (sal_Int32)(( aPolyPieRect.Right() - aPolyBoundRect.Left() ) * fTextFrameScaleX );
- sal_Int32 nBottom= (sal_Int32)(( aPolyPieRect.Bottom()- aPolyBoundRect.Top() ) * fTextFrameScaleY );
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aTextFrame( 1 );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].TopLeft.First, nLeft );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].TopLeft.Second, nTop );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].BottomRight.First, nRight );
- EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].BottomRight.Second,nBottom );
- PropertyValue aProp;
- aProp.Name = sTextFrames;
- aProp.Value <<= aTextFrame;
- aGeometryItem.SetPropertyValue( sPath, aProp );
-
- // sj: taking care of the different rotation points, since the new arc is having a bigger snaprect
- if ( mnFix16Angle )
- {
- sal_Int32 nAngle = mnFix16Angle;
- if ( nSpFlags & SP_FFLIPH )
- nAngle = 36000 - nAngle;
- if ( nSpFlags & SP_FFLIPV )
- nAngle = -nAngle;
- double a = nAngle * F_PI18000;
- double ss = sin( a );
- double cc = cos( a );
- Point aP1( aOldBoundRect.TopLeft() );
- Point aC1( aBoundRect.Center() );
- Point aP2( aOldBoundRect.TopLeft() );
- Point aC2( aOldBoundRect.Center() );
- RotatePoint( aP1, aC1, ss, cc );
- RotatePoint( aP2, aC2, ss, cc );
- aBoundRect.Move( aP2.X() - aP1.X(), aP2.Y() - aP1.Y() );
- }
- }
- ((SdrObjCustomShape*)pRet)->SetMergedItem( aGeometryItem );
- ((SdrObjCustomShape*)pRet)->MergeDefaultAttributes();
-
- // now setting a new name, so the above correction is only done once when importing from ms
- SdrCustomShapeGeometryItem aGeoName( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pRet)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
- const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
- const rtl::OUString sName( RTL_CONSTASCII_USTRINGPARAM ( "mso-spt100" ) );
- PropertyValue aPropVal;
- aPropVal.Name = sType;
- aPropVal.Value <<= sName;
- aGeoName.SetPropertyValue( aPropVal );
- ((SdrObjCustomShape*)pRet)->SetMergedItem( aGeoName );
- }
- else
- ((SdrObjCustomShape*)pRet)->MergeDefaultAttributes();
-
- pRet->SetSnapRect( aBoundRect );
- EnhancedCustomShape2d aCustomShape2d( pRet );
- aTextRect = aCustomShape2d.GetTextRect();
-
- bIsCustomShape = TRUE;
-
- if( bIsConnector )
- {
- if( nObjectRotation )
- {
- double a = nObjectRotation * nPi180;
- pRet->NbcRotate( aBoundRect.Center(), nObjectRotation, sin( a ), cos( a ) );
- }
- // Horizontal gespiegelt?
- if ( nSpFlags & SP_FFLIPH )
- {
- Rectangle aBndRect( pRet->GetSnapRect() );
- Point aTop( ( aBndRect.Left() + aBndRect.Right() ) >> 1, aBndRect.Top() );
- Point aBottom( aTop.X(), aTop.Y() + 1000 );
- pRet->NbcMirror( aTop, aBottom );
- }
- // Vertikal gespiegelt?
- if ( nSpFlags & SP_FFLIPV )
- {
- Rectangle aBndRect( pRet->GetSnapRect() );
- Point aLeft( aBndRect.Left(), ( aBndRect.Top() + aBndRect.Bottom() ) >> 1 );
- Point aRight( aLeft.X() + 1000, aLeft.Y() );
- pRet->NbcMirror( aLeft, aRight );
- }
- basegfx::B2DPolyPolygon aPoly( SdrObjCustomShape::GetLineGeometry( (SdrObjCustomShape*)pRet, sal_True ) );
- SdrObject::Free( pRet );
-
- pRet = new SdrEdgeObj();
- pRet->SetLogicRect(aBoundRect);
-
- // Konnektoren
- MSO_ConnectorStyle eConnectorStyle = (MSO_ConnectorStyle)GetPropertyValue( DFF_Prop_cxstyle, mso_cxstyleStraight );
-
- ((SdrEdgeObj*)pRet)->ConnectToNode(TRUE, NULL);
- ((SdrEdgeObj*)pRet)->ConnectToNode(FALSE, NULL);
-
- Point aPoint1( aBoundRect.TopLeft() );
- Point aPoint2( aBoundRect.BottomRight() );
-
- // Rotationen beachten
- if ( nObjectRotation )
- {
- double a = nObjectRotation * nPi180;
- Point aCenter( aBoundRect.Center() );
- double ss = sin(a);
- double cc = cos(a);
-
- RotatePoint(aPoint1, aCenter, ss, cc);
- RotatePoint(aPoint2, aCenter, ss, cc);
- }
-
- // Linie innerhalb des Bereiches zurechtdrehen/spiegeln
- if ( nSpFlags & SP_FFLIPH )
- {
- INT32 n = aPoint1.X();
- aPoint1.X() = aPoint2.X();
- aPoint2.X() = n;
- }
- if ( nSpFlags & SP_FFLIPV )
- {
- INT32 n = aPoint1.Y();
- aPoint1.Y() = aPoint2.Y();
- aPoint2.Y() = n;
- }
- nSpFlags &= ~( SP_FFLIPV | SP_FFLIPH );
-
- pRet->NbcSetPoint(aPoint1, 0L); // Startpunkt
- pRet->NbcSetPoint(aPoint2, 1L); // Endpunkt
-
- sal_Int32 n1HorzDist, n1VertDist, n2HorzDist, n2VertDist;
- n1HorzDist = n1VertDist = n2HorzDist = n2VertDist = 0;
- switch( eConnectorStyle )
- {
- case mso_cxstyleBent:
- {
- aSet.Put( SdrEdgeKindItem( SDREDGE_ORTHOLINES ) );
- n1HorzDist = n1VertDist = n2HorzDist = n2VertDist = 630;
- }
- break;
- case mso_cxstyleCurved:
- aSet.Put( SdrEdgeKindItem( SDREDGE_BEZIER ) );
- break;
- default: // mso_cxstyleStraight || mso_cxstyleNone
- aSet.Put( SdrEdgeKindItem( SDREDGE_ONELINE ) );
- break;
- }
- aSet.Put( SdrEdgeNode1HorzDistItem( n1HorzDist ) );
- aSet.Put( SdrEdgeNode1VertDistItem( n1VertDist ) );
- aSet.Put( SdrEdgeNode2HorzDistItem( n2HorzDist ) );
- aSet.Put( SdrEdgeNode2VertDistItem( n2VertDist ) );
-
- ((SdrEdgeObj*)pRet)->SetEdgeTrackPath( aPoly );
- }
- }
- }
- else
- {
- SvxMSDffCustomShape aCustomShape( *this, rSt, aObjData, aBoundRect, nObjectRotation, mpTracer );
- if ( !aCustomShape.IsEmpty() )
- {
- ApplyAttributes( rSt, aSet, aObjData.eShapeType, aObjData.nSpFlags );
- pRet = aCustomShape.GetObject( pSdrModel, aSet, TRUE );
- aTextRect = aCustomShape.GetTextRect();
- bIsCustomShape = TRUE;
- }
- }
- if ( !bIsCustomShape )
- {
- if ( aObjData.eShapeType == mso_sptTextBox )
- {
- if ( ( GetPropertyValue( DFF_Prop_fNoLineDrawDash ) & 8 )
- || ( GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 ) )
- {
- pRet = new SdrRectObj( aBoundRect ); // SJ: changed the type from OBJ_TEXT to OBJ_RECT (#88277#)
- }
- }
- else if ( ( ( aObjData.eShapeType >= mso_sptCallout1 ) && ( aObjData.eShapeType <= mso_sptAccentBorderCallout3 ) )
- || ( aObjData.eShapeType == mso_sptCallout90 )
- || ( aObjData.eShapeType == mso_sptAccentCallout90 )
- || ( aObjData.eShapeType == mso_sptBorderCallout90 )
- || ( aObjData.eShapeType == mso_sptAccentBorderCallout90 ) )
- {
- pRet = new SdrCaptionObj( aBoundRect );
- INT32 nAdjust0 = GetPropertyValue( DFF_Prop_adjustValue, 0 );
- INT32 nAdjust1 = GetPropertyValue( DFF_Prop_adjust2Value, 0 );
- if( nAdjust0 | nAdjust1 )
- { // AdjustValues anwenden, nur welche ?!?
- nAdjust0 = ( nAdjust0 * 100 ) / 850;
- nAdjust1 = ( nAdjust1 * 100 ) / 1275;
- Point aTailPos( nAdjust0 + aBoundRect.Left(), nAdjust1 + aBoundRect.Top() );
- ((SdrCaptionObj*)pRet)->NbcSetTailPos( aTailPos );
- }
- }
- else if( ( aObjData.eShapeType >= mso_sptTextPlainText ) && ( aObjData.eShapeType <= mso_sptTextCanDown ) ) // FontWork
- {
- aObjData.bIsAutoText = TRUE;
- if ( mbTracing )
- mpTracer->Trace( rtl::OUString::createFromAscii( "escher1000" ), rtl::OUString::valueOf( (sal_Int32)aObjData.eShapeType ) );
- pRet = ImportFontWork( rSt, aSet, aBoundRect );
- }
- else if ( aObjData.eShapeType == mso_sptLine )
- {
- basegfx::B2DPolygon aPoly;
- aPoly.append(basegfx::B2DPoint(aBoundRect.Left(), aBoundRect.Top()));
- aPoly.append(basegfx::B2DPoint(aBoundRect.Right(), aBoundRect.Bottom()));
- pRet = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aPoly));
- }
- else if ( ( (int)aObjData.eShapeType > (int)mso_sptRectangle ) && ( (int)aObjData.eShapeType < (int)mso_sptHostControl ) )
- {
- pRet = GetAutoForm( aObjData.eShapeType );
- if ( pRet )
- {
- mpTracer->Trace( rtl::OUString::createFromAscii( "escher1001" ), rtl::OUString::valueOf( (sal_Int32)aObjData.eShapeType ) );
- pRet->NbcSetSnapRect( aBoundRect ); // Groesse setzen
- }
- }
- }
- }
- if ( pRet )
- {
- if ( bIsConnector || !bIsCustomShape )
- {
- ApplyAttributes( rSt, aSet, aObjData.eShapeType, aObjData.nSpFlags );
- if ( !GetPropertyValue( DFF_Prop_gtextSize, 0 ) )
- aSet.Put( SvxFontHeightItem( ScalePt( 24 << 16 ), 100, EE_CHAR_FONTHEIGHT ) );
- if ( aObjData.eShapeType == mso_sptTextBox )
- aSet.Put( SdrTextMinFrameHeightItem( aBoundRect.GetHeight() ) );
- pRet->SetModel( pSdrModel );
- pRet->SetMergedItemSet(aSet);
- // Rotieren
- if ( pRet->ISA( SdrCaptionObj ) ) // sj: #96758# SetModel is changing
- pRet->SetSnapRect( aBoundRect ); // the original snaprect
- }
- // FillStyle != XFILL_NONE und nicht geschlossenes Polygon-Objekt?
- if( pRet->ISA( SdrPathObj ) )
- {
- XFillStyle eFillStyle = ITEMVALUE( aSet, XATTR_FILLSTYLE, XFillStyleItem );
- if( eFillStyle != XFILL_NONE )
- {
- // Das Polygon des Objektes muss geschlossen werden
- if(!((SdrPathObj*)pRet)->IsClosed())
- ((SdrPathObj*)pRet)->ToggleClosed(); //0);
- }
- }
- // Handelt es sich um 3D?
- if( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 8 )
- {
- // #81981# not all objects are effected by 3d effects
- if ( !bGraphic )
- {
- SdrObject* p3d = SvxMSDffCustomShape3D::Create3DObject( pRet, *this, aSet, aBoundRect, nSpFlags );
- if ( p3d )
- {
- nSpFlags &= ~( SP_FFLIPV | SP_FFLIPH );
- nObjectRotation = 0;
- SdrObject::Free( pRet );
- pRet = p3d;
- }
- }
- }
- }
- if ( pRet )
- {
- if( nObjectRotation /* && !bIsConnector */ )
- {
- double a = nObjectRotation * nPi180;
- pRet->NbcRotate( aBoundRect.Center(), nObjectRotation, sin( a ), cos( a ) );
- }
- // Horizontal gespiegelt?
- if ( nSpFlags & SP_FFLIPH )
- {
- Rectangle aBndRect( pRet->GetSnapRect() );
- Point aTop( ( aBndRect.Left() + aBndRect.Right() ) >> 1, aBndRect.Top() );
- Point aBottom( aTop.X(), aTop.Y() + 1000 );
- pRet->NbcMirror( aTop, aBottom );
- }
- // Vertikal gespiegelt?
- if ( nSpFlags & SP_FFLIPV )
- {
- Rectangle aBndRect( pRet->GetSnapRect() );
- Point aLeft( aBndRect.Left(), ( aBndRect.Top() + aBndRect.Bottom() ) >> 1 );
- Point aRight( aLeft.X() + 1000, aLeft.Y() );
- pRet->NbcMirror( aLeft, aRight );
- }
- }
- }
- }
-
- // #i51348# #118052# name of the shape
- if( pRet )
- {
- ::rtl::OUString aObjName = GetPropertyString( DFF_Prop_wzName, rSt );
- if( aObjName.getLength() > 0 )
- pRet->SetName( aObjName );
- }
-
- pRet =
- ProcessObj( rSt, aObjData, pClientData, aTextRect, pRet);
-
- if ( mbTracing )
- mpTracer->RemoveAttribute( aObjData.nSpFlags & SP_FGROUP
- ? rtl::OUString::createFromAscii( "GroupShape" )
- : rtl::OUString::createFromAscii( "Shape" ) );
- return pRet;
-}
-
-Rectangle SvxMSDffManager::GetGlobalChildAnchor( const DffRecordHeader& rHd, SvStream& rSt, Rectangle& aClientRect )
-{
- Rectangle aChildAnchor;
- rHd.SeekToContent( rSt );
- while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aShapeHd;
- rSt >> aShapeHd;
- if ( ( aShapeHd.nRecType == DFF_msofbtSpContainer ) ||
- ( aShapeHd.nRecType == DFF_msofbtSpgrContainer ) )
- {
- DffRecordHeader aShapeHd2( aShapeHd );
- if ( aShapeHd.nRecType == DFF_msofbtSpgrContainer )
- rSt >> aShapeHd2;
- while( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aShapeHd2.GetRecEndFilePos() ) )
- {
- DffRecordHeader aShapeAtom;
- rSt >> aShapeAtom;
-
- if ( aShapeAtom.nRecType == DFF_msofbtClientAnchor )
- {
- if ( GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_IMPORT_PPT )
- {
- sal_Int32 l, t, r, b;
- if ( aShapeAtom.nRecLen == 16 )
- {
- rSt >> l >> t >> r >> b;
- }
- else
- {
- INT16 ls, ts, rs, bs;
- rSt >> ts >> ls >> rs >> bs; // etwas seltsame Koordinatenreihenfolge ...
- l = ls, t = ts, r = rs, b = bs;
- }
- Scale( l );
- Scale( t );
- Scale( r );
- Scale( b );
- aClientRect = Rectangle( l, t, r, b );
- }
- break;
- }
- else if ( aShapeAtom.nRecType == DFF_msofbtChildAnchor )
- {
- sal_Int32 l, o, r, u;
- rSt >> l >> o >> r >> u;
- Scale( l );
- Scale( o );
- Scale( r );
- Scale( u );
- Rectangle aChild( l, o, r, u );
- aChildAnchor.Union( aChild );
- break;
- }
- aShapeAtom.SeekToEndOfRecord( rSt );
- }
- }
- aShapeHd.SeekToEndOfRecord( rSt );
- }
- return aChildAnchor;
-}
-
-void SvxMSDffManager::GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt,
- Rectangle& rGroupClientAnchor, Rectangle& rGroupChildAnchor,
- const Rectangle& rClientRect, const Rectangle& rGlobalChildRect )
-{
- sal_Bool bFirst = sal_True;
- rHd.SeekToContent( rSt );
- DffRecordHeader aShapeHd;
- while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
- {
- rSt >> aShapeHd;
- if ( ( aShapeHd.nRecType == DFF_msofbtSpContainer ) ||
- ( aShapeHd.nRecType == DFF_msofbtSpgrContainer ) )
- {
- DffRecordHeader aShapeHd2( aShapeHd );
- if ( aShapeHd.nRecType == DFF_msofbtSpgrContainer )
- rSt >> aShapeHd2;
- while( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aShapeHd2.GetRecEndFilePos() ) )
- {
- DffRecordHeader aShapeAtom;
- rSt >> aShapeAtom;
- if ( aShapeAtom.nRecType == DFF_msofbtChildAnchor )
- {
- sal_Int32 l, o, r, u;
- rSt >> l >> o >> r >> u;
- Scale( l );
- Scale( o );
- Scale( r );
- Scale( u );
- Rectangle aChild( l, o, r, u );
-
- if ( bFirst )
- {
- if ( !rGlobalChildRect.IsEmpty() && !rClientRect.IsEmpty() && rGlobalChildRect.GetWidth() && rGlobalChildRect.GetHeight() )
- {
- double fl = l;
- double fo = o;
- double fWidth = r - l;
- double fHeight= u - o;
- double fXScale = (double)rClientRect.GetWidth() / (double)rGlobalChildRect.GetWidth();
- double fYScale = (double)rClientRect.GetHeight() / (double)rGlobalChildRect.GetHeight();
- fl = ( ( l - rGlobalChildRect.Left() ) * fXScale ) + rClientRect.Left();
- fo = ( ( o - rGlobalChildRect.Top() ) * fYScale ) + rClientRect.Top();
- fWidth *= fXScale;
- fHeight *= fYScale;
- rGroupClientAnchor = Rectangle( Point( (sal_Int32)fl, (sal_Int32)fo ), Size( (sal_Int32)( fWidth + 1 ), (sal_Int32)( fHeight + 1 ) ) );
- }
- bFirst = sal_False;
- }
- else
- rGroupChildAnchor.Union( aChild );
- break;
- }
- aShapeAtom.SeekToEndOfRecord( rSt );
- }
- }
- aShapeHd.SeekToEndOfRecord( rSt );
- }
-}
-
-SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
- DffObjData& rObjData,
- void* pData,
- Rectangle& rTextRect,
- SdrObject* pObj
- )
-{
- if( !rTextRect.IsEmpty() )
- {
- SvxMSDffImportData& rImportData = *(SvxMSDffImportData*)pData;
- SvxMSDffImportRec* pImpRec = new SvxMSDffImportRec;
- SvxMSDffImportRec* pTextImpRec = pImpRec;
-
- // fill Import Record with data
- pImpRec->nShapeId = rObjData.nShapeId;
- pImpRec->eShapeType = rObjData.eShapeType;
-
- MSO_WrapMode eWrapMode( (MSO_WrapMode)GetPropertyValue(
- DFF_Prop_WrapText,
- mso_wrapSquare ) );
- rObjData.bClientAnchor = maShapeRecords.SeekToContent( rSt,
- DFF_msofbtClientAnchor,
- SEEK_FROM_CURRENT_AND_RESTART );
- if( rObjData.bClientAnchor )
- ProcessClientAnchor( rSt,
- maShapeRecords.Current()->nRecLen,
- pImpRec->pClientAnchorBuffer, pImpRec->nClientAnchorLen );
-
- rObjData.bClientData = maShapeRecords.SeekToContent( rSt,
- DFF_msofbtClientData,
- SEEK_FROM_CURRENT_AND_RESTART );
- if( rObjData.bClientData )
- ProcessClientData( rSt,
- maShapeRecords.Current()->nRecLen,
- pImpRec->pClientDataBuffer, pImpRec->nClientDataLen );
-
-
- // process user (== Winword) defined parameters in 0xF122 record
- if( maShapeRecords.SeekToContent( rSt,
- DFF_msofbtUDefProp,
- SEEK_FROM_CURRENT_AND_RESTART )
- && maShapeRecords.Current()->nRecLen )
- {
- UINT32 nBytesLeft = maShapeRecords.Current()->nRecLen;
- UINT32 nUDData;
- UINT16 nPID;
- while( 5 < nBytesLeft )
- {
- rSt >> nPID;
- if ( rSt.GetError() != 0 )
- break;
- rSt >> nUDData;
- switch( nPID )
- {
- case 0x038F: pImpRec->nXAlign = nUDData; break;
- case 0x0390: pImpRec->nXRelTo = nUDData; break;
- case 0x0391: pImpRec->nYAlign = nUDData; break;
- case 0x0392: pImpRec->nYRelTo = nUDData; break;
- case 0x03BF: pImpRec->nLayoutInTableCell = nUDData; break;
- }
- if ( rSt.GetError() != 0 )
- break;
- pImpRec->bHasUDefProp = TRUE;
- nBytesLeft -= 6;
- }
- }
-
- // Textrahmen, auch Title oder Outline
- SdrObject* pOrgObj = pObj;
- SdrRectObj* pTextObj = 0;
- UINT32 nTextId = GetPropertyValue( DFF_Prop_lTxid, 0 );
- if( nTextId )
- {
- SfxItemSet aSet( pSdrModel->GetItemPool() );
-
- //Originally anything that as a mso_sptTextBox was created as a
- //textbox, this was changed for #88277# to be created as a simple
- //rect to keep impress happy. For the rest of us we'd like to turn
- //it back into a textbox again.
- FASTBOOL bTextFrame = (pImpRec->eShapeType == mso_sptTextBox);
- if (!bTextFrame)
- {
- //Either
- //a) its a simple text object or
- //b) its a rectangle with text and square wrapping.
- bTextFrame =
- (
- (pImpRec->eShapeType == mso_sptTextSimple) ||
- (
- (pImpRec->eShapeType == mso_sptRectangle)
- && (eWrapMode == mso_wrapSquare)
- && ShapeHasText(pImpRec->nShapeId, rObjData.rSpHd.GetRecBegFilePos() )
- )
- );
- }
-
- if (bTextFrame)
- {
- SdrObject::Free( pObj );
- pObj = pOrgObj = 0;
- }
-
- // Distance of Textbox to it's surrounding Customshape
- INT32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, 91440L);
- INT32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, 91440L );
- INT32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, 45720L );
- INT32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, 45720L );
-
- ScaleEmu( nTextLeft );
- ScaleEmu( nTextRight );
- ScaleEmu( nTextTop );
- ScaleEmu( nTextBottom );
-
- INT32 nTextRotationAngle=0;
- bool bVerticalText = false;
- if ( IsProperty( DFF_Prop_txflTextFlow ) )
- {
- MSO_TextFlow eTextFlow = (MSO_TextFlow)(GetPropertyValue(
- DFF_Prop_txflTextFlow) & 0xFFFF);
- switch( eTextFlow )
- {
- case mso_txflBtoT:
- nTextRotationAngle = 9000;
- break;
- case mso_txflVertN:
- case mso_txflTtoBN:
- nTextRotationAngle = 27000;
- break;
- case mso_txflTtoBA:
- bVerticalText = true;
- break;
- case mso_txflHorzA:
- bVerticalText = true;
- nTextRotationAngle = 9000;
- case mso_txflHorzN:
- default :
- break;
- }
- }
-
- if (nTextRotationAngle)
- {
- while (nTextRotationAngle > 360000)
- nTextRotationAngle-=9000;
- switch (nTextRotationAngle)
- {
- case 9000:
- {
- long nWidth = rTextRect.GetWidth();
- rTextRect.Right() = rTextRect.Left() + rTextRect.GetHeight();
- rTextRect.Bottom() = rTextRect.Top() + nWidth;
-
- INT32 nOldTextLeft = nTextLeft;
- INT32 nOldTextRight = nTextRight;
- INT32 nOldTextTop = nTextTop;
- INT32 nOldTextBottom = nTextBottom;
-
- nTextLeft = nOldTextBottom;
- nTextRight = nOldTextTop;
- nTextTop = nOldTextLeft;
- nTextBottom = nOldTextRight;
- }
- break;
- case 27000:
- {
- long nWidth = rTextRect.GetWidth();
- rTextRect.Right() = rTextRect.Left() + rTextRect.GetHeight();
- rTextRect.Bottom() = rTextRect.Top() + nWidth;
-
- INT32 nOldTextLeft = nTextLeft;
- INT32 nOldTextRight = nTextRight;
- INT32 nOldTextTop = nTextTop;
- INT32 nOldTextBottom = nTextBottom;
-
- nTextLeft = nOldTextTop;
- nTextRight = nOldTextBottom;
- nTextTop = nOldTextRight;
- nTextBottom = nOldTextLeft;
- }
- break;
- default:
- break;
- }
- }
-
- pTextObj = new SdrRectObj(OBJ_TEXT, rTextRect);
- pTextImpRec = new SvxMSDffImportRec(*pImpRec);
-
- // Die vertikalen Absatzeinrueckungen sind im BoundRect mit drin,
- // hier rausrechnen
- Rectangle aNewRect(rTextRect);
- aNewRect.Bottom() -= nTextTop + nTextBottom;
- aNewRect.Right() -= nTextLeft + nTextRight;
-
- // Nur falls es eine einfache Textbox ist, darf der Writer
- // das Objekt durch einen Rahmen ersetzen, ansonsten
- if( bTextFrame )
- {
- SvxMSDffShapeInfo aTmpRec( 0, pImpRec->nShapeId );
- aTmpRec.bSortByShapeId = TRUE;
-
- USHORT nFound;
- if( pShapeInfos->Seek_Entry( &aTmpRec, &nFound ) )
- {
- SvxMSDffShapeInfo& rInfo = *pShapeInfos->GetObject(nFound);
- pTextImpRec->bReplaceByFly = rInfo.bReplaceByFly;
- pTextImpRec->bLastBoxInChain = rInfo.bLastBoxInChain;
- }
- }
-
- if( !pObj )
- ApplyAttributes( rSt, aSet, rObjData.eShapeType, rObjData.nSpFlags );
-
- bool bFitText = false;
- if (GetPropertyValue(DFF_Prop_FitTextToShape) & 2)
- {
- aSet.Put( SdrTextAutoGrowHeightItem( TRUE ) );
- aSet.Put( SdrTextMinFrameHeightItem(
- aNewRect.Bottom() - aNewRect.Top() ) );
- aSet.Put( SdrTextMinFrameWidthItem(
- aNewRect.Right() - aNewRect.Left() ) );
- bFitText = true;
- }
- else
- {
- aSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
- aSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
- }
-
- switch ( (MSO_WrapMode)
- GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) )
- {
- case mso_wrapNone :
- aSet.Put( SdrTextAutoGrowWidthItem( TRUE ) );
- if (bFitText)
- {
- //can't do autowidth in flys #i107184#
- pTextImpRec->bReplaceByFly = false;
- }
- break;
- case mso_wrapByPoints :
- aSet.Put( SdrTextContourFrameItem( TRUE ) );
- break;
- default: break;
- }
-
- // Abstaende an den Raendern der Textbox setzen
- aSet.Put( SdrTextLeftDistItem( nTextLeft ) );
- aSet.Put( SdrTextRightDistItem( nTextRight ) );
- aSet.Put( SdrTextUpperDistItem( nTextTop ) );
- aSet.Put( SdrTextLowerDistItem( nTextBottom ) );
- pTextImpRec->nDxTextLeft = nTextLeft;
- pTextImpRec->nDyTextTop = nTextTop;
- pTextImpRec->nDxTextRight = nTextRight;
- pTextImpRec->nDyTextBottom = nTextBottom;
-
- // Textverankerung lesen
- if ( IsProperty( DFF_Prop_anchorText ) )
- {
- MSO_Anchor eTextAnchor =
- (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText );
-
- SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_CENTER;
- BOOL bTVASet(FALSE);
- SdrTextHorzAdjust eTHA = SDRTEXTHORZADJUST_CENTER;
- BOOL bTHASet(FALSE);
-
- switch( eTextAnchor )
- {
- case mso_anchorTop:
- {
- eTVA = SDRTEXTVERTADJUST_TOP;
- bTVASet = TRUE;
- }
- break;
- case mso_anchorTopCentered:
- {
- eTVA = SDRTEXTVERTADJUST_TOP;
- bTVASet = TRUE;
- bTHASet = TRUE;
- }
- break;
-
- case mso_anchorMiddle:
- bTVASet = TRUE;
- break;
- case mso_anchorMiddleCentered:
- {
- bTVASet = TRUE;
- bTHASet = TRUE;
- }
- break;
- case mso_anchorBottom:
- {
- eTVA = SDRTEXTVERTADJUST_BOTTOM;
- bTVASet = TRUE;
- }
- break;
- case mso_anchorBottomCentered:
- {
- eTVA = SDRTEXTVERTADJUST_BOTTOM;
- bTVASet = TRUE;
- bTHASet = TRUE;
- }
- break;
- /*
- case mso_anchorTopBaseline:
- case mso_anchorBottomBaseline:
- case mso_anchorTopCenteredBaseline:
- case mso_anchorBottomCenteredBaseline:
- break;
- */
- default : break;
- }
- // Einsetzen
- if ( bTVASet )
- aSet.Put( SdrTextVertAdjustItem( eTVA ) );
- if ( bTHASet )
- aSet.Put( SdrTextHorzAdjustItem( eTHA ) );
- }
-
- pTextObj->SetMergedItemSet(aSet);
- pTextObj->SetModel(pSdrModel);
-
- if (bVerticalText)
- pTextObj->SetVerticalWriting(sal_True);
-
- if (nTextRotationAngle)
- {
- long nMinWH = rTextRect.GetWidth() < rTextRect.GetHeight() ?
- rTextRect.GetWidth() : rTextRect.GetHeight();
- nMinWH /= 2;
- Point aPivot(rTextRect.TopLeft());
- aPivot.X() += nMinWH;
- aPivot.Y() += nMinWH;
- double a = nTextRotationAngle * nPi180;
- pTextObj->NbcRotate(aPivot, nTextRotationAngle, sin(a), cos(a));
- }
-
- // rotate text with shape ?
- if ( mnFix16Angle )
- {
- double a = mnFix16Angle * nPi180;
- pTextObj->NbcRotate( rObjData.rBoundRect.Center(), mnFix16Angle,
- sin( a ), cos( a ) );
- }
-
- if( !pObj )
- {
- pObj = pTextObj;
- }
- else
- {
- if( pTextObj != pObj )
- {
- SdrObject* pGroup = new SdrObjGroup;
- pGroup->GetSubList()->NbcInsertObject( pObj );
- pGroup->GetSubList()->NbcInsertObject( pTextObj );
- if (pOrgObj == pObj)
- pOrgObj = pGroup;
- else
- pOrgObj = pObj;
- pObj = pGroup;
- }
- }
- }
- else if( !pObj )
- {
- // simple rectangular objects are ignored by ImportObj() :-(
- // this is OK for Draw but not for Calc and Writer
- // cause here these objects have a default border
- pObj = new SdrRectObj(rTextRect);
- pOrgObj = pObj;
- pObj->SetModel( pSdrModel );
- SfxItemSet aSet( pSdrModel->GetItemPool() );
- ApplyAttributes( rSt, aSet, rObjData.eShapeType, rObjData.nSpFlags );
-
- const SfxPoolItem* pPoolItem=NULL;
- SfxItemState eState = aSet.GetItemState( XATTR_FILLCOLOR,
- FALSE, &pPoolItem );
- if( SFX_ITEM_DEFAULT == eState )
- aSet.Put( XFillColorItem( String(),
- Color( mnDefaultColor ) ) );
- pObj->SetMergedItemSet(aSet);
- }
-
- //Means that fBehindDocument is set
- if (GetPropertyValue(DFF_Prop_fPrint) & 0x20)
- pImpRec->bDrawHell = TRUE;
- else
- pImpRec->bDrawHell = FALSE;
- if (GetPropertyValue(DFF_Prop_fPrint) & 0x02)
- pImpRec->bHidden = TRUE;
- pTextImpRec->bDrawHell = pImpRec->bDrawHell;
- pTextImpRec->bHidden = pImpRec->bHidden;
- pImpRec->nNextShapeId = GetPropertyValue( DFF_Prop_hspNext, 0 );
- pTextImpRec->nNextShapeId=pImpRec->nNextShapeId;
-
- if ( nTextId )
- {
- pTextImpRec->aTextId.nTxBxS = (UINT16)( nTextId >> 16 );
- pTextImpRec->aTextId.nSequence = (UINT16)nTextId;
- }
-
- pTextImpRec->nDxWrapDistLeft = GetPropertyValue(
- DFF_Prop_dxWrapDistLeft, 114935L ) / 635L;
- pTextImpRec->nDyWrapDistTop = GetPropertyValue(
- DFF_Prop_dyWrapDistTop, 0 ) / 635L;
- pTextImpRec->nDxWrapDistRight = GetPropertyValue(
- DFF_Prop_dxWrapDistRight, 114935L ) / 635L;
- pTextImpRec->nDyWrapDistBottom = GetPropertyValue(
- DFF_Prop_dyWrapDistBottom, 0 ) / 635L;
- // 16.16 fraction times total image width or height, as appropriate.
-
- if (SeekToContent(DFF_Prop_pWrapPolygonVertices, rSt))
- {
- delete pTextImpRec->pWrapPolygon;
- sal_uInt16 nNumElemVert, nNumElemMemVert, nElemSizeVert;
- rSt >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
- if (nNumElemVert && ((nElemSizeVert == 8) || (nElemSizeVert == 4)))
- {
- pTextImpRec->pWrapPolygon = new Polygon(nNumElemVert);
- for (sal_uInt16 i = 0; i < nNumElemVert; ++i)
- {
- sal_Int32 nX, nY;
- if (nElemSizeVert == 8)
- rSt >> nX >> nY;
- else
- {
- sal_Int16 nSmallX, nSmallY;
- rSt >> nSmallX >> nSmallY;
- nX = nSmallX;
- nY = nSmallY;
- }
- (*(pTextImpRec->pWrapPolygon))[i].X() = nX;
- (*(pTextImpRec->pWrapPolygon))[i].Y() = nY;
- }
- }
- }
-
- pImpRec->nCropFromTop = GetPropertyValue(
- DFF_Prop_cropFromTop, 0 );
- pImpRec->nCropFromBottom = GetPropertyValue(
- DFF_Prop_cropFromBottom, 0 );
- pImpRec->nCropFromLeft = GetPropertyValue(
- DFF_Prop_cropFromLeft, 0 );
- pImpRec->nCropFromRight = GetPropertyValue(
- DFF_Prop_cropFromRight, 0 );
-
- pImpRec->bVFlip = (rObjData.nSpFlags & SP_FFLIPV) ? true : false;
- pImpRec->bHFlip = (rObjData.nSpFlags & SP_FFLIPH) ? true : false;
-
- UINT32 nLineFlags = GetPropertyValue( DFF_Prop_fNoLineDrawDash );
- pImpRec->eLineStyle = (nLineFlags & 8)
- ? (MSO_LineStyle)GetPropertyValue(
- DFF_Prop_lineStyle,
- mso_lineSimple )
- : (MSO_LineStyle)USHRT_MAX;
- pTextImpRec->eLineStyle = pImpRec->eLineStyle;
-
- if( pImpRec->nShapeId )
- {
- // Import-Record-Liste ergaenzen
- if( pOrgObj )
- {
- pImpRec->pObj = pOrgObj;
- rImportData.aRecords.Insert( pImpRec );
- }
-
- if( pTextObj && (pOrgObj != pTextObj) )
- {
- // Modify ShapeId (must be unique)
- pImpRec->nShapeId |= 0x8000000;
- pTextImpRec->pObj = pTextObj;
- rImportData.aRecords.Insert( pTextImpRec );
- }
-
- // Eintrag in Z-Order-Liste um Zeiger auf dieses Objekt ergaenzen
- /*Only store objects which are not deep inside the tree*/
- if( ( rObjData.nCalledByGroup == 0 )
- ||
- ( (rObjData.nSpFlags & SP_FGROUP)
- && (rObjData.nCalledByGroup < 2) )
- )
- StoreShapeOrder( pImpRec->nShapeId,
- ( ( (ULONG)pImpRec->aTextId.nTxBxS ) << 16 )
- + pImpRec->aTextId.nSequence, pObj );
- }
- else
- delete pImpRec;
- }
-
- return pObj;
-};
-
-void SvxMSDffManager::StoreShapeOrder(ULONG nId,
- ULONG nTxBx,
- SdrObject* pObject,
- SwFlyFrmFmt* pFly,
- short nHdFtSection) const
-{
- USHORT nShpCnt = pShapeOrders->Count();
- for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
- {
- SvxMSDffShapeOrder& rOrder
- = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
-
- if( rOrder.nShapeId == nId )
- {
- rOrder.nTxBxComp = nTxBx;
- rOrder.pObj = pObject;
- rOrder.pFly = pFly;
- rOrder.nHdFtSection = nHdFtSection;
- }
- }
-}
-
-
-void SvxMSDffManager::ExchangeInShapeOrder( SdrObject* pOldObject,
- ULONG nTxBx,
- SwFlyFrmFmt* pFly,
- SdrObject* pObject) const
-{
- USHORT nShpCnt = pShapeOrders->Count();
- for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
- {
- SvxMSDffShapeOrder& rOrder
- = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
-
- if( rOrder.pObj == pOldObject )
- {
- rOrder.pFly = pFly;
- rOrder.pObj = pObject;
- rOrder.nTxBxComp = nTxBx;
- }
- }
-}
-
-
-void SvxMSDffManager::RemoveFromShapeOrder( SdrObject* pObject ) const
-{
- USHORT nShpCnt = pShapeOrders->Count();
- for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
- {
- SvxMSDffShapeOrder& rOrder
- = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
-
- if( rOrder.pObj == pObject )
- {
- rOrder.pObj = 0;
- rOrder.pFly = 0;
- rOrder.nTxBxComp = 0;
- }
- }
-}
-
-
-
-
-//---------------------------------------------------------------------------
-// Hilfs Deklarationen
-//---------------------------------------------------------------------------
-
-/*struct SvxMSDffBLIPInfo -> in's Header-File
-{
- USHORT nBLIPType; // Art des BLIP: z.B. 6 fuer PNG
- ULONG nFilePos; // Offset des BLIP im Daten-Stream
- ULONG nBLIPSize; // Anzahl Bytes, die der BLIP im Stream einnimmt
- SvxMSDffBLIPInfo(USHORT nBType, ULONG nFPos, ULONG nBSize):
- nBLIPType( nBType ), nFilePos( nFPos ), nBLIPSize( nBSize ){}
-};
-*/
-
-SV_IMPL_PTRARR( SvxMSDffBLIPInfos, SvxMSDffBLIPInfo_Ptr );
-
-SV_IMPL_PTRARR( SvxMSDffShapeOrders, SvxMSDffShapeOrder_Ptr );
-
-SV_IMPL_OP_PTRARR_SORT( SvxMSDffShapeInfos, SvxMSDffShapeInfo_Ptr );
-
-SV_IMPL_OP_PTRARR_SORT( SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr );
-
-
-// Liste aller SvxMSDffImportRec fuer eine Gruppe
-SV_IMPL_OP_PTRARR_SORT(MSDffImportRecords, MSDffImportRec_Ptr)
-
-//---------------------------------------------------------------------------
-// exportierte Klasse: oeffentliche Methoden
-//---------------------------------------------------------------------------
-
-SvxMSDffManager::SvxMSDffManager(SvStream& rStCtrl_,
- const String& rBaseURL,
- long nOffsDgg_,
- SvStream* pStData_,
- SdrModel* pSdrModel_,// s. unten: SetModel()
- long nApplicationScale,
- ColorData mnDefaultColor_,
- ULONG nDefaultFontHeight_,
- SvStream* pStData2_,
- MSFilterTracer* pTracer )
- :DffPropertyReader( *this ),
- pFormModel( NULL ),
- pBLIPInfos( new SvxMSDffBLIPInfos ),
- pShapeInfos( new SvxMSDffShapeInfos ),
- pShapeOrders( new SvxMSDffShapeOrders ),
- nDefaultFontHeight( nDefaultFontHeight_),
- nOffsDgg( nOffsDgg_ ),
- nBLIPCount( USHRT_MAX ), // mit Error initialisieren, da wir erst pruefen,
- nShapeCount( USHRT_MAX ), // ob Kontroll-Stream korrekte Daten enthaellt
- maBaseURL( rBaseURL ),
- mpFidcls( NULL ),
- rStCtrl( rStCtrl_ ),
- pStData( pStData_ ),
- pStData2( pStData2_ ),
- nSvxMSDffSettings( 0 ),
- nSvxMSDffOLEConvFlags( 0 ),
- pEscherBlipCache( NULL ),
- mnDefaultColor( mnDefaultColor_),
- mpTracer( pTracer ),
- mbTracing( sal_False )
-{
- if ( mpTracer )
- {
- uno::Any aAny( mpTracer->GetProperty( rtl::OUString::createFromAscii( "On" ) ) );
- aAny >>= mbTracing;
- }
- SetModel( pSdrModel_, nApplicationScale );
-
- // FilePos des/der Stream(s) merken
- ULONG nOldPosCtrl = rStCtrl.Tell();
- ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
-
- // Falls kein Datenstream angegeben, gehen wir davon aus,
- // dass die BLIPs im Steuerstream stehen.
- if( !pStData )
- pStData = &rStCtrl;
-
- SetDefaultPropSet( rStCtrl, nOffsDgg );
-
- // Steuer Stream auslesen, im Erfolgsfall nBLIPCount setzen
- GetCtrlData( nOffsDgg );
-
- // Text-Box-Story-Ketten-Infos ueberpruefen
- CheckTxBxStoryChain();
-
- // alte FilePos des/der Stream(s) restaurieren
- rStCtrl.Seek( nOldPosCtrl );
- if( &rStCtrl != pStData )
- pStData->Seek( nOldPosData );
-}
-
-SvxMSDffManager::SvxMSDffManager( SvStream& rStCtrl_, const String& rBaseURL, MSFilterTracer* pTracer )
- :DffPropertyReader( *this ),
- pFormModel( NULL ),
- pBLIPInfos( new SvxMSDffBLIPInfos ),
- pShapeInfos( new SvxMSDffShapeInfos ),
- pShapeOrders( new SvxMSDffShapeOrders ),
- nDefaultFontHeight( 24 ),
- nOffsDgg( 0 ),
- nBLIPCount( USHRT_MAX ), // mit Error initialisieren, da wir erst pruefen,
- nShapeCount( USHRT_MAX ), // ob Kontroll-Stream korrekte Daten enthaellt
- maBaseURL( rBaseURL ),
- mpFidcls( NULL ),
- rStCtrl( rStCtrl_ ),
- pStData( 0 ),
- pStData2( 0 ),
- nSvxMSDffSettings( 0 ),
- nSvxMSDffOLEConvFlags( 0 ),
- pEscherBlipCache( NULL ),
- mnDefaultColor( COL_DEFAULT ),
- mpTracer( pTracer ),
- mbTracing( sal_False )
-{
- if ( mpTracer )
- {
- uno::Any aAny( mpTracer->GetProperty( rtl::OUString::createFromAscii( "On" ) ) );
- aAny >>= mbTracing;
- }
- SetModel( NULL, 0 );
-}
-
-SvxMSDffManager::~SvxMSDffManager()
-{
- if ( pEscherBlipCache )
- {
- void* pPtr;
- for ( pPtr = pEscherBlipCache->First(); pPtr; pPtr = pEscherBlipCache->Next() )
- delete (EscherBlipCacheEntry*)pPtr;
- delete pEscherBlipCache;
- }
- delete pBLIPInfos;
- delete pShapeInfos;
- delete pShapeOrders;
- delete pFormModel;
- delete[] mpFidcls;
-}
-
-void SvxMSDffManager::InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nOleConvFlags )
-{
- nOffsDgg = nOffsDgg_;
- pStData = pStData_;
- nSvxMSDffOLEConvFlags = nOleConvFlags;
-
- // FilePos des/der Stream(s) merken
- ULONG nOldPosCtrl = rStCtrl.Tell();
-
- SetDefaultPropSet( rStCtrl, nOffsDgg );
-
- // insert fidcl cluster table
- GetFidclData( nOffsDgg );
-
- // Steuer Stream auslesen, im Erfolgsfall nBLIPCount setzen
- GetCtrlData( nOffsDgg );
-
- // Text-Box-Story-Ketten-Infos ueberpruefen
- CheckTxBxStoryChain();
-
- // alte FilePos des/der Stream(s) restaurieren
- rStCtrl.Seek( nOldPosCtrl );
-}
-
-void SvxMSDffManager::SetDgContainer( SvStream& rSt )
-{
- UINT32 nFilePos = rSt.Tell();
- DffRecordHeader aDgContHd;
- rSt >> aDgContHd;
- // insert this container only if there is also a DgAtom
- if ( SeekToRec( rSt, DFF_msofbtDg, aDgContHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aRecHd;
- rSt >> aRecHd;
- UINT32 nDrawingId = aRecHd.nRecInstance;
- maDgOffsetTable.Insert( nDrawingId, (void*)nFilePos );
- rSt.Seek( nFilePos );
- }
-}
-
-void SvxMSDffManager::GetFidclData( long nOffsDggL )
-{
- if ( nOffsDggL )
- {
- UINT32 nDummy, nMerk = rStCtrl.Tell();
- rStCtrl.Seek( nOffsDggL );
-
- DffRecordHeader aRecHd;
- rStCtrl >> aRecHd;
-
- DffRecordHeader aDggAtomHd;
- if ( SeekToRec( rStCtrl, DFF_msofbtDgg, aRecHd.GetRecEndFilePos(), &aDggAtomHd ) )
- {
- aDggAtomHd.SeekToContent( rStCtrl );
- rStCtrl >> mnCurMaxShapeId
- >> mnIdClusters
- >> nDummy
- >> mnDrawingsSaved;
-
- if ( mnIdClusters-- > 2 )
- {
- if ( aDggAtomHd.nRecLen == ( mnIdClusters * sizeof( FIDCL ) + 16 ) )
- {
- mpFidcls = new FIDCL[ mnIdClusters ];
- for ( UINT32 i = 0; i < mnIdClusters; i++ )
- {
- rStCtrl >> mpFidcls[ i ].dgid
- >> mpFidcls[ i ].cspidCur;
- }
- }
- }
- }
- rStCtrl.Seek( nMerk );
- }
-}
-
-void SvxMSDffManager::CheckTxBxStoryChain()
-{
- SvxMSDffShapeInfos* pOld = pShapeInfos;
- USHORT nCnt = pOld->Count();
- pShapeInfos = new SvxMSDffShapeInfos( (nCnt < 255)
- ? nCnt
- : 255 );
- // altes Info-Array ueberarbeiten
- // (ist sortiert nach nTxBxComp)
- ULONG nChain = ULONG_MAX;
- USHORT nObjMark = 0;
- BOOL bSetReplaceFALSE = FALSE;
- USHORT nObj;
- for( nObj = 0; nObj < nCnt; ++nObj )
- {
- SvxMSDffShapeInfo* pObj = pOld->GetObject( nObj );
- if( pObj->nTxBxComp )
- {
- pObj->bLastBoxInChain = FALSE;
- // Gruppenwechsel ?
- // --> OD 2008-07-28 #156763#
- // the text id also contains an internal drawing container id
- // to distinguish between text id of drawing objects in different
- // drawing containers.
-// if( nChain != (pObj->nTxBxComp & 0xFFFF0000) )
- if( nChain != pObj->nTxBxComp )
- // <--
- {
- // voriger war letzter seiner Gruppe
- if( nObj )
- pOld->GetObject( nObj-1 )->bLastBoxInChain = TRUE;
- // Merker und Hilfs-Flag zuruecksetzen
- nObjMark = nObj;
- // --> OD 2008-07-28 #156763#
-// nChain = pObj->nTxBxComp & 0xFFFF0000;
- nChain = pObj->nTxBxComp;
- // <--
- bSetReplaceFALSE = !pObj->bReplaceByFly;
- }
- else
- if( !pObj->bReplaceByFly )
- {
- // Objekt, das NICHT durch Rahmen ersetzt werden darf ?
- // Hilfs-Flag setzen
- bSetReplaceFALSE = TRUE;
- // ggfs Flag in Anfang der Gruppe austragen
- for( USHORT nObj2 = nObjMark; nObj2 < nObj; ++nObj2 )
- pOld->GetObject( nObj2 )->bReplaceByFly = FALSE;
- }
-
- if( bSetReplaceFALSE )
- {
- pObj->bReplaceByFly = FALSE;
- }
- }
- // alle Shape-Info-Objekte in pShapeInfos umkopieren
- // (aber nach nShapeId sortieren)
- pObj->bSortByShapeId = TRUE;
- // --> OD 2008-07-28 #156763#
- pObj->nTxBxComp = pObj->nTxBxComp & 0xFFFF0000;
- // <--
- pShapeInfos->Insert( pObj );
- }
- // voriger war letzter seiner Gruppe
- if( nObj )
- pOld->GetObject( nObj-1 )->bLastBoxInChain = TRUE;
- // urspruengliches Array freigeben, ohne Objekte zu zerstoeren
- pOld->Remove((USHORT)0, nCnt);
- delete pOld;
-}
-
-
-/*****************************************************************************
-
- Einlesen der Shape-Infos im Ctor:
- ---------------------------------
- merken der Shape-Ids und zugehoerigen Blip-Nummern und TextBox-Infos
- ========= ============ =============
- und merken des File-Offsets fuer jedes Blip
- ============
-******************************************************************************/
-void SvxMSDffManager::GetCtrlData( long nOffsDgg_ )
-{
- // Start Offset unbedingt merken, falls wir nochmal aufsetzen muessen
- long nOffsDggL = nOffsDgg_;
-
- // Kontroll Stream positionieren
- rStCtrl.Seek( nOffsDggL );
-
- BYTE nVer;
- USHORT nInst;
- USHORT nFbt;
- UINT32 nLength;
- if( !this->ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength ) ) return;
-
- BOOL bOk;
- ULONG nPos = nOffsDggL + DFF_COMMON_RECORD_HEADER_SIZE;
-
- // Fall A: erst Drawing Group Container, dann n Mal Drawing Container
- if( DFF_msofbtDggContainer == nFbt )
- {
- GetDrawingGroupContainerData( rStCtrl, nLength );
-
- rStCtrl.Seek( STREAM_SEEK_TO_END );
- UINT32 nMaxStrPos = rStCtrl.Tell();
-
- nPos += nLength;
- // --> OD 2008-07-28 #156763#
- unsigned long nDrawingContainerId = 1;
- // <--
- do
- {
- rStCtrl.Seek( nPos );
-
- bOk = ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength ) && ( DFF_msofbtDgContainer == nFbt );
-
- if( !bOk )
- {
- nPos++;
- rStCtrl.Seek( nPos );
- bOk = ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength )
- && ( DFF_msofbtDgContainer == nFbt );
- }
- if( bOk )
- {
- // --> OD 2008-07-28 #156763#
- GetDrawingContainerData( rStCtrl, nLength, nDrawingContainerId );
- // <--
- }
- nPos += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
- // --> OD 2008-07-28 #156763#
- ++nDrawingContainerId;
- // <--
- }
- while( nPos < nMaxStrPos && bOk );
- }
-}
-
-
-// ab hier: Drawing Group Container d.h. Dokument - weit gueltige Daten
-// ======================= ========
-//
-void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, ULONG nLenDgg )
-{
- BYTE nVer;
- USHORT nInst;
- USHORT nFbt;
- UINT32 nLength;
-
- ULONG nLenBStoreCont = 0, nLenFBSE = 0, nRead = 0;
-
- // Nach einem BStore Container suchen
- do
- {
- if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
- nRead += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
- if( DFF_msofbtBstoreContainer == nFbt )
- {
- nLenBStoreCont = nLength; break;
- }
- rSt.SeekRel( nLength );
- }
- while( nRead < nLenDgg );
-
- if( !nLenBStoreCont ) return;
-
- // Im BStore Container alle Header der Container und Atome auslesen und die
- // relevanten Daten aller enthaltenen FBSEs in unserem Pointer Array ablegen.
- // Dabei zaehlen wir die gefundenen FBSEs im Member nBLIPCount mit.
-
- const ULONG nSkipBLIPLen = 20; // bis zu nBLIPLen zu ueberspringende Bytes
- const ULONG nSkipBLIPPos = 4; // dahinter bis zu nBLIPPos zu skippen
-
- sal_uInt32 nBLIPLen = 0, nBLIPPos = 0;
-
- nRead = 0;
- do
- {
- if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
- nRead += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
- if( DFF_msofbtBSE == nFbt )
- {
- nLenFBSE = nLength;
- // ist FBSE gross genug fuer unsere Daten
- BOOL bOk = ( nSkipBLIPLen + 4 + nSkipBLIPPos + 4 <= nLenFBSE );
-
- if( bOk )
- {
- rSt.SeekRel( nSkipBLIPLen );
- rSt >> nBLIPLen;
- rSt.SeekRel( nSkipBLIPPos );
- rSt >> nBLIPPos;
- bOk = rSt.GetError() == 0;
-
- nLength -= nSkipBLIPLen+ 4 + nSkipBLIPPos + 4;
- }
-
- if( bOk )
- {
- // Besonderheit:
- // Falls nBLIPLen kleiner ist als nLenFBSE UND nBLIPPos Null ist,
- // nehmen wir an, dass das Bild IM FBSE drin steht!
- if( (!nBLIPPos) && (nBLIPLen < nLenFBSE) )
- nBLIPPos = rSt.Tell() + 4;
-
- // Das hat ja fein geklappt!
- // Wir merken uns, dass wir einen FBSE mehr im Pointer Array haben.
- nBLIPPos = Calc_nBLIPPos(nBLIPPos, rSt.Tell());
-
- if( USHRT_MAX == nBLIPCount )
- nBLIPCount = 1;
- else
- nBLIPCount++;
-
- // Jetzt die Infos fuer spaetere Zugriffe speichern
- pBLIPInfos->Insert( new SvxMSDffBLIPInfo( nInst, nBLIPPos, nBLIPLen ),
- pBLIPInfos->Count() );
- }
- }
- rSt.SeekRel( nLength );
- }
- while( nRead < nLenBStoreCont );
-}
-
-
-// ab hier: Drawing Container d.h. Seiten (Blatt, Dia) - weit gueltige Daten
-// ================= ======
-//
-void SvxMSDffManager::GetDrawingContainerData( SvStream& rSt, ULONG nLenDg,
- const unsigned long nDrawingContainerId )
-{
- BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
-
- ULONG nReadDg = 0;
-
- // Wir stehen in einem Drawing Container (je einer pro Seite)
- // und muessen nun
- // alle enthaltenen Shape Group Container abklappern
- do
- {
- if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
- nReadDg += DFF_COMMON_RECORD_HEADER_SIZE;
- // Patriarch gefunden (der oberste Shape Group Container) ?
- if( DFF_msofbtSpgrContainer == nFbt )
- {
- if(!this->GetShapeGroupContainerData( rSt, nLength, TRUE, nDrawingContainerId )) return;
- }
- else
- // blanker Shape Container ? (ausserhalb vom Shape Group Container)
- if( DFF_msofbtSpContainer == nFbt )
- {
- if(!this->GetShapeContainerData( rSt, nLength, ULONG_MAX, nDrawingContainerId )) return;
- }
- else
- rSt.SeekRel( nLength );
- nReadDg += nLength;
- }
- while( nReadDg < nLenDg );
-}
-
-BOOL SvxMSDffManager::GetShapeGroupContainerData( SvStream& rSt,
- ULONG nLenShapeGroupCont,
- BOOL bPatriarch,
- const unsigned long nDrawingContainerId )
-{
- BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
- long nStartShapeGroupCont = rSt.Tell();
- // Wir stehen in einem Shape Group Container (ggfs. mehrere pro Seite)
- // und muessen nun
- // alle enthaltenen Shape Container abklappern
- BOOL bFirst = !bPatriarch;
- ULONG nReadSpGrCont = 0;
- do
- {
- if( !this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength ) )
- return FALSE;
- nReadSpGrCont += DFF_COMMON_RECORD_HEADER_SIZE;
- // Shape Container ?
- if( DFF_msofbtSpContainer == nFbt )
- {
- ULONG nGroupOffs = bFirst ? nStartShapeGroupCont - DFF_COMMON_RECORD_HEADER_SIZE : ULONG_MAX;
- if ( !this->GetShapeContainerData( rSt, nLength, nGroupOffs, nDrawingContainerId ) )
- return FALSE;
- bFirst = FALSE;
- }
- else
- // eingeschachtelter Shape Group Container ?
- if( DFF_msofbtSpgrContainer == nFbt )
- {
- if ( !this->GetShapeGroupContainerData( rSt, nLength, FALSE, nDrawingContainerId ) )
- return FALSE;
- }
- else
- rSt.SeekRel( nLength );
- nReadSpGrCont += nLength;
- }
- while( nReadSpGrCont < nLenShapeGroupCont );
- // den Stream wieder korrekt positionieren
- rSt.Seek( nStartShapeGroupCont + nLenShapeGroupCont );
- return TRUE;
-}
-
-BOOL SvxMSDffManager::GetShapeContainerData( SvStream& rSt,
- ULONG nLenShapeCont,
- ULONG nPosGroup,
- const unsigned long nDrawingContainerId )
-{
- BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
- long nStartShapeCont = rSt.Tell();
- // Wir stehen in einem Shape Container (ggfs. mehrere pro Sh. Group)
- // und muessen nun
- // die Shape Id und File-Pos (fuer spaetere, erneute Zugriffe)
- // und den ersten BStore Verweis (falls vorhanden) entnehmen
- ULONG nLenShapePropTbl = 0;
- ULONG nReadSpCont = 0;
-
- // File Offset des Shape-Containers bzw. der Gruppe(!) vermerken
- //
- ULONG nStartOffs = (ULONG_MAX > nPosGroup) ?
- nPosGroup : nStartShapeCont - DFF_COMMON_RECORD_HEADER_SIZE;
- SvxMSDffShapeInfo aInfo( nStartOffs );
-
- // duerfte das Shape durch einen Rahmen ersetzt werden ?
- // (vorausgesetzt, es zeigt sich, dass es eine TextBox ist,
- // und der Text nicht gedreht ist)
- BOOL bCanBeReplaced = (ULONG_MAX > nPosGroup) ? FALSE : TRUE;
-
- // wir wissen noch nicht, ob es eine TextBox ist
- MSO_SPT eShapeType = mso_sptNil;
- MSO_WrapMode eWrapMode = mso_wrapSquare;
-// BOOL bIsTextBox = FALSE;
-
- // Shape analysieren
- //
- do
- {
- if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return FALSE;
- nReadSpCont += DFF_COMMON_RECORD_HEADER_SIZE;
- // FSP ?
- if( ( DFF_msofbtSp == nFbt ) && ( 4 <= nLength ) )
- {
- // Wir haben den FSP gefunden: Shape Typ und Id vermerken!
- eShapeType = (MSO_SPT)nInst;
- rSt >> aInfo.nShapeId;
- rSt.SeekRel( nLength - 4 );
- nReadSpCont += nLength;
- }
- else if( DFF_msofbtOPT == nFbt ) // Shape Property Table ?
- {
- // Wir haben die Property Table gefunden:
- // nach der Blip Property suchen!
- ULONG nPropRead = 0;
- USHORT nPropId;
- sal_uInt32 nPropVal;
- nLenShapePropTbl = nLength;
-// UINT32 nPropCount = nInst;
- long nStartShapePropTbl = rSt.Tell();
-// UINT32 nComplexDataFilePos = nStartShapePropTbl + (nPropCount * 6);
- do
- {
- rSt >> nPropId
- >> nPropVal;
- nPropRead += 6;
-
- switch( nPropId )
- {
- case DFF_Prop_txflTextFlow :
- //Writer can now handle vertical textflows in its
- //native frames, to only need to do this for the
- //other two formats
-
- //Writer will handle all textflow except BtoT
- if (GetSvxMSDffSettings() &
- (SVXMSDFF_SETTINGS_IMPORT_PPT |
- SVXMSDFF_SETTINGS_IMPORT_EXCEL))
- {
- if( 0 != nPropVal )
- bCanBeReplaced = false;
- }
- else if (
- (nPropVal != mso_txflHorzN) &&
- (nPropVal != mso_txflTtoBA)
- )
- {
- bCanBeReplaced = false;
- }
- break;
- case DFF_Prop_cdirFont :
- //Writer can now handle right to left and left
- //to right in its native frames, so only do
- //this for the other two formats.
- if (GetSvxMSDffSettings() &
- (SVXMSDFF_SETTINGS_IMPORT_PPT |
- SVXMSDFF_SETTINGS_IMPORT_EXCEL))
- {
- if( 0 != nPropVal )
- bCanBeReplaced = FALSE;
- }
- break;
- case DFF_Prop_Rotation :
- if( 0 != nPropVal )
- bCanBeReplaced = FALSE;
- break;
-
- case DFF_Prop_gtextFStrikethrough :
- if( ( 0x20002000 & nPropVal ) == 0x20002000 )
- bCanBeReplaced = FALSE;
- break;
-
- case DFF_Prop_fc3DLightFace :
- if( ( 0x00080008 & nPropVal ) == 0x00080008 )
- bCanBeReplaced = FALSE;
- break;
-
- case DFF_Prop_WrapText :
- eWrapMode = (MSO_WrapMode)nPropVal;
- break;
-
- default:
- {
- // Bit gesetzt und gueltig?
- if( 0x4000 == ( nPropId & 0xC000 ) )
- {
- // Blip Property gefunden: BStore Idx vermerken!
- nPropRead = nLenShapePropTbl;
- }
- else if( 0x8000 & nPropId )
- {
- // komplexe Prop gefunden:
- // Laenge ist immer 6, nur die Laenge der nach der
- // eigentlichen Prop-Table anhaengenden Extra-Daten
- // ist unterschiedlich
- nPropVal = 6;
- }
- }
- break;
- }
-
-/*
-//JP 21.04.99: Bug 64510
-// alte Version, die unter OS/2 zu Compilerfehlern fuehrt und damit arge
-// Performance einbussen hat.
-
- if( 0x4000 == ( nPropId & 0xC000 ) )// Bit gesetzt und gueltig?
- {
- // Blip Property gefunden: BStore Idx vermerken!
- aInfo.nBStoreIdx = nPropVal; // Index im BStore Container
- break;
- }
- else
- if( ( ( (DFF_Prop_txflTextFlow == nPropId)
- || (DFF_Prop_Rotation == nPropId)
- || (DFF_Prop_cdirFont == nPropId) )
- && (0 != nPropVal) )
-
- || ( (DFF_Prop_gtextFStrikethrough == nPropId)
- && ( (0x20002000 & nPropVal) == 0x20002000) ) // also DFF_Prop_gtextFVertical
- || ( (DFF_Prop_fc3DLightFace == nPropId)
- && ( (0x00080008 & nPropVal) == 0x00080008) ) // also DFF_Prop_f3D
- )
- {
- bCanBeReplaced = FALSE; // Mist: gedrehter Text oder 3D-Objekt!
- }
- else
- if( DFF_Prop_WrapText == nPropId )
- {
- eWrapMode = (MSO_WrapMode)nPropVal;
- }
- ////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////
- // keine weitere Property-Auswertung: folge beim Shape-Import //
- ////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////
- else
- if( 0x8000 & nPropId )
- {
- // komplexe Prop gefunden: Laenge lesen und ueberspringen
- if(!SkipBytes( rSt, nPropVal )) return FALSE;
- nPropRead += nPropVal;
- }
-*/
- }
- while( nPropRead < nLenShapePropTbl );
- rSt.Seek( nStartShapePropTbl + nLenShapePropTbl );
- nReadSpCont += nLenShapePropTbl;
- }
- else if( ( DFF_msofbtClientTextbox == nFbt ) && ( 4 == nLength ) ) // Text-Box-Story-Eintrag gefunden
- {
- rSt >> aInfo.nTxBxComp;
- // --> OD 2008-07-28 #156763#
- // Add internal drawing container id to text id.
- // Note: The text id uses the first two bytes, while the internal
- // drawing container id used the second two bytes.
- aInfo.nTxBxComp = ( aInfo.nTxBxComp & 0xFFFF0000 ) +
- nDrawingContainerId;
- DBG_ASSERT( (aInfo.nTxBxComp & 0x0000FFFF) == nDrawingContainerId,
- "<SvxMSDffManager::GetShapeContainerData(..)> - internal drawing container Id could not be correctly merged into DFF_msofbtClientTextbox value." );
- // <--
- }
- else
- {
- rSt.SeekRel( nLength );
- nReadSpCont += nLength;
- }
- }
- while( nReadSpCont < nLenShapeCont );
-
- //
- // Jetzt ggfs. die Infos fuer spaetere Zugriffe auf das Shape speichern
- //
- if( aInfo.nShapeId )
- {
- // fuer Textboxen ggfs. ersetzen durch Rahmen erlauben
- if( bCanBeReplaced
- && aInfo.nTxBxComp
- && (
- ( eShapeType == mso_sptTextSimple )
- || ( eShapeType == mso_sptTextBox )
- || ( ( ( eShapeType == mso_sptRectangle )
- || ( eShapeType == mso_sptRoundRectangle )
- )
- ) ) )
- {
- aInfo.bReplaceByFly = TRUE;
- }
- pShapeInfos->Insert( new SvxMSDffShapeInfo( aInfo ) );
- pShapeOrders->Insert( new SvxMSDffShapeOrder( aInfo.nShapeId ),
- pShapeOrders->Count() );
- }
-
- // und den Stream wieder korrekt positionieren
- rSt.Seek( nStartShapeCont + nLenShapeCont );
- return TRUE;
-}
-
-
-
-/*****************************************************************************
-
- Zugriff auf ein Shape zur Laufzeit (ueber die Shape-Id)
- ----------------------------------
-******************************************************************************/
-BOOL SvxMSDffManager::GetShape(ULONG nId, SdrObject*& rpShape,
- SvxMSDffImportData& rData)
-{
- SvxMSDffShapeInfo aTmpRec(0, nId);
- aTmpRec.bSortByShapeId = TRUE;
-
- USHORT nFound;
- if( pShapeInfos->Seek_Entry(&aTmpRec, &nFound) )
- {
- SvxMSDffShapeInfo& rInfo = *pShapeInfos->GetObject( nFound );
-
- // eventuell altes Errorflag loeschen
- if( rStCtrl.GetError() )
- rStCtrl.ResetError();
- // FilePos des/der Stream(s) merken
- ULONG nOldPosCtrl = rStCtrl.Tell();
- ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
- // das Shape im Steuer Stream anspringen
- rStCtrl.Seek( rInfo.nFilePos );
-
- // Falls missglueckt, den Fehlerstatus zuruecksetzen und Pech gehabt!
- if( rStCtrl.GetError() )
- rStCtrl.ResetError();
- else
- rpShape = ImportObj( rStCtrl, &rData, rData.aParentRect, rData.aParentRect );
-
- // alte FilePos des/der Stream(s) restaurieren
- rStCtrl.Seek( nOldPosCtrl );
- if( &rStCtrl != pStData )
- pStData->Seek( nOldPosData );
- return ( 0 != rpShape );
- }
- return FALSE;
-}
-
-
-
-/* Zugriff auf ein BLIP zur Laufzeit (bei bereits bekannter Blip-Nr)
- ---------------------------------
-******************************************************************************/
-BOOL SvxMSDffManager::GetBLIP( ULONG nIdx_, Graphic& rData, Rectangle* pVisArea ) const
-{
- BOOL bOk = FALSE; // Ergebnisvariable initialisieren
- if ( pStData )
- {
- // check if a graphic for this blipId is already imported
- if ( nIdx_ && pEscherBlipCache )
- {
- EscherBlipCacheEntry* pEntry;
- for ( pEntry = (EscherBlipCacheEntry*)pEscherBlipCache->First(); pEntry;
- pEntry = (EscherBlipCacheEntry*)pEscherBlipCache->Next() )
- {
- if ( pEntry->nBlip == nIdx_ )
- { /* if this entry is available, then it should be possible
- to get the Graphic via GraphicObject */
- GraphicObject aGraphicObject( pEntry->aUniqueID );
- rData = aGraphicObject.GetGraphic();
- if ( rData.GetType() != GRAPHIC_NONE )
- bOk = sal_True;
- else
- delete (EscherBlipCacheEntry*)pEscherBlipCache->Remove();
- break;
- }
- }
- }
- if ( !bOk )
- {
- USHORT nIdx = USHORT( nIdx_ );
- if( !nIdx || (pBLIPInfos->Count() < nIdx) ) return FALSE;
-
- // eventuell alte(s) Errorflag(s) loeschen
- if( rStCtrl.GetError() )
- rStCtrl.ResetError();
- if( ( &rStCtrl != pStData )
- && pStData->GetError() )
- pStData->ResetError();
-
- // FilePos des/der Stream(s) merken
- ULONG nOldPosCtrl = rStCtrl.Tell();
- ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
-
- // passende Info-Struct aus unserem Pointer Array nehmen
- SvxMSDffBLIPInfo& rInfo = *(*pBLIPInfos)[ nIdx-1 ];
-
- // das BLIP Atom im Daten Stream anspringen
- pStData->Seek( rInfo.nFilePos );
- // ggfs. Fehlerstatus zuruecksetzen
- if( pStData->GetError() )
- pStData->ResetError();
- else
- bOk = GetBLIPDirect( *pStData, rData, pVisArea );
- if( pStData2 && !bOk )
- {
- // Fehler, aber zweite Chance: es gibt noch einen zweiten
- // Datenstream, in dem die Grafik liegen koennte!
- if( pStData2->GetError() )
- pStData2->ResetError();
- ULONG nOldPosData2 = pStData2->Tell();
- // das BLIP Atom im zweiten Daten Stream anspringen
- pStData2->Seek( rInfo.nFilePos );
- // ggfs. Fehlerstatus zuruecksetzen
- if( pStData2->GetError() )
- pStData2->ResetError();
- else
- bOk = GetBLIPDirect( *pStData2, rData, pVisArea );
- // alte FilePos des zweiten Daten-Stream restaurieren
- pStData2->Seek( nOldPosData2 );
- }
- // alte FilePos des/der Stream(s) restaurieren
- rStCtrl.Seek( nOldPosCtrl );
- if( &rStCtrl != pStData )
- pStData->Seek( nOldPosData );
-
- if ( bOk )
- {
- // create new BlipCacheEntry for this graphic
- GraphicObject aGraphicObject( rData );
- if ( !pEscherBlipCache )
- const_cast <SvxMSDffManager*> (this)->pEscherBlipCache = new List();
- EscherBlipCacheEntry* pNewEntry = new EscherBlipCacheEntry( nIdx_, aGraphicObject.GetUniqueID() );
- pEscherBlipCache->Insert( pNewEntry, LIST_APPEND );
- }
- }
- }
- return bOk;
-}
-
-/* Zugriff auf ein BLIP zur Laufzeit (mit korrekt positioniertem Stream)
- ---------------------------------
-******************************************************************************/
-BOOL SvxMSDffManager::GetBLIPDirect( SvStream& rBLIPStream, Graphic& rData, Rectangle* pVisArea ) const
-{
- ULONG nOldPos = rBLIPStream.Tell();
-
- int nRes = GRFILTER_OPENERROR; // Fehlervariable initialisieren
-
- // nachschauen, ob es sich auch wirklich um ein BLIP handelt
- UINT32 nLength;
- USHORT nInst, nFbt( 0 );
- BYTE nVer;
- if( ReadCommonRecordHeader( rBLIPStream, nVer, nInst, nFbt, nLength) && ( 0xF018 <= nFbt ) && ( 0xF117 >= nFbt ) )
- {
- Size aMtfSize100;
- BOOL bMtfBLIP = FALSE;
- BOOL bZCodecCompression = FALSE;
- // Nun exakt auf den Beginn der eingebetteten Grafik positionieren
- ULONG nSkip = ( nInst & 0x0001 ) ? 32 : 16;
-
- switch( nInst & 0xFFFE )
- {
- case 0x216 : // Metafile header then compressed WMF
- case 0x3D4 : // Metafile header then compressed EMF
- case 0x542 : // Metafile hd. then compressed PICT
- {
- rBLIPStream.SeekRel( nSkip + 20 );
-
- // read in size of metafile in EMUS
- rBLIPStream >> aMtfSize100.Width() >> aMtfSize100.Height();
-
- // scale to 1/100mm
- aMtfSize100.Width() /= 360, aMtfSize100.Height() /= 360;
-
- if ( pVisArea ) // seem that we currently are skipping the visarea position
- *pVisArea = Rectangle( Point(), aMtfSize100 );
-
- // skip rest of header
- nSkip = 6;
- bMtfBLIP = bZCodecCompression = TRUE;
- }
- break;
- case 0x46A : // One byte tag then JPEG (= JFIF) data
- case 0x6E0 : // One byte tag then PNG data
- case 0x7A8 :
- nSkip += 1; // One byte tag then DIB data
- break;
- }
- rBLIPStream.SeekRel( nSkip );
-
- SvStream* pGrStream = &rBLIPStream;
- SvMemoryStream* pOut = NULL;
- if( bZCodecCompression )
- {
- pOut = new SvMemoryStream( 0x8000, 0x4000 );
- ZCodec aZCodec( 0x8000, 0x8000 );
- aZCodec.BeginCompression();
- aZCodec.Decompress( rBLIPStream, *pOut );
- aZCodec.EndCompression();
- pOut->Seek( STREAM_SEEK_TO_BEGIN );
- pGrStream = pOut;
- }
-
-//#define DBG_EXTRACTGRAPHICS
-#ifdef DBG_EXTRACTGRAPHICS
-
- static sal_Int32 nCount;
-
- String aFileName( String( RTL_CONSTASCII_STRINGPARAM( "dbggfx" ) ) );
- aFileName.Append( String::CreateFromInt32( nCount++ ) );
- switch( nInst &~ 1 )
- {
- case 0x216 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".wmf" ) ) ); break;
- case 0x3d4 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".emf" ) ) ); break;
- case 0x542 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".pct" ) ) ); break;
- case 0x46a : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".jpg" ) ) ); break;
- case 0x6e0 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".png" ) ) ); break;
- case 0x7a8 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".bmp" ) ) ); break;
- }
-
- String aURLStr;
-
- if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( Application::GetAppFileName(), aURLStr ) )
- {
- INetURLObject aURL( aURLStr );
-
- aURL.removeSegment();
- aURL.removeFinalSlash();
- aURL.Append( aFileName );
-
- SvStream* pDbgOut = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_TRUNC | STREAM_WRITE );
-
- if( pDbgOut )
- {
- if ( bZCodecCompression )
- {
- pOut->Seek( STREAM_SEEK_TO_END );
- pDbgOut->Write( pOut->GetData(), pOut->Tell() );
- pOut->Seek( STREAM_SEEK_TO_BEGIN );
- }
- else
- {
- sal_Int32 nDbgLen = nLength - nSkip;
- if ( nDbgLen )
- {
- sal_Char* pDat = new sal_Char[ nDbgLen ];
- pGrStream->Read( pDat, nDbgLen );
- pDbgOut->Write( pDat, nDbgLen );
- pGrStream->SeekRel( -nDbgLen );
- delete[] pDat;
- }
- }
-
- delete pDbgOut;
- }
- }
-#endif
-
- if( ( nInst & 0xFFFE ) == 0x7A8 )
- { // DIBs direkt holen
- Bitmap aNew;
- if( aNew.Read( *pGrStream, FALSE ) )
- {
- rData = Graphic( aNew );
- nRes = GRFILTER_OK;
- }
- }
- else
- { // und unsere feinen Filter darauf loslassen
- GraphicFilter* pGF = GetGrfFilter();
- String aEmptyStr;
- nRes = pGF->ImportGraphic( rData, aEmptyStr, *pGrStream, GRFILTER_FORMAT_DONTKNOW );
-
- // SJ: I40472, sometimes the aspect ratio (aMtfSize100) does not match and we get scaling problems,
- // then it is better to use the prefsize that is stored within the metafile. Bug #72846# for what the
- // scaling has been implemented does not happen anymore.
- //
- // For pict graphics we will furthermore scale the metafile, because font scaling leads to error if the
- // dxarray is empty (this has been solved in wmf/emf but not for pict)
- if( bMtfBLIP && ( GRFILTER_OK == nRes ) && ( rData.GetType() == GRAPHIC_GDIMETAFILE ) && ( ( nInst & 0xFFFE ) == 0x542 ) )
- {
- if ( ( aMtfSize100.Width() >= 1000 ) && ( aMtfSize100.Height() >= 1000 ) )
- { // #75956#, scaling does not work properly, if the graphic is less than 1cm
- GDIMetaFile aMtf( rData.GetGDIMetaFile() );
- const Size aOldSize( aMtf.GetPrefSize() );
-
- if( aOldSize.Width() && ( aOldSize.Width() != aMtfSize100.Width() ) &&
- aOldSize.Height() && ( aOldSize.Height() != aMtfSize100.Height() ) )
- {
- aMtf.Scale( (double) aMtfSize100.Width() / aOldSize.Width(),
- (double) aMtfSize100.Height() / aOldSize.Height() );
- aMtf.SetPrefSize( aMtfSize100 );
- aMtf.SetPrefMapMode( MAP_100TH_MM );
- rData = aMtf;
- }
- }
- }
- }
- // ggfs. Fehlerstatus zuruecksetzen
- if ( ERRCODE_IO_PENDING == pGrStream->GetError() )
- pGrStream->ResetError();
- delete pOut;
- }
- rBLIPStream.Seek( nOldPos ); // alte FilePos des Streams restaurieren
-
- return ( GRFILTER_OK == nRes ); // Ergebniss melden
-}
-
-/* static */
-BOOL SvxMSDffManager::ReadCommonRecordHeader(DffRecordHeader& rRec, SvStream& rIn)
-{
- rRec.nFilePos = rIn.Tell();
- return SvxMSDffManager::ReadCommonRecordHeader( rIn,rRec.nRecVer,
- rRec.nRecInstance,
- rRec.nRecType,
- rRec.nRecLen );
-}
-
-
-/* auch static */
-BOOL SvxMSDffManager::ReadCommonRecordHeader( SvStream& rSt,
- BYTE& rVer,
- USHORT& rInst,
- USHORT& rFbt,
- UINT32& rLength )
-{
- sal_uInt16 nTmp;
- rSt >> nTmp >> rFbt >> rLength;
- rVer = sal::static_int_cast< BYTE >(nTmp & 15);
- rInst = nTmp >> 4;
- return rSt.GetError() == 0;
-}
-
-
-
-
-BOOL SvxMSDffManager::ProcessClientAnchor(SvStream& rStData, ULONG nDatLen,
- char*& rpBuff, UINT32& rBuffLen ) const
-{
- if( nDatLen )
- {
- rpBuff = new char[ nDatLen ];
- rBuffLen = nDatLen;
- rStData.Read( rpBuff, nDatLen );
- }
- return TRUE;
-}
-
-BOOL SvxMSDffManager::ProcessClientData(SvStream& rStData, ULONG nDatLen,
- char*& rpBuff, UINT32& rBuffLen ) const
-{
- if( nDatLen )
- {
- rpBuff = new char[ nDatLen ];
- rBuffLen = nDatLen;
- rStData.Read( rpBuff, nDatLen );
- }
- return TRUE;
-}
-
-
-void SvxMSDffManager::ProcessClientAnchor2( SvStream& /* rSt */, DffRecordHeader& /* rHd */ , void* /* pData */, DffObjData& /* rObj */ )
-{
- return; // wird von SJ im Draw ueberladen
-}
-
-ULONG SvxMSDffManager::Calc_nBLIPPos( ULONG nOrgVal, ULONG /* nStreamPos */ ) const
-{
- return nOrgVal;
-}
-
-BOOL SvxMSDffManager::GetOLEStorageName( long /* nOLEId */, String&, SvStorageRef&, uno::Reference < embed::XStorage >& ) const
-{
- return FALSE;
-}
-
-BOOL SvxMSDffManager::ShapeHasText( ULONG /* nShapeId */, ULONG /* nFilePos */ ) const
-{
- return TRUE;
-}
-
-// --> OD 2004-12-14 #i32596# - add new parameter <_nCalledByGroup>
-SdrObject* SvxMSDffManager::ImportOLE( long nOLEId,
- const Graphic& rGrf,
- const Rectangle& rBoundRect,
- const Rectangle& rVisArea,
- const int /* _nCalledByGroup */,
- sal_Int64 nAspect ) const
-// <--
-{
- SdrObject* pRet = 0;
- String sStorageName;
- SvStorageRef xSrcStg;
- ErrCode nError = ERRCODE_NONE;
- uno::Reference < embed::XStorage > xDstStg;
- if( GetOLEStorageName( nOLEId, sStorageName, xSrcStg, xDstStg ))
- pRet = CreateSdrOLEFromStorage( sStorageName, xSrcStg, xDstStg,
- rGrf, rBoundRect, rVisArea, pStData, nError,
- nSvxMSDffOLEConvFlags, nAspect );
- return pRet;
-}
-
-const GDIMetaFile* SvxMSDffManager::lcl_GetMetaFileFromGrf_Impl( const Graphic& rGrf,
- GDIMetaFile& rMtf )
-{
- const GDIMetaFile* pMtf;
- if( GRAPHIC_BITMAP == rGrf.GetType() )
- {
- Point aPt;
- const Size aSz(lcl_GetPrefSize(rGrf, MAP_100TH_MM));
-
- VirtualDevice aVirtDev;
- aVirtDev.EnableOutput( FALSE );
- MapMode aMM(MAP_100TH_MM);
- aVirtDev.SetMapMode( aMM );
-
- rMtf.Record( &aVirtDev );
- rGrf.Draw( &aVirtDev, aPt, aSz );
- rMtf.Stop();
- rMtf.SetPrefMapMode(aMM);
- rMtf.SetPrefSize( aSz );
-
- pMtf = &rMtf;
- }
- else
- pMtf = &rGrf.GetGDIMetaFile();
- return pMtf;
-}
-
-BOOL SvxMSDffManager::MakeContentStream( SotStorage * pStor, const GDIMetaFile & rMtf )
-{
- String aPersistStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( SVEXT_PERSIST_STREAM ) ) );
- SotStorageStreamRef xStm = pStor->OpenSotStream( aPersistStream );
- xStm->SetVersion( pStor->GetVersion() );
- xStm->SetBufferSize( 8192 );
-
- USHORT nAspect = ASPECT_CONTENT;
- ULONG nAdviseModes = 2;
-
- Impl_OlePres aEle( FORMAT_GDIMETAFILE );
- // Die Groesse in 1/100 mm umrechnen
- // Falls eine nicht anwendbare MapUnit (Device abhaengig) verwendet wird,
- // versucht SV einen BestMatchden richtigen Wert zu raten.
- Size aSize = rMtf.GetPrefSize();
- MapMode aMMSrc = rMtf.GetPrefMapMode();
- MapMode aMMDst( MAP_100TH_MM );
- aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
- aEle.SetSize( aSize );
- aEle.SetAspect( nAspect );
- aEle.SetAdviseFlags( nAdviseModes );
- aEle.SetMtf( rMtf );
- aEle.Write( *xStm );
-
- xStm->SetBufferSize( 0 );
- return xStm->GetError() == SVSTREAM_OK;
-}
-
-struct ClsIDs {
- UINT32 nId;
- const sal_Char* pSvrName;
- const sal_Char* pDspName;
-};
-static ClsIDs aClsIDs[] = {
-
- { 0x000212F0, "MSWordArt", "Microsoft Word Art" },
- { 0x000212F0, "MSWordArt.2", "Microsoft Word Art 2.0" },
-
- // MS Apps
- { 0x00030000, "ExcelWorksheet", "Microsoft Excel Worksheet" },
- { 0x00030001, "ExcelChart", "Microsoft Excel Chart" },
- { 0x00030002, "ExcelMacrosheet", "Microsoft Excel Macro" },
- { 0x00030003, "WordDocument", "Microsoft Word Document" },
- { 0x00030004, "MSPowerPoint", "Microsoft PowerPoint" },
- { 0x00030005, "MSPowerPointSho", "Microsoft PowerPoint Slide Show"},
- { 0x00030006, "MSGraph", "Microsoft Graph" },
- { 0x00030007, "MSDraw", "Microsoft Draw" },
- { 0x00030008, "Note-It", "Microsoft Note-It" },
- { 0x00030009, "WordArt", "Microsoft Word Art" },
- { 0x0003000a, "PBrush", "Microsoft PaintBrush Picture" },
- { 0x0003000b, "Equation", "Microsoft Equation Editor" },
- { 0x0003000c, "Package", "Package" },
- { 0x0003000d, "SoundRec", "Sound" },
- { 0x0003000e, "MPlayer", "Media Player" },
- // MS Demos
- { 0x0003000f, "ServerDemo", "OLE 1.0 Server Demo" },
- { 0x00030010, "Srtest", "OLE 1.0 Test Demo" },
- { 0x00030011, "SrtInv", "OLE 1.0 Inv Demo" },
- { 0x00030012, "OleDemo", "OLE 1.0 Demo" },
-
- // Coromandel / Dorai Swamy / 718-793-7963
- { 0x00030013, "CoromandelIntegra", "Coromandel Integra" },
- { 0x00030014, "CoromandelObjServer","Coromandel Object Server" },
-
- // 3-d Visions Corp / Peter Hirsch / 310-325-1339
- { 0x00030015, "StanfordGraphics", "Stanford Graphics" },
-
- // Deltapoint / Nigel Hearne / 408-648-4000
- { 0x00030016, "DGraphCHART", "DeltaPoint Graph Chart" },
- { 0x00030017, "DGraphDATA", "DeltaPoint Graph Data" },
-
- // Corel / Richard V. Woodend / 613-728-8200 x1153
- { 0x00030018, "PhotoPaint", "Corel PhotoPaint" },
- { 0x00030019, "CShow", "Corel Show" },
- { 0x0003001a, "CorelChart", "Corel Chart" },
- { 0x0003001b, "CDraw", "Corel Draw" },
-
- // Inset Systems / Mark Skiba / 203-740-2400
- { 0x0003001c, "HJWIN1.0", "Inset Systems" },
-
- // Mark V Systems / Mark McGraw / 818-995-7671
- { 0x0003001d, "ObjMakerOLE", "MarkV Systems Object Maker" },
-
- // IdentiTech / Mike Gilger / 407-951-9503
- { 0x0003001e, "FYI", "IdentiTech FYI" },
- { 0x0003001f, "FYIView", "IdentiTech FYI Viewer" },
-
- // Inventa Corporation / Balaji Varadarajan / 408-987-0220
- { 0x00030020, "Stickynote", "Inventa Sticky Note" },
-
- // ShapeWare Corp. / Lori Pearce / 206-467-6723
- { 0x00030021, "ShapewareVISIO10", "Shapeware Visio 1.0" },
- { 0x00030022, "ImportServer", "Spaheware Import Server" },
-
- // test app SrTest
- { 0x00030023, "SrvrTest", "OLE 1.0 Server Test" },
-
- // test app ClTest. Doesn't really work as a server but is in reg db
- { 0x00030025, "Cltest", "OLE 1.0 Client Test" },
-
- // Microsoft ClipArt Gallery Sherry Larsen-Holmes
- { 0x00030026, "MS_ClipArt_Gallery", "Microsoft ClipArt Gallery" },
- // Microsoft Project Cory Reina
- { 0x00030027, "MSProject", "Microsoft Project" },
-
- // Microsoft Works Chart
- { 0x00030028, "MSWorksChart", "Microsoft Works Chart" },
-
- // Microsoft Works Spreadsheet
- { 0x00030029, "MSWorksSpreadsheet", "Microsoft Works Spreadsheet" },
-
- // AFX apps - Dean McCrory
- { 0x0003002A, "MinSvr", "AFX Mini Server" },
- { 0x0003002B, "HierarchyList", "AFX Hierarchy List" },
- { 0x0003002C, "BibRef", "AFX BibRef" },
- { 0x0003002D, "MinSvrMI", "AFX Mini Server MI" },
- { 0x0003002E, "TestServ", "AFX Test Server" },
-
- // Ami Pro
- { 0x0003002F, "AmiProDocument", "Ami Pro Document" },
-
- // WordPerfect Presentations For Windows
- { 0x00030030, "WPGraphics", "WordPerfect Presentation" },
- { 0x00030031, "WPCharts", "WordPerfect Chart" },
-
- // MicroGrafx Charisma
- { 0x00030032, "Charisma", "MicroGrafx Charisma" },
- { 0x00030033, "Charisma_30", "MicroGrafx Charisma 3.0" },
- { 0x00030034, "CharPres_30", "MicroGrafx Charisma 3.0 Pres" },
- // MicroGrafx Draw
- { 0x00030035, "Draw", "MicroGrafx Draw" },
- // MicroGrafx Designer
- { 0x00030036, "Designer_40", "MicroGrafx Designer 4.0" },
-
- // STAR DIVISION
-// { 0x000424CA, "StarMath", "StarMath 1.0" },
- { 0x00043AD2, "FontWork", "Star FontWork" },
-// { 0x000456EE, "StarMath2", "StarMath 2.0" },
-
- { 0, "", "" } };
-
-
-BOOL SvxMSDffManager::ConvertToOle2( SvStream& rStm, UINT32 nReadLen,
- const GDIMetaFile * pMtf, const SotStorageRef& rDest )
-{
- BOOL bMtfRead = FALSE;
- SotStorageStreamRef xOle10Stm = rDest->OpenSotStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) ),
- STREAM_WRITE| STREAM_SHARE_DENYALL );
- if( xOle10Stm->GetError() )
- return FALSE;
-
- UINT32 nType;
- UINT32 nRecType;
- UINT32 nStrLen;
- String aSvrName;
- UINT32 nDummy0;
- UINT32 nDummy1;
- UINT32 nDataLen;
- BYTE * pData;
- UINT32 nBytesRead = 0;
- do
- {
- rStm >> nType;
- rStm >> nRecType;
- rStm >> nStrLen;
- if( nStrLen )
- {
- if( 0x10000L > nStrLen )
- {
- sal_Char * pBuf = new sal_Char[ nStrLen ];
- rStm.Read( pBuf, nStrLen );
- aSvrName.Assign( String( pBuf, (USHORT) nStrLen-1, gsl_getSystemTextEncoding() ) );
- delete[] pBuf;
- }
- else
- break;
- }
- rStm >> nDummy0;
- rStm >> nDummy1;
- rStm >> nDataLen;
-
- nBytesRead += 6 * sizeof( UINT32 ) + nStrLen + nDataLen;
-
- if( !rStm.IsEof() && nReadLen > nBytesRead && nDataLen )
- {
- if( xOle10Stm.Is() )
- {
- pData = new BYTE[ nDataLen ];
- if( !pData )
- return FALSE;
-
- rStm.Read( pData, nDataLen );
-
- // write to ole10 stream
- *xOle10Stm << nDataLen;
- xOle10Stm->Write( pData, nDataLen );
- xOle10Stm = SotStorageStreamRef();
-
- // set the compobj stream
- ClsIDs* pIds;
- for( pIds = aClsIDs; pIds->nId; pIds++ )
- {
- if( COMPARE_EQUAL == aSvrName.CompareToAscii( pIds->pSvrName ) )
- break;
- }
-// SvGlobalName* pClsId = NULL;
- String aShort, aFull;
- if( pIds->nId )
- {
- // gefunden!
- ULONG nCbFmt = SotExchange::RegisterFormatName( aSvrName );
- rDest->SetClass( SvGlobalName( pIds->nId, 0, 0, 0xc0,0,0,0,0,0,0,0x46 ), nCbFmt,
- String( pIds->pDspName, RTL_TEXTENCODING_ASCII_US ) );
- }
- else
- {
- ULONG nCbFmt = SotExchange::RegisterFormatName( aSvrName );
- rDest->SetClass( SvGlobalName(), nCbFmt, aSvrName );
- }
-
- delete[] pData;
- }
- else if( nRecType == 5 && !pMtf )
- {
- ULONG nPos = rStm.Tell();
- UINT16 sz[4];
- rStm.Read( sz, 8 );
- //rStm.SeekRel( 8 );
- Graphic aGraphic;
- if( ERRCODE_NONE == GraphicConverter::Import( rStm, aGraphic ) && aGraphic.GetType() )
- {
- const GDIMetaFile& rMtf = aGraphic.GetGDIMetaFile();
- MakeContentStream( rDest, rMtf );
- bMtfRead = TRUE;
- }
- // set behind the data
- rStm.Seek( nPos + nDataLen );
- }
- else
- rStm.SeekRel( nDataLen );
- }
- } while( !rStm.IsEof() && nReadLen >= nBytesRead );
-
- if( !bMtfRead && pMtf )
- {
- MakeContentStream( rDest, *pMtf );
- return TRUE;
- }
-
- return FALSE;
-}
-
-const char* GetInternalServerName_Impl( const SvGlobalName& aGlobName )
-{
- if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 ) )
- return "swriter";
- else if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 ) )
- return "scalc";
- else if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 ) )
- return "simpress";
- else if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 ) )
- return "sdraw";
- else if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 ) )
- return "smath";
- else if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_60 )
- || aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 ) )
- return "schart";
- return 0;
-}
-
-::rtl::OUString GetFilterNameFromClassID_Impl( const SvGlobalName& aGlobName )
-{
- if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Writer)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "writer8" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Calc)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "calc8" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Impress)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "impress8" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Draw)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "draw8" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Math)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "math8" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_60 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Chart)" ) );
-
- if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 ) )
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "chart8" ) );
-
- return ::rtl::OUString();
-}
-
-com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > SvxMSDffManager::CheckForConvertToSOObj( UINT32 nConvertFlags,
- SotStorage& rSrcStg, const uno::Reference < embed::XStorage >& rDestStorage,
- const Graphic& rGrf,
- const Rectangle& rVisArea )
-{
- uno::Reference < embed::XEmbeddedObject > xObj;
- SvGlobalName aStgNm = rSrcStg.GetClassName();
- const char* pName = GetInternalServerName_Impl( aStgNm );
- String sStarName;
- if ( pName )
- sStarName = String::CreateFromAscii( pName );
- else if ( nConvertFlags )
- {
- static struct _ObjImpType
- {
- UINT32 nFlag;
- const char* pFactoryNm;
- // GlobalNameId
- UINT32 n1;
- USHORT n2, n3;
- BYTE b8, b9, b10, b11, b12, b13, b14, b15;
- } aArr[] = {
- { OLE_MATHTYPE_2_STARMATH, "smath",
- 0x0002ce02L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- { OLE_MATHTYPE_2_STARMATH, "smath",
- 0x00021700L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- { OLE_WINWORD_2_STARWRITER, "swriter",
- 0x00020906L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- { OLE_EXCEL_2_STARCALC, "scalc", // Excel table
- 0x00020810L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- { OLE_EXCEL_2_STARCALC, "scalc", // Excel chart
- 0x00020820L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- // 114465: additional Excel OLE chart classId to above.
- { OLE_EXCEL_2_STARCALC, "scalc",
- 0x00020821L, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
- { OLE_POWERPOINT_2_STARIMPRESS, "simpress", // PowerPoint presentation
- 0x64818d10L, 0x4f9b, 0x11cf,
- 0x86,0xea,0x00,0xaa,0x00,0xb9,0x29,0xe8 },
- { OLE_POWERPOINT_2_STARIMPRESS, "simpress", // PowerPoint slide
- 0x64818d11L, 0x4f9b, 0x11cf,
- 0x86,0xea,0x00,0xaa,0x00,0xb9,0x29,0xe8 },
- { 0, 0,
- 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0 }
- };
-
- for( const _ObjImpType* pArr = aArr; pArr->nFlag; ++pArr )
- {
- if( nConvertFlags & pArr->nFlag )
- {
- SvGlobalName aTypeName( pArr->n1, pArr->n2, pArr->n3,
- pArr->b8, pArr->b9, pArr->b10, pArr->b11,
- pArr->b12, pArr->b13, pArr->b14, pArr->b15 );
-
- if ( aStgNm == aTypeName )
- {
- sStarName = String::CreateFromAscii( pArr->pFactoryNm );
- break;
- }
- }
- }
- }
-
- if ( sStarName.Len() )
- {
- //TODO/MBA: check if (and when) storage and stream will be destroyed!
- const SfxFilter* pFilter = 0;
- SvMemoryStream* pStream = new SvMemoryStream;
- if ( pName )
- {
- // TODO/LATER: perhaps we need to retrieve VisArea and Metafile from the storage also
- SotStorageStreamRef xStr = rSrcStg.OpenSotStream( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "package_stream" ) ), STREAM_STD_READ );
- *xStr >> *pStream;
- }
- else
- {
- SfxFilterMatcher aMatch( sStarName );
- SotStorageRef xStorage = new SotStorage( FALSE, *pStream );
- rSrcStg.CopyTo( xStorage );
- xStorage->Commit();
- xStorage.Clear();
- String aType = SfxFilter::GetTypeFromStorage( rSrcStg );
- if ( aType.Len() )
- pFilter = aMatch.GetFilter4EA( aType );
- }
-
- if ( pName || pFilter )
- {
- //Reuse current ole name
- String aDstStgName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(MSO_OLE_Obj)));
- aDstStgName += String::CreateFromInt32(nMSOleObjCntr);
-
- ::rtl::OUString aFilterName;
- if ( pFilter )
- aFilterName = pFilter->GetName();
- else
- aFilterName = GetFilterNameFromClassID_Impl( aStgNm );
-
- uno::Sequence < beans::PropertyValue > aMedium( aFilterName.getLength() ? 3 : 2);
- aMedium[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InputStream" ) );
- uno::Reference < io::XInputStream > xStream = new ::utl::OSeekableInputStreamWrapper( *pStream );
- aMedium[0].Value <<= xStream;
- aMedium[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) );
- aMedium[1].Value <<= ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:stream" ) );
-
- if ( aFilterName.getLength() )
- {
- aMedium[2].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
- aMedium[2].Value <<= aFilterName;
- }
-
- ::rtl::OUString aName( aDstStgName );
- comphelper::EmbeddedObjectContainer aCnt( rDestStorage );
- xObj = aCnt.InsertEmbeddedObject( aMedium, aName );
-
- if ( !xObj.is() )
- {
- if( aFilterName.getLength() )
- {
- // throw the filter parameter away as workaround
- aMedium.realloc( 2 );
- xObj = aCnt.InsertEmbeddedObject( aMedium, aName );
- }
-
- if ( !xObj.is() )
- return xObj;
- }
-
- // TODO/LATER: ViewAspect must be passed from outside!
- sal_Int64 nViewAspect = embed::Aspects::MSOLE_CONTENT;
-
- // JP 26.10.2001: Bug 93374 / 91928 the writer
- // objects need the correct visarea needs the
- // correct visarea, but this is not true for
- // PowerPoint (see bugdoc 94908b)
- // SJ: 19.11.2001 bug 94908, also chart objects
- // needs the correct visarea
-
- // If pName is set this is an own embedded object, it should have the correct size internally
- // TODO/LATER: it might make sence in future to set the size stored in internal object
- if( !pName && ( sStarName.EqualsAscii( "swriter" ) || sStarName.EqualsAscii( "scalc" ) ) )
- {
- MapMode aMapMode( VCLUnoHelper::UnoEmbed2VCLMapUnit( xObj->getMapUnit( nViewAspect ) ) );
- Size aSz;
- if ( rVisArea.IsEmpty() )
- aSz = lcl_GetPrefSize(rGrf, aMapMode );
- else
- {
- aSz = rVisArea.GetSize();
- aSz = OutputDevice::LogicToLogic( aSz, MapMode( MAP_100TH_MM ), aMapMode );
- }
-
- // don't modify the object
- //TODO/LATER: remove those hacks, that needs to be done differently!
- //xIPObj->EnableSetModified( FALSE );
- awt::Size aSize;
- aSize.Width = aSz.Width();
- aSize.Height = aSz.Height();
- xObj->setVisualAreaSize( nViewAspect, aSize );
- //xIPObj->EnableSetModified( TRUE );
- }
- else if ( sStarName.EqualsAscii( "smath" ) )
- { // SJ: force the object to recalc its visarea
- //TODO/LATER: wait for PrinterChangeNotification
- //xIPObj->OnDocumentPrinterChanged( NULL );
- }
- }
- }
-
- return xObj;
-}
-
-// TODO/MBA: code review and testing!
-SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
- const String& rStorageName,
- SotStorageRef& rSrcStorage,
- const uno::Reference < embed::XStorage >& xDestStorage,
- const Graphic& rGrf,
- const Rectangle& rBoundRect,
- const Rectangle& rVisArea,
- SvStream* pDataStrm,
- ErrCode& rError,
- UINT32 nConvertFlags,
- sal_Int64 nReccomendedAspect )
-{
- sal_Int64 nAspect = nReccomendedAspect;
- SdrOle2Obj* pRet = 0;
- if( rSrcStorage.Is() && xDestStorage.is() && rStorageName.Len() )
- {
- comphelper::EmbeddedObjectContainer aCnt( xDestStorage );
- // Ist der 01Ole-Stream ueberhaupt vorhanden ?
- // ( ist er z.B. bei FontWork nicht )
- // Wenn nicht -> Einbindung als Grafik
- BOOL bValidStorage = FALSE;
- String aDstStgName( String::CreateFromAscii(
- RTL_CONSTASCII_STRINGPARAM(MSO_OLE_Obj)));
-
- aDstStgName += String::CreateFromInt32( ++nMSOleObjCntr );
-
- {
- SvStorageRef xObjStg = rSrcStorage->OpenSotStorage( rStorageName,
- STREAM_READWRITE| STREAM_SHARE_DENYALL );
- if( xObjStg.Is() )
- {
- {
- BYTE aTestA[10]; // exist the \1CompObj-Stream ?
- SvStorageStreamRef xSrcTst = xObjStg->OpenSotStream(
- String(RTL_CONSTASCII_STRINGPARAM("\1CompObj"),
- RTL_TEXTENCODING_MS_1252 ));
- bValidStorage = xSrcTst.Is() && sizeof( aTestA ) ==
- xSrcTst->Read( aTestA, sizeof( aTestA ) );
- if( !bValidStorage )
- {
- // or the \1Ole-Stream ?
- xSrcTst = xObjStg->OpenSotStream(
- String(RTL_CONSTASCII_STRINGPARAM("\1Ole"),
- RTL_TEXTENCODING_MS_1252 ));
- bValidStorage = xSrcTst.Is() && sizeof(aTestA) ==
- xSrcTst->Read(aTestA, sizeof(aTestA));
- }
- }
-
- if( bValidStorage )
- {
- if ( nAspect != embed::Aspects::MSOLE_ICON )
- {
- // check whether the object is iconified one
- // usually this information is already known, the only exception
- // is a kind of embedded objects in Word documents
- // TODO/LATER: should the caller be notified if the aspect changes in future?
-
- SvStorageStreamRef xObjInfoSrc = xObjStg->OpenSotStream(
- String( RTL_CONSTASCII_STRINGPARAM( "\3ObjInfo" ) ),
- STREAM_STD_READ | STREAM_NOCREATE );
- if ( xObjInfoSrc.Is() && !xObjInfoSrc->GetError() )
- {
- BYTE nByte = 0;
- *xObjInfoSrc >> nByte;
- if ( ( nByte >> 4 ) & embed::Aspects::MSOLE_ICON )
- nAspect = embed::Aspects::MSOLE_ICON;
- }
- }
-
- uno::Reference < embed::XEmbeddedObject > xObj( CheckForConvertToSOObj(
- nConvertFlags, *xObjStg, xDestStorage, rGrf, rVisArea ));
- if ( xObj.is() )
- {
- svt::EmbeddedObjectRef aObj( xObj, nAspect );
-
- // TODO/LATER: need MediaType
- aObj.SetGraphic( rGrf, ::rtl::OUString() );
-
- // TODO/MBA: check setting of PersistName
- pRet = new SdrOle2Obj( aObj, String(), rBoundRect, false);
- // we have the Object, don't create another
- bValidStorage = false;
- }
- }
- }
- }
-
- if( bValidStorage )
- {
- // object is not an own object
- SotStorageRef xObjStor = SotStorage::OpenOLEStorage( xDestStorage, aDstStgName, STREAM_READWRITE );
-
- if ( xObjStor.Is() )
- {
- SotStorageRef xSrcStor = rSrcStorage->OpenSotStorage( rStorageName, STREAM_READ );
- xSrcStor->CopyTo( xObjStor );
-
- if( !xObjStor->GetError() )
- xObjStor->Commit();
-
- if( xObjStor->GetError() )
- {
- rError = xObjStor->GetError();
- bValidStorage = FALSE;
- }
- else if( !xObjStor.Is() )
- bValidStorage = FALSE;
- }
- }
- else if( pDataStrm )
- {
- UINT32 nLen, nDummy;
- *pDataStrm >> nLen >> nDummy;
- if( SVSTREAM_OK != pDataStrm->GetError() ||
- // Id in BugDoc - exist there other Ids?
- // The ConvertToOle2 - does not check for consistent
- 0x30008 != nDummy )
- bValidStorage = FALSE;
- else
- {
- // or is it an OLE-1 Stream in the DataStream?
- SvStorageRef xObjStor = SotStorage::OpenOLEStorage( xDestStorage, aDstStgName );
- //TODO/MBA: remove metafile conversion from ConvertToOle2
- //when is this code used?!
- GDIMetaFile aMtf;
- bValidStorage = ConvertToOle2( *pDataStrm, nLen, &aMtf, xObjStor );
- xObjStor->Commit();
- }
- }
-
- if( bValidStorage )
- {
- uno::Reference < embed::XEmbeddedObject > xObj = aCnt.GetEmbeddedObject( aDstStgName );
- if( xObj.is() )
- {
- // the visual area must be retrieved from the metafile (object doesn't know it so far)
-
- if ( nAspect != embed::Aspects::MSOLE_ICON )
- {
- // working with visual area can switch the object to running state
- awt::Size aAwtSz;
- try
- {
- // the provided visual area should be used, if there is any
- if ( rVisArea.IsEmpty() )
- {
- MapUnit aMapUnit = VCLUnoHelper::UnoEmbed2VCLMapUnit( xObj->getMapUnit( nAspect ) );
- Size aSz(lcl_GetPrefSize(rGrf, MapMode(aMapUnit)));
- aAwtSz.Width = aSz.Width();
- aAwtSz.Height = aSz.Height();
- }
- else
- {
- aAwtSz.Width = rVisArea.GetWidth();
- aAwtSz.Height = rVisArea.GetHeight();
- }
- //xInplaceObj->EnableSetModified( FALSE );
- xObj->setVisualAreaSize( nAspect, aAwtSz );
- //xInplaceObj->EnableSetModified( TRUE );*/
- }
- catch( uno::Exception& )
- {
- OSL_ENSURE( sal_False, "Could not set visual area of the object!\n" );
- }
- }
-
- svt::EmbeddedObjectRef aObj( xObj, nAspect );
-
- // TODO/LATER: need MediaType
- aObj.SetGraphic( rGrf, ::rtl::OUString() );
-
- pRet = new SdrOle2Obj( aObj, aDstStgName, rBoundRect, false);
- }
- }
- }
-
- return pRet;
-}
-
-SdrObject* SvxMSDffManager::GetAutoForm( MSO_SPT eTyp ) const
-{
- SdrObject* pRet = NULL;
-
- if(120 >= UINT16(eTyp))
- {
- pRet = new SdrRectObj();
- }
-
- DBG_ASSERT(pRet, "SvxMSDffManager::GetAutoForm -> UNKNOWN AUTOFORM");
-
- return pRet;
-}
-
-sal_Bool SvxMSDffManager::SetPropValue( const uno::Any& rAny, const uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
- const String& rPropName, sal_Bool bTestPropertyAvailability )
-{
- sal_Bool bRetValue = sal_True;
- if ( bTestPropertyAvailability )
- {
- bRetValue = sal_False;
- try
- {
- uno::Reference< beans::XPropertySetInfo >
- aXPropSetInfo( rXPropSet->getPropertySetInfo() );
- if ( aXPropSetInfo.is() )
- bRetValue = aXPropSetInfo->hasPropertyByName( rPropName );
- }
- catch( uno::Exception& )
- {
- bRetValue = sal_False;
- }
- }
- if ( bRetValue )
- {
- try
- {
- rXPropSet->setPropertyValue( rPropName, rAny );
- bRetValue = sal_True;
- }
- catch( uno::Exception& )
- {
- bRetValue = sal_False;
- }
- }
- return bRetValue;
-}
-
-SvxMSDffImportRec::SvxMSDffImportRec()
- : pObj( 0 ),
- pWrapPolygon(0),
- pClientAnchorBuffer( 0 ),
- nClientAnchorLen( 0 ),
- pClientDataBuffer( 0 ),
- nClientDataLen( 0 ),
- nXAlign( 0 ), // position n cm from left
- nXRelTo( 2 ), // relative to column
- nYAlign( 0 ), // position n cm below
- nYRelTo( 2 ), // relative to paragraph
- nLayoutInTableCell( 0 ), // element is laid out in table cell
- nTextRotationAngle( 0 ),
- nDxTextLeft( 144 ),
- nDyTextTop( 72 ),
- nDxTextRight( 144 ),
- nDyTextBottom( 72 ),
- nDxWrapDistLeft( 0 ),
- nDyWrapDistTop( 0 ),
- nDxWrapDistRight( 0 ),
- nDyWrapDistBottom(0 ),
- nCropFromTop( 0 ),
- nCropFromBottom( 0 ),
- nCropFromLeft( 0 ),
- nCropFromRight( 0 ),
- aTextId( 0, 0 ),
- nNextShapeId( 0 ),
- nShapeId( 0 ),
- eShapeType( mso_sptNil )
-{
- eLineStyle = mso_lineSimple; // GPF-Bug #66227#
- bDrawHell = FALSE;
- bHidden = FALSE;
-// bInGroup = FALSE;
- bReplaceByFly = FALSE;
- bLastBoxInChain = TRUE;
- bHasUDefProp = FALSE; // was the DFF_msofbtUDefProp record set?
- bVFlip = FALSE;
- bHFlip = FALSE;
- bAutoWidth = FALSE;
-}
-
-SvxMSDffImportRec::SvxMSDffImportRec(const SvxMSDffImportRec& rCopy)
- : pObj( rCopy.pObj ),
- nXAlign( rCopy.nXAlign ),
- nXRelTo( rCopy.nXRelTo ),
- nYAlign( rCopy.nYAlign ),
- nYRelTo( rCopy.nYRelTo ),
- nLayoutInTableCell( rCopy.nLayoutInTableCell ),
- nTextRotationAngle( rCopy.nTextRotationAngle ),
- nDxTextLeft( rCopy.nDxTextLeft ),
- nDyTextTop( rCopy.nDyTextTop ),
- nDxTextRight( rCopy.nDxTextRight ),
- nDyTextBottom( rCopy.nDyTextBottom ),
- nDxWrapDistLeft( rCopy.nDxWrapDistLeft ),
- nDyWrapDistTop( rCopy.nDyWrapDistTop ),
- nDxWrapDistRight( rCopy.nDxWrapDistRight ),
- nDyWrapDistBottom(rCopy.nDyWrapDistBottom ),
- nCropFromTop( rCopy.nCropFromTop ),
- nCropFromBottom( rCopy.nCropFromBottom ),
- nCropFromLeft( rCopy.nCropFromLeft ),
- nCropFromRight( rCopy.nCropFromRight ),
- aTextId( rCopy.aTextId ),
- nNextShapeId( rCopy.nNextShapeId ),
- nShapeId( rCopy.nShapeId ),
- eShapeType( rCopy.eShapeType )
-{
- eLineStyle = rCopy.eLineStyle; // GPF-Bug #66227#
- bDrawHell = rCopy.bDrawHell;
- bHidden = rCopy.bHidden;
-// bInGroup = rCopy.bInGroup;
- bReplaceByFly = rCopy.bReplaceByFly;
- bAutoWidth = rCopy.bAutoWidth;
- bLastBoxInChain = rCopy.bLastBoxInChain;
- bHasUDefProp = rCopy.bHasUDefProp;
- bVFlip = rCopy.bVFlip;
- bHFlip = rCopy.bHFlip;
- nClientAnchorLen = rCopy.nClientAnchorLen;
- if( rCopy.nClientAnchorLen )
- {
- pClientAnchorBuffer = new char[ nClientAnchorLen ];
- memcpy( pClientAnchorBuffer,
- rCopy.pClientAnchorBuffer,
- nClientAnchorLen );
- }
- else
- pClientAnchorBuffer = 0;
-
- nClientDataLen = rCopy.nClientDataLen;
- if( rCopy.nClientDataLen )
- {
- pClientDataBuffer = new char[ nClientDataLen ];
- memcpy( pClientDataBuffer,
- rCopy.pClientDataBuffer,
- nClientDataLen );
- }
- else
- pClientDataBuffer = 0;
-
- if (rCopy.pWrapPolygon)
- pWrapPolygon = new Polygon(*rCopy.pWrapPolygon);
- else
- pWrapPolygon = 0;
-}
-
-SvxMSDffImportRec::~SvxMSDffImportRec()
-{
- if (pClientAnchorBuffer)
- delete[] pClientAnchorBuffer;
- if (pClientDataBuffer)
- delete[] pClientDataBuffer;
- if (pWrapPolygon)
- delete pWrapPolygon;
-}
-
-/* vi:set tabstop=4 shiftwidth=4 expandtab: */
-
-void SvxMSDffManager::insertShapeId( sal_Int32 nShapeId, SdrObject* pShape )
-{
- maShapeIdContainer[nShapeId] = pShape;
-}
-
-void SvxMSDffManager::removeShapeId( SdrObject* pShape )
-{
- SvxMSDffShapeIdContainer::iterator aIter( maShapeIdContainer.begin() );
- const SvxMSDffShapeIdContainer::iterator aEnd( maShapeIdContainer.end() );
- while( aIter != aEnd )
- {
- if( (*aIter).second == pShape )
- {
- maShapeIdContainer.erase( aIter );
- break;
- }
- }
-}
-
-SdrObject* SvxMSDffManager::getShapeForId( sal_Int32 nShapeId )
-{
- SvxMSDffShapeIdContainer::iterator aIter( maShapeIdContainer.find(nShapeId) );
- return aIter != maShapeIdContainer.end() ? (*aIter).second : 0;
-}
diff --git a/svx/source/svdraw/svddrgv.cxx b/svx/source/svdraw/svddrgv.cxx
index fca410614a..4946ea6768 100644
--- a/svx/source/svdraw/svddrgv.cxx
+++ b/svx/source/svdraw/svddrgv.cxx
@@ -446,7 +446,19 @@ BOOL SdrDragView::BegDragObj(const Point& rPnt, OutputDevice* pOut, SdrHdl* pHdl
return FALSE;
}
- mpCurrentSdrDragMethod = new SdrDragResize(*this);
+ sal_Bool bSingleTextObjMark = sal_False; // SJ: #i100490#
+ if ( GetMarkedObjectCount() == 1 )
+ {
+ pMarkedObj=GetMarkedObjectByIndex(0);
+ if ( pMarkedObj &&
+ pMarkedObj->ISA( SdrTextObj ) &&
+ static_cast<SdrTextObj*>(pMarkedObj)->IsTextFrame() )
+ bSingleTextObjMark = sal_True;
+ }
+ if ( bSingleTextObjMark )
+ mpCurrentSdrDragMethod = new SdrDragObjOwn(*this);
+ else
+ mpCurrentSdrDragMethod = new SdrDragResize(*this);
}
}
else
diff --git a/svx/source/svdraw/svdfppt.cxx b/svx/source/svdraw/svdfppt.cxx
index 5216c4a5de..23982e9ae5 100644
--- a/svx/source/svdraw/svdfppt.cxx
+++ b/svx/source/svdraw/svdfppt.cxx
@@ -887,7 +887,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
// replacing the object which we will return with a SdrPageObj
SdrObject::Free( pRet );
- pRet = new SdrPageObj( rObjData.rBoundRect, pSdrModel->GetPage( nPageNum - 1 ) );
+ pRet = new SdrPageObj( rObjData.aBoundRect, pSdrModel->GetPage( nPageNum - 1 ) );
}
else
{
@@ -1155,7 +1155,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
pTObj->SetModel( pSdrModel );
SfxItemSet aSet( pSdrModel->GetItemPool() );
if ( !pRet )
- ((SdrEscherImport*)this)->ApplyAttributes( rSt, aSet, rObjData.eShapeType, rObjData.nSpFlags );
+ ((SdrEscherImport*)this)->ApplyAttributes( rSt, aSet, rObjData );
pTObj->SetMergedItemSet( aSet );
if ( pRet )