LCOV - code coverage report
Current view: top level - solver/unxlngi6.pro/inc/filter/msfilter - escherex.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 22 56 39.3 %
Date: 2012-08-25 Functions: 19 40 47.5 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1 8 12.5 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #ifndef _SVX_ESCHEREX_HXX
      30                 :            : #define _SVX_ESCHEREX_HXX
      31                 :            : 
      32                 :            : #include <memory>
      33                 :            : #include <vector>
      34                 :            : #include <boost/shared_ptr.hpp>
      35                 :            : #include <tools/solar.h>
      36                 :            : #include <tools/gen.hxx>
      37                 :            : #include <tools/stream.hxx>
      38                 :            : #include <com/sun/star/uno/Reference.h>
      39                 :            : #include <svtools/grfmgr.hxx>
      40                 :            : #include <com/sun/star/awt/Size.hpp>
      41                 :            : #include <com/sun/star/awt/Point.hpp>
      42                 :            : #include <com/sun/star/awt/Rectangle.hpp>
      43                 :            : #include <com/sun/star/beans/XPropertySet.hpp>
      44                 :            : #include <com/sun/star/beans/PropertyState.hpp>
      45                 :            : #include <com/sun/star/beans/PropertyValue.hpp>
      46                 :            : #include <com/sun/star/drawing/BitmapMode.hpp>
      47                 :            : #include <com/sun/star/drawing/Hatch.hpp>
      48                 :            : #include <svx/msdffdef.hxx>
      49                 :            : #include "filter/msfilter/msfilterdllapi.h"
      50                 :            : 
      51                 :            :         /*Record Name       FBT-Value   Instance                  Contents                                                          Wrd Exl PPt Ver*/
      52                 :            : // In the Microsoft documentation the naming scheme is msofbt... instead of ESCHER_...
      53                 :            : #define ESCHER_DggContainer     0xF000  /*                           per-document data                                                  X   X   X     */
      54                 :            : #define ESCHER_Dgg              0xF006  /*                           an FDGG and several FIDCLs                                         X   X   X   0 */
      55                 :            : #define ESCHER_CLSID            0xF016  /*                           the CLSID of the application that put the data on the clipboard    C   C   C   0 */
      56                 :            : #define ESCHER_OPT              0xF00B  /* count of properties       the document-wide default shape properties                         X   X   X   3 */
      57                 :            : #define ESCHER_ColorMRU         0xF11A  /* count of colors           the colors in the MRU swatch                                       X   X   X   0 */
      58                 :            : #define ESCHER_SplitMenuColors  0xF11E  /* count of colors           the colors in the top-level split menus                            X   X   X   0 */
      59                 :            : #define ESCHER_BstoreContainer  0xF001  /* count of BLIPs            all images in the document (JPEGs, metafiles, etc.)                X   X   X     */
      60                 :            : #define ESCHER_BSE              0xF007  /* BLIP type                 an FBSE (one per BLIP)                                             X   X   X   2 */
      61                 :            : #define ESCHER_BlipFirst        0xF018  /*                           range of fbts reserved for various kinds of BLIPs                  X   X   X     */
      62                 :            : #define ESCHER_BlipLast         0xF117  /*                           range of fbts reserved for various kinds of BLIPs                  X   X   X     */
      63                 :            : 
      64                 :            : #define ESCHER_DgContainer      0xF002  /*                           per-sheet/page/slide data                                          X   X   X     */
      65                 :            : #define ESCHER_Dg               0xF008  /* drawing ID                an FDG                                                             X   X   X   0 */
      66                 :            : #define ESCHER_RegroupItems     0xF118  /* count of regroup entries  several FRITs                                                      X   X   X   0 */
      67                 :            : #define ESCHER_ColorScheme      0xF120  /* count of colors           the colors of the source host's color scheme                           C   C   0 */
      68                 :            : #define ESCHER_SpgrContainer    0xF003  /*                           several SpContainers, the first of which is the group shape itself X   X   X     */
      69                 :            : #define ESCHER_SpContainer      0xF004  /*                           a shape                                                            X   X   X     */
      70                 :            : #define ESCHER_Spgr             0xF009  /*                           an FSPGR; only present if the shape is a group shape               X   X   X   1 */
      71                 :            : #define ESCHER_Sp               0xF00A  /* shape type                an FSP                                                             X   X   X   2 */
      72                 :            : //#define     ESCHER_OPT           0xF00B /* count of properties       a shape property table                                             X   X   X   3 */
      73                 :            : #define ESCHER_Textbox          0xF00C  /*                           RTF text                                                           C   C   C   0 */
      74                 :            : #define ESCHER_ClientTextbox    0xF00D  /* host-defined              the text in the textbox, in host-defined format                    X   X   X     */
      75                 :            : #define ESCHER_Anchor           0xF00E  /*                           a RECT, in 100000ths of an inch                                    C   C   C   0 */
      76                 :            : #define ESCHER_ChildAnchor      0xF00F  /*                           a RECT, in units relative to the parent group                      X   X   X   0 */
      77                 :            : #define ESCHER_ClientAnchor     0xF010  /* host-defined              the location of the shape, in a host-defined format                X   X   X     */
      78                 :            : #define ESCHER_ClientData       0xF011  /* host-defined              host-specific data                                                 X   X   X     */
      79                 :            : #define ESCHER_OleObject        0xF11F  /*                           a serialized IStorage for an OLE object                            C   C   C   0 */
      80                 :            : #define ESCHER_DeletedPspl      0xF11D  /*                           an FPSPL; only present in top-level deleted shapes                 X           0 */
      81                 :            : #define ESCHER_SolverContainer  0xF005  /* count of rules            the rules governing shapes                                         X   X   X     */
      82                 :            : #define ESCHER_ConnectorRule    0xF012  /*                           an FConnectorRule                                                      X   X   1 */
      83                 :            : #define ESCHER_AlignRule        0xF013  /*                           an FAlignRule                                                      X   X   X   0 */
      84                 :            : #define ESCHER_ArcRule          0xF014  /*                           an FARCRU                                                          X   X   X   0 */
      85                 :            : #define ESCHER_ClientRule       0xF015  /* host-defined              host-defined                                                                     */
      86                 :            : #define ESCHER_CalloutRule      0xF017  /*                           an FCORU                                                           X   X   X   0 */
      87                 :            : #define ESCHER_Selection        0xF119  /*                           an FDGSL followed by the SPIDs of the shapes in the selection              X   0 */
      88                 :            : #define ESCHER_UDefProp         0xF122
      89                 :            : 
      90                 :            : #define SHAPEFLAG_GROUP         0x001   /* This shape is a group shape */
      91                 :            : #define SHAPEFLAG_CHILD         0x002   /* Not a top-level shape */
      92                 :            : #define SHAPEFLAG_PATRIARCH     0x004   /* This is the topmost group shape. Exactly one of these per drawing. */
      93                 :            : #define SHAPEFLAG_DELETED       0x008   /* The shape has been deleted */
      94                 :            : #define SHAPEFLAG_OLESHAPE      0x010   /* The shape is an OLE object */
      95                 :            : #define SHAPEFLAG_HAVEMASTER    0x020   /* Shape has a hspMaster property */
      96                 :            : #define SHAPEFLAG_FLIPH         0x040   /* Shape is flipped horizontally */
      97                 :            : #define SHAPEFLAG_FLIPV         0x080   /* Shape is flipped vertically */
      98                 :            : #define SHAPEFLAG_CONNECTOR     0x100   /* Connector type of shape */
      99                 :            : #define SHAPEFLAG_HAVEANCHOR    0x200   /* Shape has an anchor of some kind */
     100                 :            : #define SHAPEFLAG_BACKGROUND    0x400   /* Background shape */
     101                 :            : #define SHAPEFLAG_HAVESPT       0x800   /* Shape has a shape type property */
     102                 :            : 
     103                 :            : #define ESCHER_ShpInst_Min                          0
     104                 :            : #define ESCHER_ShpInst_NotPrimitive                 ESCHER_ShpInst_Min
     105                 :            : #define ESCHER_ShpInst_Rectangle                    1
     106                 :            : #define ESCHER_ShpInst_RoundRectangle               2
     107                 :            : #define ESCHER_ShpInst_Ellipse                      3
     108                 :            : #define ESCHER_ShpInst_Diamond                      4
     109                 :            : #define ESCHER_ShpInst_IsocelesTriangle             5
     110                 :            : #define ESCHER_ShpInst_RightTriangle                6
     111                 :            : #define ESCHER_ShpInst_Parallelogram                7
     112                 :            : #define ESCHER_ShpInst_Trapezoid                    8
     113                 :            : #define ESCHER_ShpInst_Hexagon                      9
     114                 :            : #define ESCHER_ShpInst_Octagon                      10
     115                 :            : #define ESCHER_ShpInst_Plus                         11
     116                 :            : #define ESCHER_ShpInst_Star                         12
     117                 :            : #define ESCHER_ShpInst_Arrow                        13
     118                 :            : #define ESCHER_ShpInst_ThickArrow                   14
     119                 :            : #define ESCHER_ShpInst_HomePlate                    15
     120                 :            : #define ESCHER_ShpInst_Cube                         16
     121                 :            : #define ESCHER_ShpInst_Balloon                      17
     122                 :            : #define ESCHER_ShpInst_Seal                         18
     123                 :            : #define ESCHER_ShpInst_Arc                          19
     124                 :            : #define ESCHER_ShpInst_Line                         20
     125                 :            : #define ESCHER_ShpInst_Plaque                       21
     126                 :            : #define ESCHER_ShpInst_Can                          22
     127                 :            : #define ESCHER_ShpInst_Donut                        23
     128                 :            : #define ESCHER_ShpInst_TextSimple                   24
     129                 :            : #define ESCHER_ShpInst_TextOctagon                  25
     130                 :            : #define ESCHER_ShpInst_TextHexagon                  26
     131                 :            : #define ESCHER_ShpInst_TextCurve                    27
     132                 :            : #define ESCHER_ShpInst_TextWave                     28
     133                 :            : #define ESCHER_ShpInst_TextRing                     29
     134                 :            : #define ESCHER_ShpInst_TextOnCurve                  30
     135                 :            : #define ESCHER_ShpInst_TextOnRing                   31
     136                 :            : #define ESCHER_ShpInst_StraightConnector1           32
     137                 :            : #define ESCHER_ShpInst_BentConnector2               33
     138                 :            : #define ESCHER_ShpInst_BentConnector3               34
     139                 :            : #define ESCHER_ShpInst_BentConnector4               35
     140                 :            : #define ESCHER_ShpInst_BentConnector5               36
     141                 :            : #define ESCHER_ShpInst_CurvedConnector2             37
     142                 :            : #define ESCHER_ShpInst_CurvedConnector3             38
     143                 :            : #define ESCHER_ShpInst_CurvedConnector4             39
     144                 :            : #define ESCHER_ShpInst_CurvedConnector5             40
     145                 :            : #define ESCHER_ShpInst_Callout1                     41
     146                 :            : #define ESCHER_ShpInst_Callout2                     42
     147                 :            : #define ESCHER_ShpInst_Callout3                     43
     148                 :            : #define ESCHER_ShpInst_AccentCallout1               44
     149                 :            : #define ESCHER_ShpInst_AccentCallout2               45
     150                 :            : #define ESCHER_ShpInst_AccentCallout3               46
     151                 :            : #define ESCHER_ShpInst_BorderCallout1               47
     152                 :            : #define ESCHER_ShpInst_BorderCallout2               48
     153                 :            : #define ESCHER_ShpInst_BorderCallout3               49
     154                 :            : #define ESCHER_ShpInst_AccentBorderCallout1         50
     155                 :            : #define ESCHER_ShpInst_AccentBorderCallout2         51
     156                 :            : #define ESCHER_ShpInst_AccentBorderCallout3         52
     157                 :            : #define ESCHER_ShpInst_Ribbon                       53
     158                 :            : #define ESCHER_ShpInst_Ribbon2                      54
     159                 :            : #define ESCHER_ShpInst_Chevron                      55
     160                 :            : #define ESCHER_ShpInst_Pentagon                     56
     161                 :            : #define ESCHER_ShpInst_NoSmoking                    57
     162                 :            : #define ESCHER_ShpInst_Seal8                        58
     163                 :            : #define ESCHER_ShpInst_Seal16                       59
     164                 :            : #define ESCHER_ShpInst_Seal32                       60
     165                 :            : #define ESCHER_ShpInst_WedgeRectCallout             61
     166                 :            : #define ESCHER_ShpInst_WedgeRRectCallout            62
     167                 :            : #define ESCHER_ShpInst_WedgeEllipseCallout          63
     168                 :            : #define ESCHER_ShpInst_Wave                         64
     169                 :            : #define ESCHER_ShpInst_FoldedCorner                 65
     170                 :            : #define ESCHER_ShpInst_LeftArrow                    66
     171                 :            : #define ESCHER_ShpInst_DownArrow                    67
     172                 :            : #define ESCHER_ShpInst_UpArrow                      68
     173                 :            : #define ESCHER_ShpInst_LeftRightArrow               69
     174                 :            : #define ESCHER_ShpInst_UpDownArrow                  70
     175                 :            : #define ESCHER_ShpInst_IrregularSeal1               71
     176                 :            : #define ESCHER_ShpInst_IrregularSeal2               72
     177                 :            : #define ESCHER_ShpInst_LightningBolt                73
     178                 :            : #define ESCHER_ShpInst_Heart                        74
     179                 :            : #define ESCHER_ShpInst_PictureFrame                 75
     180                 :            : #define ESCHER_ShpInst_QuadArrow                    76
     181                 :            : #define ESCHER_ShpInst_LeftArrowCallout             77
     182                 :            : #define ESCHER_ShpInst_RightArrowCallout            78
     183                 :            : #define ESCHER_ShpInst_UpArrowCallout               79
     184                 :            : #define ESCHER_ShpInst_DownArrowCallout             80
     185                 :            : #define ESCHER_ShpInst_LeftRightArrowCallout        81
     186                 :            : #define ESCHER_ShpInst_UpDownArrowCallout           82
     187                 :            : #define ESCHER_ShpInst_QuadArrowCallout             83
     188                 :            : #define ESCHER_ShpInst_Bevel                        84
     189                 :            : #define ESCHER_ShpInst_LeftBracket                  85
     190                 :            : #define ESCHER_ShpInst_RightBracket                 86
     191                 :            : #define ESCHER_ShpInst_LeftBrace                    87
     192                 :            : #define ESCHER_ShpInst_RightBrace                   88
     193                 :            : #define ESCHER_ShpInst_LeftUpArrow                  89
     194                 :            : #define ESCHER_ShpInst_BentUpArrow                  90
     195                 :            : #define ESCHER_ShpInst_BentArrow                    91
     196                 :            : #define ESCHER_ShpInst_Seal24                       92
     197                 :            : #define ESCHER_ShpInst_StripedRightArrow            93
     198                 :            : #define ESCHER_ShpInst_NotchedRightArrow            94
     199                 :            : #define ESCHER_ShpInst_BlockArc                     95
     200                 :            : #define ESCHER_ShpInst_SmileyFace                   96
     201                 :            : #define ESCHER_ShpInst_VerticalScroll               97
     202                 :            : #define ESCHER_ShpInst_HorizontalScroll             98
     203                 :            : #define ESCHER_ShpInst_CircularArrow                99
     204                 :            : #define ESCHER_ShpInst_NotchedCircularArrow         100
     205                 :            : #define ESCHER_ShpInst_UturnArrow                   101
     206                 :            : #define ESCHER_ShpInst_CurvedRightArrow             102
     207                 :            : #define ESCHER_ShpInst_CurvedLeftArrow              103
     208                 :            : #define ESCHER_ShpInst_CurvedUpArrow                104
     209                 :            : #define ESCHER_ShpInst_CurvedDownArrow              105
     210                 :            : #define ESCHER_ShpInst_CloudCallout                 106
     211                 :            : #define ESCHER_ShpInst_EllipseRibbon                107
     212                 :            : #define ESCHER_ShpInst_EllipseRibbon2               108
     213                 :            : #define ESCHER_ShpInst_FlowChartProcess             109
     214                 :            : #define ESCHER_ShpInst_FlowChartDecision            110
     215                 :            : #define ESCHER_ShpInst_FlowChartInputOutput         111
     216                 :            : #define ESCHER_ShpInst_FlowChartPredefinedProcess   112
     217                 :            : #define ESCHER_ShpInst_FlowChartInternalStorage     113
     218                 :            : #define ESCHER_ShpInst_FlowChartDocument            114
     219                 :            : #define ESCHER_ShpInst_FlowChartMultidocument       115
     220                 :            : #define ESCHER_ShpInst_FlowChartTerminator          116
     221                 :            : #define ESCHER_ShpInst_FlowChartPreparation         117
     222                 :            : #define ESCHER_ShpInst_FlowChartManualInput         118
     223                 :            : #define ESCHER_ShpInst_FlowChartManualOperation     119
     224                 :            : #define ESCHER_ShpInst_FlowChartConnector           120
     225                 :            : #define ESCHER_ShpInst_FlowChartPunchedCard         121
     226                 :            : #define ESCHER_ShpInst_FlowChartPunchedTape         122
     227                 :            : #define ESCHER_ShpInst_FlowChartSummingJunction     123
     228                 :            : #define ESCHER_ShpInst_FlowChartOr                  124
     229                 :            : #define ESCHER_ShpInst_FlowChartCollate             125
     230                 :            : #define ESCHER_ShpInst_FlowChartSort                126
     231                 :            : #define ESCHER_ShpInst_FlowChartExtract             127
     232                 :            : #define ESCHER_ShpInst_FlowChartMerge               128
     233                 :            : #define ESCHER_ShpInst_FlowChartOfflineStorage      129
     234                 :            : #define ESCHER_ShpInst_FlowChartOnlineStorage       130
     235                 :            : #define ESCHER_ShpInst_FlowChartMagneticTape        131
     236                 :            : #define ESCHER_ShpInst_FlowChartMagneticDisk        132
     237                 :            : #define ESCHER_ShpInst_FlowChartMagneticDrum        133
     238                 :            : #define ESCHER_ShpInst_FlowChartDisplay             134
     239                 :            : #define ESCHER_ShpInst_FlowChartDelay               135
     240                 :            : #define ESCHER_ShpInst_TextPlainText                136
     241                 :            : #define ESCHER_ShpInst_TextStop                     137
     242                 :            : #define ESCHER_ShpInst_TextTriangle                 138
     243                 :            : #define ESCHER_ShpInst_TextTriangleInverted         139
     244                 :            : #define ESCHER_ShpInst_TextChevron                  140
     245                 :            : #define ESCHER_ShpInst_TextChevronInverted          141
     246                 :            : #define ESCHER_ShpInst_TextRingInside               142
     247                 :            : #define ESCHER_ShpInst_TextRingOutside              143
     248                 :            : #define ESCHER_ShpInst_TextArchUpCurve              144
     249                 :            : #define ESCHER_ShpInst_TextArchDownCurve            145
     250                 :            : #define ESCHER_ShpInst_TextCircleCurve              146
     251                 :            : #define ESCHER_ShpInst_TextButtonCurve              147
     252                 :            : #define ESCHER_ShpInst_TextArchUpPour               148
     253                 :            : #define ESCHER_ShpInst_TextArchDownPour             149
     254                 :            : #define ESCHER_ShpInst_TextCirclePour               150
     255                 :            : #define ESCHER_ShpInst_TextButtonPour               151
     256                 :            : #define ESCHER_ShpInst_TextCurveUp                  152
     257                 :            : #define ESCHER_ShpInst_TextCurveDown                153
     258                 :            : #define ESCHER_ShpInst_TextCascadeUp                154
     259                 :            : #define ESCHER_ShpInst_TextCascadeDown              155
     260                 :            : #define ESCHER_ShpInst_TextWave1                    156
     261                 :            : #define ESCHER_ShpInst_TextWave2                    157
     262                 :            : #define ESCHER_ShpInst_TextWave3                    158
     263                 :            : #define ESCHER_ShpInst_TextWave4                    159
     264                 :            : #define ESCHER_ShpInst_TextInflate                  160
     265                 :            : #define ESCHER_ShpInst_TextDeflate                  161
     266                 :            : #define ESCHER_ShpInst_TextInflateBottom            162
     267                 :            : #define ESCHER_ShpInst_TextDeflateBottom            163
     268                 :            : #define ESCHER_ShpInst_TextInflateTop               164
     269                 :            : #define ESCHER_ShpInst_TextDeflateTop               165
     270                 :            : #define ESCHER_ShpInst_TextDeflateInflate           166
     271                 :            : #define ESCHER_ShpInst_TextDeflateInflateDeflate    167
     272                 :            : #define ESCHER_ShpInst_TextFadeRight                168
     273                 :            : #define ESCHER_ShpInst_TextFadeLeft                 169
     274                 :            : #define ESCHER_ShpInst_TextFadeUp                   170
     275                 :            : #define ESCHER_ShpInst_TextFadeDown                 171
     276                 :            : #define ESCHER_ShpInst_TextSlantUp                  172
     277                 :            : #define ESCHER_ShpInst_TextSlantDown                173
     278                 :            : #define ESCHER_ShpInst_TextCanUp                    174
     279                 :            : #define ESCHER_ShpInst_TextCanDown                  175
     280                 :            : #define ESCHER_ShpInst_FlowChartAlternateProcess    176
     281                 :            : #define ESCHER_ShpInst_FlowChartOffpageConnector    177
     282                 :            : #define ESCHER_ShpInst_Callout90                    178
     283                 :            : #define ESCHER_ShpInst_AccentCallout90              179
     284                 :            : #define ESCHER_ShpInst_BorderCallout90              180
     285                 :            : #define ESCHER_ShpInst_AccentBorderCallout90        181
     286                 :            : #define ESCHER_ShpInst_LeftRightUpArrow             182
     287                 :            : #define ESCHER_ShpInst_Sun                          183
     288                 :            : #define ESCHER_ShpInst_Moon                         184
     289                 :            : #define ESCHER_ShpInst_BracketPair                  185
     290                 :            : #define ESCHER_ShpInst_BracePair                    186
     291                 :            : #define ESCHER_ShpInst_Seal4                        187
     292                 :            : #define ESCHER_ShpInst_DoubleWave                   188
     293                 :            : #define ESCHER_ShpInst_ActionButtonBlank            189
     294                 :            : #define ESCHER_ShpInst_ActionButtonHome             190
     295                 :            : #define ESCHER_ShpInst_ActionButtonHelp             191
     296                 :            : #define ESCHER_ShpInst_ActionButtonInformation      192
     297                 :            : #define ESCHER_ShpInst_ActionButtonForwardNext      193
     298                 :            : #define ESCHER_ShpInst_ActionButtonBackPrevious     194
     299                 :            : #define ESCHER_ShpInst_ActionButtonEnd              195
     300                 :            : #define ESCHER_ShpInst_ActionButtonBeginning        196
     301                 :            : #define ESCHER_ShpInst_ActionButtonReturn           197
     302                 :            : #define ESCHER_ShpInst_ActionButtonDocument         198
     303                 :            : #define ESCHER_ShpInst_ActionButtonSound            199
     304                 :            : #define ESCHER_ShpInst_ActionButtonMovie            200
     305                 :            : #define ESCHER_ShpInst_HostControl                  201
     306                 :            : #define ESCHER_ShpInst_TextBox                      202
     307                 :            : #define ESCHER_ShpInst_COUNT                        203
     308                 :            : #define ESCHER_ShpInst_Max                          0x0FFF
     309                 :            : #define ESCHER_ShpInst_Nil                          ESCHER_ShpInst_Max
     310                 :            : 
     311                 :            : enum ESCHER_BlibType
     312                 :            : {                           // GEL provided types...
     313                 :            :    ERROR = 0,               // An error occurred during loading
     314                 :            :    UNKNOWN,                 // An unknown blip type
     315                 :            :    EMF,                     // Windows Enhanced Metafile
     316                 :            :    WMF,                     // Windows Metafile
     317                 :            :    PICT,                    // Macintosh PICT
     318                 :            :    PEG,                     // JFIF
     319                 :            :    PNG,                     // PNG
     320                 :            :    DIB,                     // Windows DIB
     321                 :            :    FirstClient = 32,        // First client defined blip type
     322                 :            :    LastClient  = 255        // Last client defined blip type
     323                 :            : };
     324                 :            : 
     325                 :            : enum ESCHER_FillStyle
     326                 :            : {
     327                 :            :     ESCHER_FillSolid,       // Fill with a solid color
     328                 :            :     ESCHER_FillPattern,     // Fill with a pattern (bitmap)
     329                 :            :     ESCHER_FillTexture,     // A texture (pattern with its own color map)
     330                 :            :     ESCHER_FillPicture,     // Center a picture in the shape
     331                 :            :     ESCHER_FillShade,       // Shade from start to end points
     332                 :            :     ESCHER_FillShadeCenter, // Shade from bounding rectangle to end point
     333                 :            :     ESCHER_FillShadeShape,  // Shade from shape outline to end point
     334                 :            :     ESCHER_FillShadeScale,
     335                 :            :     ESCHER_FillShadeTitle,
     336                 :            :     ESCHER_FillBackground
     337                 :            : };
     338                 :            : 
     339                 :            : enum ESCHER_wMode
     340                 :            : {
     341                 :            :     ESCHER_wColor,          // only used for predefined shades
     342                 :            :     ESCHER_wAutomatic,      // depends on object type
     343                 :            :     ESCHER_wGrayScale,      // shades of gray only
     344                 :            :     ESCHER_wLightGrayScale, // shades of light gray only
     345                 :            :     ESCHER_wInverseGray,    // dark gray mapped to light gray, etc.
     346                 :            :     ESCHER_wGrayOutline,    // pure gray and white
     347                 :            :     ESCHER_wBlackTextLine,  // black text and lines, all else grayscale
     348                 :            :     ESCHER_wHighContrast,   // pure black and white mode (no grays)
     349                 :            :     ESCHER_wBlack,          // solid black   msobwWhite,          // solid white
     350                 :            :     ESCHER_wDontShow,       // object not drawn
     351                 :            :     ESCHER_wNumModes        // number of Black and white modes
     352                 :            : };
     353                 :            : 
     354                 :            : 
     355                 :            : //
     356                 :            : enum ESCHER_ShapePath
     357                 :            : {
     358                 :            :     ESCHER_ShapeLines,          // A line of straight segments
     359                 :            :     ESCHER_ShapeLinesClosed,    // A closed polygonal object
     360                 :            :     ESCHER_ShapeCurves,         // A line of Bezier curve segments
     361                 :            :     ESCHER_ShapeCurvesClosed,   // A closed shape with curved edges
     362                 :            :     ESCHER_ShapeComplex         // pSegmentInfo must be non-empty
     363                 :            : };
     364                 :            : 
     365                 :            : 
     366                 :            : enum ESCHER_WrapMode
     367                 :            : {
     368                 :            :     ESCHER_WrapSquare,
     369                 :            :     ESCHER_WrapByPoints,
     370                 :            :     ESCHER_WrapNone,
     371                 :            :     ESCHER_WrapTopBottom,
     372                 :            :     ESCHER_WrapThrough
     373                 :            : };
     374                 :            : 
     375                 :            : //
     376                 :            : enum ESCHER_bwMode
     377                 :            : {
     378                 :            :     ESCHER_bwColor,             // only used for predefined shades
     379                 :            :     ESCHER_bwAutomatic,         // depends on object type
     380                 :            :     ESCHER_bwGrayScale,         // shades of gray only
     381                 :            :     ESCHER_bwLightGrayScale,    // shades of light gray only
     382                 :            :     ESCHER_bwInverseGray,       // dark gray mapped to light gray, etc.
     383                 :            :     ESCHER_bwGrayOutline,       // pure gray and white
     384                 :            :     ESCHER_bwBlackTextLine,     // black text and lines, all else grayscale
     385                 :            :     ESCHER_bwHighContrast,      // pure black and white mode (no grays)
     386                 :            :     ESCHER_bwBlack,             // solid black
     387                 :            :     ESCHER_bwWhite,             // solid white
     388                 :            :     ESCHER_bwDontShow,          // object not drawn
     389                 :            :     ESCHER_bwNumModes           // number of Black and white modes
     390                 :            : };
     391                 :            : 
     392                 :            : 
     393                 :            : enum ESCHER_AnchorText
     394                 :            : {
     395                 :            :     ESCHER_AnchorTop,
     396                 :            :     ESCHER_AnchorMiddle,
     397                 :            :     ESCHER_AnchorBottom,
     398                 :            :     ESCHER_AnchorTopCentered,
     399                 :            :     ESCHER_AnchorMiddleCentered,
     400                 :            :     ESCHER_AnchorBottomCentered,
     401                 :            :     ESCHER_AnchorTopBaseline,
     402                 :            :     ESCHER_AnchorBottomBaseline,
     403                 :            :     ESCHER_AnchorTopCenteredBaseline,
     404                 :            :     ESCHER_AnchorBottomCenteredBaseline
     405                 :            : };
     406                 :            : 
     407                 :            : enum ESCHER_cDir
     408                 :            : {
     409                 :            :     ESCHER_cDir0,       // Right
     410                 :            :     ESCHER_cDir90,      // Down
     411                 :            :     ESCHER_cDir180,     // Left
     412                 :            :     ESCHER_cDir270      // Up
     413                 :            : };
     414                 :            : 
     415                 :            : //  connector style
     416                 :            : enum ESCHER_cxSTYLE
     417                 :            : {
     418                 :            :     ESCHER_cxstyleStraight = 0,
     419                 :            :     ESCHER_cxstyleBent,
     420                 :            :     ESCHER_cxstyleCurved,
     421                 :            :     ESCHER_cxstyleNone
     422                 :            : };
     423                 :            : 
     424                 :            : //  text flow
     425                 :            : enum ESCHER_txfl
     426                 :            : {
     427                 :            :     ESCHER_txflHorzN,           // Horizontal non-@
     428                 :            :     ESCHER_txflTtoBA,           // Top to Bottom @-font
     429                 :            :     ESCHER_txflBtoT,            // Bottom to Top non-@
     430                 :            :     ESCHER_txflTtoBN,           // Top to Bottom non-@
     431                 :            :     ESCHER_txflHorzA,           // Horizontal @-font
     432                 :            :     ESCHER_txflVertN            // Vertical, non-@
     433                 :            : };
     434                 :            : 
     435                 :            : //  text direction (needed for Bi-Di support)
     436                 :            : enum ESCHER_txDir
     437                 :            : {
     438                 :            :     ESCHER_txdirLTR,            // left-to-right text direction
     439                 :            :     ESCHER_txdirRTL,            // right-to-left text direction
     440                 :            :     ESCHER_txdirContext         // context text direction
     441                 :            : };
     442                 :            : 
     443                 :            : // Callout Type
     444                 :            : enum ESCHER_spcot
     445                 :            : {
     446                 :            :     ESCHER_spcotRightAngle  = 1,
     447                 :            :     ESCHER_spcotOneSegment  = 2,
     448                 :            :     ESCHER_spcotTwoSegment  = 3,
     449                 :            :     ESCHER_spcotThreeSegment= 4
     450                 :            : };
     451                 :            : 
     452                 :            : // Callout Angle
     453                 :            : enum ESCHER_spcoa
     454                 :            : {
     455                 :            :     ESCHER_spcoaAny,
     456                 :            :     ESCHER_spcoa30,
     457                 :            :     ESCHER_spcoa45,
     458                 :            :     ESCHER_spcoa60,
     459                 :            :     ESCHER_spcoa90,
     460                 :            :     ESCHER_spcoa0
     461                 :            : };
     462                 :            : 
     463                 :            : //  Callout Drop
     464                 :            : enum ESCHER_spcod
     465                 :            : {
     466                 :            :     ESCHER_spcodTop,
     467                 :            :     ESCHER_spcodCenter,
     468                 :            :     ESCHER_spcodBottom,
     469                 :            :     ESCHER_spcodSpecified
     470                 :            : };
     471                 :            : 
     472                 :            : // FontWork alignment
     473                 :            : enum ESCHER_GeoTextAlign
     474                 :            : {
     475                 :            :     ESCHER_AlignTextStretch,        // Stretch each line of text to fit width.
     476                 :            :     ESCHER_AlignTextCenter,         // Center text on width.
     477                 :            :     ESCHER_AlignTextLeft,           // Left justify.
     478                 :            :     ESCHER_AlignTextRight,          // Right justify.
     479                 :            :     ESCHER_AlignTextLetterJust,     // Spread letters out to fit width.
     480                 :            :     ESCHER_AlignTextWordJust,       // Spread words out to fit width.
     481                 :            :     ESCHER_AlignTextInvalid         // Invalid
     482                 :            : };
     483                 :            : 
     484                 :            : //  flags for pictures
     485                 :            : enum ESCHER_BlipFlags
     486                 :            : {
     487                 :            :     ESCHER_BlipFlagDefault = 0,
     488                 :            :     ESCHER_BlipFlagComment = 0,     // Blip name is a comment
     489                 :            :     ESCHER_BlipFlagFile,            // Blip name is a file name
     490                 :            :     ESCHER_BlipFlagURL,             // Blip name is a full URL
     491                 :            :     ESCHER_BlipFlagType = 3,        // Mask to extract type
     492                 :            :    /* Or the following flags with any of the above. */
     493                 :            :     ESCHER_BlipFlagDoNotSave = 4,
     494                 :            :     ESCHER_BlipFlagLinkToFile = 8
     495                 :            : };
     496                 :            : 
     497                 :            : //
     498                 :            : enum ESCHER_3DRenderMode
     499                 :            : {
     500                 :            :     ESCHER_FullRender,      // Generate a full rendering
     501                 :            :     ESCHER_Wireframe,       // Generate a wireframe
     502                 :            :     ESCHER_BoundingCube     // Generate a bounding cube
     503                 :            : };
     504                 :            : 
     505                 :            : //
     506                 :            : enum ESCHER_xFormType
     507                 :            : {
     508                 :            :     ESCHER_xFormAbsolute,   // Apply transform in absolute space centered on shape
     509                 :            :     ESCHER_xFormShape,      // Apply transform to shape geometry
     510                 :            :     ESCHER_xFormDrawing     // Apply transform in drawing space
     511                 :            : };
     512                 :            : 
     513                 :            : //
     514                 :            : enum ESCHER_ShadowType
     515                 :            : {
     516                 :            :     ESCHER_ShadowOffset,    // N pixel offset shadow
     517                 :            :     ESCHER_ShadowDouble,    // Use second offset too
     518                 :            :     ESCHER_ShadowRich,      // Rich perspective shadow (cast relative to shape)
     519                 :            :     ESCHER_ShadowShape,     // Rich perspective shadow (cast in shape space)
     520                 :            :     ESCHER_ShadowDrawing,   // Perspective shadow cast in drawing space
     521                 :            :     ESCHER_ShadowEmbossOrEngrave
     522                 :            : };
     523                 :            : 
     524                 :            : //  - the type of a (length) measurement
     525                 :            : enum ESCHER_dzType
     526                 :            :    {
     527                 :            :    ESCHER_dzTypeMin         = 0,
     528                 :            :    ESCHER_dzTypeDefault     = 0,        // Default size, ignore the values
     529                 :            :    ESCHER_dzTypeA           = 1,        // Values are in EMUs
     530                 :            :    ESCHER_dzTypeV           = 2,        // Values are in pixels
     531                 :            :    ESCHER_dzTypeShape       = 3,        // Values are 16.16 fractions of shape size
     532                 :            :    ESCHER_dzTypeFixedAspect = 4,        // Aspect ratio is fixed
     533                 :            :    ESCHER_dzTypeAFixed      = 5,        // EMUs, fixed aspect ratio
     534                 :            :    ESCHER_dzTypeVFixed      = 6,        // Pixels, fixed aspect ratio
     535                 :            :    ESCHER_dzTypeShapeFixed  = 7,        // Proportion of shape, fixed aspect ratio
     536                 :            :    ESCHER_dzTypeFixedAspectEnlarge= 8,  // Aspect ratio is fixed, favor larger size
     537                 :            :    ESCHER_dzTypeAFixedBig    = 9,       // EMUs, fixed aspect ratio
     538                 :            :    ESCHER_dzTypeVFixedBig    = 10,      // Pixels, fixed aspect ratio
     539                 :            :    ESCHER_dzTypeShapeFixedBig= 11,      // Proportion of shape, fixed aspect ratio
     540                 :            :    ESCHER_dzTypeMax          = 11
     541                 :            : };
     542                 :            : 
     543                 :            : // how to interpret the colors in a shaded fill.
     544                 :            : enum ESCHER_ShadeType
     545                 :            : {
     546                 :            :     ESCHER_ShadeNone  = 0,        // Interpolate without correction between RGBs
     547                 :            :     ESCHER_ShadeGamma = 1,        // Apply gamma correction to colors
     548                 :            :     ESCHER_ShadeSigma = 2,        // Apply a sigma transfer function to position
     549                 :            :     ESCHER_ShadeBand  = 4,        // Add a flat band at the start of the shade
     550                 :            :     ESCHER_ShadeOneColor = 8,     // This is a one color shade
     551                 :            : 
     552                 :            :    /* A parameter for the band or sigma function can be stored in the top
     553                 :            :       16 bits of the value - this is a proportion of *each* band of the
     554                 :            :       shade to make flat (or the approximate equal value for a sigma
     555                 :            :       function).  NOTE: the parameter is not used for the sigma function,
     556                 :            :       instead a built in value is used.  This value should not be changed
     557                 :            :       from the default! */
     558                 :            :     ESCHER_ShadeParameterShift = 16,
     559                 :            :     ESCHER_ShadeParameterMask  = 0xffff0000,
     560                 :            : 
     561                 :            :     ESCHER_ShadeDefault = (ESCHER_ShadeGamma|ESCHER_ShadeSigma|
     562                 :            :                      (16384<<ESCHER_ShadeParameterShift))
     563                 :            : };
     564                 :            : 
     565                 :            : // compound line style
     566                 :            : enum ESCHER_LineStyle
     567                 :            : {
     568                 :            :     ESCHER_LineSimple,          // Single line (of width lineWidth)
     569                 :            :     ESCHER_LineDouble,          // Double lines of equal width
     570                 :            :     ESCHER_LineThickThin,       // Double lines, one thick, one thin
     571                 :            :     ESCHER_LineThinThick,       // Double lines, reverse order
     572                 :            :     ESCHER_LineTriple           // Three lines, thin, thick, thin
     573                 :            : };
     574                 :            : 
     575                 :            : //  how to "fill" the line contour
     576                 :            : enum ESCHER_LineType
     577                 :            : {
     578                 :            :    ESCHER_lineSolidType,        // Fill with a solid color
     579                 :            :    ESCHER_linePattern,          // Fill with a pattern (bitmap)
     580                 :            :    ESCHER_lineTexture,          // A texture (pattern with its own color map)
     581                 :            :    ESCHER_linePicture           // Center a picture in the shape
     582                 :            : };
     583                 :            : 
     584                 :            : // dashed line style
     585                 :            : enum ESCHER_LineDashing
     586                 :            : {
     587                 :            :     ESCHER_LineSolid,               // Solid (continuous) pen
     588                 :            :     ESCHER_LineDashSys,             // PS_DASH system   dash style
     589                 :            :     ESCHER_LineDotSys,              // PS_DOT system   dash style
     590                 :            :     ESCHER_LineDashDotSys,          // PS_DASHDOT system dash style
     591                 :            :     ESCHER_LineDashDotDotSys,       // PS_DASHDOTDOT system dash style
     592                 :            :     ESCHER_LineDotGEL,              // square dot style
     593                 :            :     ESCHER_LineDashGEL,             // dash style
     594                 :            :     ESCHER_LineLongDashGEL,         // long dash style
     595                 :            :     ESCHER_LineDashDotGEL,          // dash short dash
     596                 :            :     ESCHER_LineLongDashDotGEL,      // long dash short dash
     597                 :            :     ESCHER_LineLongDashDotDotGEL    // long dash short dash short dash
     598                 :            : };
     599                 :            : 
     600                 :            : // line end effect
     601                 :            : enum ESCHER_LineEnd
     602                 :            : {
     603                 :            :     ESCHER_LineNoEnd,
     604                 :            :     ESCHER_LineArrowEnd,
     605                 :            :     ESCHER_LineArrowStealthEnd,
     606                 :            :     ESCHER_LineArrowDiamondEnd,
     607                 :            :     ESCHER_LineArrowOvalEnd,
     608                 :            :     ESCHER_LineArrowOpenEnd
     609                 :            : };
     610                 :            : 
     611                 :            : // size of arrowhead
     612                 :            : enum ESCHER_LineWidth
     613                 :            : {
     614                 :            :     ESCHER_LineNarrowArrow,
     615                 :            :     ESCHER_LineMediumWidthArrow,
     616                 :            :     ESCHER_LineWideArrow
     617                 :            : };
     618                 :            : 
     619                 :            : // size of arrowhead
     620                 :            : enum ESCHER_LineEndLenght
     621                 :            : {
     622                 :            :     ESCHER_LineShortArrow,
     623                 :            :     ESCHER_LineMediumLenArrow,
     624                 :            :     ESCHER_LineLongArrow
     625                 :            : };
     626                 :            : 
     627                 :            : // line join style.
     628                 :            : enum ESCHER_LineJoin
     629                 :            : {
     630                 :            :     ESCHER_LineJoinBevel,     // Join edges by a straight line
     631                 :            :     ESCHER_LineJoinMiter,     // Extend edges until they join
     632                 :            :     ESCHER_LineJoinRound      // Draw an arc between the two edges
     633                 :            : };
     634                 :            : 
     635                 :            : // line cap style (applies to ends of dash segments too).
     636                 :            : enum ESCHER_LineCap
     637                 :            : {
     638                 :            :     ESCHER_LineEndCapRound,   // Rounded ends - the default
     639                 :            :     ESCHER_LineEndCapSquare,  // Square protrudes by half line width
     640                 :            :     ESCHER_LineEndCapFlat     // Line ends at end point
     641                 :            : };
     642                 :            : 
     643                 :            : // Shape Properties
     644                 :            : // 1pt = 12700 EMU (English Metric Units)
     645                 :            : // 1pt = 20 Twip = 20/1440" = 1/72"
     646                 :            : // 1twip=635 EMU
     647                 :            : // 1" = 12700*72 = 914400 EMU
     648                 :            : // 1" = 25.4mm
     649                 :            : // 1mm = 36000 EMU
     650                 :            : // Transform
     651                 :            : #define ESCHER_Prop_Rotation                      4  /*  Fixed Point 16.16 degrees                  */
     652                 :            : // Protection
     653                 :            : #define ESCHER_Prop_LockRotation                119  /*  sal_Bool              No rotation                         */
     654                 :            : #define ESCHER_Prop_LockAspectRatio             120  /*  sal_Bool              Don't allow changes in aspect ratio */
     655                 :            : #define ESCHER_Prop_LockPosition                121  /*  sal_Bool              Don't allow the shape to be moved   */
     656                 :            : #define ESCHER_Prop_LockAgainstSelect           122  /*  sal_Bool              Shape may not be selected           */
     657                 :            : #define ESCHER_Prop_LockCropping                123  /*  sal_Bool              No cropping this shape              */
     658                 :            : #define ESCHER_Prop_LockVertices                124  /*  sal_Bool              Edit Points not allowed             */
     659                 :            : #define ESCHER_Prop_LockText                    125  /*  sal_Bool              Do not edit text                    */
     660                 :            : #define ESCHER_Prop_LockAdjustHandles           126  /*  sal_Bool              Do not adjust                       */
     661                 :            : #define ESCHER_Prop_LockAgainstGrouping         127  /*  sal_Bool              Do not group this shape             */
     662                 :            : // Text
     663                 :            : #define ESCHER_Prop_lTxid                       128  /*  LONG              id for the text, value determined by the host            */
     664                 :            : #define ESCHER_Prop_dxTextLeft                  129  /*  LONG              margins relative to shape's inscribed                    */
     665                 :            : #define ESCHER_Prop_dyTextTop                   130  /*  LONG                text rectangle (in EMUs)                               */
     666                 :            : #define ESCHER_Prop_dxTextRight                 131  /*  LONG                                                                       */
     667                 :            : #define ESCHER_Prop_dyTextBottom                132  /*  LONG                                                                       */
     668                 :            : #define ESCHER_Prop_WrapText                    133  /*  MSOWRAPMODE       Wrap text at shape margins                               */
     669                 :            : #define ESCHER_Prop_scaleText                   134  /*  LONG              Text zoom/scale (used if fFitTextToShape)                */
     670                 :            : #define ESCHER_Prop_AnchorText                  135  /*  ESCHER_AnchorText How to anchor the text                                   */
     671                 :            : #define ESCHER_Prop_txflTextFlow                136  /*  MSOTXFL           Text flow                                                */
     672                 :            : #define ESCHER_Prop_cdirFont                    137  /*  MSOCDIR           Font rotation                                            */
     673                 :            : #define ESCHER_Prop_hspNext                     138  /*  MSOHSP            ID of the next shape (used by Word for linked textboxes) */
     674                 :            : #define ESCHER_Prop_txdir                       139  /*  MSOTXDIR          Bi-Di Text direction                                     */
     675                 :            : #define ESCHER_Prop_SelectText                  187  /*  sal_Bool              sal_True if single click selects text, sal_False if two clicks   */
     676                 :            : #define ESCHER_Prop_AutoTextMargin              188  /*  sal_Bool              use host's margin calculations                           */
     677                 :            : #define ESCHER_Prop_RotateText                  189  /*  sal_Bool              Rotate text with shape                                   */
     678                 :            : #define ESCHER_Prop_FitShapeToText              190  /*  sal_Bool              Size shape to fit text size                              */
     679                 :            : #define ESCHER_Prop_FitTextToShape              191  /*  sal_Bool              Size text to fit shape size                              */
     680                 :            : // GeoText
     681                 :            : #define ESCHER_Prop_gtextUNICODE                192  /*  WCHAR*            UNICODE text string       */
     682                 :            : #define ESCHER_Prop_gtextRTF                    193  /*  char*             RTF text string           */
     683                 :            : #define ESCHER_Prop_gtextAlign                  194  /*  MSOGEOTEXTALIGN   alignment on curve        */
     684                 :            : #define ESCHER_Prop_gtextSize                   195  /*  LONG              default point size        */
     685                 :            : #define ESCHER_Prop_gtextSpacing                196  /*  LONG              fixed point 16.16         */
     686                 :            : #define ESCHER_Prop_gtextFont                   197  /*  WCHAR*            font family name          */
     687                 :            : #define ESCHER_Prop_gtextFReverseRows           240  /*  sal_Bool              Reverse row order         */
     688                 :            : #define ESCHER_Prop_fGtext                      241  /*  sal_Bool              Has text effect           */
     689                 :            : #define ESCHER_Prop_gtextFVertical              242  /*  sal_Bool              Rotate characters         */
     690                 :            : #define ESCHER_Prop_gtextFKern                  243  /*  sal_Bool              Kern characters           */
     691                 :            : #define ESCHER_Prop_gtextFTight                 244  /*  sal_Bool              Tightening or tracking    */
     692                 :            : #define ESCHER_Prop_gtextFStretch               245  /*  sal_Bool              Stretch to fit shape      */
     693                 :            : #define ESCHER_Prop_gtextFShrinkFit             246  /*  sal_Bool              Char bounding box         */
     694                 :            : #define ESCHER_Prop_gtextFBestFit               247  /*  sal_Bool              Scale text-on-path        */
     695                 :            : #define ESCHER_Prop_gtextFNormalize             248  /*  sal_Bool              Stretch char height       */
     696                 :            : #define ESCHER_Prop_gtextFDxMeasure             249  /*  sal_Bool              Do not measure along path */
     697                 :            : #define ESCHER_Prop_gtextFBold                  250  /*  sal_Bool              Bold font                 */
     698                 :            : #define ESCHER_Prop_gtextFItalic                251  /*  sal_Bool              Italic font               */
     699                 :            : #define ESCHER_Prop_gtextFUnderline             252  /*  sal_Bool              Underline font            */
     700                 :            : #define ESCHER_Prop_gtextFShadow                253  /*  sal_Bool              Shadow font               */
     701                 :            : #define ESCHER_Prop_gtextFSmallcaps             254  /*  sal_Bool              Small caps font           */
     702                 :            : #define ESCHER_Prop_gtextFStrikethrough         255  /*  sal_Bool              Strike through font       */
     703                 :            : // Blip
     704                 :            : #define ESCHER_Prop_cropFromTop                 256  /*  LONG              16.16 fraction times total                          */
     705                 :            : #define ESCHER_Prop_cropFromBottom              257  /*  LONG                image width or height,                            */
     706                 :            : #define ESCHER_Prop_cropFromLeft                258  /*  LONG                as appropriate.                                   */
     707                 :            : #define ESCHER_Prop_cropFromRight               259  /*  LONG                                                                  */
     708                 :            : #define ESCHER_Prop_pib                         260  /*  IMsoBlip*         Blip to display                                     */
     709                 :            : #define ESCHER_Prop_pibName                     261  /*  WCHAR*            Blip file name                                      */
     710                 :            : #define ESCHER_Prop_pibFlags                    262  /*  MSOBLIPFLAGS      Blip flags                                          */
     711                 :            : #define ESCHER_Prop_pictureTransparent          263  /*  LONG              transparent color (none if ~0UL)                    */
     712                 :            : #define ESCHER_Prop_pictureContrast             264  /*  LONG              contrast setting                                    */
     713                 :            : #define ESCHER_Prop_pictureBrightness           265  /*  LONG              brightness setting                                  */
     714                 :            : #define ESCHER_Prop_pictureGamma                266  /*  LONG              16.16 gamma                                         */
     715                 :            : #define ESCHER_Prop_pictureId                   267  /*  LONG              Host-defined ID for OLE objects (usually a pointer) */
     716                 :            : #define ESCHER_Prop_pictureDblCrMod             268  /*  MSOCLR            Modification used if shape has double shadow        */
     717                 :            : #define ESCHER_Prop_pictureFillCrMod            269  /*  MSOCLR                                                                */
     718                 :            : #define ESCHER_Prop_pictureLineCrMod            270  /*  MSOCLR                                                                */
     719                 :            : #define ESCHER_Prop_pibPrint                    271  /*  IMsoBlip*         Blip to display when printing                       */
     720                 :            : #define ESCHER_Prop_pibPrintName                272  /*  WCHAR*            Blip file name                                      */
     721                 :            : #define ESCHER_Prop_pibPrintFlags               273  /*  MSOBLIPFLAGS      Blip flags                                          */
     722                 :            : #define ESCHER_Prop_fNoHitTestPicture           316  /*  sal_Bool              Do not hit test the picture                         */
     723                 :            : #define ESCHER_Prop_pictureGray                 317  /*  sal_Bool              grayscale display                                   */
     724                 :            : #define ESCHER_Prop_pictureBiLevel              318  /*  sal_Bool              bi-level display                                    */
     725                 :            : #define ESCHER_Prop_pictureActive               319  /*  sal_Bool              Server is active (OLE objects only)                 */
     726                 :            : // Geometry
     727                 :            : #define ESCHER_Prop_geoLeft                     320  /*  LONG              Defines the G (geometry) coordinate space.  */
     728                 :            : #define ESCHER_Prop_geoTop                      321  /*  LONG                                                          */
     729                 :            : #define ESCHER_Prop_geoRight                    322  /*  LONG                                                          */
     730                 :            : #define ESCHER_Prop_geoBottom                   323  /*  LONG                                                          */
     731                 :            : #define ESCHER_Prop_shapePath                   324  /*  MSOSHAPEPATH                                                  */
     732                 :            : #define ESCHER_Prop_pVertices                   325  /*  IMsoArray         An array of points, in G units.             */
     733                 :            : #define ESCHER_Prop_pSegmentInfo                326  /*  IMsoArray                                                     */
     734                 :            : #define ESCHER_Prop_adjustValue                 327  /*  LONG              Adjustment values corresponding to          */
     735                 :            : #define ESCHER_Prop_adjust2Value                328  /*  LONG                the positions of the adjust handles       */
     736                 :            : #define ESCHER_Prop_adjust3Value                329  /*  LONG                of the shape. The number of values        */
     737                 :            : #define ESCHER_Prop_adjust4Value                330  /*  LONG                used and their allowable ranges vary      */
     738                 :            : #define ESCHER_Prop_adjust5Value                331  /*  LONG                from shape type to shape type.            */
     739                 :            : #define ESCHER_Prop_adjust6Value                332  /*  LONG                                                          */
     740                 :            : #define ESCHER_Prop_adjust7Value                333  /*  LONG                                                          */
     741                 :            : #define ESCHER_Prop_adjust8Value                334  /*  LONG                                                          */
     742                 :            : #define ESCHER_Prop_adjust9Value                335  /*  LONG                                                          */
     743                 :            : #define ESCHER_Prop_adjust10Value               336  /*  LONG                                                          */
     744                 :            : #define ESCHER_Prop_fShadowOK                   378  /*  sal_Bool              Shadow may be set                           */
     745                 :            : #define ESCHER_Prop_f3DOK                       379  /*  sal_Bool              3D may be set                               */
     746                 :            : #define ESCHER_Prop_fLineOK                     380  /*  sal_Bool              Line style may be set                       */
     747                 :            : #define ESCHER_Prop_fGtextOK                    381  /*  sal_Bool              Text effect (FontWork) supported             */
     748                 :            : #define ESCHER_Prop_fFillShadeShapeOK           382  /*  sal_Bool                                                          */
     749                 :            : #define ESCHER_Prop_fFillOK                     383  /*  sal_Bool              OK to fill the shape through the UI or VBA? */
     750                 :            : // FillStyle
     751                 :            : #define ESCHER_Prop_fillType                    384  /*  ESCHER_FillStyle  Type of fill                                  */
     752                 :            : #define ESCHER_Prop_fillColor                   385  /*  MSOCLR            Foreground color                              */
     753                 :            : #define ESCHER_Prop_fillOpacity                 386  /*  LONG              Fixed 16.16                                   */
     754                 :            : #define ESCHER_Prop_fillBackColor               387  /*  MSOCLR            Background color                              */
     755                 :            : #define ESCHER_Prop_fillBackOpacity             388  /*  LONG              Shades only                                   */
     756                 :            : #define ESCHER_Prop_fillCrMod                   389  /*  MSOCLR            Modification for BW views                     */
     757                 :            : #define ESCHER_Prop_fillBlip                    390  /*  IMsoBlip*         Pattern/texture                               */
     758                 :            : #define ESCHER_Prop_fillBlipName                391  /*  WCHAR*            Blip file name                                */
     759                 :            : #define ESCHER_Prop_fillBlipFlags               392  /*  MSOBLIPFLAGS      Blip flags                                    */
     760                 :            : #define ESCHER_Prop_fillWidth                   393  /*  LONG              How big (A units) to make a metafile texture. */
     761                 :            : #define ESCHER_Prop_fillHeight                  394  /*  LONG                                                            */
     762                 :            : #define ESCHER_Prop_fillAngle                   395  /*  LONG              Fade angle - degrees in 16.16                 */
     763                 :            : #define ESCHER_Prop_fillFocus                   396  /*  LONG              Linear shaded fill focus percent              */
     764                 :            : #define ESCHER_Prop_fillToLeft                  397  /*  LONG              Fraction 16.16                                */
     765                 :            : #define ESCHER_Prop_fillToTop                   398  /*  LONG              Fraction 16.16                                */
     766                 :            : #define ESCHER_Prop_fillToRight                 399  /*  LONG              Fraction 16.16                                */
     767                 :            : #define ESCHER_Prop_fillToBottom                400  /*  LONG              Fraction 16.16                                */
     768                 :            : #define ESCHER_Prop_fillRectLeft                401  /*  LONG              For shaded fills, use the specified rectangle */
     769                 :            : #define ESCHER_Prop_fillRectTop                 402  /*  LONG                instead of the shape's bounding rect to     */
     770                 :            : #define ESCHER_Prop_fillRectRight               403  /*  LONG                define how large the fade is going to be.   */
     771                 :            : #define ESCHER_Prop_fillRectBottom              404  /*  LONG                                                            */
     772                 :            : #define ESCHER_Prop_fillDztype                  405  /*  MSODZTYPE                                                       */
     773                 :            : #define ESCHER_Prop_fillShadePreset             406  /*  LONG              Special shades                                */
     774                 :            : #define ESCHER_Prop_fillShadeColors             407  /*  IMsoArray         a preset array of colors                      */
     775                 :            : #define ESCHER_Prop_fillOriginX                 408  /*  LONG                                                            */
     776                 :            : #define ESCHER_Prop_fillOriginY                 409  /*  LONG                                                            */
     777                 :            : #define ESCHER_Prop_fillShapeOriginX            410  /*  LONG                                                            */
     778                 :            : #define ESCHER_Prop_fillShapeOriginY            411  /*  LONG                                                            */
     779                 :            : #define ESCHER_Prop_fillShadeType               412  /*  MSOSHADETYPE      Type of shading, if a shaded (gradient) fill. */
     780                 :            : #define ESCHER_Prop_fFilled                     443  /*  sal_Bool              Is shape filled?                              */
     781                 :            : #define ESCHER_Prop_fHitTestFill                444  /*  sal_Bool              Should we hit test fill?                      */
     782                 :            : #define ESCHER_Prop_fillShape                   445  /*  sal_Bool              Register pattern on shape                     */
     783                 :            : #define ESCHER_Prop_fillUseRect                 446  /*  sal_Bool              Use the large rect?                           */
     784                 :            : #define ESCHER_Prop_fNoFillHitTest              447  /*  sal_Bool              Hit test a shape as though filled             */
     785                 :            : // LineStyle
     786                 :            : #define ESCHER_Prop_lineColor                   448  /*  MSOCLR            Color of line                              */
     787                 :            : #define ESCHER_Prop_lineOpacity                 449  /*  LONG              Not implemented                            */
     788                 :            : #define ESCHER_Prop_lineBackColor               450  /*  MSOCLR            Background color                           */
     789                 :            : #define ESCHER_Prop_lineCrMod                   451  /*  MSOCLR            Modification for BW views                  */
     790                 :            : #define ESCHER_Prop_lineType                    452  /*  MSOLINETYPE       Type of line                               */
     791                 :            : #define ESCHER_Prop_lineFillBlip                453  /*  IMsoBlip*         Pattern/texture                            */
     792                 :            : #define ESCHER_Prop_lineFillBlipName            454  /*  WCHAR*            Blip file name                             */
     793                 :            : #define ESCHER_Prop_lineFillBlipFlags           455  /*  MSOBLIPFLAGS      Blip flags                                 */
     794                 :            : #define ESCHER_Prop_lineFillWidth               456  /*  LONG              How big (A units) to make                  */
     795                 :            : #define ESCHER_Prop_lineFillHeight              457  /*  LONG                a metafile texture.                      */
     796                 :            : #define ESCHER_Prop_lineFillDztype              458  /*  MSODZTYPE         How to interpret fillWidth/Height numbers. */
     797                 :            : #define ESCHER_Prop_lineWidth                   459  /*  LONG              A units; 1pt == 12700 EMUs                 */
     798                 :            : #define ESCHER_Prop_lineMiterLimit              460  /*  LONG              ratio (16.16) of width                     */
     799                 :            : #define ESCHER_Prop_lineStyle                   461  /*  MSOLINESTYLE      Draw parallel lines?                       */
     800                 :            : #define ESCHER_Prop_lineDashing                 462  /*  MSOLINEDASHING    Can be overridden by:                      */
     801                 :            : #define ESCHER_Prop_lineDashStyle               463  /*  IMsoArray         As Win32 ExtCreatePen                      */
     802                 :            : #define ESCHER_Prop_lineStartArrowhead          464  /*  MSOLINEEND        Arrow at start                             */
     803                 :            : #define ESCHER_Prop_lineEndArrowhead            465  /*  MSOLINEEND        Arrow at end                               */
     804                 :            : #define ESCHER_Prop_lineStartArrowWidth         466  /*  MSOLINEENDWIDTH   Arrow at start                             */
     805                 :            : #define ESCHER_Prop_lineStartArrowLength        467  /*  MSOLINEENDLENGTH  Arrow at end                               */
     806                 :            : #define ESCHER_Prop_lineEndArrowWidth           468  /*  MSOLINEENDWIDTH   Arrow at start                             */
     807                 :            : #define ESCHER_Prop_lineEndArrowLength          469  /*  MSOLINEENDLENGTH  Arrow at end                               */
     808                 :            : #define ESCHER_Prop_lineJoinStyle               470  /*  MSOLINEJOIN       How to join lines                          */
     809                 :            : #define ESCHER_Prop_lineEndCapStyle             471  /*  MSOLINECAP        How to end lines                           */
     810                 :            : #define ESCHER_Prop_fArrowheadsOK               507  /*  sal_Bool              Allow arrowheads if prop. is set           */
     811                 :            : #define ESCHER_Prop_fLine                       508  /*  sal_Bool              Any line?                                  */
     812                 :            : #define ESCHER_Prop_fHitTestLine                509  /*  sal_Bool              Should we hit test lines?                  */
     813                 :            : #define ESCHER_Prop_lineFillShape               510  /*  sal_Bool              Register pattern on shape                  */
     814                 :            : #define ESCHER_Prop_fNoLineDrawDash             511  /*  sal_Bool              Draw a dashed line if no line              */
     815                 :            : // ShadowStyle
     816                 :            : #define ESCHER_Prop_shadowType                  512  /*  MSOSHADOWTYPE     Type of effect            */
     817                 :            : #define ESCHER_Prop_shadowColor                 513  /*  MSOCLR            Foreground color          */
     818                 :            : #define ESCHER_Prop_shadowHighlight             514  /*  MSOCLR            Embossed color            */
     819                 :            : #define ESCHER_Prop_shadowCrMod                 515  /*  MSOCLR            Modification for BW views */
     820                 :            : #define ESCHER_Prop_shadowOpacity               516  /*  LONG              Fixed 16.16               */
     821                 :            : #define ESCHER_Prop_shadowOffsetX               517  /*  LONG              Offset shadow             */
     822                 :            : #define ESCHER_Prop_shadowOffsetY               518  /*  LONG              Offset shadow             */
     823                 :            : #define ESCHER_Prop_shadowSecondOffsetX         519  /*  LONG              Double offset shadow      */
     824                 :            : #define ESCHER_Prop_shadowSecondOffsetY         520  /*  LONG              Double offset shadow      */
     825                 :            : #define ESCHER_Prop_shadowScaleXToX             521  /*  LONG              16.16                     */
     826                 :            : #define ESCHER_Prop_shadowScaleYToX             522  /*  LONG              16.16                     */
     827                 :            : #define ESCHER_Prop_shadowScaleXToY             523  /*  LONG              16.16                     */
     828                 :            : #define ESCHER_Prop_shadowScaleYToY             524  /*  LONG              16.16                     */
     829                 :            : #define ESCHER_Prop_shadowPerspectiveX          525  /*  LONG              16.16 / weight            */
     830                 :            : #define ESCHER_Prop_shadowPerspectiveY          526  /*  LONG              16.16 / weight            */
     831                 :            : #define ESCHER_Prop_shadowWeight                527  /*  LONG              scaling factor            */
     832                 :            : #define ESCHER_Prop_shadowOriginX               528  /*  LONG                                        */
     833                 :            : #define ESCHER_Prop_shadowOriginY               529  /*  LONG                                        */
     834                 :            : #define ESCHER_Prop_fShadow                     574  /*  sal_Bool              Any shadow?               */
     835                 :            : #define ESCHER_Prop_fshadowObscured             575  /*  sal_Bool              Excel5-style shadow       */
     836                 :            : // PerspectiveStyle
     837                 :            : #define ESCHER_Prop_perspectiveType             576  /*  MSOXFORMTYPE      Where transform applies        */
     838                 :            : #define ESCHER_Prop_perspectiveOffsetX          577  /*  LONG              The LONG values define a       */
     839                 :            : #define ESCHER_Prop_perspectiveOffsetY          578  /*  LONG                transformation matrix,       */
     840                 :            : #define ESCHER_Prop_perspectiveScaleXToX        579  /*  LONG                effectively, each value      */
     841                 :            : #define ESCHER_Prop_perspectiveScaleYToX        580  /*  LONG                is scaled by the             */
     842                 :            : #define ESCHER_Prop_perspectiveScaleXToY        581  /*  LONG                perspectiveWeight parameter. */
     843                 :            : #define ESCHER_Prop_perspectiveScaleYToY        582  /*  LONG                                             */
     844                 :            : #define ESCHER_Prop_perspectivePerspectiveX     583  /*  LONG                                             */
     845                 :            : #define ESCHER_Prop_perspectivePerspectiveY     584  /*  LONG                                             */
     846                 :            : #define ESCHER_Prop_perspectiveWeight           585  /*  LONG              Scaling factor                 */
     847                 :            : #define ESCHER_Prop_perspectiveOriginX          586  /*  LONG                                             */
     848                 :            : #define ESCHER_Prop_perspectiveOriginY          587  /*  LONG                                             */
     849                 :            : #define ESCHER_Prop_fPerspective                639  /*  sal_Bool              On/off                         */
     850                 :            : // 3D Object
     851                 :            : #define ESCHER_Prop_c3DSpecularAmt              640  /*  LONG         Fixed-point 16.16                                                                                                   */
     852                 :            : #define ESCHER_Prop_c3DDiffuseAmt               641  /*  LONG         Fixed-point 16.16                                                                                                   */
     853                 :            : #define ESCHER_Prop_c3DShininess                642  /*  LONG         Default gives OK results                                                                                            */
     854                 :            : #define ESCHER_Prop_c3DEdgeThickness            643  /*  LONG         Specular edge thickness                                                                                             */
     855                 :            : #define ESCHER_Prop_c3DExtrudeForward           644  /*  LONG         Distance of extrusion in EMUs                                                                                       */
     856                 :            : #define ESCHER_Prop_c3DExtrudeBackward          645  /*  LONG                                                                                                                             */
     857                 :            : #define ESCHER_Prop_c3DExtrudePlane             646  /*  LONG         Extrusion direction                                                                                                 */
     858                 :            : #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. */
     859                 :            : #define ESCHER_Prop_c3DCrMod                    648  /*  MSOCLR       Modification for BW views                                                                                           */
     860                 :            : #define ESCHER_Prop_f3D                         700  /*  sal_Bool         Does this shape have a 3D effect?                                                                                   */
     861                 :            : #define ESCHER_Prop_fc3DMetallic                701  /*  sal_Bool         Use metallic specularity?                                                                                           */
     862                 :            : #define ESCHER_Prop_fc3DUseExtrusionColor       702  /*  sal_Bool                                                                                                                             */
     863                 :            : #define ESCHER_Prop_fc3DLightFace               703  /*  sal_Bool                                                                                                                             */
     864                 :            : // 3D Style
     865                 :            : #define ESCHER_Prop_c3DYRotationAngle           704  /*  LONG            degrees (16.16) about y axis         */
     866                 :            : #define ESCHER_Prop_c3DXRotationAngle           705  /*  LONG            degrees (16.16) about x axis         */
     867                 :            : #define ESCHER_Prop_c3DRotationAxisX            706  /*  LONG            These specify the rotation axis;     */
     868                 :            : #define ESCHER_Prop_c3DRotationAxisY            707  /*  LONG              only their relative magnitudes     */
     869                 :            : #define ESCHER_Prop_c3DRotationAxisZ            708  /*  LONG              matter.                            */
     870                 :            : #define ESCHER_Prop_c3DRotationAngle            709  /*  LONG            degrees (16.16) about axis           */
     871                 :            : #define ESCHER_Prop_c3DRotationCenterX          710  /*  LONG            rotation center x (16.16 or g-units) */
     872                 :            : #define ESCHER_Prop_c3DRotationCenterY          711  /*  LONG            rotation center y (16.16 or g-units) */
     873                 :            : #define ESCHER_Prop_c3DRotationCenterZ          712  /*  LONG            rotation center z (absolute (emus))  */
     874                 :            : #define ESCHER_Prop_c3DRenderMode               713  /*  MSO3DRENDERMODE Full,wireframe, or bcube             */
     875                 :            : #define ESCHER_Prop_c3DTolerance                714  /*  LONG            pixels (16.16)                       */
     876                 :            : #define ESCHER_Prop_c3DXViewpoint               715  /*  LONG            X view point (emus)                  */
     877                 :            : #define ESCHER_Prop_c3DYViewpoint               716  /*  LONG            Y view point (emus)                  */
     878                 :            : #define ESCHER_Prop_c3DZViewpoint               717  /*  LONG            Z view distance (emus)               */
     879                 :            : #define ESCHER_Prop_c3DOriginX                  718  /*  LONG                                                 */
     880                 :            : #define ESCHER_Prop_c3DOriginY                  719  /*  LONG                                                 */
     881                 :            : #define ESCHER_Prop_c3DSkewAngle                720  /*  LONG            degree (16.16) skew angle            */
     882                 :            : #define ESCHER_Prop_c3DSkewAmount               721  /*  LONG            Percentage skew amount               */
     883                 :            : #define ESCHER_Prop_c3DAmbientIntensity         722  /*  LONG            Fixed point intensity                */
     884                 :            : #define ESCHER_Prop_c3DKeyX                     723  /*  LONG            Key light source direc-              */
     885                 :            : #define ESCHER_Prop_c3DKeyY                     724  /*  LONG            tion; only their relative            */
     886                 :            : #define ESCHER_Prop_c3DKeyZ                     725  /*  LONG            magnitudes matter                    */
     887                 :            : #define ESCHER_Prop_c3DKeyIntensity             726  /*  LONG            Fixed point intensity                */
     888                 :            : #define ESCHER_Prop_c3DFillX                    727  /*  LONG            Fill light source direc-             */
     889                 :            : #define ESCHER_Prop_c3DFillY                    728  /*  LONG            tion; only their relative            */
     890                 :            : #define ESCHER_Prop_c3DFillZ                    729  /*  LONG            magnitudes matter                    */
     891                 :            : #define ESCHER_Prop_c3DFillIntensity            730  /*  LONG            Fixed point intensity                */
     892                 :            : #define ESCHER_Prop_fc3DConstrainRotation       763  /*  sal_Bool                                                 */
     893                 :            : #define ESCHER_Prop_fc3DRotationCenterAuto      764  /*  sal_Bool                                                 */
     894                 :            : #define ESCHER_Prop_fc3DParallel                765  /*  sal_Bool            Parallel projection?                 */
     895                 :            : #define ESCHER_Prop_fc3DKeyHarsh                766  /*  sal_Bool            Is key lighting harsh?               */
     896                 :            : #define ESCHER_Prop_fc3DFillHarsh               767  /*  sal_Bool            Is fill lighting harsh?              */
     897                 :            : // Shape
     898                 :            : #define ESCHER_Prop_hspMaster                   769  /*  MSOHSP          master shape                                        */
     899                 :            : #define ESCHER_Prop_cxstyle                     771  /*  MSOCXSTYLE      Type of connector                                   */
     900                 :            : #define ESCHER_Prop_bWMode                      772  /*  ESCHERwMode     Settings for modifications to                       */
     901                 :            : #define ESCHER_Prop_bWModePureBW                773  /*  ESCHERwMode     be made when in different                         */
     902                 :            : #define ESCHER_Prop_bWModeBW                    774  /*  ESCHERwMode     forms of black-and-white mode.                    */
     903                 :            : #define ESCHER_Prop_fOleIcon                    826  /*  sal_Bool            For OLE objects, whether the object is in icon form */
     904                 :            : #define ESCHER_Prop_fPreferRelativeResize       827  /*  sal_Bool            For UI only. Prefer relative resizing.              */
     905                 :            : #define ESCHER_Prop_fLockShapeType              828  /*  sal_Bool            Lock the shape type (don't allow Change Shape)      */
     906                 :            : #define ESCHER_Prop_fDeleteAttachedObject       830  /*  sal_Bool                                                                */
     907                 :            : #define ESCHER_Prop_fBackground                 831  /*  sal_Bool            If sal_True, this is the background shape.              */
     908                 :            : // Callout
     909                 :            : #define ESCHER_Prop_spcot                       832  /*  MSOSPCOT        Callout type                                           */
     910                 :            : #define ESCHER_Prop_dxyCalloutGap               833  /*  LONG            Distance from box to first point.(EMUs)                */
     911                 :            : #define ESCHER_Prop_spcoa                       834  /*  MSOSPCOA        Callout angle                                          */
     912                 :            : #define ESCHER_Prop_spcod                       835  /*  MSOSPCOD        Callout drop type                                      */
     913                 :            : #define ESCHER_Prop_dxyCalloutDropSpecified     836  /*  LONG            if msospcodSpecified, the actual drop distance         */
     914                 :            : #define ESCHER_Prop_dxyCalloutLengthSpecified   837  /*  LONG            if fCalloutLengthSpecified, the actual distance        */
     915                 :            : #define ESCHER_Prop_fCallout                    889  /*  sal_Bool            Is the shape a callout?                                */
     916                 :            : #define ESCHER_Prop_fCalloutAccentBar           890  /*  sal_Bool            does callout have accent bar                           */
     917                 :            : #define ESCHER_Prop_fCalloutTextBorder          891  /*  sal_Bool            does callout have a text border                        */
     918                 :            : #define ESCHER_Prop_fCalloutMinusX              892  /*  sal_Bool                                                                   */
     919                 :            : #define ESCHER_Prop_fCalloutMinusY              893  /*  sal_Bool                                                                   */
     920                 :            : #define ESCHER_Prop_fCalloutDropAuto            894  /*  sal_Bool            If true, then we occasionally invert the drop distance */
     921                 :            : #define ESCHER_Prop_fCalloutLengthSpecified     895  /*  sal_Bool            if true, we look at dxyCalloutLengthSpecified          */
     922                 :            : // GroupShape
     923                 :            : #define ESCHER_Prop_wzName                      896  /*  WCHAR*          Shape Name (present only if explicitly set)                                                            */
     924                 :            : #define ESCHER_Prop_wzDescription               897  /*  WCHAR*          alternate text                                                                                         */
     925                 :            : #define ESCHER_Prop_pihlShape                   898  /*  IHlink*         The hyperlink in the shape.                                                                            */
     926                 :            : #define ESCHER_Prop_pWrapPolygonVertices        899  /*  IMsoArray       The polygon that text will be wrapped around (Word)                                                    */
     927                 :            : #define ESCHER_Prop_dxWrapDistLeft              900  /*  LONG            Left wrapping distance from text (Word)                                                                */
     928                 :            : #define ESCHER_Prop_dyWrapDistTop               901  /*  LONG            Top wrapping distance from text (Word)                                                                 */
     929                 :            : #define ESCHER_Prop_dxWrapDistRight             902  /*  LONG            Right wrapping distance from text (Word)                                                               */
     930                 :            : #define ESCHER_Prop_dyWrapDistBottom            903  /*  LONG            Bottom wrapping distance from text (Word)                                                              */
     931                 :            : #define ESCHER_Prop_lidRegroup                  904  /*  LONG            Regroup ID                                                                                             */
     932                 :            : #define ESCHER_Prop_tableProperties             927
     933                 :            : #define ESCHER_Prop_tableRowProperties          928
     934                 :            : #define ESCHER_Prop_fEditedWrap                 953  /*  sal_Bool            Has the wrap polygon been edited?                                                                      */
     935                 :            : #define ESCHER_Prop_fBehindDocument             954  /*  sal_Bool            Word-only (shape is behind text)                                                                       */
     936                 :            : #define ESCHER_Prop_fOnDblClickNotify           955  /*  sal_Bool            Notify client on a double click                                                                        */
     937                 :            : #define ESCHER_Prop_fIsButton                   956  /*  sal_Bool            A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros. */
     938                 :            : #define ESCHER_Prop_fOneD                       957  /*  sal_Bool            1D adjustment                                                                                          */
     939                 :            : #define ESCHER_Prop_fHidden                     958  /*  sal_Bool            Do not display                                                                                         */
     940                 :            : #define ESCHER_Prop_fPrint                      959  /*  sal_Bool            Print this shape                                                                                       */
     941                 :            : 
     942                 :            : #define ESCHER_PERSISTENTRY_PREALLOCATE     64
     943                 :            : 
     944                 :            : #define ESCHER_Persist_PrivateEntry         0x80000000
     945                 :            : #define ESCHER_Persist_Dgg                  0x00010000
     946                 :            : #define ESCHER_Persist_Dg                   0x00020000
     947                 :            : #define ESCHER_Persist_CurrentPosition      0x00040000
     948                 :            : #define ESCHER_Persist_Grouping_Snap        0x00050000
     949                 :            : #define ESCHER_Persist_Grouping_Logic       0x00060000
     950                 :            : 
     951                 :            : const sal_uInt32 DFF_DGG_CLUSTER_SIZE       = 0x00000400;   /// Shape IDs per cluster in DGG atom.
     952                 :            : 
     953                 :            : // ---------------------------------------------------------------------------------------------
     954                 :            : 
     955                 :            : namespace com { namespace sun { namespace star {
     956                 :            :     namespace awt {
     957                 :            :         struct Gradient;
     958                 :            :     }
     959                 :            :     namespace drawing {
     960                 :            :         struct EnhancedCustomShapeAdjustmentValue;
     961                 :            :         class XShape;
     962                 :            :         class XShapes;
     963                 :            :     }
     964                 :            : }}}
     965                 :            : 
     966                 :          0 : struct MSFILTER_DLLPUBLIC EscherConnectorListEntry
     967                 :            : {
     968                 :            :     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >   mXConnector;
     969                 :            :     ::com::sun::star::awt::Point            maPointA;
     970                 :            :     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >   mXConnectToA;
     971                 :            :     ::com::sun::star::awt::Point            maPointB;
     972                 :            :     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >   mXConnectToB;
     973                 :            : 
     974                 :            :     sal_uInt32      GetConnectorRule( sal_Bool bFirst );
     975                 :            : 
     976                 :          0 :                     EscherConnectorListEntry( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rC,
     977                 :            :                                         const ::com::sun::star::awt::Point& rPA,
     978                 :            :                                         ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSA ,
     979                 :            :                                         const ::com::sun::star::awt::Point& rPB,
     980                 :            :                                         ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSB ) :
     981                 :            :                                             mXConnector ( rC ),
     982                 :            :                                             maPointA    ( rPA ),
     983                 :            :                                             mXConnectToA( rSA ),
     984                 :            :                                             maPointB    ( rPB ),
     985                 :          0 :                                             mXConnectToB( rSB ) {}
     986                 :            : 
     987                 :            :     sal_uInt32      GetClosestPoint( const Polygon& rPoly, const ::com::sun::star::awt::Point& rP );
     988                 :            : };
     989                 :            : 
     990                 :            : struct MSFILTER_DLLPUBLIC EscherExContainer
     991                 :            : {
     992                 :            :     sal_uInt32  nContPos;
     993                 :            :     SvStream&   rStrm;
     994                 :            : 
     995                 :            :     EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0 );
     996                 :            :     ~EscherExContainer();
     997                 :            : };
     998                 :            : 
     999                 :            : struct MSFILTER_DLLPUBLIC EscherExAtom
    1000                 :            : {
    1001                 :            :     sal_uInt32  nContPos;
    1002                 :            :     SvStream&   rStrm;
    1003                 :            : 
    1004                 :            :     EscherExAtom( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0, const sal_uInt8 nVersion = 0 );
    1005                 :            :     ~EscherExAtom();
    1006                 :            : };
    1007                 :            : 
    1008                 :            : struct EscherPropertyValueHelper
    1009                 :            : {
    1010                 :            :     static sal_Bool GetPropertyValue(
    1011                 :            :         ::com::sun::star::uno::Any& rAny,
    1012                 :            :         const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
    1013                 :            :         const String& rPropertyName,
    1014                 :            :         sal_Bool bTestPropertyAvailability = sal_False
    1015                 :            :     );
    1016                 :            : 
    1017                 :            :     static ::com::sun::star::beans::PropertyState GetPropertyState(
    1018                 :            :         const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &,
    1019                 :            :         const String& rPropertyName
    1020                 :            :     );
    1021                 :            : };
    1022                 :            : 
    1023                 :            : // ---------------------------------------------------------------------------------------------
    1024                 :            : 
    1025                 :            : struct EscherPersistEntry
    1026                 :            : {
    1027                 :            :     sal_uInt32  mnID;
    1028                 :            :     sal_uInt32  mnOffset;
    1029                 :            : 
    1030                 :         30 :     EscherPersistEntry( sal_uInt32 nId, sal_uInt32 nOffset ) { mnID = nId; mnOffset = nOffset; };
    1031                 :            : 
    1032                 :            : };
    1033                 :            : 
    1034                 :            : // ---------------------------------------------------------------------------------------------
    1035                 :            : 
    1036                 :            : class EscherBlibEntry
    1037                 :            : {
    1038                 :            : 
    1039                 :            :     friend class EscherGraphicProvider;
    1040                 :            :     friend class EscherEx;
    1041                 :            : 
    1042                 :            : protected:
    1043                 :            : 
    1044                 :            :     sal_uInt32      mnIdentifier[ 4 ];
    1045                 :            :     sal_uInt32      mnPictureOffset;        // offset to the graphic im PictureStreams
    1046                 :            :     sal_uInt32      mnSize;                 // size of real graphic
    1047                 :            : 
    1048                 :            :     sal_uInt32      mnRefCount;             // !! reference count
    1049                 :            :     sal_uInt32      mnSizeExtra;            // !! size of preceding header
    1050                 :            : 
    1051                 :            :     ESCHER_BlibType meBlibType;
    1052                 :            : 
    1053                 :            :     Size            maPrefSize;
    1054                 :            :     MapMode         maPrefMapMode;
    1055                 :            : 
    1056                 :            :     sal_Bool        mbIsEmpty;
    1057                 :            :     sal_Bool        mbIsNativeGraphicPossible;
    1058                 :            : 
    1059                 :            : public:
    1060                 :            : 
    1061                 :            :                     EscherBlibEntry(
    1062                 :            :                         sal_uInt32 nPictureOffset,
    1063                 :            :                         const GraphicObject& rObj,
    1064                 :            :                         const rtl::OString& rId,
    1065                 :            :                         const GraphicAttr* pAttr = NULL
    1066                 :            :                     );
    1067                 :            : 
    1068                 :            :                     ~EscherBlibEntry();
    1069                 :            : 
    1070                 :            :     void            WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 );
    1071                 :          6 :     sal_Bool        IsEmpty() const { return mbIsEmpty; };
    1072                 :            : 
    1073                 :            :     sal_Bool        operator==( const EscherBlibEntry& ) const;
    1074                 :            : };
    1075                 :            : 
    1076                 :            : // ---------------------------------------------------------------------------------------------
    1077                 :            : 
    1078                 :            : #define _E_GRAPH_PROV_USE_INSTANCES             1
    1079                 :            : #define _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES   2
    1080                 :            : 
    1081                 :            : class MSFILTER_DLLPUBLIC EscherGraphicProvider
    1082                 :            : {
    1083                 :            :     sal_uInt32              mnFlags;
    1084                 :            : 
    1085                 :            :     EscherBlibEntry**       mpBlibEntrys;
    1086                 :            :     sal_uInt32              mnBlibBufSize;
    1087                 :            :     sal_uInt32              mnBlibEntrys;
    1088                 :            : 
    1089                 :            :     rtl::OUString           maBaseURI;
    1090                 :            : 
    1091                 :            : protected:
    1092                 :            : 
    1093                 :            :     sal_uInt32              ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry );
    1094                 :            : 
    1095                 :            : public:
    1096                 :            : 
    1097                 :            :     sal_uInt32  GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const;
    1098                 :            :     void        WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL  );
    1099                 :            :     sal_Bool    WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId,
    1100                 :            :     sal_Bool    bWritePictureOffset, sal_uInt32 nResize = 0);
    1101                 :            :     sal_uInt32  GetBlibID(
    1102                 :            :                     SvStream& rPicOutStream,
    1103                 :            :                     const rtl::OString& rGraphicId,
    1104                 :            :                     const Rectangle& rBoundRect,
    1105                 :            :                     const com::sun::star::awt::Rectangle* pVisArea = NULL,
    1106                 :            :                     const GraphicAttr* pGrafikAttr = NULL
    1107                 :            :                 );
    1108                 :          6 :     sal_Bool    HasGraphics() const { return mnBlibEntrys != 0; };
    1109                 :            : 
    1110                 :            :     void        SetNewBlipStreamOffset( sal_Int32 nOffset );
    1111                 :            : 
    1112                 :            :     sal_Bool    GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode );
    1113                 :            : 
    1114                 :          0 :     void        SetBaseURI( const rtl::OUString& rBaseURI ) { maBaseURI = rBaseURI; };
    1115                 :          0 :     const rtl::OUString& GetBaseURI() { return maBaseURI; };
    1116                 :            : 
    1117                 :            :                 EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES );
    1118                 :            :                 ~EscherGraphicProvider();
    1119                 :            : 
    1120                 :            : };
    1121                 :            : 
    1122                 :            : struct EscherShapeListEntry;
    1123                 :            : typedef ::std::vector< EscherShapeListEntry* >      EscherShapeList_impl;
    1124                 :            : typedef ::std::vector< EscherConnectorListEntry* >  EscherConnectorList_impl;
    1125                 :            : 
    1126                 :            : class MSFILTER_DLLPUBLIC EscherSolverContainer
    1127                 :            : {
    1128                 :            :     EscherShapeList_impl        maShapeList;
    1129                 :            :     EscherConnectorList_impl    maConnectorList;
    1130                 :            : 
    1131                 :            : public:
    1132                 :            : 
    1133                 :            :     sal_uInt32      GetShapeId(
    1134                 :            :                         const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape
    1135                 :            :                     ) const;
    1136                 :            : 
    1137                 :            :     void            AddShape(
    1138                 :            :                         const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &,
    1139                 :            :                         sal_uInt32 nId
    1140                 :            :                     );
    1141                 :            : 
    1142                 :            :     void            AddConnector(
    1143                 :            :                         const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &,
    1144                 :            :                         const ::com::sun::star::awt::Point& rA,
    1145                 :            :                         ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &,
    1146                 :            :                         const ::com::sun::star::awt::Point& rB,
    1147                 :            :                         ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB
    1148                 :            :                     );
    1149                 :            : 
    1150                 :            :     void            WriteSolver( SvStream& );
    1151                 :            : 
    1152         [ +  - ]:          3 :                     EscherSolverContainer(){};
    1153                 :            :                     ~EscherSolverContainer();
    1154                 :            : };
    1155                 :            : 
    1156                 :            : // ---------------------------------------------------------------------------------------------
    1157                 :            : 
    1158                 :            : #define ESCHER_CREATEPOLYGON_LINE           1
    1159                 :            : #define ESCHER_CREATEPOLYGON_POLYLINE       2
    1160                 :            : #define ESCHER_CREATEPOLYGON_POLYPOLYGON    4
    1161                 :            : 
    1162                 :            : class GraphicAttr;
    1163                 :            : class SdrObjCustomShape;
    1164                 :            : 
    1165                 :            : struct EscherPropSortStruct
    1166                 :            : {
    1167                 :            :     sal_uInt8*  pBuf;
    1168                 :            :     sal_uInt32  nPropSize;
    1169                 :            :     sal_uInt32  nPropValue;
    1170                 :            :     sal_uInt16  nPropId;
    1171                 :            : };
    1172                 :            : 
    1173                 :            : typedef std::vector< EscherPropSortStruct > EscherProperties;
    1174                 :            : 
    1175                 :            : class MSFILTER_DLLPUBLIC EscherPropertyContainer
    1176                 :            : {
    1177                 :            :     EscherGraphicProvider*  pGraphicProvider;
    1178                 :            :     SvStream*               pPicOutStrm;
    1179                 :            :     Rectangle*              pShapeBoundRect;
    1180                 :            : 
    1181                 :            :     EscherPropSortStruct*   pSortStruct;
    1182                 :            : 
    1183                 :            :     sal_uInt32              nSortCount;
    1184                 :            :     sal_uInt32              nSortBufSize;
    1185                 :            :     sal_uInt32              nCountCount;
    1186                 :            :     sal_uInt32              nCountSize;
    1187                 :            : 
    1188                 :            :     sal_Bool                bHasComplexData;
    1189                 :            :     sal_Bool                bSuppressRotation;
    1190                 :            : 
    1191                 :            : 
    1192                 :            :     sal_uInt32  ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True );
    1193                 :            :     void        ImplCreateGraphicAttributes(
    1194                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
    1195                 :            :                     sal_uInt32 nBlibId,
    1196                 :            :                     sal_Bool bCreateCroppingAttributes
    1197                 :            :                 );
    1198                 :            :     sal_Bool    ImplCreateEmbeddedBmp( const rtl::OString& rUniqueId );
    1199                 :            :     void        ImplInit();
    1200                 :            : 
    1201                 :            : public:
    1202                 :            : 
    1203                 :            :     EscherPropertyContainer();
    1204                 :            :     EscherPropertyContainer(
    1205                 :            :         EscherGraphicProvider& rGraphicProvider,    // the PropertyContainer needs to know
    1206                 :            :         SvStream* pPicOutStrm,                      // the GraphicProvider to be able to write
    1207                 :            :         Rectangle& rShapeBoundRect                  // FillBitmaps or GraphicObjects.
    1208                 :            :     );                                              // under some circumstances the ShapeBoundRect
    1209                 :            :                                                     // is adjusted this will happen when rotated
    1210                 :            :                                                     // GraphicObjects are saved to PowerPoint
    1211                 :            :     ~EscherPropertyContainer();
    1212                 :            : 
    1213                 :            :     void        AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString );
    1214                 :            : 
    1215                 :            :     void        AddOpt(
    1216                 :            :                     sal_uInt16 nPropertyID,
    1217                 :            :                     sal_uInt32 nPropValue,
    1218                 :            :                     sal_Bool bBlib = sal_False
    1219                 :            :                 );
    1220                 :            : 
    1221                 :            :     void        AddOpt(
    1222                 :            :                     sal_uInt16 nPropertyID,
    1223                 :            :                     sal_Bool bBlib,
    1224                 :            :                     sal_uInt32 nPropValue,
    1225                 :            :                     sal_uInt8* pProp,
    1226                 :            :                     sal_uInt32 nPropSize
    1227                 :            :                 );
    1228                 :            : 
    1229                 :            :     sal_Bool    GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const;
    1230                 :            : 
    1231                 :            :     sal_Bool    GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const;
    1232                 :            : 
    1233                 :            :     EscherProperties GetOpts() const;
    1234                 :            : 
    1235                 :            :     void        Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT );
    1236                 :            : 
    1237                 :            :     sal_Bool    CreateShapeProperties(
    1238                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape
    1239                 :            :                 );
    1240                 :            :     sal_Bool    CreateOLEGraphicProperties(
    1241                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject
    1242                 :            :                 );
    1243                 :            : 
    1244                 :            :     /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */
    1245                 :            :     sal_Bool    CreateEmbeddedBitmapProperties(
    1246                 :            :                     const ::rtl::OUString& rBitmapUrl,
    1247                 :            :                     ::com::sun::star::drawing::BitmapMode eBitmapMode
    1248                 :            :                 );
    1249                 :            :     /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */
    1250                 :            :     sal_Bool    CreateEmbeddedHatchProperties(
    1251                 :            :                     const ::com::sun::star::drawing::Hatch& rHatch,
    1252                 :            :                     const Color& rBackColor,
    1253                 :            :                     bool bFillBackground
    1254                 :            :                 );
    1255                 :            : 
    1256                 :            :                     // the GraphicProperties will only be created if a GraphicProvider and PicOutStrm is known
    1257                 :            :                     // DR: #99897# if no GraphicProvider is present, a complex ESCHER_Prop_fillBlip
    1258                 :            :                     //             will be created, containing the BLIP directly (e.g. for Excel charts).
    1259                 :            :     sal_Bool    CreateGraphicProperties(
    1260                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
    1261                 :            :                     const String& rSource,
    1262                 :            :                     const sal_Bool bCreateFillBitmap,
    1263                 :            :                     const sal_Bool bCreateCroppingAttributes = sal_False,
    1264                 :            :                     const sal_Bool bFillBitmapModeAllowed = sal_True
    1265                 :            :                 );
    1266                 :            : 
    1267                 :            :     sal_Bool    CreatePolygonProperties(
    1268                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
    1269                 :            :                     sal_uInt32 nFlags,
    1270                 :            :                     sal_Bool bBezier,
    1271                 :            :                     ::com::sun::star::awt::Rectangle& rGeoRect,
    1272                 :            :                     Polygon* pPolygon = NULL
    1273                 :            :                 );
    1274                 :            : 
    1275                 :            :     static sal_uInt32 GetGradientColor(
    1276                 :            :                     const ::com::sun::star::awt::Gradient* pGradient,
    1277                 :            :                     sal_uInt32 nStartColor
    1278                 :            :                 );
    1279                 :            : 
    1280                 :            :     void        CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient );
    1281                 :            :     void        CreateGradientProperties(
    1282                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &
    1283                 :            :                 );
    1284                 :            :     void        CreateLineProperties(
    1285                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
    1286                 :            :                     sal_Bool bEdge
    1287                 :            :                 );
    1288                 :            :     void        CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge );
    1289                 :            :     void        CreateTextProperties(
    1290                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
    1291                 :            :                     sal_uInt32 nText,
    1292                 :            :                     const sal_Bool bIsCustomShape = sal_False,
    1293                 :            :                     const sal_Bool bIsTextFrame = sal_True
    1294                 :            :                 );
    1295                 :            : 
    1296                 :            :     sal_Bool    CreateConnectorProperties(
    1297                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
    1298                 :            :                     EscherSolverContainer& rSolver,
    1299                 :            :                     ::com::sun::star::awt::Rectangle& rGeoRect,
    1300                 :            :                     sal_uInt16& rShapeType,
    1301                 :            :                     sal_uInt16& rShapeFlags
    1302                 :            :                 );
    1303                 :            : 
    1304                 :            :                 // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last.
    1305                 :            :                 // It activ only when at least a FillStyle or LineStyle is set.
    1306                 :            :     sal_Bool    CreateShadowProperties(
    1307                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &
    1308                 :            :                 );
    1309                 :            : 
    1310                 :            :         // creates all necessary CustomShape properties, this includes also Text-, Shadow-, Fill-, and LineProperties
    1311                 :            :     void        CreateCustomShapeProperties(
    1312                 :            :                     const MSO_SPT eShapeType,
    1313                 :            :                     const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &
    1314                 :            :                 );
    1315                 :            :     sal_Bool    IsFontWork() const;
    1316                 :            : 
    1317                 :            :     // helper functions which are also used by the escher import
    1318                 :            :     static PolyPolygon  GetPolyPolygon(
    1319                 :            :                             const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape
    1320                 :            :                         );
    1321                 :            :     static PolyPolygon  GetPolyPolygon( const ::com::sun::star::uno::Any& rSource );
    1322                 :            :     static MSO_SPT      GetCustomShapeType(
    1323                 :            :                             const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
    1324                 :            :                             sal_uInt32& nMirrorFlags
    1325                 :            :                         );
    1326                 :            :     static MSO_SPT      GetCustomShapeType(
    1327                 :            :                             const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
    1328                 :            :                             sal_uInt32& nMirrorFlags,
    1329                 :            :                             rtl::OUString& rShapeType
    1330                 :            :                         );
    1331                 :            : 
    1332                 :            :     // helper functions which are also used in ooxml export
    1333                 :            :     static sal_Bool     GetLineArrow(
    1334                 :            :                             const sal_Bool bLineStart,
    1335                 :            :                             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
    1336                 :            :                             ESCHER_LineEnd& reLineEnd,
    1337                 :            :                             sal_Int32& rnArrowLength,
    1338                 :            :                             sal_Int32& rnArrowWidth
    1339                 :            :                         );
    1340                 :            :     static sal_Bool     IsDefaultObject( SdrObjCustomShape* pCustoShape );
    1341                 :            :     static void         LookForPolarHandles(
    1342                 :            :                             const MSO_SPT eShapeType,
    1343                 :            :                             sal_Int32& nAdjustmentsWhichNeedsToBeConverted
    1344                 :            :                         );
    1345                 :            :     static sal_Bool     GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue );
    1346                 :            : };
    1347                 :            : 
    1348                 :            : // ---------------------------------------------------------------------------------------------
    1349                 :            : 
    1350                 :            : typedef ::std::vector< EscherPersistEntry* > EscherPersistTable_impl;
    1351                 :            : 
    1352                 :            : class MSFILTER_DLLPUBLIC EscherPersistTable
    1353                 :            : {
    1354                 :            : 
    1355                 :            : public:
    1356                 :            :     EscherPersistTable_impl maPersistTable;
    1357                 :            : 
    1358                 :            :     sal_Bool    PtIsID( sal_uInt32 nID );
    1359                 :            :     void        PtInsert( sal_uInt32 nID, sal_uInt32 nOfs );
    1360                 :            :     sal_uInt32  PtDelete( sal_uInt32 nID );
    1361                 :            :     sal_uInt32  PtGetOffsetByID( sal_uInt32 nID );
    1362                 :            :     sal_uInt32  PtReplace( sal_uInt32 nID, sal_uInt32 nOfs );
    1363                 :            :     sal_uInt32  PtReplaceOrInsert( sal_uInt32 nID, sal_uInt32 nOfs );
    1364                 :            :     sal_uInt32  PtGetCount() const { return maPersistTable.size(); };
    1365                 :            : 
    1366                 :            :                 EscherPersistTable();
    1367                 :            :     virtual     ~EscherPersistTable();
    1368                 :            : };
    1369                 :            : 
    1370                 :            : // ---------------------------------------------------------------------------------------------
    1371                 :            : 
    1372                 :            : class EscherEx;
    1373                 :            : 
    1374                 :            : /// abstract base class for ESCHER_ClientTextbox, ESCHER_ClientData
    1375                 :            : class MSFILTER_DLLPUBLIC EscherExClientRecord_Base
    1376                 :            : {
    1377                 :            : public:
    1378                 :          6 :                                 EscherExClientRecord_Base() {}
    1379                 :            :     virtual                     ~EscherExClientRecord_Base();
    1380                 :            : 
    1381                 :            :                                 /// Application writes the record header
    1382                 :            :                                 /// using rEx.AddAtom(...) followed by
    1383                 :            :                                 /// record data written to rEx.GetStream()
    1384                 :            :     virtual void                WriteData( EscherEx& rEx ) const = 0;
    1385                 :            : };
    1386                 :            : 
    1387                 :            : 
    1388                 :            : /// abstract base class for ESCHER_ClientAnchor
    1389                 :            : class MSFILTER_DLLPUBLIC EscherExClientAnchor_Base
    1390                 :            : {
    1391                 :            : public:
    1392                 :          0 :                                 EscherExClientAnchor_Base() {}
    1393                 :            :     virtual                     ~EscherExClientAnchor_Base();
    1394                 :            : 
    1395                 :            :                                 /// Application writes the record header
    1396                 :            :                                 /// using rEx.AddAtom(...) followed by
    1397                 :            :                                 /// record data written to rEx.GetStream()
    1398                 :            :     virtual void                WriteData( EscherEx& rEx,
    1399                 :            :                                     const Rectangle& rRect ) = 0;
    1400                 :            : };
    1401                 :            : 
    1402                 :          0 : class InteractionInfo
    1403                 :            : {
    1404                 :            :     bool mbHasInteraction;
    1405                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
    1406                 :            :     std::auto_ptr<SvMemoryStream>       mpHyperlinkRecord;
    1407                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
    1408                 :            :     InteractionInfo();
    1409                 :            : 
    1410                 :            : public:
    1411                 :          0 :     InteractionInfo( SvMemoryStream* pStream, bool bInteraction ) : mbHasInteraction( bInteraction )
    1412                 :            :     {
    1413                 :          0 :         mpHyperlinkRecord.reset( pStream );
    1414                 :          0 :     }
    1415                 :          0 :     bool    hasInteraction() { return mbHasInteraction; }
    1416                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
    1417                 :          0 :     const std::auto_ptr< SvMemoryStream >&  getHyperlinkRecord() { return mpHyperlinkRecord; }
    1418                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
    1419                 :            : };
    1420                 :            : 
    1421                 :            : class EscherExHostAppData
    1422                 :            : {
    1423                 :            : private:
    1424                 :            :         EscherExClientAnchor_Base*  pClientAnchor;
    1425                 :            :         EscherExClientRecord_Base*  pClientData;
    1426                 :            :         EscherExClientRecord_Base*  pClientTextbox;
    1427                 :            :         InteractionInfo*        pInteractionInfo;
    1428                 :            :         // ignore single shape if entire pages are written
    1429                 :            :         sal_Bool                        bDontWriteShape;
    1430                 :            : 
    1431                 :            : public:
    1432                 :          6 :         EscherExHostAppData() : pClientAnchor(0), pClientData(0),
    1433                 :          6 :                 pClientTextbox(0), pInteractionInfo(0), bDontWriteShape(sal_False)
    1434                 :          6 :         {}
    1435                 :            : 
    1436                 :          0 :         void SetInteractionInfo( InteractionInfo* p )
    1437                 :          0 :             { pInteractionInfo = p; }
    1438                 :          0 :         void SetClientAnchor( EscherExClientAnchor_Base* p )
    1439                 :          0 :             { pClientAnchor = p; }
    1440                 :          6 :         void SetClientData( EscherExClientRecord_Base* p )
    1441                 :          6 :             { pClientData = p; }
    1442                 :          0 :         void SetClientTextbox( EscherExClientRecord_Base* p )
    1443                 :          0 :             { pClientTextbox = p; }
    1444                 :          0 :         void SetDontWriteShape( sal_Bool b )
    1445                 :          0 :             { bDontWriteShape = b; }
    1446                 :          0 :         InteractionInfo* GetInteractionInfo() const
    1447                 :          0 :             { return pInteractionInfo; }
    1448                 :          0 :         EscherExClientAnchor_Base* GetClientAnchor() const
    1449                 :          0 :             { return pClientAnchor; }
    1450                 :            :         EscherExClientRecord_Base* GetClientData() const
    1451                 :            :             { return pClientData; }
    1452                 :          0 :         EscherExClientRecord_Base* GetClientTextbox() const
    1453                 :          0 :             { return pClientTextbox; }
    1454                 :            : 
    1455                 :          0 :         void WriteClientAnchor( EscherEx& rEx, const Rectangle& rRect )
    1456         [ #  # ]:          0 :             { if( pClientAnchor )  pClientAnchor->WriteData( rEx, rRect ); }
    1457                 :          0 :         void WriteClientData( EscherEx& rEx )
    1458         [ #  # ]:          0 :             { if( pClientData ) pClientData->WriteData( rEx ); }
    1459                 :          0 :         void WriteClientTextbox( EscherEx& rEx )
    1460         [ #  # ]:          0 :             { if( pClientTextbox ) pClientTextbox->WriteData( rEx ); }
    1461                 :            : 
    1462                 :          0 :         sal_Bool DontWriteShape() const { return bDontWriteShape; }
    1463                 :            : };
    1464                 :            : 
    1465                 :            : 
    1466                 :            : // ============================================================================
    1467                 :            : 
    1468                 :            : /** Instance for global DFF data, shared through various instances of EscherEx. */
    1469                 :            : class MSFILTER_DLLPUBLIC EscherExGlobal : public EscherGraphicProvider
    1470                 :            : {
    1471                 :            : public:
    1472                 :            :     explicit            EscherExGlobal( sal_uInt32 nGraphicProvFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES );
    1473                 :            :     virtual             ~EscherExGlobal();
    1474                 :            : 
    1475                 :            :     /** Returns a new drawing ID for a new drawing container (DGCONTAINER). */
    1476                 :            :     sal_uInt32          GenerateDrawingId();
    1477                 :            :     /** Creates and returns a new shape identifier, updates the internal shape
    1478                 :            :         counters and registers the identifier in the DGG cluster table.
    1479                 :            :         @param nDrawingId  Drawing identifier has to be passed to be able to
    1480                 :            :             generate shape identifiers for multiple drawings simultaniously. */
    1481                 :            :     sal_uInt32          GenerateShapeId( sal_uInt32 nDrawingId, bool bIsInSpgr );
    1482                 :            :     /** Returns the number of shapes in the current drawing, based on number of
    1483                 :            :         calls to the GenerateShapeId() function. */
    1484                 :            :     sal_uInt32          GetDrawingShapeCount( sal_uInt32 nDrawingId ) const;
    1485                 :            :     /** Returns the last shape identifier generated by the GenerateShapeId()
    1486                 :            :         function. */
    1487                 :            :     sal_uInt32          GetLastShapeId( sal_uInt32 nDrawingId ) const;
    1488                 :            : 
    1489                 :            :     /** Sets the flag indicating that the DGGCONTAINER exists. */
    1490                 :          6 :     inline void         SetDggContainer() { mbHasDggCont = true; }
    1491                 :            :     /** Sets the flag indicating that the DGGCONTAINER exists. */
    1492                 :         15 :     inline bool         HasDggContainer() const { return mbHasDggCont; }
    1493                 :            :     /** Returns the total size of the DGG atom (including header). */
    1494                 :            :     sal_uInt32          GetDggAtomSize() const;
    1495                 :            :     /** Writes the complete DGG atom to the passed stream (overwrites existing data!). */
    1496                 :            :     void                WriteDggAtom( SvStream& rStrm ) const;
    1497                 :            : 
    1498                 :            :     /** Called if a picture shall be written and no picture stream is set at
    1499                 :            :         class ImplEscherExSdr.
    1500                 :            : 
    1501                 :            :         On first invokation, this function calls the virtual member function
    1502                 :            :         ImplQueryPictureStream(). The return value will be cached internally
    1503                 :            :         for subsequent calls and for the GetPictureStream() function.
    1504                 :            :      */
    1505                 :            :     SvStream*           QueryPictureStream();
    1506                 :            : 
    1507                 :            :     /** Returns the picture stream if existing (queried), otherwise null. */
    1508                 :          6 :     inline SvStream*    GetPictureStream() { return mpPicStrm; }
    1509                 :            : 
    1510                 :            : private:
    1511                 :            :     /** Derived classes may implement to create a new stream used to store the
    1512                 :            :         picture data.
    1513                 :            : 
    1514                 :            :         The implementation has to take care about lifetime of the returned
    1515                 :            :         stream (it will not be destructed automatically). This function is
    1516                 :            :         called exactly once. The return value will be cached internally for
    1517                 :            :         repeated calls of the public QueryPictureStream() function.
    1518                 :            :      */
    1519                 :            :     virtual SvStream*   ImplQueryPictureStream();
    1520                 :            : 
    1521                 :            : private:
    1522                 :            :     struct ClusterEntry
    1523                 :            :     {
    1524                 :            :         sal_uInt32          mnDrawingId;        /// Identifier of drawing this cluster belongs to (one-based index into maDrawingInfos).
    1525                 :            :         sal_uInt32          mnNextShapeId;      /// Next free shape identifier in this cluster.
    1526                 :          9 :         inline explicit     ClusterEntry( sal_uInt32 nDrawingId ) : mnDrawingId( nDrawingId ), mnNextShapeId( 0 ) {}
    1527                 :            :     };
    1528                 :            :     typedef ::std::vector< ClusterEntry > ClusterTable;
    1529                 :            : 
    1530                 :            :     struct DrawingInfo
    1531                 :            :     {
    1532                 :            :         sal_uInt32          mnClusterId;        /// Currently used cluster (one-based index into maClusterTable).
    1533                 :            :         sal_uInt32          mnShapeCount;       /// Current number of shapes in this drawing.
    1534                 :            :         sal_uInt32          mnLastShapeId;      /// Last shape identifier generated for this drawing.
    1535                 :          9 :         inline explicit     DrawingInfo( sal_uInt32 nClusterId ) : mnClusterId( nClusterId ), mnShapeCount( 0 ), mnLastShapeId( 0 ) {}
    1536                 :            :     };
    1537                 :            :     typedef ::std::vector< DrawingInfo > DrawingInfoVector;
    1538                 :            : 
    1539                 :            :     ClusterTable        maClusterTable;     /// List with cluster IDs (used object IDs in drawings).
    1540                 :            :     DrawingInfoVector   maDrawingInfos;     /// Data about all used drawings.
    1541                 :            :     SvStream*           mpPicStrm;          /// Cached result of ImplQueryPictureStream().
    1542                 :            :     bool                mbHasDggCont;       /// True = the DGGCONTAINER has been initialized.
    1543                 :            :     bool                mbPicStrmQueried;   /// True = ImplQueryPictureStream() has been called.
    1544                 :            : };
    1545                 :            : 
    1546                 :            : typedef ::boost::shared_ptr< EscherExGlobal > EscherExGlobalRef;
    1547                 :            : 
    1548                 :            : // ---------------------------------------------------------------------------------------------
    1549                 :            : 
    1550                 :            : class SdrObject;
    1551                 :            : class SdrPage;
    1552                 :            : class ImplEscherExSdr;
    1553                 :            : 
    1554                 :            : class MSFILTER_DLLPUBLIC EscherEx : public EscherPersistTable
    1555                 :            : {
    1556                 :            :     protected:
    1557                 :            :         typedef ::std::auto_ptr< ImplEscherExSdr > ImplEscherExSdrPtr;
    1558                 :            : 
    1559                 :            :         EscherExGlobalRef           mxGlobal;
    1560                 :            :         ImplEscherExSdrPtr          mpImplEscherExSdr;
    1561                 :            :         SvStream*                   mpOutStrm;
    1562                 :            :         bool                        mbOwnsStrm;
    1563                 :            :         sal_uInt32                  mnStrmStartOfs;
    1564                 :            :         std::vector< sal_uInt32 >   mOffsets;
    1565                 :            :         std::vector< sal_uInt16 >   mRecTypes;
    1566                 :            : 
    1567                 :            :         sal_uInt32                  mnCurrentDg;
    1568                 :            :         sal_uInt32                  mnCountOfs;
    1569                 :            : 
    1570                 :            :         sal_uInt32                  mnGroupLevel;
    1571                 :            :         sal_uInt16                  mnHellLayerId;
    1572                 :            : 
    1573                 :            :         sal_Bool                    mbEscherSpgr;
    1574                 :            :         sal_Bool                    mbEscherDg;
    1575                 :            :         sal_Bool                    mbOleEmf;                   // OLE is EMF instead of WMF
    1576                 :            : 
    1577                 :            : 
    1578                 :            :         virtual sal_Bool DoSeek( sal_uInt32 nKey );
    1579                 :            : 
    1580                 :            : public:
    1581                 :            :     explicit            EscherEx( const EscherExGlobalRef& rxGlobal, SvStream* pOutStrm );
    1582                 :            :     virtual             ~EscherEx();
    1583                 :            : 
    1584                 :            :     /** Creates and returns a new shape identifier, updates the internal shape
    1585                 :            :         counters and registers the identifier in the DGG cluster table. */
    1586                 :         24 :     inline sal_uInt32   GenerateShapeId() { return mxGlobal->GenerateShapeId( mnCurrentDg, mbEscherSpgr ); }
    1587                 :            : 
    1588                 :            :     /** Returns the graphic provider from the global object that has been
    1589                 :            :         passed to the constructor.
    1590                 :            :      */
    1591                 :          3 :     inline EscherGraphicProvider& GetGraphicProvider() { return *mxGlobal; }
    1592                 :            : 
    1593                 :            :     /** Called if a picture shall be written and no picture stream is set at
    1594                 :            :         class ImplEscherExSdr.
    1595                 :            :      */
    1596                 :          9 :     inline SvStream*    QueryPictureStream() { return mxGlobal->QueryPictureStream(); }
    1597                 :            :     
    1598                 :            :                 /// Inserts internal data into the EscherStream, this process
    1599                 :            :                 /// may and has to be executed only once
    1600                 :            :                 /// If pPicStreamMergeBSE is known, the BLIPs from this stream are being
    1601                 :            :                 /// merged into the MsofbtBSE Records of the EscherStream like it's
    1602                 :            :                 /// required for Excel (and maybe Word?)
    1603                 :            :         virtual void Flush( SvStream* pPicStreamMergeBSE = NULL );
    1604                 :            : 
    1605                 :            :     /** Inserts the passed number of bytes at the current position of the
    1606                 :            :         output stream.
    1607                 :            : 
    1608                 :            :         Inserts dummy bytes and moves all following stream data, and updates
    1609                 :            :         all internal stream offsets stored in the PersistTable and the affected
    1610                 :            :         container sizes, which makes this operation very expensive. (!)
    1611                 :            : 
    1612                 :            :         @param nBytes  The number of bytes to be inserted into the stream.
    1613                 :            : 
    1614                 :            :         @param bExpandEndOfAtom  If set to true, an atom that currently ends
    1615                 :            :             exactly at the current stream position will be expanded to include
    1616                 :            :             the inserted data. If set to false, an atom that currently ends
    1617                 :            :             exactly at the current stream position will not be expanded to
    1618                 :            :             include the inserted data (used to insert e.g. a new atom after an
    1619                 :            :             existing atom). Note that containers that end exactly at the
    1620                 :            :             current stream position are always expanded to include the inserted
    1621                 :            :             data.
    1622                 :            :      */
    1623                 :            :     void            InsertAtCurrentPos( sal_uInt32 nBytes, bool bExpandEndOfAtom );
    1624                 :            : 
    1625                 :            :     void            InsertPersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ); // It is not being checked if this key is already in the PersistantTable
    1626                 :            :     void            ReplacePersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset );
    1627                 :            :     sal_uInt32      GetPersistOffset( sal_uInt32 nKey );
    1628                 :            :     sal_Bool        SeekToPersistOffset( sal_uInt32 nKey );
    1629                 :            :     virtual sal_Bool InsertAtPersistOffset( sal_uInt32 nKey, sal_uInt32 nValue );   // nValue is being inserted into the Stream where it's appropriate (overwrite modus), without that the
    1630                 :            :                                                                                     // current StreamPosition changes
    1631                 :            : 
    1632                 :         39 :     SvStream&       GetStream() const   { return *mpOutStrm; }
    1633                 :          0 :     sal_uLong       GetStreamPos() const    { return mpOutStrm->Tell(); }
    1634                 :            : 
    1635                 :            :     virtual sal_Bool SeekBehindRecHeader( sal_uInt16 nRecType );                // the stream has to be in front of a valid Record Headeror Atom
    1636                 :            : 
    1637                 :            :                 // features during the creation of the following Containers:
    1638                 :            :                 //
    1639                 :            :                 //      ESCHER_DggContainer:    a EscherDgg Atom is automatically being created and managed
    1640                 :            :                 //      ESCHER_DgContainer:     a EscherDg Atom is automatically being created and managed
    1641                 :            :                 //      ESCHER_SpgrContainer:
    1642                 :            :                 //      ESCHER_SpContainer:
    1643                 :            : 
    1644                 :            :     virtual void OpenContainer( sal_uInt16 nEscherContainer, int nRecInstance = 0 );
    1645                 :            :     virtual void CloseContainer();
    1646                 :            : 
    1647                 :            :     virtual void BeginAtom();
    1648                 :            :     virtual void EndAtom( sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 );
    1649                 :            :     virtual void AddAtom( sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 );
    1650                 :            :     virtual void AddChildAnchor( const Rectangle& rRectangle );
    1651                 :            :     virtual void AddClientAnchor( const Rectangle& rRectangle );
    1652                 :            : 
    1653                 :            :     virtual sal_uInt32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 );
    1654                 :            :     sal_uInt32  EnterGroup( const Rectangle* pBoundRect = NULL );
    1655                 :         30 :     sal_uInt32  GetGroupLevel() const { return mnGroupLevel; };
    1656                 :            :     virtual sal_Bool SetGroupSnapRect( sal_uInt32 nGroupLevel, const Rectangle& rRect );
    1657                 :            :     virtual sal_Bool SetGroupLogicRect( sal_uInt32 nGroupLevel, const Rectangle& rRect );
    1658                 :            :     virtual void LeaveGroup();
    1659                 :            : 
    1660                 :            :                 // a ESCHER_Sp is being written ( a ESCHER_DgContainer has to be opened for this purpose!)
    1661                 :            :     virtual void AddShape( sal_uInt32 nShpInstance, sal_uInt32 nFlagIds, sal_uInt32 nShapeID = 0 );
    1662                 :            : 
    1663                 :            :     virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect );
    1664                 :            : 
    1665                 :            :     sal_uInt32  GetColor( const sal_uInt32 nColor, sal_Bool bSwap = sal_True );
    1666                 :            :     sal_uInt32  GetColor( const Color& rColor, sal_Bool bSwap = sal_True );
    1667                 :            : 
    1668                 :            :                 // ...Sdr... implemented in eschesdo.cxx
    1669                 :            : 
    1670                 :            :     void    AddSdrPage( const SdrPage& rPage );
    1671                 :            :     void    AddUnoShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes );
    1672                 :            : 
    1673                 :            :                 /// returns the ShapeID
    1674                 :            :     sal_uInt32  AddSdrObject( const SdrObject& rObj );
    1675                 :            : 
    1676                 :            :                 /// If objects are written through AddSdrObject the
    1677                 :            :                 /// SolverContainer has to be written, and maybe some
    1678                 :            :                 /// maintenance to be done.
    1679                 :            :     void    EndSdrObjectPage();
    1680                 :            : 
    1681                 :            :                 /// Called before a shape is written, application supplies
    1682                 :            :                 /// ClientRecords. May set AppData::bDontWriteShape so the
    1683                 :            :                 /// shape is ignored.
    1684                 :            :     virtual EscherExHostAppData* StartShape(
    1685                 :            :                             const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape,
    1686                 :            :                             const Rectangle* pChildAnchor );
    1687                 :            : 
    1688                 :            :                 /// Called after a shape is written to inform the application
    1689                 :            :                 /// of the resulted shape type and ID.
    1690                 :            :     virtual void    EndShape( sal_uInt16 nShapeType, sal_uInt32 nShapeID );
    1691                 :            : 
    1692                 :            :                 /// Called before an AdditionalText EnterGroup occurs.
    1693                 :            :                 /// The current shape will be written in three parts:
    1694                 :            :                 /// a group shape, the shape itself, and an extra textbox shape.
    1695                 :            :                 /// The complete flow is:
    1696                 :            :                 /// StartShape sets HostData1.
    1697                 :            :                 /// EnterAdditionalTextGroup sets HostData2, App may modify
    1698                 :            :                 ///   HostData1 and keep track of the change.
    1699                 :            :                 /// The group shape is written with HostData2.
    1700                 :            :                 /// Another StartShape with the same (!) object sets HostData3.
    1701                 :            :                 /// The current shape is written with HostData3.
    1702                 :            :                 /// EndShape is called for the current shape.
    1703                 :            :                 /// Another StartShape with the same (!) object sets HostData4.
    1704                 :            :                 /// The textbox shape is written with HostData4.
    1705                 :            :                 /// EndShape is called for the textbox shape.
    1706                 :            :                 /// EndShape is called for the group shape, this provides
    1707                 :            :                 ///   the same functionality as an ordinary recursive group.
    1708                 :            :     virtual EscherExHostAppData*    EnterAdditionalTextGroup();
    1709                 :            : 
    1710                 :            :                 /// Called if an ESCHER_Prop_lTxid shall be written
    1711                 :            :     virtual sal_uInt32  QueryTextID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >&, sal_uInt32 nShapeId );
    1712                 :            :             // add an dummy rectangle shape into the escher stream
    1713                 :            :         sal_uInt32  AddDummyShape();
    1714                 :            : 
    1715                 :            :     static const SdrObject* GetSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rXShape );
    1716                 :            : 
    1717                 :          6 :     void SetHellLayerId( sal_uInt16 nId )       { mnHellLayerId = nId; }
    1718                 :          9 :     sal_uInt16 GetHellLayerId() const           { return mnHellLayerId; }
    1719                 :            : 
    1720                 :            : private:
    1721                 :            :                         EscherEx( const EscherEx& );
    1722                 :            :     EscherEx&           operator=( const EscherEx& );
    1723                 :            : 
    1724                 :            :     // prevent C-style cast to former base class EscherGraphicProvider
    1725                 :            :     operator EscherGraphicProvider&();
    1726                 :            :     operator EscherGraphicProvider const&();
    1727                 :            : };
    1728                 :            : 
    1729                 :            : 
    1730                 :            : #endif
    1731                 :            : 
    1732                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10