diff options
Diffstat (limited to 'svx/inc/svx/escherex.hxx')
-rw-r--r-- | svx/inc/svx/escherex.hxx | 1513 |
1 files changed, 0 insertions, 1513 deletions
diff --git a/svx/inc/svx/escherex.hxx b/svx/inc/svx/escherex.hxx deleted file mode 100644 index d021a13466..0000000000 --- a/svx/inc/svx/escherex.hxx +++ /dev/null @@ -1,1513 +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: escherex.hxx,v $ - * $Revision: 1.6.146.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. - * - ************************************************************************/ - -#ifndef _SVX_ESCHEREX_HXX -#define _SVX_ESCHEREX_HXX - -#include <vector> -#include <tools/solar.h> -#include <tools/gen.hxx> -#include <tools/list.hxx> -#include <tools/stream.hxx> -#include <com/sun/star/uno/Reference.h> -#include <goodies/grfmgr.hxx> -#include <com/sun/star/awt/Size.hpp> -#include <com/sun/star/awt/Point.hpp> -#include <com/sun/star/awt/Rectangle.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/PropertyState.hpp> -#include <com/sun/star/drawing/BitmapMode.hpp> -#include <com/sun/star/drawing/Hatch.hpp> -#include <svx/msdffdef.hxx> -#include "svx/svxdllapi.h" - - /*Record Name FBT-Value Instance Contents Wrd Exl PPt Ver*/ -// In der Mickysoft-Doku heissen die msofbt... statt ESCHER_... -#define ESCHER_DggContainer 0xF000 /* per-document data X X X */ -#define ESCHER_Dgg 0xF006 /* an FDGG and several FIDCLs X X X 0 */ -#define ESCHER_CLSID 0xF016 /* the CLSID of the application that put the data on the clipboard C C C 0 */ -#define ESCHER_OPT 0xF00B /* count of properties the document-wide default shape properties X X X 3 */ -#define ESCHER_ColorMRU 0xF11A /* count of colors the colors in the MRU swatch X X X 0 */ -#define ESCHER_SplitMenuColors 0xF11E /* count of colors the colors in the top-level split menus X X X 0 */ -#define ESCHER_BstoreContainer 0xF001 /* count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X */ -#define ESCHER_BSE 0xF007 /* BLIP type an FBSE (one per BLIP) X X X 2 */ -#define ESCHER_BlipFirst 0xF018 /* range of fbts reserved for various kinds of BLIPs X X X */ -#define ESCHER_BlipLast 0xF117 /* range of fbts reserved for various kinds of BLIPs X X X */ - -#define ESCHER_DgContainer 0xF002 /* per-sheet/page/slide data X X X */ -#define ESCHER_Dg 0xF008 /* drawing ID an FDG X X X 0 */ -#define ESCHER_RegroupItems 0xF118 /* count of regroup entries several FRITs X X X 0 */ -#define ESCHER_ColorScheme 0xF120 /* count of colors the colors of the source host's color scheme C C 0 */ -#define ESCHER_SpgrContainer 0xF003 /* several SpContainers, the first of which is the group shape itself X X X */ -#define ESCHER_SpContainer 0xF004 /* a shape X X X */ -#define ESCHER_Spgr 0xF009 /* an FSPGR; only present if the shape is a group shape X X X 1 */ -#define ESCHER_Sp 0xF00A /* shape type an FSP X X X 2 */ -//#define ESCHER_OPT 0xF00B /* count of properties a shape property table X X X 3 */ -#define ESCHER_Textbox 0xF00C /* RTF text C C C 0 */ -#define ESCHER_ClientTextbox 0xF00D /* host-defined the text in the textbox, in host-defined format X X X */ -#define ESCHER_Anchor 0xF00E /* a RECT, in 100000ths of an inch C C C 0 */ -#define ESCHER_ChildAnchor 0xF00F /* a RECT, in units relative to the parent group X X X 0 */ -#define ESCHER_ClientAnchor 0xF010 /* host-defined the location of the shape, in a host-defined format X X X */ -#define ESCHER_ClientData 0xF011 /* host-defined host-specific data X X X */ -#define ESCHER_OleObject 0xF11F /* a serialized IStorage for an OLE object C C C 0 */ -#define ESCHER_DeletedPspl 0xF11D /* an FPSPL; only present in top-level deleted shapes X 0 */ -#define ESCHER_SolverContainer 0xF005 /* count of rules the rules governing shapes X X X */ -#define ESCHER_ConnectorRule 0xF012 /* an FConnectorRule X X 1 */ -#define ESCHER_AlignRule 0xF013 /* an FAlignRule X X X 0 */ -#define ESCHER_ArcRule 0xF014 /* an FARCRU X X X 0 */ -#define ESCHER_ClientRule 0xF015 /* host-defined host-defined */ -#define ESCHER_CalloutRule 0xF017 /* an FCORU X X X 0 */ -#define ESCHER_Selection 0xF119 /* an FDGSL followed by the SPIDs of the shapes in the selection X 0 */ -#define ESCHER_UDefProp 0xF122 - -#define SHAPEFLAG_GROUP 0x001 // This shape is a group shape -#define SHAPEFLAG_CHILD 0x002 // Not a top-level shape -#define SHAPEFLAG_PATRIARCH 0x004 // This is the topmost group shape. Exactly one of these per drawing. -#define SHAPEFLAG_DELETED 0x008 // The shape has been deleted -#define SHAPEFLAG_OLESHAPE 0x010 // The shape is an OLE object -#define SHAPEFLAG_HAVEMASTER 0x020 // Shape has a hspMaster property -#define SHAPEFLAG_FLIPH 0x040 // Shape is flipped horizontally -#define SHAPEFLAG_FLIPV 0x080 // Shape is flipped vertically -#define SHAPEFLAG_CONNECTOR 0x100 // Connector type of shape -#define SHAPEFLAG_HAVEANCHOR 0x200 // Shape has an anchor of some kind -#define SHAPEFLAG_BACKGROUND 0x400 // Background shape -#define SHAPEFLAG_HAVESPT 0x800 // Shape has a shape type property - -#define ESCHER_ShpInst_Min 0 -#define ESCHER_ShpInst_NotPrimitive ESCHER_ShpInst_Min -#define ESCHER_ShpInst_Rectangle 1 -#define ESCHER_ShpInst_RoundRectangle 2 -#define ESCHER_ShpInst_Ellipse 3 -#define ESCHER_ShpInst_Diamond 4 -#define ESCHER_ShpInst_IsocelesTriangle 5 -#define ESCHER_ShpInst_RightTriangle 6 -#define ESCHER_ShpInst_Parallelogram 7 -#define ESCHER_ShpInst_Trapezoid 8 -#define ESCHER_ShpInst_Hexagon 9 -#define ESCHER_ShpInst_Octagon 10 -#define ESCHER_ShpInst_Plus 11 -#define ESCHER_ShpInst_Star 12 -#define ESCHER_ShpInst_Arrow 13 -#define ESCHER_ShpInst_ThickArrow 14 -#define ESCHER_ShpInst_HomePlate 15 -#define ESCHER_ShpInst_Cube 16 -#define ESCHER_ShpInst_Balloon 17 -#define ESCHER_ShpInst_Seal 18 -#define ESCHER_ShpInst_Arc 19 -#define ESCHER_ShpInst_Line 20 -#define ESCHER_ShpInst_Plaque 21 -#define ESCHER_ShpInst_Can 22 -#define ESCHER_ShpInst_Donut 23 -#define ESCHER_ShpInst_TextSimple 24 -#define ESCHER_ShpInst_TextOctagon 25 -#define ESCHER_ShpInst_TextHexagon 26 -#define ESCHER_ShpInst_TextCurve 27 -#define ESCHER_ShpInst_TextWave 28 -#define ESCHER_ShpInst_TextRing 29 -#define ESCHER_ShpInst_TextOnCurve 30 -#define ESCHER_ShpInst_TextOnRing 31 -#define ESCHER_ShpInst_StraightConnector1 32 -#define ESCHER_ShpInst_BentConnector2 33 -#define ESCHER_ShpInst_BentConnector3 34 -#define ESCHER_ShpInst_BentConnector4 35 -#define ESCHER_ShpInst_BentConnector5 36 -#define ESCHER_ShpInst_CurvedConnector2 37 -#define ESCHER_ShpInst_CurvedConnector3 38 -#define ESCHER_ShpInst_CurvedConnector4 39 -#define ESCHER_ShpInst_CurvedConnector5 40 -#define ESCHER_ShpInst_Callout1 41 -#define ESCHER_ShpInst_Callout2 42 -#define ESCHER_ShpInst_Callout3 43 -#define ESCHER_ShpInst_AccentCallout1 44 -#define ESCHER_ShpInst_AccentCallout2 45 -#define ESCHER_ShpInst_AccentCallout3 46 -#define ESCHER_ShpInst_BorderCallout1 47 -#define ESCHER_ShpInst_BorderCallout2 48 -#define ESCHER_ShpInst_BorderCallout3 49 -#define ESCHER_ShpInst_AccentBorderCallout1 50 -#define ESCHER_ShpInst_AccentBorderCallout2 51 -#define ESCHER_ShpInst_AccentBorderCallout3 52 -#define ESCHER_ShpInst_Ribbon 53 -#define ESCHER_ShpInst_Ribbon2 54 -#define ESCHER_ShpInst_Chevron 55 -#define ESCHER_ShpInst_Pentagon 56 -#define ESCHER_ShpInst_NoSmoking 57 -#define ESCHER_ShpInst_Seal8 58 -#define ESCHER_ShpInst_Seal16 59 -#define ESCHER_ShpInst_Seal32 60 -#define ESCHER_ShpInst_WedgeRectCallout 61 -#define ESCHER_ShpInst_WedgeRRectCallout 62 -#define ESCHER_ShpInst_WedgeEllipseCallout 63 -#define ESCHER_ShpInst_Wave 64 -#define ESCHER_ShpInst_FoldedCorner 65 -#define ESCHER_ShpInst_LeftArrow 66 -#define ESCHER_ShpInst_DownArrow 67 -#define ESCHER_ShpInst_UpArrow 68 -#define ESCHER_ShpInst_LeftRightArrow 69 -#define ESCHER_ShpInst_UpDownArrow 70 -#define ESCHER_ShpInst_IrregularSeal1 71 -#define ESCHER_ShpInst_IrregularSeal2 72 -#define ESCHER_ShpInst_LightningBolt 73 -#define ESCHER_ShpInst_Heart 74 -#define ESCHER_ShpInst_PictureFrame 75 -#define ESCHER_ShpInst_QuadArrow 76 -#define ESCHER_ShpInst_LeftArrowCallout 77 -#define ESCHER_ShpInst_RightArrowCallout 78 -#define ESCHER_ShpInst_UpArrowCallout 79 -#define ESCHER_ShpInst_DownArrowCallout 80 -#define ESCHER_ShpInst_LeftRightArrowCallout 81 -#define ESCHER_ShpInst_UpDownArrowCallout 82 -#define ESCHER_ShpInst_QuadArrowCallout 83 -#define ESCHER_ShpInst_Bevel 84 -#define ESCHER_ShpInst_LeftBracket 85 -#define ESCHER_ShpInst_RightBracket 86 -#define ESCHER_ShpInst_LeftBrace 87 -#define ESCHER_ShpInst_RightBrace 88 -#define ESCHER_ShpInst_LeftUpArrow 89 -#define ESCHER_ShpInst_BentUpArrow 90 -#define ESCHER_ShpInst_BentArrow 91 -#define ESCHER_ShpInst_Seal24 92 -#define ESCHER_ShpInst_StripedRightArrow 93 -#define ESCHER_ShpInst_NotchedRightArrow 94 -#define ESCHER_ShpInst_BlockArc 95 -#define ESCHER_ShpInst_SmileyFace 96 -#define ESCHER_ShpInst_VerticalScroll 97 -#define ESCHER_ShpInst_HorizontalScroll 98 -#define ESCHER_ShpInst_CircularArrow 99 -#define ESCHER_ShpInst_NotchedCircularArrow 100 -#define ESCHER_ShpInst_UturnArrow 101 -#define ESCHER_ShpInst_CurvedRightArrow 102 -#define ESCHER_ShpInst_CurvedLeftArrow 103 -#define ESCHER_ShpInst_CurvedUpArrow 104 -#define ESCHER_ShpInst_CurvedDownArrow 105 -#define ESCHER_ShpInst_CloudCallout 106 -#define ESCHER_ShpInst_EllipseRibbon 107 -#define ESCHER_ShpInst_EllipseRibbon2 108 -#define ESCHER_ShpInst_FlowChartProcess 109 -#define ESCHER_ShpInst_FlowChartDecision 110 -#define ESCHER_ShpInst_FlowChartInputOutput 111 -#define ESCHER_ShpInst_FlowChartPredefinedProcess 112 -#define ESCHER_ShpInst_FlowChartInternalStorage 113 -#define ESCHER_ShpInst_FlowChartDocument 114 -#define ESCHER_ShpInst_FlowChartMultidocument 115 -#define ESCHER_ShpInst_FlowChartTerminator 116 -#define ESCHER_ShpInst_FlowChartPreparation 117 -#define ESCHER_ShpInst_FlowChartManualInput 118 -#define ESCHER_ShpInst_FlowChartManualOperation 119 -#define ESCHER_ShpInst_FlowChartConnector 120 -#define ESCHER_ShpInst_FlowChartPunchedCard 121 -#define ESCHER_ShpInst_FlowChartPunchedTape 122 -#define ESCHER_ShpInst_FlowChartSummingJunction 123 -#define ESCHER_ShpInst_FlowChartOr 124 -#define ESCHER_ShpInst_FlowChartCollate 125 -#define ESCHER_ShpInst_FlowChartSort 126 -#define ESCHER_ShpInst_FlowChartExtract 127 -#define ESCHER_ShpInst_FlowChartMerge 128 -#define ESCHER_ShpInst_FlowChartOfflineStorage 129 -#define ESCHER_ShpInst_FlowChartOnlineStorage 130 -#define ESCHER_ShpInst_FlowChartMagneticTape 131 -#define ESCHER_ShpInst_FlowChartMagneticDisk 132 -#define ESCHER_ShpInst_FlowChartMagneticDrum 133 -#define ESCHER_ShpInst_FlowChartDisplay 134 -#define ESCHER_ShpInst_FlowChartDelay 135 -#define ESCHER_ShpInst_TextPlainText 136 -#define ESCHER_ShpInst_TextStop 137 -#define ESCHER_ShpInst_TextTriangle 138 -#define ESCHER_ShpInst_TextTriangleInverted 139 -#define ESCHER_ShpInst_TextChevron 140 -#define ESCHER_ShpInst_TextChevronInverted 141 -#define ESCHER_ShpInst_TextRingInside 142 -#define ESCHER_ShpInst_TextRingOutside 143 -#define ESCHER_ShpInst_TextArchUpCurve 144 -#define ESCHER_ShpInst_TextArchDownCurve 145 -#define ESCHER_ShpInst_TextCircleCurve 146 -#define ESCHER_ShpInst_TextButtonCurve 147 -#define ESCHER_ShpInst_TextArchUpPour 148 -#define ESCHER_ShpInst_TextArchDownPour 149 -#define ESCHER_ShpInst_TextCirclePour 150 -#define ESCHER_ShpInst_TextButtonPour 151 -#define ESCHER_ShpInst_TextCurveUp 152 -#define ESCHER_ShpInst_TextCurveDown 153 -#define ESCHER_ShpInst_TextCascadeUp 154 -#define ESCHER_ShpInst_TextCascadeDown 155 -#define ESCHER_ShpInst_TextWave1 156 -#define ESCHER_ShpInst_TextWave2 157 -#define ESCHER_ShpInst_TextWave3 158 -#define ESCHER_ShpInst_TextWave4 159 -#define ESCHER_ShpInst_TextInflate 160 -#define ESCHER_ShpInst_TextDeflate 161 -#define ESCHER_ShpInst_TextInflateBottom 162 -#define ESCHER_ShpInst_TextDeflateBottom 163 -#define ESCHER_ShpInst_TextInflateTop 164 -#define ESCHER_ShpInst_TextDeflateTop 165 -#define ESCHER_ShpInst_TextDeflateInflate 166 -#define ESCHER_ShpInst_TextDeflateInflateDeflate 167 -#define ESCHER_ShpInst_TextFadeRight 168 -#define ESCHER_ShpInst_TextFadeLeft 169 -#define ESCHER_ShpInst_TextFadeUp 170 -#define ESCHER_ShpInst_TextFadeDown 171 -#define ESCHER_ShpInst_TextSlantUp 172 -#define ESCHER_ShpInst_TextSlantDown 173 -#define ESCHER_ShpInst_TextCanUp 174 -#define ESCHER_ShpInst_TextCanDown 175 -#define ESCHER_ShpInst_FlowChartAlternateProcess 176 -#define ESCHER_ShpInst_FlowChartOffpageConnector 177 -#define ESCHER_ShpInst_Callout90 178 -#define ESCHER_ShpInst_AccentCallout90 179 -#define ESCHER_ShpInst_BorderCallout90 180 -#define ESCHER_ShpInst_AccentBorderCallout90 181 -#define ESCHER_ShpInst_LeftRightUpArrow 182 -#define ESCHER_ShpInst_Sun 183 -#define ESCHER_ShpInst_Moon 184 -#define ESCHER_ShpInst_BracketPair 185 -#define ESCHER_ShpInst_BracePair 186 -#define ESCHER_ShpInst_Seal4 187 -#define ESCHER_ShpInst_DoubleWave 188 -#define ESCHER_ShpInst_ActionButtonBlank 189 -#define ESCHER_ShpInst_ActionButtonHome 190 -#define ESCHER_ShpInst_ActionButtonHelp 191 -#define ESCHER_ShpInst_ActionButtonInformation 192 -#define ESCHER_ShpInst_ActionButtonForwardNext 193 -#define ESCHER_ShpInst_ActionButtonBackPrevious 194 -#define ESCHER_ShpInst_ActionButtonEnd 195 -#define ESCHER_ShpInst_ActionButtonBeginning 196 -#define ESCHER_ShpInst_ActionButtonReturn 197 -#define ESCHER_ShpInst_ActionButtonDocument 198 -#define ESCHER_ShpInst_ActionButtonSound 199 -#define ESCHER_ShpInst_ActionButtonMovie 200 -#define ESCHER_ShpInst_HostControl 201 -#define ESCHER_ShpInst_TextBox 202 - -#define ESCHER_ShpInst_COUNT 203 -#define ESCHER_ShpInst_Max 0x0FFF -#define ESCHER_ShpInst_Nil ESCHER_ShpInst_Max - -enum ESCHER_BlibType -{ // GEL provided types... - ERROR = 0, // An error occured during loading - UNKNOWN, // An unknown blip type - EMF, // Windows Enhanced Metafile - WMF, // Windows Metafile - PICT, // Macintosh PICT - PEG, // JFIF - PNG, // PNG - DIB, // Windows DIB - FirstClient = 32, // First client defined blip type - LastClient = 255 // Last client defined blip type -}; - -enum ESCHER_FillStyle -{ - ESCHER_FillSolid, // Fill with a solid color - ESCHER_FillPattern, // Fill with a pattern (bitmap) - ESCHER_FillTexture, // A texture (pattern with its own color map) - ESCHER_FillPicture, // Center a picture in the shape - ESCHER_FillShade, // Shade from start to end points - ESCHER_FillShadeCenter, // Shade from bounding rectangle to end point - ESCHER_FillShadeShape, // Shade from shape outline to end point - ESCHER_FillShadeScale, - ESCHER_FillShadeTitle, - ESCHER_FillBackground -}; - -enum ESCHER_wMode -{ - ESCHER_wColor, // only used for predefined shades - ESCHER_wAutomatic, // depends on object type - ESCHER_wGrayScale, // shades of gray only - ESCHER_wLightGrayScale, // shades of light gray only - ESCHER_wInverseGray, // dark gray mapped to light gray, etc. - ESCHER_wGrayOutline, // pure gray and white - ESCHER_wBlackTextLine, // black text and lines, all else grayscale - ESCHER_wHighContrast, // pure black and white mode (no grays) - ESCHER_wBlack, // solid black msobwWhite, // solid white - ESCHER_wDontShow, // object not drawn - ESCHER_wNumModes // number of Black and white modes -}; - - -// -enum ESCHER_ShapePath -{ - ESCHER_ShapeLines, // A line of straight segments - ESCHER_ShapeLinesClosed, // A closed polygonal object - ESCHER_ShapeCurves, // A line of Bezier curve segments - ESCHER_ShapeCurvesClosed, // A closed shape with curved edges - ESCHER_ShapeComplex // pSegmentInfo must be non-empty -}; - - -enum ESCHER_WrapMode -{ - ESCHER_WrapSquare, - ESCHER_WrapByPoints, - ESCHER_WrapNone, - ESCHER_WrapTopBottom, - ESCHER_WrapThrough -}; - -// -enum ESCHER_bwMode -{ - ESCHER_bwColor, // only used for predefined shades - ESCHER_bwAutomatic, // depends on object type - ESCHER_bwGrayScale, // shades of gray only - ESCHER_bwLightGrayScale, // shades of light gray only - ESCHER_bwInverseGray, // dark gray mapped to light gray, etc. - ESCHER_bwGrayOutline, // pure gray and white - ESCHER_bwBlackTextLine, // black text and lines, all else grayscale - ESCHER_bwHighContrast, // pure black and white mode (no grays) - ESCHER_bwBlack, // solid black - ESCHER_bwWhite, // solid white - ESCHER_bwDontShow, // object not drawn - ESCHER_bwNumModes // number of Black and white modes -}; - - -enum ESCHER_AnchorText -{ - ESCHER_AnchorTop, - ESCHER_AnchorMiddle, - ESCHER_AnchorBottom, - ESCHER_AnchorTopCentered, - ESCHER_AnchorMiddleCentered, - ESCHER_AnchorBottomCentered, - ESCHER_AnchorTopBaseline, - ESCHER_AnchorBottomBaseline, - ESCHER_AnchorTopCenteredBaseline, - ESCHER_AnchorBottomCenteredBaseline -}; - -enum ESCHER_cDir -{ - ESCHER_cDir0, // Right - ESCHER_cDir90, // Down - ESCHER_cDir180, // Left - ESCHER_cDir270 // Up -}; - -// connector style -enum ESCHER_cxSTYLE -{ - ESCHER_cxstyleStraight = 0, - ESCHER_cxstyleBent, - ESCHER_cxstyleCurved, - ESCHER_cxstyleNone -}; - -// text flow -enum ESCHER_txfl -{ - ESCHER_txflHorzN, // Horizontal non-@ - ESCHER_txflTtoBA, // Top to Bottom @-font - ESCHER_txflBtoT, // Bottom to Top non-@ - ESCHER_txflTtoBN, // Top to Bottom non-@ - ESCHER_txflHorzA, // Horizontal @-font - ESCHER_txflVertN // Vertical, non-@ -}; - -// text direction (needed for Bi-Di support) -enum ESCHER_txDir -{ - ESCHER_txdirLTR, // left-to-right text direction - ESCHER_txdirRTL, // right-to-left text direction - ESCHER_txdirContext // context text direction -}; - -// Callout Type -enum ESCHER_spcot -{ - ESCHER_spcotRightAngle = 1, - ESCHER_spcotOneSegment = 2, - ESCHER_spcotTwoSegment = 3, - ESCHER_spcotThreeSegment = 4 -}; - -// Callout Angle -enum ESCHER_spcoa -{ - ESCHER_spcoaAny, - ESCHER_spcoa30, - ESCHER_spcoa45, - ESCHER_spcoa60, - ESCHER_spcoa90, - ESCHER_spcoa0 -}; - -// Callout Drop -enum ESCHER_spcod -{ - ESCHER_spcodTop, - ESCHER_spcodCenter, - ESCHER_spcodBottom, - ESCHER_spcodSpecified -}; - -// FontWork alignment -enum ESCHER_GeoTextAlign -{ - ESCHER_AlignTextStretch, /* Stretch each line of text to fit width. */ - ESCHER_AlignTextCenter, /* Center text on width. */ - ESCHER_AlignTextLeft, /* Left justify. */ - ESCHER_AlignTextRight, /* Right justify. */ - ESCHER_AlignTextLetterJust, /* Spread letters out to fit width. */ - ESCHER_AlignTextWordJust, /* Spread words out to fit width. */ - ESCHER_AlignTextInvalid /* Invalid */ -}; - -// flags for pictures -enum ESCHER_BlipFlags -{ - ESCHER_BlipFlagDefault = 0, - ESCHER_BlipFlagComment = 0, // Blip name is a comment - ESCHER_BlipFlagFile, // Blip name is a file name - ESCHER_BlipFlagURL, // Blip name is a full URL - ESCHER_BlipFlagType = 3, // Mask to extract type - /* Or the following flags with any of the above. */ - ESCHER_BlipFlagDontSave = 4, // A "dont" is the depression in the metal - // body work of an automobile caused when a - // cyclist violently thrusts his or her nose - // at it, thus a DontSave is another name for - // a cycle lane. - ESCHER_BlipFlagDoNotSave = 4, // For those who prefer English - ESCHER_BlipFlagLinkToFile = 8 -}; - -// -enum ESCHER_3DRenderMode -{ - ESCHER_FullRender, // Generate a full rendering - ESCHER_Wireframe, // Generate a wireframe - ESCHER_BoundingCube // Generate a bounding cube -}; - -// -enum ESCHER_xFormType -{ - ESCHER_xFormAbsolute, // Apply transform in absolute space centered on shape - ESCHER_xFormShape, // Apply transform to shape geometry - ESCHER_xFormDrawing // Apply transform in drawing space -}; - -// -enum ESCHER_ShadowType -{ - ESCHER_ShadowOffset, // N pixel offset shadow - ESCHER_ShadowDouble, // Use second offset too - ESCHER_ShadowRich, // Rich perspective shadow (cast relative to shape) - ESCHER_ShadowShape, // Rich perspective shadow (cast in shape space) - ESCHER_ShadowDrawing, // Perspective shadow cast in drawing space - ESCHER_ShadowEmbossOrEngrave -}; - -// - the type of a (length) measurement -enum ESCHER_dzType - { - ESCHER_dzTypeMin = 0, - ESCHER_dzTypeDefault = 0, // Default size, ignore the values - ESCHER_dzTypeA = 1, // Values are in EMUs - ESCHER_dzTypeV = 2, // Values are in pixels - ESCHER_dzTypeShape = 3, // Values are 16.16 fractions of shape size - ESCHER_dzTypeFixedAspect = 4, // Aspect ratio is fixed - ESCHER_dzTypeAFixed = 5, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixed = 6, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio - ESCHER_dzTypeFixedAspectEnlarge= 8, // Aspect ratio is fixed, favor larger size - ESCHER_dzTypeAFixedBig = 9, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixedBig = 10, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio - ESCHER_dzTypeMax = 11 -}; - -// how to interpret the colors in a shaded fill. -enum ESCHER_ShadeType -{ - ESCHER_ShadeNone = 0, // Interpolate without correction between RGBs - ESCHER_ShadeGamma = 1, // Apply gamma correction to colors - ESCHER_ShadeSigma = 2, // Apply a sigma transfer function to position - ESCHER_ShadeBand = 4, // Add a flat band at the start of the shade - ESCHER_ShadeOneColor = 8, // This is a one color shade - - /* A parameter for the band or sigma function can be stored in the top - 16 bits of the value - this is a proportion of *each* band of the - shade to make flat (or the approximate equal value for a sigma - function). NOTE: the parameter is not used for the sigma function, - instead a built in value is used. This value should not be changed - from the default! */ - ESCHER_ShadeParameterShift = 16, - ESCHER_ShadeParameterMask = 0xffff0000, - - ESCHER_ShadeDefault = (ESCHER_ShadeGamma|ESCHER_ShadeSigma| - (16384<<ESCHER_ShadeParameterShift)) -}; - -// compound line style -enum ESCHER_LineStyle -{ - ESCHER_LineSimple, // Single line (of width lineWidth) - ESCHER_LineDouble, // Double lines of equal width - ESCHER_LineThickThin, // Double lines, one thick, one thin - ESCHER_LineThinThick, // Double lines, reverse order - ESCHER_LineTriple // Three lines, thin, thick, thin -}; - -// how to "fill" the line contour -enum ESCHER_LineType -{ - ESCHER_lineSolidType, // Fill with a solid color - ESCHER_linePattern, // Fill with a pattern (bitmap) - ESCHER_lineTexture, // A texture (pattern with its own color map) - ESCHER_linePicture // Center a picture in the shape -}; - -// dashed line style -enum ESCHER_LineDashing -{ - ESCHER_LineSolid, // Solid (continuous) pen - ESCHER_LineDashSys, // PS_DASH system dash style - ESCHER_LineDotSys, // PS_DOT system dash style - ESCHER_LineDashDotSys, // PS_DASHDOT system dash style - ESCHER_LineDashDotDotSys, // PS_DASHDOTDOT system dash style - ESCHER_LineDotGEL, // square dot style - ESCHER_LineDashGEL, // dash style - ESCHER_LineLongDashGEL, // long dash style - ESCHER_LineDashDotGEL, // dash short dash - ESCHER_LineLongDashDotGEL, // long dash short dash - ESCHER_LineLongDashDotDotGEL // long dash short dash short dash -}; - -// line end effect -enum ESCHER_LineEnd -{ - ESCHER_LineNoEnd, - ESCHER_LineArrowEnd, - ESCHER_LineArrowStealthEnd, - ESCHER_LineArrowDiamondEnd, - ESCHER_LineArrowOvalEnd, - ESCHER_LineArrowOpenEnd -}; - -// size of arrowhead -enum ESCHER_LineWidth -{ - ESCHER_LineNarrowArrow, - ESCHER_LineMediumWidthArrow, - ESCHER_LineWideArrow -}; - -// size of arrowhead -enum ESCHER_LineEndLenght -{ - ESCHER_LineShortArrow, - ESCHER_LineMediumLenArrow, - ESCHER_LineLongArrow -}; - -// line join style. -enum ESCHER_LineJoin -{ - ESCHER_LineJoinBevel, // Join edges by a straight line - ESCHER_LineJoinMiter, // Extend edges until they join - ESCHER_LineJoinRound // Draw an arc between the two edges -}; - -// line cap style (applies to ends of dash segments too). -enum ESCHER_LineCap -{ - ESCHER_LineEndCapRound, // Rounded ends - the default - ESCHER_LineEndCapSquare, // Square protrudes by half line width - ESCHER_LineEndCapFlat // Line ends at end point -}; -// Shape Properties -// 1pt = 12700 EMU (English Metric Units) -// 1pt = 20 Twip = 20/1440" = 1/72" -// 1twip=635 EMU -// 1" = 12700*72 = 914400 EMU -// 1" = 25.4mm -// 1mm = 36000 EMU -// Transform -#define ESCHER_Prop_Rotation 4 /* Fixed Point 16.16 degrees */ -// Protection -#define ESCHER_Prop_LockRotation 119 /* BOOL No rotation */ -#define ESCHER_Prop_LockAspectRatio 120 /* BOOL Don't allow changes in aspect ratio */ -#define ESCHER_Prop_LockPosition 121 /* BOOL Don't allow the shape to be moved */ -#define ESCHER_Prop_LockAgainstSelect 122 /* BOOL Shape may not be selected */ -#define ESCHER_Prop_LockCropping 123 /* BOOL No cropping this shape */ -#define ESCHER_Prop_LockVertices 124 /* BOOL Edit Points not allowed */ -#define ESCHER_Prop_LockText 125 /* BOOL Do not edit text */ -#define ESCHER_Prop_LockAdjustHandles 126 /* BOOL Do not adjust */ -#define ESCHER_Prop_LockAgainstGrouping 127 /* BOOL Do not group this shape */ -// Text -#define ESCHER_Prop_lTxid 128 /* LONG id for the text, value determined by the host */ -#define ESCHER_Prop_dxTextLeft 129 /* LONG margins relative to shape's inscribed */ -#define ESCHER_Prop_dyTextTop 130 /* LONG text rectangle (in EMUs) */ -#define ESCHER_Prop_dxTextRight 131 /* LONG */ -#define ESCHER_Prop_dyTextBottom 132 /* LONG */ -#define ESCHER_Prop_WrapText 133 /* MSOWRAPMODE Wrap text at shape margins */ -#define ESCHER_Prop_scaleText 134 /* LONG Text zoom/scale (used if fFitTextToShape) */ -#define ESCHER_Prop_AnchorText 135 /* ESCHER_AnchorText How to anchor the text */ -#define ESCHER_Prop_txflTextFlow 136 /* MSOTXFL Text flow */ -#define ESCHER_Prop_cdirFont 137 /* MSOCDIR Font rotation */ -#define ESCHER_Prop_hspNext 138 /* MSOHSP ID of the next shape (used by Word for linked textboxes) */ -#define ESCHER_Prop_txdir 139 /* MSOTXDIR Bi-Di Text direction */ -#define ESCHER_Prop_SelectText 187 /* BOOL TRUE if single click selects text, FALSE if two clicks */ -#define ESCHER_Prop_AutoTextMargin 188 /* BOOL use host's margin calculations */ -#define ESCHER_Prop_RotateText 189 /* BOOL Rotate text with shape */ -#define ESCHER_Prop_FitShapeToText 190 /* BOOL Size shape to fit text size */ -#define ESCHER_Prop_FitTextToShape 191 /* BOOL Size text to fit shape size */ -// GeoText -#define ESCHER_Prop_gtextUNICODE 192 /* WCHAR* UNICODE text string */ -#define ESCHER_Prop_gtextRTF 193 /* char* RTF text string */ -#define ESCHER_Prop_gtextAlign 194 /* MSOGEOTEXTALIGN alignment on curve */ -#define ESCHER_Prop_gtextSize 195 /* LONG default point size */ -#define ESCHER_Prop_gtextSpacing 196 /* LONG fixed point 16.16 */ -#define ESCHER_Prop_gtextFont 197 /* WCHAR* font family name */ -#define ESCHER_Prop_gtextFReverseRows 240 /* BOOL Reverse row order */ -#define ESCHER_Prop_fGtext 241 /* BOOL Has text effect */ -#define ESCHER_Prop_gtextFVertical 242 /* BOOL Rotate characters */ -#define ESCHER_Prop_gtextFKern 243 /* BOOL Kern characters */ -#define ESCHER_Prop_gtextFTight 244 /* BOOL Tightening or tracking */ -#define ESCHER_Prop_gtextFStretch 245 /* BOOL Stretch to fit shape */ -#define ESCHER_Prop_gtextFShrinkFit 246 /* BOOL Char bounding box */ -#define ESCHER_Prop_gtextFBestFit 247 /* BOOL Scale text-on-path */ -#define ESCHER_Prop_gtextFNormalize 248 /* BOOL Stretch char height */ -#define ESCHER_Prop_gtextFDxMeasure 249 /* BOOL Do not measure along path */ -#define ESCHER_Prop_gtextFBold 250 /* BOOL Bold font */ -#define ESCHER_Prop_gtextFItalic 251 /* BOOL Italic font */ -#define ESCHER_Prop_gtextFUnderline 252 /* BOOL Underline font */ -#define ESCHER_Prop_gtextFShadow 253 /* BOOL Shadow font */ -#define ESCHER_Prop_gtextFSmallcaps 254 /* BOOL Small caps font */ -#define ESCHER_Prop_gtextFStrikethrough 255 /* BOOL Strike through font */ -// Blip -#define ESCHER_Prop_cropFromTop 256 /* LONG 16.16 fraction times total */ -#define ESCHER_Prop_cropFromBottom 257 /* LONG image width or height, */ -#define ESCHER_Prop_cropFromLeft 258 /* LONG as appropriate. */ -#define ESCHER_Prop_cropFromRight 259 /* LONG */ -#define ESCHER_Prop_pib 260 /* IMsoBlip* Blip to display */ -#define ESCHER_Prop_pibName 261 /* WCHAR* Blip file name */ -#define ESCHER_Prop_pibFlags 262 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_pictureTransparent 263 /* LONG transparent color (none if ~0UL) */ -#define ESCHER_Prop_pictureContrast 264 /* LONG contrast setting */ -#define ESCHER_Prop_pictureBrightness 265 /* LONG brightness setting */ -#define ESCHER_Prop_pictureGamma 266 /* LONG 16.16 gamma */ -#define ESCHER_Prop_pictureId 267 /* LONG Host-defined ID for OLE objects (usually a pointer) */ -#define ESCHER_Prop_pictureDblCrMod 268 /* MSOCLR Modification used if shape has double shadow */ -#define ESCHER_Prop_pictureFillCrMod 269 /* MSOCLR */ -#define ESCHER_Prop_pictureLineCrMod 270 /* MSOCLR */ -#define ESCHER_Prop_pibPrint 271 /* IMsoBlip* Blip to display when printing */ -#define ESCHER_Prop_pibPrintName 272 /* WCHAR* Blip file name */ -#define ESCHER_Prop_pibPrintFlags 273 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_fNoHitTestPicture 316 /* BOOL Do not hit test the picture */ -#define ESCHER_Prop_pictureGray 317 /* BOOL grayscale display */ -#define ESCHER_Prop_pictureBiLevel 318 /* BOOL bi-level display */ -#define ESCHER_Prop_pictureActive 319 /* BOOL Server is active (OLE objects only) */ -// Geometry -#define ESCHER_Prop_geoLeft 320 /* LONG Defines the G (geometry) coordinate space. */ -#define ESCHER_Prop_geoTop 321 /* LONG */ -#define ESCHER_Prop_geoRight 322 /* LONG */ -#define ESCHER_Prop_geoBottom 323 /* LONG */ -#define ESCHER_Prop_shapePath 324 /* MSOSHAPEPATH */ -#define ESCHER_Prop_pVertices 325 /* IMsoArray An array of points, in G units. */ -#define ESCHER_Prop_pSegmentInfo 326 /* IMsoArray */ -#define ESCHER_Prop_adjustValue 327 /* LONG Adjustment values corresponding to */ -#define ESCHER_Prop_adjust2Value 328 /* LONG the positions of the adjust handles */ -#define ESCHER_Prop_adjust3Value 329 /* LONG of the shape. The number of values */ -#define ESCHER_Prop_adjust4Value 330 /* LONG used and their allowable ranges vary */ -#define ESCHER_Prop_adjust5Value 331 /* LONG from shape type to shape type. */ -#define ESCHER_Prop_adjust6Value 332 /* LONG */ -#define ESCHER_Prop_adjust7Value 333 /* LONG */ -#define ESCHER_Prop_adjust8Value 334 /* LONG */ -#define ESCHER_Prop_adjust9Value 335 /* LONG */ -#define ESCHER_Prop_adjust10Value 336 /* LONG */ -#define ESCHER_Prop_fShadowOK 378 /* BOOL Shadow may be set */ -#define ESCHER_Prop_f3DOK 379 /* BOOL 3D may be set */ -#define ESCHER_Prop_fLineOK 380 /* BOOL Line style may be set */ -#define ESCHER_Prop_fGtextOK 381 /* BOOL Text effect (FontWork) supported */ -#define ESCHER_Prop_fFillShadeShapeOK 382 /* BOOL */ -#define ESCHER_Prop_fFillOK 383 /* BOOL OK to fill the shape through the UI or VBA? */ -// FillStyle -#define ESCHER_Prop_fillType 384 /* ESCHER_FillStyle Type of fill */ -#define ESCHER_Prop_fillColor 385 /* MSOCLR Foreground color */ -#define ESCHER_Prop_fillOpacity 386 /* LONG Fixed 16.16 */ -#define ESCHER_Prop_fillBackColor 387 /* MSOCLR Background color */ -#define ESCHER_Prop_fillBackOpacity 388 /* LONG Shades only */ -#define ESCHER_Prop_fillCrMod 389 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_fillBlip 390 /* IMsoBlip* Pattern/texture */ -#define ESCHER_Prop_fillBlipName 391 /* WCHAR* Blip file name */ -#define ESCHER_Prop_fillBlipFlags 392 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_fillWidth 393 /* LONG How big (A units) to make a metafile texture. */ -#define ESCHER_Prop_fillHeight 394 /* LONG */ -#define ESCHER_Prop_fillAngle 395 /* LONG Fade angle - degrees in 16.16 */ -#define ESCHER_Prop_fillFocus 396 /* LONG Linear shaded fill focus percent */ -#define ESCHER_Prop_fillToLeft 397 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToTop 398 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToRight 399 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillToBottom 400 /* LONG Fraction 16.16 */ -#define ESCHER_Prop_fillRectLeft 401 /* LONG For shaded fills, use the specified rectangle */ -#define ESCHER_Prop_fillRectTop 402 /* LONG instead of the shape's bounding rect to */ -#define ESCHER_Prop_fillRectRight 403 /* LONG define how large the fade is going to be. */ -#define ESCHER_Prop_fillRectBottom 404 /* LONG */ -#define ESCHER_Prop_fillDztype 405 /* MSODZTYPE */ -#define ESCHER_Prop_fillShadePreset 406 /* LONG Special shades */ -#define ESCHER_Prop_fillShadeColors 407 /* IMsoArray a preset array of colors */ -#define ESCHER_Prop_fillOriginX 408 /* LONG */ -#define ESCHER_Prop_fillOriginY 409 /* LONG */ -#define ESCHER_Prop_fillShapeOriginX 410 /* LONG */ -#define ESCHER_Prop_fillShapeOriginY 411 /* LONG */ -#define ESCHER_Prop_fillShadeType 412 /* MSOSHADETYPE Type of shading, if a shaded (gradient) fill. */ -#define ESCHER_Prop_fFilled 443 /* BOOL Is shape filled? */ -#define ESCHER_Prop_fHitTestFill 444 /* BOOL Should we hit test fill? */ -#define ESCHER_Prop_fillShape 445 /* BOOL Register pattern on shape */ -#define ESCHER_Prop_fillUseRect 446 /* BOOL Use the large rect? */ -#define ESCHER_Prop_fNoFillHitTest 447 /* BOOL Hit test a shape as though filled */ -// LineStyle -#define ESCHER_Prop_lineColor 448 /* MSOCLR Color of line */ -#define ESCHER_Prop_lineOpacity 449 /* LONG Not implemented */ -#define ESCHER_Prop_lineBackColor 450 /* MSOCLR Background color */ -#define ESCHER_Prop_lineCrMod 451 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_lineType 452 /* MSOLINETYPE Type of line */ -#define ESCHER_Prop_lineFillBlip 453 /* IMsoBlip* Pattern/texture */ -#define ESCHER_Prop_lineFillBlipName 454 /* WCHAR* Blip file name */ -#define ESCHER_Prop_lineFillBlipFlags 455 /* MSOBLIPFLAGS Blip flags */ -#define ESCHER_Prop_lineFillWidth 456 /* LONG How big (A units) to make */ -#define ESCHER_Prop_lineFillHeight 457 /* LONG a metafile texture. */ -#define ESCHER_Prop_lineFillDztype 458 /* MSODZTYPE How to interpret fillWidth/Height numbers. */ -#define ESCHER_Prop_lineWidth 459 /* LONG A units; 1pt == 12700 EMUs */ -#define ESCHER_Prop_lineMiterLimit 460 /* LONG ratio (16.16) of width */ -#define ESCHER_Prop_lineStyle 461 /* MSOLINESTYLE Draw parallel lines? */ -#define ESCHER_Prop_lineDashing 462 /* MSOLINEDASHING Can be overridden by: */ -#define ESCHER_Prop_lineDashStyle 463 /* IMsoArray As Win32 ExtCreatePen */ -#define ESCHER_Prop_lineStartArrowhead 464 /* MSOLINEEND Arrow at start */ -#define ESCHER_Prop_lineEndArrowhead 465 /* MSOLINEEND Arrow at end */ -#define ESCHER_Prop_lineStartArrowWidth 466 /* MSOLINEENDWIDTH Arrow at start */ -#define ESCHER_Prop_lineStartArrowLength 467 /* MSOLINEENDLENGTH Arrow at end */ -#define ESCHER_Prop_lineEndArrowWidth 468 /* MSOLINEENDWIDTH Arrow at start */ -#define ESCHER_Prop_lineEndArrowLength 469 /* MSOLINEENDLENGTH Arrow at end */ -#define ESCHER_Prop_lineJoinStyle 470 /* MSOLINEJOIN How to join lines */ -#define ESCHER_Prop_lineEndCapStyle 471 /* MSOLINECAP How to end lines */ -#define ESCHER_Prop_fArrowheadsOK 507 /* BOOL Allow arrowheads if prop. is set */ -#define ESCHER_Prop_fLine 508 /* BOOL Any line? */ -#define ESCHER_Prop_fHitTestLine 509 /* BOOL Should we hit test lines? */ -#define ESCHER_Prop_lineFillShape 510 /* BOOL Register pattern on shape */ -#define ESCHER_Prop_fNoLineDrawDash 511 /* BOOL Draw a dashed line if no line */ -// ShadowStyle -#define ESCHER_Prop_shadowType 512 /* MSOSHADOWTYPE Type of effect */ -#define ESCHER_Prop_shadowColor 513 /* MSOCLR Foreground color */ -#define ESCHER_Prop_shadowHighlight 514 /* MSOCLR Embossed color */ -#define ESCHER_Prop_shadowCrMod 515 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_shadowOpacity 516 /* LONG Fixed 16.16 */ -#define ESCHER_Prop_shadowOffsetX 517 /* LONG Offset shadow */ -#define ESCHER_Prop_shadowOffsetY 518 /* LONG Offset shadow */ -#define ESCHER_Prop_shadowSecondOffsetX 519 /* LONG Double offset shadow */ -#define ESCHER_Prop_shadowSecondOffsetY 520 /* LONG Double offset shadow */ -#define ESCHER_Prop_shadowScaleXToX 521 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleYToX 522 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleXToY 523 /* LONG 16.16 */ -#define ESCHER_Prop_shadowScaleYToY 524 /* LONG 16.16 */ -#define ESCHER_Prop_shadowPerspectiveX 525 /* LONG 16.16 / weight */ -#define ESCHER_Prop_shadowPerspectiveY 526 /* LONG 16.16 / weight */ -#define ESCHER_Prop_shadowWeight 527 /* LONG scaling factor */ -#define ESCHER_Prop_shadowOriginX 528 /* LONG */ -#define ESCHER_Prop_shadowOriginY 529 /* LONG */ -#define ESCHER_Prop_fShadow 574 /* BOOL Any shadow? */ -#define ESCHER_Prop_fshadowObscured 575 /* BOOL Excel5-style shadow */ -// PerspectiveStyle -#define ESCHER_Prop_perspectiveType 576 /* MSOXFORMTYPE Where transform applies */ -#define ESCHER_Prop_perspectiveOffsetX 577 /* LONG The LONG values define a */ -#define ESCHER_Prop_perspectiveOffsetY 578 /* LONG transformation matrix, */ -#define ESCHER_Prop_perspectiveScaleXToX 579 /* LONG effectively, each value */ -#define ESCHER_Prop_perspectiveScaleYToX 580 /* LONG is scaled by the */ -#define ESCHER_Prop_perspectiveScaleXToY 581 /* LONG perspectiveWeight parameter. */ -#define ESCHER_Prop_perspectiveScaleYToY 582 /* LONG */ -#define ESCHER_Prop_perspectivePerspectiveX 583 /* LONG */ -#define ESCHER_Prop_perspectivePerspectiveY 584 /* LONG */ -#define ESCHER_Prop_perspectiveWeight 585 /* LONG Scaling factor */ -#define ESCHER_Prop_perspectiveOriginX 586 /* LONG */ -#define ESCHER_Prop_perspectiveOriginY 587 /* LONG */ -#define ESCHER_Prop_fPerspective 639 /* BOOL On/off */ -// 3D Object -#define ESCHER_Prop_c3DSpecularAmt 640 /* LONG Fixed-point 16.16 */ -#define ESCHER_Prop_c3DDiffuseAmt 641 /* LONG Fixed-point 16.16 */ -#define ESCHER_Prop_c3DShininess 642 /* LONG Default gives OK results */ -#define ESCHER_Prop_c3DEdgeThickness 643 /* LONG Specular edge thickness */ -#define ESCHER_Prop_c3DExtrudeForward 644 /* LONG Distance of extrusion in EMUs */ -#define ESCHER_Prop_c3DExtrudeBackward 645 /* LONG */ -#define ESCHER_Prop_c3DExtrudePlane 646 /* LONG Extrusion direction */ -#define ESCHER_Prop_c3DExtrusionColor 647 /* MSOCLR Basic color of extruded part of shape; the lighting model used will determine the exact shades used when rendering. */ -#define ESCHER_Prop_c3DCrMod 648 /* MSOCLR Modification for BW views */ -#define ESCHER_Prop_f3D 700 /* BOOL Does this shape have a 3D effect? */ -#define ESCHER_Prop_fc3DMetallic 701 /* BOOL Use metallic specularity? */ -#define ESCHER_Prop_fc3DUseExtrusionColor 702 /* BOOL */ -#define ESCHER_Prop_fc3DLightFace 703 /* BOOL */ -// 3D Style -#define ESCHER_Prop_c3DYRotationAngle 704 /* LONG degrees (16.16) about y axis */ -#define ESCHER_Prop_c3DXRotationAngle 705 /* LONG degrees (16.16) about x axis */ -#define ESCHER_Prop_c3DRotationAxisX 706 /* LONG These specify the rotation axis; */ -#define ESCHER_Prop_c3DRotationAxisY 707 /* LONG only their relative magnitudes */ -#define ESCHER_Prop_c3DRotationAxisZ 708 /* LONG matter. */ -#define ESCHER_Prop_c3DRotationAngle 709 /* LONG degrees (16.16) about axis */ -#define ESCHER_Prop_c3DRotationCenterX 710 /* LONG rotation center x (16.16 or g-units) */ -#define ESCHER_Prop_c3DRotationCenterY 711 /* LONG rotation center y (16.16 or g-units) */ -#define ESCHER_Prop_c3DRotationCenterZ 712 /* LONG rotation center z (absolute (emus)) */ -#define ESCHER_Prop_c3DRenderMode 713 /* MSO3DRENDERMODE Full,wireframe, or bcube */ -#define ESCHER_Prop_c3DTolerance 714 /* LONG pixels (16.16) */ -#define ESCHER_Prop_c3DXViewpoint 715 /* LONG X view point (emus) */ -#define ESCHER_Prop_c3DYViewpoint 716 /* LONG Y view point (emus) */ -#define ESCHER_Prop_c3DZViewpoint 717 /* LONG Z view distance (emus) */ -#define ESCHER_Prop_c3DOriginX 718 /* LONG */ -#define ESCHER_Prop_c3DOriginY 719 /* LONG */ -#define ESCHER_Prop_c3DSkewAngle 720 /* LONG degree (16.16) skew angle */ -#define ESCHER_Prop_c3DSkewAmount 721 /* LONG Percentage skew amount */ -#define ESCHER_Prop_c3DAmbientIntensity 722 /* LONG Fixed point intensity */ -#define ESCHER_Prop_c3DKeyX 723 /* LONG Key light source direc- */ -#define ESCHER_Prop_c3DKeyY 724 /* LONG tion; only their relative */ -#define ESCHER_Prop_c3DKeyZ 725 /* LONG magnitudes matter */ -#define ESCHER_Prop_c3DKeyIntensity 726 /* LONG Fixed point intensity */ -#define ESCHER_Prop_c3DFillX 727 /* LONG Fill light source direc- */ -#define ESCHER_Prop_c3DFillY 728 /* LONG tion; only their relative */ -#define ESCHER_Prop_c3DFillZ 729 /* LONG magnitudes matter */ -#define ESCHER_Prop_c3DFillIntensity 730 /* LONG Fixed point intensity */ -#define ESCHER_Prop_fc3DConstrainRotation 763 /* BOOL */ -#define ESCHER_Prop_fc3DRotationCenterAuto 764 /* BOOL */ -#define ESCHER_Prop_fc3DParallel 765 /* BOOL Parallel projection? */ -#define ESCHER_Prop_fc3DKeyHarsh 766 /* BOOL Is key lighting harsh? */ -#define ESCHER_Prop_fc3DFillHarsh 767 /* BOOL Is fill lighting harsh? */ -// Shape -#define ESCHER_Prop_hspMaster 769 /* MSOHSP master shape */ -#define ESCHER_Prop_cxstyle 771 /* MSOCXSTYLE Type of connector */ -#define ESCHER_Prop_bWMode 772 /* ESCHERwMode Settings for modifications to */ -#define ESCHER_Prop_bWModePureBW 773 /* ESCHERwMode be made when in different */ -#define ESCHER_Prop_bWModeBW 774 /* ESCHERwMode forms of black-and-white mode. */ -#define ESCHER_Prop_fOleIcon 826 /* BOOL For OLE objects, whether the object is in icon form */ -#define ESCHER_Prop_fPreferRelativeResize 827 /* BOOL For UI only. Prefer relative resizing. */ -#define ESCHER_Prop_fLockShapeType 828 /* BOOL Lock the shape type (don't allow Change Shape) */ -#define ESCHER_Prop_fDeleteAttachedObject 830 /* BOOL */ -#define ESCHER_Prop_fBackground 831 /* BOOL If TRUE, this is the background shape. */ -// Callout -#define ESCHER_Prop_spcot 832 /* MSOSPCOT Callout type */ -#define ESCHER_Prop_dxyCalloutGap 833 /* LONG Distance from box to first point.(EMUs) */ -#define ESCHER_Prop_spcoa 834 /* MSOSPCOA Callout angle */ -#define ESCHER_Prop_spcod 835 /* MSOSPCOD Callout drop type */ -#define ESCHER_Prop_dxyCalloutDropSpecified 836 /* LONG if msospcodSpecified, the actual drop distance */ -#define ESCHER_Prop_dxyCalloutLengthSpecified 837 /* LONG if fCalloutLengthSpecified, the actual distance */ -#define ESCHER_Prop_fCallout 889 /* BOOL Is the shape a callout? */ -#define ESCHER_Prop_fCalloutAccentBar 890 /* BOOL does callout have accent bar */ -#define ESCHER_Prop_fCalloutTextBorder 891 /* BOOL does callout have a text border */ -#define ESCHER_Prop_fCalloutMinusX 892 /* BOOL */ -#define ESCHER_Prop_fCalloutMinusY 893 /* BOOL */ -#define ESCHER_Prop_fCalloutDropAuto 894 /* BOOL If true, then we occasionally invert the drop distance */ -#define ESCHER_Prop_fCalloutLengthSpecified 895 /* BOOL if true, we look at dxyCalloutLengthSpecified */ -// GroupShape -#define ESCHER_Prop_wzName 896 /* WCHAR* Shape Name (present only if explicitly set) */ -#define ESCHER_Prop_wzDescription 897 /* WCHAR* alternate text */ -#define ESCHER_Prop_pihlShape 898 /* IHlink* The hyperlink in the shape. */ -#define ESCHER_Prop_pWrapPolygonVertices 899 /* IMsoArray The polygon that text will be wrapped around (Word) */ -#define ESCHER_Prop_dxWrapDistLeft 900 /* LONG Left wrapping distance from text (Word) */ -#define ESCHER_Prop_dyWrapDistTop 901 /* LONG Top wrapping distance from text (Word) */ -#define ESCHER_Prop_dxWrapDistRight 902 /* LONG Right wrapping distance from text (Word) */ -#define ESCHER_Prop_dyWrapDistBottom 903 /* LONG Bottom wrapping distance from text (Word) */ -#define ESCHER_Prop_lidRegroup 904 /* LONG Regroup ID */ -#define ESCHER_Prop_tableProperties 927 -#define ESCHER_Prop_tableRowProperties 928 -#define ESCHER_Prop_fEditedWrap 953 /* BOOL Has the wrap polygon been edited? */ -#define ESCHER_Prop_fBehindDocument 954 /* BOOL Word-only (shape is behind text) */ -#define ESCHER_Prop_fOnDblClickNotify 955 /* BOOL Notify client on a double click */ -#define ESCHER_Prop_fIsButton 956 /* BOOL A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros. */ -#define ESCHER_Prop_fOneD 957 /* BOOL 1D adjustment */ -#define ESCHER_Prop_fHidden 958 /* BOOL Do not display */ -#define ESCHER_Prop_fPrint 959 /* BOOL Print this shape */ - -#define ESCHER_PERSISTENTRY_PREALLOCATE 64 - -#define ESCHER_Persist_PrivateEntry 0x80000000 -#define ESCHER_Persist_Dgg 0x00010000 -#define ESCHER_Persist_Dgg_FIDCL 0x00010001 -#define ESCHER_Persist_Dg 0x00020000 -#define ESCHER_Persist_BlibStoreContainer 0x00030000 -#define ESCHER_Persist_CurrentPosition 0x00040000 -#define ESCHER_Persist_Grouping_Snap 0x00050000 -#define ESCHER_Persist_Grouping_Logic 0x00060000 - -// --------------------------------------------------------------------------------------------- - -namespace com { namespace sun { namespace star { - namespace awt { - struct Gradient; - } - namespace drawing { - struct EnhancedCustomShapeAdjustmentValue; - class XShape; - } -}}} - -struct SVX_DLLPUBLIC EscherConnectorListEntry -{ - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnector; - ::com::sun::star::awt::Point maPointA; - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToA; - ::com::sun::star::awt::Point maPointB; - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToB; - - sal_uInt32 GetConnectorRule( sal_Bool bFirst ); - - EscherConnectorListEntry( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rC, - const ::com::sun::star::awt::Point& rPA, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSA , - const ::com::sun::star::awt::Point& rPB, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSB ) : - mXConnector ( rC ), - maPointA ( rPA ), - mXConnectToA( rSA ), - maPointB ( rPB ), - mXConnectToB( rSB ) {} - - sal_uInt32 GetClosestPoint( const Polygon& rPoly, const ::com::sun::star::awt::Point& rP ); -}; - -struct SVX_DLLPUBLIC EscherExContainer -{ - sal_uInt32 nContPos; - SvStream& rStrm; - - EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0 ); - ~EscherExContainer(); -}; -struct SVX_DLLPUBLIC EscherExAtom -{ - sal_uInt32 nContPos; - SvStream& rStrm; - - EscherExAtom( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0, const sal_uInt8 nVersion = 0 ); - ~EscherExAtom(); -}; - -struct EscherPropertyValueHelper -{ - static sal_Bool GetPropertyValue( - ::com::sun::star::uno::Any& rAny, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName, - sal_Bool bTestPropertyAvailability = sal_False ); - - static ::com::sun::star::beans::PropertyState GetPropertyState( - const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName ); -}; - -// --------------------------------------------------------------------------------------------- - -struct EscherPersistEntry -{ - UINT32 mnID; - UINT32 mnOffset; - EscherPersistEntry( UINT32 nId, UINT32 nOffset ) { mnID = nId; mnOffset = nOffset; }; - -}; - -// --------------------------------------------------------------------------------------------- - -class SvMemoryStream; -class EscherBlibEntry -{ - - friend class EscherGraphicProvider; - friend class EscherEx; - friend class _EscherEx; - - protected: - - UINT32 mnIdentifier[ 4 ]; - UINT32 mnPictureOffset; // offset auf die grafik im PictureStreams - UINT32 mnSize; // size of real graphic - - UINT32 mnRefCount; // !! reference count - UINT32 mnSizeExtra; // !! size of preceding header - - ESCHER_BlibType meBlibType; - - Size maPrefSize; - MapMode maPrefMapMode; - - sal_Bool mbIsEmpty; - sal_Bool mbIsNativeGraphicPossible; - - public: - - EscherBlibEntry( sal_uInt32 nPictureOffset, const GraphicObject& rObj, - const ByteString& rId, const GraphicAttr* pAttr = NULL ); - - ~EscherBlibEntry(); - - void WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 ); - sal_Bool IsEmpty() const { return mbIsEmpty; }; - - BOOL operator==( const EscherBlibEntry& ) const; -}; - -// --------------------------------------------------------------------------------------------- - -#define _E_GRAPH_PROV_USE_INSTANCES 1 -#define _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES 2 - -class SVX_DLLPUBLIC EscherGraphicProvider -{ - sal_uInt32 mnFlags; - - EscherBlibEntry** mpBlibEntrys; - sal_uInt32 mnBlibBufSize; - sal_uInt32 mnBlibEntrys; - - protected : - - UINT32 ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry ); - - public : - - sal_uInt32 GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const; - void WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL ); - sal_Bool WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId, - sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0); - sal_uInt32 GetBlibID( SvStream& rPicOutStream, const ByteString& rGraphicId, const Rectangle& rBoundRect, - const com::sun::star::awt::Rectangle* pVisArea = NULL, const GraphicAttr* pGrafikAttr = NULL ); - sal_Bool HasGraphics() const { return mnBlibEntrys != 0; }; - - void SetNewBlipStreamOffset( sal_Int32 nOffset ); - - sal_Bool GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode ); - - EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES ); - ~EscherGraphicProvider(); - -}; - -class SVX_DLLPUBLIC EscherSolverContainer -{ - List maShapeList; - List maConnectorList; - -public: - - sal_uInt32 GetShapeId( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape ) const; - - void AddShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, sal_uInt32 nId ); - void AddConnector( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rA, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rB, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB ); - - void WriteSolver( SvStream& ); - - EscherSolverContainer(){}; - ~EscherSolverContainer(); -}; - -// --------------------------------------------------------------------------------------------- - -#define ESCHER_CREATEPOLYGON_LINE 1 -#define ESCHER_CREATEPOLYGON_POLYLINE 2 -#define ESCHER_CREATEPOLYGON_POLYPOLYGON 4 - -class GraphicAttr; -class SdrObjCustomShape; - -struct EscherPropSortStruct -{ - sal_uInt8* pBuf; - sal_uInt32 nPropSize; - sal_uInt32 nPropValue; - sal_uInt16 nPropId; -}; - -typedef std::vector< EscherPropSortStruct > EscherProperties; - -class SVX_DLLPUBLIC EscherPropertyContainer -{ - EscherGraphicProvider* pGraphicProvider; - SvStream* pPicOutStrm; - Rectangle* pShapeBoundRect; - - EscherPropSortStruct* pSortStruct; - - sal_uInt32 nSortCount; - sal_uInt32 nSortBufSize; - sal_uInt32 nCountCount; - sal_uInt32 nCountSize; - - sal_Bool bHasComplexData; - sal_Bool bSuppressRotation; - - - sal_uInt32 ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True ); - void ImplCreateGraphicAttributes( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nBlibId, sal_Bool bCreateCroppingAttributes ); - sal_Bool ImplCreateEmbeddedBmp( const ByteString& rUniqueId ); - void ImplInit(); - - public : - - EscherPropertyContainer(); - EscherPropertyContainer( - EscherGraphicProvider& rGraphicProvider, // the PropertyContainer needs to know - SvStream* pPicOutStrm, // the GraphicProvider to be able to write - Rectangle& rShapeBoundRect ); // FillBitmaps or GraphicObjects. - // under some cirumstances the ShapeBoundRect is adjusted - // this will happen when rotated GraphicObjects - // are saved to PowerPoint - ~EscherPropertyContainer(); - - void AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString ); - - void AddOpt( sal_uInt16 nPropertyID, sal_uInt32 nPropValue, - sal_Bool bBlib = sal_False ); - - void AddOpt( sal_uInt16 nPropertyID, sal_Bool bBlib, sal_uInt32 nPropValue, - sal_uInt8* pProp, sal_uInt32 nPropSize ); - - sal_Bool GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const; - - sal_Bool GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const; - - EscherProperties GetOpts() const; - - void Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT ); - - sal_Bool CreateOLEGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject ); - - /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */ - sal_Bool CreateEmbeddedBitmapProperties( const ::rtl::OUString& rBitmapUrl, - ::com::sun::star::drawing::BitmapMode eBitmapMode ); - /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */ - sal_Bool CreateEmbeddedHatchProperties( const ::com::sun::star::drawing::Hatch& rHatch, - const Color& rBackColor, bool bFillBackground ); - - // the GraphicProperties will only be created if a GraphicProvider and PicOutStrm is known - // DR: #99897# if no GraphicProvider is present, a complex ESCHER_Prop_fillBlip - // will be created, containing the BLIP directly (e.g. for Excel charts). - sal_Bool CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - const String& rSource, const sal_Bool bCreateFillBitmap, const sal_Bool bCreateCroppingAttributes = sal_False, - const sal_Bool bFillBitmapModeAllowed = sal_True ); - - sal_Bool CreatePolygonProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nFlags, sal_Bool bBezier, ::com::sun::star::awt::Rectangle& rGeoRect, Polygon* pPolygon = NULL ); - - static sal_uInt32 GetGradientColor( const ::com::sun::star::awt::Gradient* pGradient, sal_uInt32 nStartColor ); - - void CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient ); - void CreateGradientProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); - void CreateLineProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateTextProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_uInt32 nText, - const sal_Bool bIsCustomShape = sal_False, const sal_Bool bIsTextFrame = sal_True ); - - sal_Bool CreateConnectorProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, - EscherSolverContainer& rSolver, ::com::sun::star::awt::Rectangle& rGeoRect, - sal_uInt16& rShapeType, sal_uInt16& rShapeFlags ); - - // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last. - // It activ only when at least a FillStyle or LineStyle is set. - sal_Bool CreateShadowProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); - - // creates all necessary CustomShape properties, this includes also Text-, Shadow-, Fill-, and LineProperties - void CreateCustomShapeProperties( const MSO_SPT eShapeType, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & ); - sal_Bool IsFontWork() const; - - // helper functions which are also used by the escher import - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ); - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Any& rSource ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags, rtl::OUString& rShapeType ); - - // helper functions which are also used in ooxml export - static sal_Bool GetLineArrow( const sal_Bool bLineStart, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth ); - static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape ); - static void LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted ); - static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue ); -}; - -// --------------------------------------------------------------------------------------------- - -class SVX_DLLPUBLIC EscherPersistTable -{ - - public: - List maPersistTable; - - BOOL PtIsID( UINT32 nID ); - void PtInsert( UINT32 nID, UINT32 nOfs ); - UINT32 PtDelete( UINT32 nID ); - UINT32 PtGetOffsetByID( UINT32 nID ); - UINT32 PtReplace( UINT32 nID, UINT32 nOfs ); - UINT32 PtReplaceOrInsert( UINT32 nID, UINT32 nOfs ); - UINT32 PtGetCount() const { return maPersistTable.Count(); }; - - EscherPersistTable(); - virtual ~EscherPersistTable(); -}; - -// --------------------------------------------------------------------------------------------- - -class EscherEx; - -/// abstract base class for ESCHER_ClientTextbox, ESCHER_ClientData -class SVX_DLLPUBLIC EscherExClientRecord_Base -{ -public: - EscherExClientRecord_Base() {} - virtual ~EscherExClientRecord_Base(); - - /// Application writes the record header - /// using rEx.AddAtom(...) followed by - /// record data written to rEx.GetStream() - virtual void WriteData( EscherEx& rEx ) const = 0; -}; - - -/// abstract base class for ESCHER_ClientAnchor -class SVX_DLLPUBLIC EscherExClientAnchor_Base -{ -public: - EscherExClientAnchor_Base() {} - virtual ~EscherExClientAnchor_Base(); - - /// Application writes the record header - /// using rEx.AddAtom(...) followed by - /// record data written to rEx.GetStream() - virtual void WriteData( EscherEx& rEx, - const Rectangle& rRect ) = 0; -}; - - -class EscherExHostAppData -{ -private: - EscherExClientAnchor_Base* pClientAnchor; - EscherExClientRecord_Base* pClientData; - EscherExClientRecord_Base* pClientTextbox; - // ignore single shape if entire pages are written - BOOL bDontWriteShape; - -public: - EscherExHostAppData() : pClientAnchor(0), pClientData(0), - pClientTextbox(0), bDontWriteShape(FALSE) - {} - - void SetClientAnchor( EscherExClientAnchor_Base* p ) - { pClientAnchor = p; } - void SetClientData( EscherExClientRecord_Base* p ) - { pClientData = p; } - void SetClientTextbox( EscherExClientRecord_Base* p ) - { pClientTextbox = p; } - void SetDontWriteShape( BOOL b ) - { bDontWriteShape = b; } - EscherExClientAnchor_Base* GetClientAnchor() const - { return pClientAnchor; } - EscherExClientRecord_Base* GetClientData() const - { return pClientData; } - EscherExClientRecord_Base* GetClientTextbox() const - { return pClientTextbox; } - - void WriteClientAnchor( EscherEx& rEx, const Rectangle& rRect ) - { if( pClientAnchor ) pClientAnchor->WriteData( rEx, rRect ); } - void WriteClientData( EscherEx& rEx ) - { if( pClientData ) pClientData->WriteData( rEx ); } - void WriteClientTextbox( EscherEx& rEx ) - { if( pClientTextbox ) pClientTextbox->WriteData( rEx ); } - - BOOL DontWriteShape() const { return bDontWriteShape; } -}; - - -// --------------------------------------------------------------------------------------------- - -class SdrObject; -class SdrPage; -class ImplEscherExSdr; -class Color; - -class Graphic; -class SvMemoryStream; -class SvStream; - -class SVX_DLLPUBLIC EscherEx : public EscherPersistTable, public EscherGraphicProvider -{ - protected : - - SvStream* mpOutStrm; - ImplEscherExSdr* mpImplEscherExSdr; - UINT32 mnStrmStartOfs; - std::vector< sal_uInt32 > mOffsets; - std::vector< sal_uInt16 > mRecTypes; - - UINT32 mnDrawings; - UINT32 mnFIDCLs; // anzahl der cluster ID's - - UINT32 mnCurrentDg; - UINT32 mnCurrentShapeID; // die naechste freie ID - UINT32 mnCurrentShapeMaximumID; // die hoechste und auch benutzte ID - UINT32 mnTotalShapesDg; // anzahl der shapes im Dg - UINT32 mnTotalShapeIdUsedDg; // anzahl der benutzten shape Id's im Dg - UINT32 mnTotalShapesDgg; // anzahl der shapes im Dgg - UINT32 mnCountOfs; - - UINT32 mnGroupLevel; - UINT16 mnHellLayerId; - - BOOL mbEscherSpgr; - BOOL mbEscherDgg; - BOOL mbEscherDg; - BOOL mbOleEmf; // OLE is EMF instead of WMF - - - virtual BOOL DoSeek( UINT32 nKey ); - - public: - - EscherEx( SvStream& rOut, UINT32 nDrawings ); - - /// Fuegt in den EscherStream interne Daten ein, dieser Vorgang - /// darf und muss nur einmal ausgefuehrt werden. - /// Wenn pPicStreamMergeBSE angegeben ist, werden die BLIPs - /// aus diesem Stream in die MsofbtBSE Records des EscherStream - /// gemerged, wie es fuer Excel (und Word?) benoetigt wird. - virtual void Flush( SvStream* pPicStreamMergeBSE = NULL ); - - virtual ~EscherEx(); - - // Application may overload this function to maintain an offset - // table for specific regions but MUST call this function too. - virtual void InsertAtCurrentPos( UINT32 nBytes, BOOL bCont = FALSE );// es werden nBytes an der aktuellen Stream Position eingefuegt, - // die PersistantTable und interne Zeiger angepasst - - void InsertPersistOffset( UINT32 nKey, UINT32 nOffset ); // Es wird nicht geprueft, ob sich jener schluessel schon in der PersistantTable befindet - BOOL SeekToPersistOffset( UINT32 nKey ); - virtual BOOL InsertAtPersistOffset( UINT32 nKey, UINT32 nValue );// nValue wird im Stream an entrsprechender Stelle eingefuegt(overwrite modus), ohne dass sich die - // aktuelle StreamPosition aendert - - SvStream& GetStream() const { return *mpOutStrm; } - ULONG GetStreamPos() const { return mpOutStrm->Tell(); } - - virtual BOOL SeekBehindRecHeader( UINT16 nRecType ); // der stream muss vor einem gueltigen Record Header oder Atom stehen - - // features beim erzeugen folgender Container: - // - // ESCHER_DggContainer: ein EscherDgg Atom wird automatisch erzeugt und verwaltet - // ESCHER_DgContainer: ein EscherDg Atom wird automatisch erzeugt und verwaltet - // ESCHER_SpgrContainer: - // ESCHER_SpContainer: - - virtual void OpenContainer( UINT16 nEscherContainer, int nRecInstance = 0 ); - virtual void CloseContainer(); - - virtual void BeginAtom(); - virtual void EndAtom( UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddAtom( UINT32 nAtomSitze, UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddChildAnchor( const Rectangle& rRectangle ); - virtual void AddClientAnchor( const Rectangle& rRectangle ); - - virtual UINT32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 ); - UINT32 EnterGroup( const Rectangle* pBoundRect = NULL ); - UINT32 GetGroupLevel() const { return mnGroupLevel; }; - virtual BOOL SetGroupSnapRect( UINT32 nGroupLevel, const Rectangle& rRect ); - virtual BOOL SetGroupLogicRect( UINT32 nGroupLevel, const Rectangle& rRect ); - virtual void LeaveGroup(); - - // ein ESCHER_Sp wird geschrieben ( Ein ESCHER_DgContainer muss dazu geoeffnet sein !!) - virtual void AddShape( UINT32 nShpInstance, UINT32 nFlagIds, UINT32 nShapeID = 0 ); - // reserviert eine ShapeId - UINT32 GetShapeID(); - - virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect ); - - UINT32 GetColor( const UINT32 nColor, BOOL bSwap = TRUE ); - UINT32 GetColor( const Color& rColor, BOOL bSwap = TRUE ); - - // OLE is written as EMF instead of WMF (default WMF) - void SetOleEmf( BOOL bVal ) { mbOleEmf = bVal; } - BOOL IsOleEmf() const { return mbOleEmf; } - - // ...Sdr... implemented in eschesdo.cxx - - void AddSdrPage( const SdrPage& rPage ); - - /// returns the ShapeID - UINT32 AddSdrObject( const SdrObject& rObj ); - - /// If objects are written through AddSdrObject the - /// SolverContainer has to be written, and maybe some - /// maintenance to be done. - void EndSdrObjectPage(); - - /// Called before a shape is written, application supplies - /// ClientRecords. May set AppData::bDontWriteShape so the - /// shape is ignored. - virtual EscherExHostAppData* StartShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape ); - - /// Called after a shape is written to inform the application - /// of the resulted shape type and ID. - virtual void EndShape( UINT16 nShapeType, UINT32 nShapeID ); - - /// Called before an AdditionalText EnterGroup occurs. - /// The current shape will be written in three parts: - /// a group shape, the shape itself, and an extra textbox shape. - /// The complete flow is: - /// StartShape sets HostData1. - /// EnterAdditionalTextGroup sets HostData2, App may modify - /// HostData1 and keep track of the change. - /// The group shape is written with HostData2. - /// Another StartShape with the same (!) object sets HostData3. - /// The current shape is written with HostData3. - /// EndShape is called for the current shape. - /// Another StartShape with the same (!) object sets HostData4. - /// The textbox shape is written with HostData4. - /// EndShape is called for the textbox shape. - /// EndShape is called for the group shape, this provides - /// the same functionality as an ordinary recursive group. - virtual EscherExHostAppData* EnterAdditionalTextGroup(); - - /// Called if a picture shall be written and no PicStream is - /// set at ImplEscherExSdr - virtual SvStream* QueryPicStream(); - - /// Called if an ESCHER_Prop_lTxid shall be written - virtual UINT32 QueryTextID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >&, UINT32 nShapeId ); - // add an dummy rectangle shape into the escher stream - UINT32 AddDummyShape(); - - static const SdrObject* GetSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rXShape ); - - void SetHellLayerId( UINT16 nId ) { mnHellLayerId = nId; } - UINT16 GetHellLayerId() const { return mnHellLayerId; } -}; - - -#endif // _SVX_ESCHEREX_HXX |