diff options
Diffstat (limited to 'filter/inc/filter')
-rw-r--r-- | filter/inc/filter/msfilter/escherex.hxx | 1116 | ||||
-rw-r--r-- | filter/inc/filter/msfilter/msdffimp.hxx | 197 | ||||
-rw-r--r-- | filter/inc/filter/msfilter/msocximex.hxx | 10 | ||||
-rw-r--r-- | filter/inc/filter/msfilter/svdfppt.hxx | 14 |
4 files changed, 724 insertions, 613 deletions
diff --git a/filter/inc/filter/msfilter/escherex.hxx b/filter/inc/filter/msfilter/escherex.hxx index 37dbadc207b3..4afd1f006d45 100644 --- a/filter/inc/filter/msfilter/escherex.hxx +++ b/filter/inc/filter/msfilter/escherex.hxx @@ -50,264 +50,263 @@ /*Record Name FBT-Value Instance Contents Wrd Exl PPt Ver*/ // In der Mickysoft-Doku heissen die msofbt... statt ESCHER_... -#define ESCHER_DggContainer 0xF000 /* per-document data X X X */ -#define ESCHER_Dgg 0xF006 /* an FDGG and several FIDCLs X X X 0 */ -#define ESCHER_CLSID 0xF016 /* the CLSID of the application that put the data on the clipboard C C C 0 */ -#define ESCHER_OPT 0xF00B /* count of properties the document-wide default shape properties X X X 3 */ -#define ESCHER_ColorMRU 0xF11A /* count of colors the colors in the MRU swatch X X X 0 */ -#define ESCHER_SplitMenuColors 0xF11E /* count of colors the colors in the top-level split menus X X X 0 */ -#define ESCHER_BstoreContainer 0xF001 /* count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X */ -#define ESCHER_BSE 0xF007 /* BLIP type an FBSE (one per BLIP) X X X 2 */ -#define ESCHER_BlipFirst 0xF018 /* range of fbts reserved for various kinds of BLIPs X X X */ -#define ESCHER_BlipLast 0xF117 /* range of fbts reserved for various kinds of BLIPs X X X */ - -#define ESCHER_DgContainer 0xF002 /* per-sheet/page/slide data X X X */ -#define ESCHER_Dg 0xF008 /* drawing ID an FDG X X X 0 */ -#define ESCHER_RegroupItems 0xF118 /* count of regroup entries several FRITs X X X 0 */ -#define ESCHER_ColorScheme 0xF120 /* count of colors the colors of the source host's color scheme C C 0 */ -#define ESCHER_SpgrContainer 0xF003 /* several SpContainers, the first of which is the group shape itself X X X */ -#define ESCHER_SpContainer 0xF004 /* a shape X X X */ -#define ESCHER_Spgr 0xF009 /* an FSPGR; only present if the shape is a group shape X X X 1 */ -#define ESCHER_Sp 0xF00A /* shape type an FSP X X X 2 */ +#define ESCHER_DggContainer 0xF000 /* per-document data X X X */ +#define ESCHER_Dgg 0xF006 /* an FDGG and several FIDCLs X X X 0 */ +#define ESCHER_CLSID 0xF016 /* the CLSID of the application that put the data on the clipboard C C C 0 */ +#define ESCHER_OPT 0xF00B /* count of properties the document-wide default shape properties X X X 3 */ +#define ESCHER_ColorMRU 0xF11A /* count of colors the colors in the MRU swatch X X X 0 */ +#define ESCHER_SplitMenuColors 0xF11E /* count of colors the colors in the top-level split menus X X X 0 */ +#define ESCHER_BstoreContainer 0xF001 /* count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X */ +#define ESCHER_BSE 0xF007 /* BLIP type an FBSE (one per BLIP) X X X 2 */ +#define ESCHER_BlipFirst 0xF018 /* range of fbts reserved for various kinds of BLIPs X X X */ +#define ESCHER_BlipLast 0xF117 /* range of fbts reserved for various kinds of BLIPs X X X */ + +#define ESCHER_DgContainer 0xF002 /* per-sheet/page/slide data X X X */ +#define ESCHER_Dg 0xF008 /* drawing ID an FDG X X X 0 */ +#define ESCHER_RegroupItems 0xF118 /* count of regroup entries several FRITs X X X 0 */ +#define ESCHER_ColorScheme 0xF120 /* count of colors the colors of the source host's color scheme C C 0 */ +#define ESCHER_SpgrContainer 0xF003 /* several SpContainers, the first of which is the group shape itself X X X */ +#define ESCHER_SpContainer 0xF004 /* a shape X X X */ +#define ESCHER_Spgr 0xF009 /* an FSPGR; only present if the shape is a group shape X X X 1 */ +#define ESCHER_Sp 0xF00A /* shape type an FSP X X X 2 */ //#define ESCHER_OPT 0xF00B /* count of properties a shape property table X X X 3 */ -#define ESCHER_Textbox 0xF00C /* RTF text C C C 0 */ -#define ESCHER_ClientTextbox 0xF00D /* host-defined the text in the textbox, in host-defined format X X X */ -#define ESCHER_Anchor 0xF00E /* a RECT, in 100000ths of an inch C C C 0 */ -#define ESCHER_ChildAnchor 0xF00F /* a RECT, in units relative to the parent group X X X 0 */ -#define ESCHER_ClientAnchor 0xF010 /* host-defined the location of the shape, in a host-defined format X X X */ -#define ESCHER_ClientData 0xF011 /* host-defined host-specific data X X X */ -#define ESCHER_OleObject 0xF11F /* a serialized IStorage for an OLE object C C C 0 */ -#define ESCHER_DeletedPspl 0xF11D /* an FPSPL; only present in top-level deleted shapes X 0 */ -#define ESCHER_SolverContainer 0xF005 /* count of rules the rules governing shapes X X X */ -#define ESCHER_ConnectorRule 0xF012 /* an FConnectorRule X X 1 */ -#define ESCHER_AlignRule 0xF013 /* an FAlignRule X X X 0 */ -#define ESCHER_ArcRule 0xF014 /* an FARCRU X X X 0 */ -#define ESCHER_ClientRule 0xF015 /* host-defined host-defined */ -#define ESCHER_CalloutRule 0xF017 /* an FCORU X X X 0 */ -#define ESCHER_Selection 0xF119 /* an FDGSL followed by the SPIDs of the shapes in the selection X 0 */ -#define ESCHER_UDefProp 0xF122 - -#define SHAPEFLAG_GROUP 0x001 // This shape is a group shape -#define SHAPEFLAG_CHILD 0x002 // Not a top-level shape -#define SHAPEFLAG_PATRIARCH 0x004 // This is the topmost group shape. Exactly one of these per drawing. -#define SHAPEFLAG_DELETED 0x008 // The shape has been deleted -#define SHAPEFLAG_OLESHAPE 0x010 // The shape is an OLE object -#define SHAPEFLAG_HAVEMASTER 0x020 // Shape has a hspMaster property -#define SHAPEFLAG_FLIPH 0x040 // Shape is flipped horizontally -#define SHAPEFLAG_FLIPV 0x080 // Shape is flipped vertically -#define SHAPEFLAG_CONNECTOR 0x100 // Connector type of shape -#define SHAPEFLAG_HAVEANCHOR 0x200 // Shape has an anchor of some kind -#define SHAPEFLAG_BACKGROUND 0x400 // Background shape -#define SHAPEFLAG_HAVESPT 0x800 // Shape has a shape type property - -#define ESCHER_ShpInst_Min 0 -#define ESCHER_ShpInst_NotPrimitive ESCHER_ShpInst_Min -#define ESCHER_ShpInst_Rectangle 1 -#define ESCHER_ShpInst_RoundRectangle 2 -#define ESCHER_ShpInst_Ellipse 3 -#define ESCHER_ShpInst_Diamond 4 -#define ESCHER_ShpInst_IsocelesTriangle 5 -#define ESCHER_ShpInst_RightTriangle 6 -#define ESCHER_ShpInst_Parallelogram 7 -#define ESCHER_ShpInst_Trapezoid 8 -#define ESCHER_ShpInst_Hexagon 9 -#define ESCHER_ShpInst_Octagon 10 -#define ESCHER_ShpInst_Plus 11 -#define ESCHER_ShpInst_Star 12 -#define ESCHER_ShpInst_Arrow 13 -#define ESCHER_ShpInst_ThickArrow 14 -#define ESCHER_ShpInst_HomePlate 15 -#define ESCHER_ShpInst_Cube 16 -#define ESCHER_ShpInst_Balloon 17 -#define ESCHER_ShpInst_Seal 18 -#define ESCHER_ShpInst_Arc 19 -#define ESCHER_ShpInst_Line 20 -#define ESCHER_ShpInst_Plaque 21 -#define ESCHER_ShpInst_Can 22 -#define ESCHER_ShpInst_Donut 23 -#define ESCHER_ShpInst_TextSimple 24 -#define ESCHER_ShpInst_TextOctagon 25 -#define ESCHER_ShpInst_TextHexagon 26 -#define ESCHER_ShpInst_TextCurve 27 -#define ESCHER_ShpInst_TextWave 28 -#define ESCHER_ShpInst_TextRing 29 -#define ESCHER_ShpInst_TextOnCurve 30 -#define ESCHER_ShpInst_TextOnRing 31 -#define ESCHER_ShpInst_StraightConnector1 32 -#define ESCHER_ShpInst_BentConnector2 33 -#define ESCHER_ShpInst_BentConnector3 34 -#define ESCHER_ShpInst_BentConnector4 35 -#define ESCHER_ShpInst_BentConnector5 36 -#define ESCHER_ShpInst_CurvedConnector2 37 -#define ESCHER_ShpInst_CurvedConnector3 38 -#define ESCHER_ShpInst_CurvedConnector4 39 -#define ESCHER_ShpInst_CurvedConnector5 40 -#define ESCHER_ShpInst_Callout1 41 -#define ESCHER_ShpInst_Callout2 42 -#define ESCHER_ShpInst_Callout3 43 -#define ESCHER_ShpInst_AccentCallout1 44 -#define ESCHER_ShpInst_AccentCallout2 45 -#define ESCHER_ShpInst_AccentCallout3 46 -#define ESCHER_ShpInst_BorderCallout1 47 -#define ESCHER_ShpInst_BorderCallout2 48 -#define ESCHER_ShpInst_BorderCallout3 49 -#define ESCHER_ShpInst_AccentBorderCallout1 50 -#define ESCHER_ShpInst_AccentBorderCallout2 51 -#define ESCHER_ShpInst_AccentBorderCallout3 52 -#define ESCHER_ShpInst_Ribbon 53 -#define ESCHER_ShpInst_Ribbon2 54 -#define ESCHER_ShpInst_Chevron 55 -#define ESCHER_ShpInst_Pentagon 56 -#define ESCHER_ShpInst_NoSmoking 57 -#define ESCHER_ShpInst_Seal8 58 -#define ESCHER_ShpInst_Seal16 59 -#define ESCHER_ShpInst_Seal32 60 -#define ESCHER_ShpInst_WedgeRectCallout 61 -#define ESCHER_ShpInst_WedgeRRectCallout 62 -#define ESCHER_ShpInst_WedgeEllipseCallout 63 -#define ESCHER_ShpInst_Wave 64 -#define ESCHER_ShpInst_FoldedCorner 65 -#define ESCHER_ShpInst_LeftArrow 66 -#define ESCHER_ShpInst_DownArrow 67 -#define ESCHER_ShpInst_UpArrow 68 -#define ESCHER_ShpInst_LeftRightArrow 69 -#define ESCHER_ShpInst_UpDownArrow 70 -#define ESCHER_ShpInst_IrregularSeal1 71 -#define ESCHER_ShpInst_IrregularSeal2 72 -#define ESCHER_ShpInst_LightningBolt 73 -#define ESCHER_ShpInst_Heart 74 -#define ESCHER_ShpInst_PictureFrame 75 -#define ESCHER_ShpInst_QuadArrow 76 -#define ESCHER_ShpInst_LeftArrowCallout 77 -#define ESCHER_ShpInst_RightArrowCallout 78 -#define ESCHER_ShpInst_UpArrowCallout 79 -#define ESCHER_ShpInst_DownArrowCallout 80 -#define ESCHER_ShpInst_LeftRightArrowCallout 81 -#define ESCHER_ShpInst_UpDownArrowCallout 82 -#define ESCHER_ShpInst_QuadArrowCallout 83 -#define ESCHER_ShpInst_Bevel 84 -#define ESCHER_ShpInst_LeftBracket 85 -#define ESCHER_ShpInst_RightBracket 86 -#define ESCHER_ShpInst_LeftBrace 87 -#define ESCHER_ShpInst_RightBrace 88 -#define ESCHER_ShpInst_LeftUpArrow 89 -#define ESCHER_ShpInst_BentUpArrow 90 -#define ESCHER_ShpInst_BentArrow 91 -#define ESCHER_ShpInst_Seal24 92 -#define ESCHER_ShpInst_StripedRightArrow 93 -#define ESCHER_ShpInst_NotchedRightArrow 94 -#define ESCHER_ShpInst_BlockArc 95 -#define ESCHER_ShpInst_SmileyFace 96 -#define ESCHER_ShpInst_VerticalScroll 97 -#define ESCHER_ShpInst_HorizontalScroll 98 -#define ESCHER_ShpInst_CircularArrow 99 -#define ESCHER_ShpInst_NotchedCircularArrow 100 -#define ESCHER_ShpInst_UturnArrow 101 -#define ESCHER_ShpInst_CurvedRightArrow 102 -#define ESCHER_ShpInst_CurvedLeftArrow 103 -#define ESCHER_ShpInst_CurvedUpArrow 104 -#define ESCHER_ShpInst_CurvedDownArrow 105 -#define ESCHER_ShpInst_CloudCallout 106 -#define ESCHER_ShpInst_EllipseRibbon 107 -#define ESCHER_ShpInst_EllipseRibbon2 108 -#define ESCHER_ShpInst_FlowChartProcess 109 -#define ESCHER_ShpInst_FlowChartDecision 110 -#define ESCHER_ShpInst_FlowChartInputOutput 111 +#define ESCHER_Textbox 0xF00C /* RTF text C C C 0 */ +#define ESCHER_ClientTextbox 0xF00D /* host-defined the text in the textbox, in host-defined format X X X */ +#define ESCHER_Anchor 0xF00E /* a RECT, in 100000ths of an inch C C C 0 */ +#define ESCHER_ChildAnchor 0xF00F /* a RECT, in units relative to the parent group X X X 0 */ +#define ESCHER_ClientAnchor 0xF010 /* host-defined the location of the shape, in a host-defined format X X X */ +#define ESCHER_ClientData 0xF011 /* host-defined host-specific data X X X */ +#define ESCHER_OleObject 0xF11F /* a serialized IStorage for an OLE object C C C 0 */ +#define ESCHER_DeletedPspl 0xF11D /* an FPSPL; only present in top-level deleted shapes X 0 */ +#define ESCHER_SolverContainer 0xF005 /* count of rules the rules governing shapes X X X */ +#define ESCHER_ConnectorRule 0xF012 /* an FConnectorRule X X 1 */ +#define ESCHER_AlignRule 0xF013 /* an FAlignRule X X X 0 */ +#define ESCHER_ArcRule 0xF014 /* an FARCRU X X X 0 */ +#define ESCHER_ClientRule 0xF015 /* host-defined host-defined */ +#define ESCHER_CalloutRule 0xF017 /* an FCORU X X X 0 */ +#define ESCHER_Selection 0xF119 /* an FDGSL followed by the SPIDs of the shapes in the selection X 0 */ +#define ESCHER_UDefProp 0xF122 + +#define SHAPEFLAG_GROUP 0x001 /* This shape is a group shape */ +#define SHAPEFLAG_CHILD 0x002 /* Not a top-level shape */ +#define SHAPEFLAG_PATRIARCH 0x004 /* This is the topmost group shape. Exactly one of these per drawing. */ +#define SHAPEFLAG_DELETED 0x008 /* The shape has been deleted */ +#define SHAPEFLAG_OLESHAPE 0x010 /* The shape is an OLE object */ +#define SHAPEFLAG_HAVEMASTER 0x020 /* Shape has a hspMaster property */ +#define SHAPEFLAG_FLIPH 0x040 /* Shape is flipped horizontally */ +#define SHAPEFLAG_FLIPV 0x080 /* Shape is flipped vertically */ +#define SHAPEFLAG_CONNECTOR 0x100 /* Connector type of shape */ +#define SHAPEFLAG_HAVEANCHOR 0x200 /* Shape has an anchor of some kind */ +#define SHAPEFLAG_BACKGROUND 0x400 /* Background shape */ +#define SHAPEFLAG_HAVESPT 0x800 /* Shape has a shape type property */ + +#define ESCHER_ShpInst_Min 0 +#define ESCHER_ShpInst_NotPrimitive ESCHER_ShpInst_Min +#define ESCHER_ShpInst_Rectangle 1 +#define ESCHER_ShpInst_RoundRectangle 2 +#define ESCHER_ShpInst_Ellipse 3 +#define ESCHER_ShpInst_Diamond 4 +#define ESCHER_ShpInst_IsocelesTriangle 5 +#define ESCHER_ShpInst_RightTriangle 6 +#define ESCHER_ShpInst_Parallelogram 7 +#define ESCHER_ShpInst_Trapezoid 8 +#define ESCHER_ShpInst_Hexagon 9 +#define ESCHER_ShpInst_Octagon 10 +#define ESCHER_ShpInst_Plus 11 +#define ESCHER_ShpInst_Star 12 +#define ESCHER_ShpInst_Arrow 13 +#define ESCHER_ShpInst_ThickArrow 14 +#define ESCHER_ShpInst_HomePlate 15 +#define ESCHER_ShpInst_Cube 16 +#define ESCHER_ShpInst_Balloon 17 +#define ESCHER_ShpInst_Seal 18 +#define ESCHER_ShpInst_Arc 19 +#define ESCHER_ShpInst_Line 20 +#define ESCHER_ShpInst_Plaque 21 +#define ESCHER_ShpInst_Can 22 +#define ESCHER_ShpInst_Donut 23 +#define ESCHER_ShpInst_TextSimple 24 +#define ESCHER_ShpInst_TextOctagon 25 +#define ESCHER_ShpInst_TextHexagon 26 +#define ESCHER_ShpInst_TextCurve 27 +#define ESCHER_ShpInst_TextWave 28 +#define ESCHER_ShpInst_TextRing 29 +#define ESCHER_ShpInst_TextOnCurve 30 +#define ESCHER_ShpInst_TextOnRing 31 +#define ESCHER_ShpInst_StraightConnector1 32 +#define ESCHER_ShpInst_BentConnector2 33 +#define ESCHER_ShpInst_BentConnector3 34 +#define ESCHER_ShpInst_BentConnector4 35 +#define ESCHER_ShpInst_BentConnector5 36 +#define ESCHER_ShpInst_CurvedConnector2 37 +#define ESCHER_ShpInst_CurvedConnector3 38 +#define ESCHER_ShpInst_CurvedConnector4 39 +#define ESCHER_ShpInst_CurvedConnector5 40 +#define ESCHER_ShpInst_Callout1 41 +#define ESCHER_ShpInst_Callout2 42 +#define ESCHER_ShpInst_Callout3 43 +#define ESCHER_ShpInst_AccentCallout1 44 +#define ESCHER_ShpInst_AccentCallout2 45 +#define ESCHER_ShpInst_AccentCallout3 46 +#define ESCHER_ShpInst_BorderCallout1 47 +#define ESCHER_ShpInst_BorderCallout2 48 +#define ESCHER_ShpInst_BorderCallout3 49 +#define ESCHER_ShpInst_AccentBorderCallout1 50 +#define ESCHER_ShpInst_AccentBorderCallout2 51 +#define ESCHER_ShpInst_AccentBorderCallout3 52 +#define ESCHER_ShpInst_Ribbon 53 +#define ESCHER_ShpInst_Ribbon2 54 +#define ESCHER_ShpInst_Chevron 55 +#define ESCHER_ShpInst_Pentagon 56 +#define ESCHER_ShpInst_NoSmoking 57 +#define ESCHER_ShpInst_Seal8 58 +#define ESCHER_ShpInst_Seal16 59 +#define ESCHER_ShpInst_Seal32 60 +#define ESCHER_ShpInst_WedgeRectCallout 61 +#define ESCHER_ShpInst_WedgeRRectCallout 62 +#define ESCHER_ShpInst_WedgeEllipseCallout 63 +#define ESCHER_ShpInst_Wave 64 +#define ESCHER_ShpInst_FoldedCorner 65 +#define ESCHER_ShpInst_LeftArrow 66 +#define ESCHER_ShpInst_DownArrow 67 +#define ESCHER_ShpInst_UpArrow 68 +#define ESCHER_ShpInst_LeftRightArrow 69 +#define ESCHER_ShpInst_UpDownArrow 70 +#define ESCHER_ShpInst_IrregularSeal1 71 +#define ESCHER_ShpInst_IrregularSeal2 72 +#define ESCHER_ShpInst_LightningBolt 73 +#define ESCHER_ShpInst_Heart 74 +#define ESCHER_ShpInst_PictureFrame 75 +#define ESCHER_ShpInst_QuadArrow 76 +#define ESCHER_ShpInst_LeftArrowCallout 77 +#define ESCHER_ShpInst_RightArrowCallout 78 +#define ESCHER_ShpInst_UpArrowCallout 79 +#define ESCHER_ShpInst_DownArrowCallout 80 +#define ESCHER_ShpInst_LeftRightArrowCallout 81 +#define ESCHER_ShpInst_UpDownArrowCallout 82 +#define ESCHER_ShpInst_QuadArrowCallout 83 +#define ESCHER_ShpInst_Bevel 84 +#define ESCHER_ShpInst_LeftBracket 85 +#define ESCHER_ShpInst_RightBracket 86 +#define ESCHER_ShpInst_LeftBrace 87 +#define ESCHER_ShpInst_RightBrace 88 +#define ESCHER_ShpInst_LeftUpArrow 89 +#define ESCHER_ShpInst_BentUpArrow 90 +#define ESCHER_ShpInst_BentArrow 91 +#define ESCHER_ShpInst_Seal24 92 +#define ESCHER_ShpInst_StripedRightArrow 93 +#define ESCHER_ShpInst_NotchedRightArrow 94 +#define ESCHER_ShpInst_BlockArc 95 +#define ESCHER_ShpInst_SmileyFace 96 +#define ESCHER_ShpInst_VerticalScroll 97 +#define ESCHER_ShpInst_HorizontalScroll 98 +#define ESCHER_ShpInst_CircularArrow 99 +#define ESCHER_ShpInst_NotchedCircularArrow 100 +#define ESCHER_ShpInst_UturnArrow 101 +#define ESCHER_ShpInst_CurvedRightArrow 102 +#define ESCHER_ShpInst_CurvedLeftArrow 103 +#define ESCHER_ShpInst_CurvedUpArrow 104 +#define ESCHER_ShpInst_CurvedDownArrow 105 +#define ESCHER_ShpInst_CloudCallout 106 +#define ESCHER_ShpInst_EllipseRibbon 107 +#define ESCHER_ShpInst_EllipseRibbon2 108 +#define ESCHER_ShpInst_FlowChartProcess 109 +#define ESCHER_ShpInst_FlowChartDecision 110 +#define ESCHER_ShpInst_FlowChartInputOutput 111 #define ESCHER_ShpInst_FlowChartPredefinedProcess 112 -#define ESCHER_ShpInst_FlowChartInternalStorage 113 -#define ESCHER_ShpInst_FlowChartDocument 114 -#define ESCHER_ShpInst_FlowChartMultidocument 115 -#define ESCHER_ShpInst_FlowChartTerminator 116 -#define ESCHER_ShpInst_FlowChartPreparation 117 -#define ESCHER_ShpInst_FlowChartManualInput 118 -#define ESCHER_ShpInst_FlowChartManualOperation 119 -#define ESCHER_ShpInst_FlowChartConnector 120 -#define ESCHER_ShpInst_FlowChartPunchedCard 121 -#define ESCHER_ShpInst_FlowChartPunchedTape 122 -#define ESCHER_ShpInst_FlowChartSummingJunction 123 -#define ESCHER_ShpInst_FlowChartOr 124 -#define ESCHER_ShpInst_FlowChartCollate 125 -#define ESCHER_ShpInst_FlowChartSort 126 -#define ESCHER_ShpInst_FlowChartExtract 127 -#define ESCHER_ShpInst_FlowChartMerge 128 -#define ESCHER_ShpInst_FlowChartOfflineStorage 129 -#define ESCHER_ShpInst_FlowChartOnlineStorage 130 -#define ESCHER_ShpInst_FlowChartMagneticTape 131 -#define ESCHER_ShpInst_FlowChartMagneticDisk 132 -#define ESCHER_ShpInst_FlowChartMagneticDrum 133 -#define ESCHER_ShpInst_FlowChartDisplay 134 -#define ESCHER_ShpInst_FlowChartDelay 135 -#define ESCHER_ShpInst_TextPlainText 136 -#define ESCHER_ShpInst_TextStop 137 -#define ESCHER_ShpInst_TextTriangle 138 -#define ESCHER_ShpInst_TextTriangleInverted 139 -#define ESCHER_ShpInst_TextChevron 140 -#define ESCHER_ShpInst_TextChevronInverted 141 -#define ESCHER_ShpInst_TextRingInside 142 -#define ESCHER_ShpInst_TextRingOutside 143 -#define ESCHER_ShpInst_TextArchUpCurve 144 -#define ESCHER_ShpInst_TextArchDownCurve 145 -#define ESCHER_ShpInst_TextCircleCurve 146 -#define ESCHER_ShpInst_TextButtonCurve 147 -#define ESCHER_ShpInst_TextArchUpPour 148 -#define ESCHER_ShpInst_TextArchDownPour 149 -#define ESCHER_ShpInst_TextCirclePour 150 -#define ESCHER_ShpInst_TextButtonPour 151 -#define ESCHER_ShpInst_TextCurveUp 152 -#define ESCHER_ShpInst_TextCurveDown 153 -#define ESCHER_ShpInst_TextCascadeUp 154 -#define ESCHER_ShpInst_TextCascadeDown 155 -#define ESCHER_ShpInst_TextWave1 156 -#define ESCHER_ShpInst_TextWave2 157 -#define ESCHER_ShpInst_TextWave3 158 -#define ESCHER_ShpInst_TextWave4 159 -#define ESCHER_ShpInst_TextInflate 160 -#define ESCHER_ShpInst_TextDeflate 161 -#define ESCHER_ShpInst_TextInflateBottom 162 -#define ESCHER_ShpInst_TextDeflateBottom 163 -#define ESCHER_ShpInst_TextInflateTop 164 -#define ESCHER_ShpInst_TextDeflateTop 165 -#define ESCHER_ShpInst_TextDeflateInflate 166 +#define ESCHER_ShpInst_FlowChartInternalStorage 113 +#define ESCHER_ShpInst_FlowChartDocument 114 +#define ESCHER_ShpInst_FlowChartMultidocument 115 +#define ESCHER_ShpInst_FlowChartTerminator 116 +#define ESCHER_ShpInst_FlowChartPreparation 117 +#define ESCHER_ShpInst_FlowChartManualInput 118 +#define ESCHER_ShpInst_FlowChartManualOperation 119 +#define ESCHER_ShpInst_FlowChartConnector 120 +#define ESCHER_ShpInst_FlowChartPunchedCard 121 +#define ESCHER_ShpInst_FlowChartPunchedTape 122 +#define ESCHER_ShpInst_FlowChartSummingJunction 123 +#define ESCHER_ShpInst_FlowChartOr 124 +#define ESCHER_ShpInst_FlowChartCollate 125 +#define ESCHER_ShpInst_FlowChartSort 126 +#define ESCHER_ShpInst_FlowChartExtract 127 +#define ESCHER_ShpInst_FlowChartMerge 128 +#define ESCHER_ShpInst_FlowChartOfflineStorage 129 +#define ESCHER_ShpInst_FlowChartOnlineStorage 130 +#define ESCHER_ShpInst_FlowChartMagneticTape 131 +#define ESCHER_ShpInst_FlowChartMagneticDisk 132 +#define ESCHER_ShpInst_FlowChartMagneticDrum 133 +#define ESCHER_ShpInst_FlowChartDisplay 134 +#define ESCHER_ShpInst_FlowChartDelay 135 +#define ESCHER_ShpInst_TextPlainText 136 +#define ESCHER_ShpInst_TextStop 137 +#define ESCHER_ShpInst_TextTriangle 138 +#define ESCHER_ShpInst_TextTriangleInverted 139 +#define ESCHER_ShpInst_TextChevron 140 +#define ESCHER_ShpInst_TextChevronInverted 141 +#define ESCHER_ShpInst_TextRingInside 142 +#define ESCHER_ShpInst_TextRingOutside 143 +#define ESCHER_ShpInst_TextArchUpCurve 144 +#define ESCHER_ShpInst_TextArchDownCurve 145 +#define ESCHER_ShpInst_TextCircleCurve 146 +#define ESCHER_ShpInst_TextButtonCurve 147 +#define ESCHER_ShpInst_TextArchUpPour 148 +#define ESCHER_ShpInst_TextArchDownPour 149 +#define ESCHER_ShpInst_TextCirclePour 150 +#define ESCHER_ShpInst_TextButtonPour 151 +#define ESCHER_ShpInst_TextCurveUp 152 +#define ESCHER_ShpInst_TextCurveDown 153 +#define ESCHER_ShpInst_TextCascadeUp 154 +#define ESCHER_ShpInst_TextCascadeDown 155 +#define ESCHER_ShpInst_TextWave1 156 +#define ESCHER_ShpInst_TextWave2 157 +#define ESCHER_ShpInst_TextWave3 158 +#define ESCHER_ShpInst_TextWave4 159 +#define ESCHER_ShpInst_TextInflate 160 +#define ESCHER_ShpInst_TextDeflate 161 +#define ESCHER_ShpInst_TextInflateBottom 162 +#define ESCHER_ShpInst_TextDeflateBottom 163 +#define ESCHER_ShpInst_TextInflateTop 164 +#define ESCHER_ShpInst_TextDeflateTop 165 +#define ESCHER_ShpInst_TextDeflateInflate 166 #define ESCHER_ShpInst_TextDeflateInflateDeflate 167 -#define ESCHER_ShpInst_TextFadeRight 168 -#define ESCHER_ShpInst_TextFadeLeft 169 -#define ESCHER_ShpInst_TextFadeUp 170 -#define ESCHER_ShpInst_TextFadeDown 171 -#define ESCHER_ShpInst_TextSlantUp 172 -#define ESCHER_ShpInst_TextSlantDown 173 -#define ESCHER_ShpInst_TextCanUp 174 -#define ESCHER_ShpInst_TextCanDown 175 +#define ESCHER_ShpInst_TextFadeRight 168 +#define ESCHER_ShpInst_TextFadeLeft 169 +#define ESCHER_ShpInst_TextFadeUp 170 +#define ESCHER_ShpInst_TextFadeDown 171 +#define ESCHER_ShpInst_TextSlantUp 172 +#define ESCHER_ShpInst_TextSlantDown 173 +#define ESCHER_ShpInst_TextCanUp 174 +#define ESCHER_ShpInst_TextCanDown 175 #define ESCHER_ShpInst_FlowChartAlternateProcess 176 #define ESCHER_ShpInst_FlowChartOffpageConnector 177 -#define ESCHER_ShpInst_Callout90 178 -#define ESCHER_ShpInst_AccentCallout90 179 -#define ESCHER_ShpInst_BorderCallout90 180 -#define ESCHER_ShpInst_AccentBorderCallout90 181 -#define ESCHER_ShpInst_LeftRightUpArrow 182 -#define ESCHER_ShpInst_Sun 183 -#define ESCHER_ShpInst_Moon 184 -#define ESCHER_ShpInst_BracketPair 185 -#define ESCHER_ShpInst_BracePair 186 -#define ESCHER_ShpInst_Seal4 187 -#define ESCHER_ShpInst_DoubleWave 188 -#define ESCHER_ShpInst_ActionButtonBlank 189 -#define ESCHER_ShpInst_ActionButtonHome 190 -#define ESCHER_ShpInst_ActionButtonHelp 191 -#define ESCHER_ShpInst_ActionButtonInformation 192 -#define ESCHER_ShpInst_ActionButtonForwardNext 193 -#define ESCHER_ShpInst_ActionButtonBackPrevious 194 -#define ESCHER_ShpInst_ActionButtonEnd 195 -#define ESCHER_ShpInst_ActionButtonBeginning 196 -#define ESCHER_ShpInst_ActionButtonReturn 197 -#define ESCHER_ShpInst_ActionButtonDocument 198 -#define ESCHER_ShpInst_ActionButtonSound 199 -#define ESCHER_ShpInst_ActionButtonMovie 200 -#define ESCHER_ShpInst_HostControl 201 -#define ESCHER_ShpInst_TextBox 202 - -#define ESCHER_ShpInst_COUNT 203 -#define ESCHER_ShpInst_Max 0x0FFF -#define ESCHER_ShpInst_Nil ESCHER_ShpInst_Max +#define ESCHER_ShpInst_Callout90 178 +#define ESCHER_ShpInst_AccentCallout90 179 +#define ESCHER_ShpInst_BorderCallout90 180 +#define ESCHER_ShpInst_AccentBorderCallout90 181 +#define ESCHER_ShpInst_LeftRightUpArrow 182 +#define ESCHER_ShpInst_Sun 183 +#define ESCHER_ShpInst_Moon 184 +#define ESCHER_ShpInst_BracketPair 185 +#define ESCHER_ShpInst_BracePair 186 +#define ESCHER_ShpInst_Seal4 187 +#define ESCHER_ShpInst_DoubleWave 188 +#define ESCHER_ShpInst_ActionButtonBlank 189 +#define ESCHER_ShpInst_ActionButtonHome 190 +#define ESCHER_ShpInst_ActionButtonHelp 191 +#define ESCHER_ShpInst_ActionButtonInformation 192 +#define ESCHER_ShpInst_ActionButtonForwardNext 193 +#define ESCHER_ShpInst_ActionButtonBackPrevious 194 +#define ESCHER_ShpInst_ActionButtonEnd 195 +#define ESCHER_ShpInst_ActionButtonBeginning 196 +#define ESCHER_ShpInst_ActionButtonReturn 197 +#define ESCHER_ShpInst_ActionButtonDocument 198 +#define ESCHER_ShpInst_ActionButtonSound 199 +#define ESCHER_ShpInst_ActionButtonMovie 200 +#define ESCHER_ShpInst_HostControl 201 +#define ESCHER_ShpInst_TextBox 202 +#define ESCHER_ShpInst_COUNT 203 +#define ESCHER_ShpInst_Max 0x0FFF +#define ESCHER_ShpInst_Nil ESCHER_ShpInst_Max enum ESCHER_BlibType { // GEL provided types... @@ -356,11 +355,11 @@ enum ESCHER_wMode // enum ESCHER_ShapePath { - ESCHER_ShapeLines, // A line of straight segments - ESCHER_ShapeLinesClosed, // A closed polygonal object - ESCHER_ShapeCurves, // A line of Bezier curve segments - ESCHER_ShapeCurvesClosed, // A closed shape with curved edges - ESCHER_ShapeComplex // pSegmentInfo must be non-empty + ESCHER_ShapeLines, // A line of straight segments + ESCHER_ShapeLinesClosed, // A closed polygonal object + ESCHER_ShapeCurves, // A line of Bezier curve segments + ESCHER_ShapeCurvesClosed, // A closed shape with curved edges + ESCHER_ShapeComplex // pSegmentInfo must be non-empty }; @@ -376,18 +375,18 @@ enum ESCHER_WrapMode // enum ESCHER_bwMode { - ESCHER_bwColor, // only used for predefined shades - ESCHER_bwAutomatic, // depends on object type - ESCHER_bwGrayScale, // shades of gray only - ESCHER_bwLightGrayScale, // shades of light gray only - ESCHER_bwInverseGray, // dark gray mapped to light gray, etc. - ESCHER_bwGrayOutline, // pure gray and white - ESCHER_bwBlackTextLine, // black text and lines, all else grayscale - ESCHER_bwHighContrast, // pure black and white mode (no grays) - ESCHER_bwBlack, // solid black - ESCHER_bwWhite, // solid white - ESCHER_bwDontShow, // object not drawn - ESCHER_bwNumModes // number of Black and white modes + ESCHER_bwColor, // only used for predefined shades + ESCHER_bwAutomatic, // depends on object type + ESCHER_bwGrayScale, // shades of gray only + ESCHER_bwLightGrayScale, // shades of light gray only + ESCHER_bwInverseGray, // dark gray mapped to light gray, etc. + ESCHER_bwGrayOutline, // pure gray and white + ESCHER_bwBlackTextLine, // black text and lines, all else grayscale + ESCHER_bwHighContrast, // pure black and white mode (no grays) + ESCHER_bwBlack, // solid black + ESCHER_bwWhite, // solid white + ESCHER_bwDontShow, // object not drawn + ESCHER_bwNumModes // number of Black and white modes }; @@ -444,10 +443,10 @@ enum ESCHER_txDir // Callout Type enum ESCHER_spcot { - ESCHER_spcotRightAngle = 1, - ESCHER_spcotOneSegment = 2, - ESCHER_spcotTwoSegment = 3, - ESCHER_spcotThreeSegment = 4 + ESCHER_spcotRightAngle = 1, + ESCHER_spcotOneSegment = 2, + ESCHER_spcotTwoSegment = 3, + ESCHER_spcotThreeSegment= 4 }; // Callout Angle @@ -473,30 +472,25 @@ enum ESCHER_spcod // FontWork alignment enum ESCHER_GeoTextAlign { - ESCHER_AlignTextStretch, /* Stretch each line of text to fit width. */ - ESCHER_AlignTextCenter, /* Center text on width. */ - ESCHER_AlignTextLeft, /* Left justify. */ - ESCHER_AlignTextRight, /* Right justify. */ - ESCHER_AlignTextLetterJust, /* Spread letters out to fit width. */ - ESCHER_AlignTextWordJust, /* Spread words out to fit width. */ - ESCHER_AlignTextInvalid /* Invalid */ + ESCHER_AlignTextStretch, // Stretch each line of text to fit width. + ESCHER_AlignTextCenter, // Center text on width. + ESCHER_AlignTextLeft, // Left justify. + ESCHER_AlignTextRight, // Right justify. + ESCHER_AlignTextLetterJust, // Spread letters out to fit width. + ESCHER_AlignTextWordJust, // Spread words out to fit width. + ESCHER_AlignTextInvalid // Invalid }; // flags for pictures enum ESCHER_BlipFlags { ESCHER_BlipFlagDefault = 0, - ESCHER_BlipFlagComment = 0, // Blip name is a comment - ESCHER_BlipFlagFile, // Blip name is a file name - ESCHER_BlipFlagURL, // Blip name is a full URL - ESCHER_BlipFlagType = 3, // Mask to extract type + ESCHER_BlipFlagComment = 0, // Blip name is a comment + ESCHER_BlipFlagFile, // Blip name is a file name + ESCHER_BlipFlagURL, // Blip name is a full URL + ESCHER_BlipFlagType = 3, // Mask to extract type /* Or the following flags with any of the above. */ - ESCHER_BlipFlagDontSave = 4, // A "dont" is the depression in the metal - // body work of an automobile caused when a - // cyclist violently thrusts his or her nose - // at it, thus a DontSave is another name for - // a cycle lane. - ESCHER_BlipFlagDoNotSave = 4, // For those who prefer English + ESCHER_BlipFlagDoNotSave = 4, ESCHER_BlipFlagLinkToFile = 8 }; @@ -530,20 +524,20 @@ enum ESCHER_ShadowType // - the type of a (length) measurement enum ESCHER_dzType { - ESCHER_dzTypeMin = 0, - ESCHER_dzTypeDefault = 0, // Default size, ignore the values - ESCHER_dzTypeA = 1, // Values are in EMUs - ESCHER_dzTypeV = 2, // Values are in pixels - ESCHER_dzTypeShape = 3, // Values are 16.16 fractions of shape size - ESCHER_dzTypeFixedAspect = 4, // Aspect ratio is fixed - ESCHER_dzTypeAFixed = 5, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixed = 6, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio + ESCHER_dzTypeMin = 0, + ESCHER_dzTypeDefault = 0, // Default size, ignore the values + ESCHER_dzTypeA = 1, // Values are in EMUs + ESCHER_dzTypeV = 2, // Values are in pixels + ESCHER_dzTypeShape = 3, // Values are 16.16 fractions of shape size + ESCHER_dzTypeFixedAspect = 4, // Aspect ratio is fixed + ESCHER_dzTypeAFixed = 5, // EMUs, fixed aspect ratio + ESCHER_dzTypeVFixed = 6, // Pixels, fixed aspect ratio + ESCHER_dzTypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio ESCHER_dzTypeFixedAspectEnlarge= 8, // Aspect ratio is fixed, favor larger size - ESCHER_dzTypeAFixedBig = 9, // EMUs, fixed aspect ratio - ESCHER_dzTypeVFixedBig = 10, // Pixels, fixed aspect ratio - ESCHER_dzTypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio - ESCHER_dzTypeMax = 11 + ESCHER_dzTypeAFixedBig = 9, // EMUs, fixed aspect ratio + ESCHER_dzTypeVFixedBig = 10, // Pixels, fixed aspect ratio + ESCHER_dzTypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio + ESCHER_dzTypeMax = 11 }; // how to interpret the colors in a shaded fill. @@ -571,36 +565,36 @@ enum ESCHER_ShadeType // compound line style enum ESCHER_LineStyle { - ESCHER_LineSimple, // Single line (of width lineWidth) - ESCHER_LineDouble, // Double lines of equal width - ESCHER_LineThickThin, // Double lines, one thick, one thin - ESCHER_LineThinThick, // Double lines, reverse order - ESCHER_LineTriple // Three lines, thin, thick, thin + ESCHER_LineSimple, // Single line (of width lineWidth) + ESCHER_LineDouble, // Double lines of equal width + ESCHER_LineThickThin, // Double lines, one thick, one thin + ESCHER_LineThinThick, // Double lines, reverse order + ESCHER_LineTriple // Three lines, thin, thick, thin }; // how to "fill" the line contour enum ESCHER_LineType { - ESCHER_lineSolidType, // Fill with a solid color - ESCHER_linePattern, // Fill with a pattern (bitmap) - ESCHER_lineTexture, // A texture (pattern with its own color map) - ESCHER_linePicture // Center a picture in the shape + ESCHER_lineSolidType, // Fill with a solid color + ESCHER_linePattern, // Fill with a pattern (bitmap) + ESCHER_lineTexture, // A texture (pattern with its own color map) + ESCHER_linePicture // Center a picture in the shape }; // dashed line style enum ESCHER_LineDashing { - ESCHER_LineSolid, // Solid (continuous) pen - ESCHER_LineDashSys, // PS_DASH system dash style - ESCHER_LineDotSys, // PS_DOT system dash style - ESCHER_LineDashDotSys, // PS_DASHDOT system dash style - ESCHER_LineDashDotDotSys, // PS_DASHDOTDOT system dash style - ESCHER_LineDotGEL, // square dot style - ESCHER_LineDashGEL, // dash style - ESCHER_LineLongDashGEL, // long dash style - ESCHER_LineDashDotGEL, // dash short dash - ESCHER_LineLongDashDotGEL, // long dash short dash - ESCHER_LineLongDashDotDotGEL // long dash short dash short dash + ESCHER_LineSolid, // Solid (continuous) pen + ESCHER_LineDashSys, // PS_DASH system dash style + ESCHER_LineDotSys, // PS_DOT system dash style + ESCHER_LineDashDotSys, // PS_DASHDOT system dash style + ESCHER_LineDashDotDotSys, // PS_DASHDOTDOT system dash style + ESCHER_LineDotGEL, // square dot style + ESCHER_LineDashGEL, // dash style + ESCHER_LineLongDashGEL, // long dash style + ESCHER_LineDashDotGEL, // dash short dash + ESCHER_LineLongDashDotGEL, // long dash short dash + ESCHER_LineLongDashDotDotGEL // long dash short dash short dash }; // line end effect @@ -645,6 +639,7 @@ enum ESCHER_LineCap ESCHER_LineEndCapSquare, // Square protrudes by half line width ESCHER_LineEndCapFlat // Line ends at end point }; + // Shape Properties // 1pt = 12700 EMU (English Metric Units) // 1pt = 20 Twip = 20/1440" = 1/72" @@ -1000,6 +995,7 @@ struct MSFILTER_DLLPUBLIC EscherExContainer EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0 ); ~EscherExContainer(); }; + struct MSFILTER_DLLPUBLIC EscherExAtom { sal_uInt32 nContPos; @@ -1011,15 +1007,17 @@ struct MSFILTER_DLLPUBLIC EscherExAtom struct EscherPropertyValueHelper { - static sal_Bool GetPropertyValue( - ::com::sun::star::uno::Any& rAny, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName, - sal_Bool bTestPropertyAvailability = sal_False ); - - static ::com::sun::star::beans::PropertyState GetPropertyState( - const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &, - const String& rPropertyName ); + static sal_Bool GetPropertyValue( + ::com::sun::star::uno::Any& rAny, + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, + const String& rPropertyName, + sal_Bool bTestPropertyAvailability = sal_False + ); + + static ::com::sun::star::beans::PropertyState GetPropertyState( + const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &, + const String& rPropertyName + ); }; // --------------------------------------------------------------------------------------------- @@ -1028,7 +1026,8 @@ struct EscherPersistEntry { sal_uInt32 mnID; sal_uInt32 mnOffset; - EscherPersistEntry( sal_uInt32 nId, sal_uInt32 nOffset ) { mnID = nId; mnOffset = nOffset; }; + + EscherPersistEntry( sal_uInt32 nId, sal_uInt32 nOffset ) { mnID = nId; mnOffset = nOffset; }; }; @@ -1037,37 +1036,41 @@ struct EscherPersistEntry class EscherBlibEntry { - friend class EscherGraphicProvider; - friend class EscherEx; + friend class EscherGraphicProvider; + friend class EscherEx; - protected: +protected: - sal_uInt32 mnIdentifier[ 4 ]; - sal_uInt32 mnPictureOffset; // offset auf die grafik im PictureStreams - sal_uInt32 mnSize; // size of real graphic + sal_uInt32 mnIdentifier[ 4 ]; + sal_uInt32 mnPictureOffset; // offset auf die grafik im PictureStreams + sal_uInt32 mnSize; // size of real graphic - sal_uInt32 mnRefCount; // !! reference count - sal_uInt32 mnSizeExtra; // !! size of preceding header + sal_uInt32 mnRefCount; // !! reference count + sal_uInt32 mnSizeExtra; // !! size of preceding header - ESCHER_BlibType meBlibType; + ESCHER_BlibType meBlibType; - Size maPrefSize; - MapMode maPrefMapMode; + Size maPrefSize; + MapMode maPrefMapMode; - sal_Bool mbIsEmpty; - sal_Bool mbIsNativeGraphicPossible; + sal_Bool mbIsEmpty; + sal_Bool mbIsNativeGraphicPossible; - public: +public: - EscherBlibEntry( sal_uInt32 nPictureOffset, const GraphicObject& rObj, - const ByteString& rId, const GraphicAttr* pAttr = NULL ); + EscherBlibEntry( + sal_uInt32 nPictureOffset, + const GraphicObject& rObj, + const ByteString& rId, + const GraphicAttr* pAttr = NULL + ); - ~EscherBlibEntry(); + ~EscherBlibEntry(); - void WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 ); - sal_Bool IsEmpty() const { return mbIsEmpty; }; + void WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 ); + sal_Bool IsEmpty() const { return mbIsEmpty; }; - sal_Bool operator==( const EscherBlibEntry& ) const; + sal_Bool operator==( const EscherBlibEntry& ) const; }; // --------------------------------------------------------------------------------------------- @@ -1077,55 +1080,72 @@ class EscherBlibEntry class MSFILTER_DLLPUBLIC EscherGraphicProvider { - sal_uInt32 mnFlags; + sal_uInt32 mnFlags; - EscherBlibEntry** mpBlibEntrys; - sal_uInt32 mnBlibBufSize; - sal_uInt32 mnBlibEntrys; + EscherBlibEntry** mpBlibEntrys; + sal_uInt32 mnBlibBufSize; + sal_uInt32 mnBlibEntrys; - protected : +protected: - sal_uInt32 ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry ); + sal_uInt32 ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry ); - public : +public: - sal_uInt32 GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const; - void WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL ); - sal_Bool WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId, - sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0); - sal_uInt32 GetBlibID( SvStream& rPicOutStream, const ByteString& rGraphicId, const Rectangle& rBoundRect, - const com::sun::star::awt::Rectangle* pVisArea = NULL, const GraphicAttr* pGrafikAttr = NULL ); - sal_Bool HasGraphics() const { return mnBlibEntrys != 0; }; + sal_uInt32 GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const; + void WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL ); + sal_Bool WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId, + sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0); + sal_uInt32 GetBlibID( + SvStream& rPicOutStream, + const ByteString& rGraphicId, + const Rectangle& rBoundRect, + const com::sun::star::awt::Rectangle* pVisArea = NULL, + const GraphicAttr* pGrafikAttr = NULL + ); + sal_Bool HasGraphics() const { return mnBlibEntrys != 0; }; - void SetNewBlipStreamOffset( sal_Int32 nOffset ); + void SetNewBlipStreamOffset( sal_Int32 nOffset ); - sal_Bool GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode ); + sal_Bool GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode ); - EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES ); - ~EscherGraphicProvider(); + EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES ); + ~EscherGraphicProvider(); }; +class EscherShapeListEntry; +typedef ::std::vector< EscherShapeListEntry* > EscherShapeList_impl; +typedef ::std::vector< EscherConnectorListEntry* > EscherConnectorList_impl; + class MSFILTER_DLLPUBLIC EscherSolverContainer { - List maShapeList; - List maConnectorList; + EscherShapeList_impl maShapeList; + EscherConnectorList_impl maConnectorList; public: - sal_uInt32 GetShapeId( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape ) const; + sal_uInt32 GetShapeId( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape + ) const; + + void AddShape( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, + sal_uInt32 nId + ); - void AddShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, sal_uInt32 nId ); - void AddConnector( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rA, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, - const ::com::sun::star::awt::Point& rB, - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB ); + void AddConnector( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, + const ::com::sun::star::awt::Point& rA, + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, + const ::com::sun::star::awt::Point& rB, + ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB + ); - void WriteSolver( SvStream& ); + void WriteSolver( SvStream& ); - EscherSolverContainer(){}; - ~EscherSolverContainer(); + EscherSolverContainer(){}; + ~EscherSolverContainer(); }; // --------------------------------------------------------------------------------------------- @@ -1149,129 +1169,197 @@ typedef std::vector< EscherPropSortStruct > EscherProperties; class MSFILTER_DLLPUBLIC EscherPropertyContainer { - EscherGraphicProvider* pGraphicProvider; - SvStream* pPicOutStrm; - Rectangle* pShapeBoundRect; - - EscherPropSortStruct* pSortStruct; - - sal_uInt32 nSortCount; - sal_uInt32 nSortBufSize; - sal_uInt32 nCountCount; - sal_uInt32 nCountSize; - - sal_Bool bHasComplexData; - sal_Bool bSuppressRotation; - - - sal_uInt32 ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True ); - void ImplCreateGraphicAttributes( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nBlibId, sal_Bool bCreateCroppingAttributes ); - sal_Bool ImplCreateEmbeddedBmp( const ByteString& rUniqueId ); - void ImplInit(); - - public : + EscherGraphicProvider* pGraphicProvider; + SvStream* pPicOutStrm; + Rectangle* pShapeBoundRect; - EscherPropertyContainer(); - EscherPropertyContainer( - EscherGraphicProvider& rGraphicProvider, // the PropertyContainer needs to know - SvStream* pPicOutStrm, // the GraphicProvider to be able to write - Rectangle& rShapeBoundRect ); // FillBitmaps or GraphicObjects. - // under some cirumstances the ShapeBoundRect is adjusted - // this will happen when rotated GraphicObjects - // are saved to PowerPoint - ~EscherPropertyContainer(); + EscherPropSortStruct* pSortStruct; - void AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString ); + sal_uInt32 nSortCount; + sal_uInt32 nSortBufSize; + sal_uInt32 nCountCount; + sal_uInt32 nCountSize; - void AddOpt( sal_uInt16 nPropertyID, sal_uInt32 nPropValue, - sal_Bool bBlib = sal_False ); + sal_Bool bHasComplexData; + sal_Bool bSuppressRotation; - void AddOpt( sal_uInt16 nPropertyID, sal_Bool bBlib, sal_uInt32 nPropValue, - sal_uInt8* pProp, sal_uInt32 nPropSize ); - sal_Bool GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const; + sal_uInt32 ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True ); + void ImplCreateGraphicAttributes( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, + sal_uInt32 nBlibId, + sal_Bool bCreateCroppingAttributes + ); + sal_Bool ImplCreateEmbeddedBmp( const ByteString& rUniqueId ); + void ImplInit(); - sal_Bool GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const; - - EscherProperties GetOpts() const; - - void Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT ); - - sal_Bool CreateShapeProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ); - sal_Bool CreateOLEGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject ); +public: - /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */ - sal_Bool CreateEmbeddedBitmapProperties( const ::rtl::OUString& rBitmapUrl, - ::com::sun::star::drawing::BitmapMode eBitmapMode ); - /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */ - sal_Bool CreateEmbeddedHatchProperties( const ::com::sun::star::drawing::Hatch& rHatch, - const Color& rBackColor, bool bFillBackground ); + EscherPropertyContainer(); + EscherPropertyContainer( + EscherGraphicProvider& rGraphicProvider, // the PropertyContainer needs to know + SvStream* pPicOutStrm, // the GraphicProvider to be able to write + Rectangle& rShapeBoundRect // FillBitmaps or GraphicObjects. + ); // under some circumstances the ShapeBoundRect + // is adjusted this will happen when rotated + // GraphicObjects are saved to PowerPoint + ~EscherPropertyContainer(); + + void AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString ); + + void AddOpt( + sal_uInt16 nPropertyID, + sal_uInt32 nPropValue, + sal_Bool bBlib = sal_False + ); + + void AddOpt( + sal_uInt16 nPropertyID, + sal_Bool bBlib, + sal_uInt32 nPropValue, + sal_uInt8* pProp, + sal_uInt32 nPropSize + ); + + sal_Bool GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const; + + sal_Bool GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const; + + EscherProperties GetOpts() const; + + void Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT ); + + sal_Bool CreateShapeProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape + ); + sal_Bool CreateOLEGraphicProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject + ); + + /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */ + sal_Bool CreateEmbeddedBitmapProperties( + const ::rtl::OUString& rBitmapUrl, + ::com::sun::star::drawing::BitmapMode eBitmapMode + ); + /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */ + sal_Bool CreateEmbeddedHatchProperties( + const ::com::sun::star::drawing::Hatch& rHatch, + const Color& rBackColor, + bool bFillBackground + ); // the GraphicProperties will only be created if a GraphicProvider and PicOutStrm is known // DR: #99897# if no GraphicProvider is present, a complex ESCHER_Prop_fillBlip // will be created, containing the BLIP directly (e.g. for Excel charts). - sal_Bool CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - const String& rSource, const sal_Bool bCreateFillBitmap, const sal_Bool bCreateCroppingAttributes = sal_False, - const sal_Bool bFillBitmapModeAllowed = sal_True ); - - sal_Bool CreatePolygonProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - sal_uInt32 nFlags, sal_Bool bBezier, ::com::sun::star::awt::Rectangle& rGeoRect, Polygon* pPolygon = NULL ); - - static sal_uInt32 GetGradientColor( const ::com::sun::star::awt::Gradient* pGradient, sal_uInt32 nStartColor ); - - void CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient ); - void CreateGradientProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); - void CreateLineProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); - void CreateTextProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_uInt32 nText, - const sal_Bool bIsCustomShape = sal_False, const sal_Bool bIsTextFrame = sal_True ); - - sal_Bool CreateConnectorProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, - EscherSolverContainer& rSolver, ::com::sun::star::awt::Rectangle& rGeoRect, - sal_uInt16& rShapeType, sal_uInt16& rShapeFlags ); - - // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last. - // It activ only when at least a FillStyle or LineStyle is set. - sal_Bool CreateShadowProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ); + sal_Bool CreateGraphicProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, + const String& rSource, + const sal_Bool bCreateFillBitmap, + const sal_Bool bCreateCroppingAttributes = sal_False, + const sal_Bool bFillBitmapModeAllowed = sal_True + ); + + sal_Bool CreatePolygonProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, + sal_uInt32 nFlags, + sal_Bool bBezier, + ::com::sun::star::awt::Rectangle& rGeoRect, + Polygon* pPolygon = NULL + ); + + static sal_uInt32 GetGradientColor( + const ::com::sun::star::awt::Gradient* pGradient, + sal_uInt32 nStartColor + ); + + void CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient ); + void CreateGradientProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & + ); + void CreateLineProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, + sal_Bool bEdge + ); + void CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge ); + void CreateTextProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, + sal_uInt32 nText, + const sal_Bool bIsCustomShape = sal_False, + const sal_Bool bIsTextFrame = sal_True + ); + + sal_Bool CreateConnectorProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, + EscherSolverContainer& rSolver, + ::com::sun::star::awt::Rectangle& rGeoRect, + sal_uInt16& rShapeType, + sal_uInt16& rShapeFlags + ); + + // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last. + // It activ only when at least a FillStyle or LineStyle is set. + sal_Bool CreateShadowProperties( + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & + ); // creates all necessary CustomShape properties, this includes also Text-, Shadow-, Fill-, and LineProperties - void CreateCustomShapeProperties( const MSO_SPT eShapeType, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & ); - sal_Bool IsFontWork() const; - - // helper functions which are also used by the escher import - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ); - static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Any& rSource ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags ); - static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags, rtl::OUString& rShapeType ); + void CreateCustomShapeProperties( + const MSO_SPT eShapeType, + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & + ); + sal_Bool IsFontWork() const; + + // helper functions which are also used by the escher import + static PolyPolygon GetPolyPolygon( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape + ); + static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Any& rSource ); + static MSO_SPT GetCustomShapeType( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, + sal_uInt32& nMirrorFlags + ); + static MSO_SPT GetCustomShapeType( + const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, + sal_uInt32& nMirrorFlags, + rtl::OUString& rShapeType + ); // helper functions which are also used in ooxml export - static sal_Bool GetLineArrow( const sal_Bool bLineStart, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth ); - static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape ); - static void LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted ); - static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue ); + static sal_Bool GetLineArrow( + const sal_Bool bLineStart, + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, + ESCHER_LineEnd& reLineEnd, + sal_Int32& rnArrowLength, + sal_Int32& rnArrowWidth + ); + static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape ); + static void LookForPolarHandles( + const MSO_SPT eShapeType, + sal_Int32& nAdjustmentsWhichNeedsToBeConverted + ); + static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue ); }; // --------------------------------------------------------------------------------------------- +typedef ::std::vector< EscherPersistEntry* > EscherPersistTable_impl; + class MSFILTER_DLLPUBLIC EscherPersistTable { - public: - List maPersistTable; +public: + EscherPersistTable_impl maPersistTable; - sal_Bool PtIsID( sal_uInt32 nID ); - void PtInsert( sal_uInt32 nID, sal_uInt32 nOfs ); - sal_uInt32 PtDelete( sal_uInt32 nID ); - sal_uInt32 PtGetOffsetByID( sal_uInt32 nID ); - sal_uInt32 PtReplace( sal_uInt32 nID, sal_uInt32 nOfs ); - sal_uInt32 PtReplaceOrInsert( sal_uInt32 nID, sal_uInt32 nOfs ); - sal_uInt32 PtGetCount() const { return maPersistTable.Count(); }; + sal_Bool PtIsID( sal_uInt32 nID ); + void PtInsert( sal_uInt32 nID, sal_uInt32 nOfs ); + sal_uInt32 PtDelete( sal_uInt32 nID ); + sal_uInt32 PtGetOffsetByID( sal_uInt32 nID ); + sal_uInt32 PtReplace( sal_uInt32 nID, sal_uInt32 nOfs ); + sal_uInt32 PtReplaceOrInsert( sal_uInt32 nID, sal_uInt32 nOfs ); + sal_uInt32 PtGetCount() const { return maPersistTable.size(); }; EscherPersistTable(); - virtual ~EscherPersistTable(); + virtual ~EscherPersistTable(); }; // --------------------------------------------------------------------------------------------- @@ -1311,6 +1399,7 @@ class InteractionInfo bool mbHasInteraction; std::auto_ptr<SvMemoryStream> mpHyperlinkRecord; InteractionInfo(); + public: InteractionInfo( SvMemoryStream* pStream, bool bInteraction ) : mbHasInteraction( bInteraction ) { @@ -1489,8 +1578,7 @@ public: /** Returns the graphic provider from the global object that has been passed to the constructor. */ - inline EscherGraphicProvider& - GetGraphicProvider() { return *mxGlobal; } + inline EscherGraphicProvider& GetGraphicProvider() { return *mxGlobal; } /** Called if a picture shall be written and no picture stream is set at class ImplEscherExSdr. @@ -1522,19 +1610,19 @@ public: current stream position are always expanded to include the inserted data. */ - void InsertAtCurrentPos( sal_uInt32 nBytes, bool bExpandEndOfAtom ); + void InsertAtCurrentPos( sal_uInt32 nBytes, bool bExpandEndOfAtom ); - void InsertPersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ); // Es wird nicht geprueft, ob sich jener schluessel schon in der PersistantTable befindet - void ReplacePersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ); - sal_uInt32 GetPersistOffset( sal_uInt32 nKey ); - sal_Bool SeekToPersistOffset( sal_uInt32 nKey ); - virtual sal_Bool InsertAtPersistOffset( sal_uInt32 nKey, sal_uInt32 nValue );// nValue wird im Stream an entrsprechender Stelle eingefuegt(overwrite modus), ohne dass sich die + void InsertPersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ); // Es wird nicht geprueft, ob sich jener schluessel schon in der PersistantTable befindet + void ReplacePersistOffset( sal_uInt32 nKey, sal_uInt32 nOffset ); + sal_uInt32 GetPersistOffset( sal_uInt32 nKey ); + sal_Bool SeekToPersistOffset( sal_uInt32 nKey ); + virtual sal_Bool InsertAtPersistOffset( sal_uInt32 nKey, sal_uInt32 nValue );// nValue wird im Stream an entrsprechender Stelle eingefuegt(overwrite modus), ohne dass sich die // aktuelle StreamPosition aendert - SvStream& GetStream() const { return *mpOutStrm; } - sal_uLong GetStreamPos() const { return mpOutStrm->Tell(); } + SvStream& GetStream() const { return *mpOutStrm; } + sal_uLong GetStreamPos() const { return mpOutStrm->Tell(); } - virtual sal_Bool SeekBehindRecHeader( sal_uInt16 nRecType ); // der stream muss vor einem gueltigen Record Header oder Atom stehen + virtual sal_Bool SeekBehindRecHeader( sal_uInt16 nRecType ); // der stream muss vor einem gueltigen Record Header oder Atom stehen // features beim erzeugen folgender Container: // @@ -1543,42 +1631,42 @@ public: // ESCHER_SpgrContainer: // ESCHER_SpContainer: - virtual void OpenContainer( sal_uInt16 nEscherContainer, int nRecInstance = 0 ); - virtual void CloseContainer(); + virtual void OpenContainer( sal_uInt16 nEscherContainer, int nRecInstance = 0 ); + virtual void CloseContainer(); - virtual void BeginAtom(); - virtual void EndAtom( sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddAtom( sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); - virtual void AddChildAnchor( const Rectangle& rRectangle ); - virtual void AddClientAnchor( const Rectangle& rRectangle ); + virtual void BeginAtom(); + virtual void EndAtom( sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); + virtual void AddAtom( sal_uInt32 nAtomSitze, sal_uInt16 nRecType, int nRecVersion = 0, int nRecInstance = 0 ); + virtual void AddChildAnchor( const Rectangle& rRectangle ); + virtual void AddClientAnchor( const Rectangle& rRectangle ); - virtual sal_uInt32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 ); - sal_uInt32 EnterGroup( const Rectangle* pBoundRect = NULL ); - sal_uInt32 GetGroupLevel() const { return mnGroupLevel; }; - virtual sal_Bool SetGroupSnapRect( sal_uInt32 nGroupLevel, const Rectangle& rRect ); - virtual sal_Bool SetGroupLogicRect( sal_uInt32 nGroupLevel, const Rectangle& rRect ); - virtual void LeaveGroup(); + virtual sal_uInt32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 ); + sal_uInt32 EnterGroup( const Rectangle* pBoundRect = NULL ); + sal_uInt32 GetGroupLevel() const { return mnGroupLevel; }; + virtual sal_Bool SetGroupSnapRect( sal_uInt32 nGroupLevel, const Rectangle& rRect ); + virtual sal_Bool SetGroupLogicRect( sal_uInt32 nGroupLevel, const Rectangle& rRect ); + virtual void LeaveGroup(); // ein ESCHER_Sp wird geschrieben ( Ein ESCHER_DgContainer muss dazu geoeffnet sein !!) - virtual void AddShape( sal_uInt32 nShpInstance, sal_uInt32 nFlagIds, sal_uInt32 nShapeID = 0 ); + virtual void AddShape( sal_uInt32 nShpInstance, sal_uInt32 nFlagIds, sal_uInt32 nShapeID = 0 ); - virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect ); + virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect ); - sal_uInt32 GetColor( const sal_uInt32 nColor, sal_Bool bSwap = sal_True ); - sal_uInt32 GetColor( const Color& rColor, sal_Bool bSwap = sal_True ); + sal_uInt32 GetColor( const sal_uInt32 nColor, sal_Bool bSwap = sal_True ); + sal_uInt32 GetColor( const Color& rColor, sal_Bool bSwap = sal_True ); // ...Sdr... implemented in eschesdo.cxx - void AddSdrPage( const SdrPage& rPage ); - void AddUnoShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes ); + void AddSdrPage( const SdrPage& rPage ); + void AddUnoShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes ); /// returns the ShapeID - sal_uInt32 AddSdrObject( const SdrObject& rObj ); + sal_uInt32 AddSdrObject( const SdrObject& rObj ); /// If objects are written through AddSdrObject the /// SolverContainer has to be written, and maybe some /// maintenance to be done. - void EndSdrObjectPage(); + void EndSdrObjectPage(); /// Called before a shape is written, application supplies /// ClientRecords. May set AppData::bDontWriteShape so the diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx index 81b4403f3938..e51791ec5b6c 100644 --- a/filter/inc/filter/msfilter/msdffimp.hxx +++ b/filter/inc/filter/msfilter/msdffimp.hxx @@ -44,6 +44,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <filter/msfilter/msfilterdllapi.h> #include <sot/storage.hxx> +#include <vector> class Graphic; class SvStream; @@ -66,7 +67,7 @@ class MSFILTER_DLLPUBLIC DffRecordHeader { public: - sal_uInt8 nRecVer; // may be DFF_PSFLAG_CONTAINER + sal_uInt8 nRecVer; // may be DFF_PSFLAG_CONTAINER sal_uInt16 nRecInstance; sal_uInt16 nImpVerInst; sal_uInt16 nRecType; @@ -74,12 +75,23 @@ public: sal_uLong nFilePos; public: DffRecordHeader() : nRecVer(0), nRecInstance(0), nImpVerInst(0), nRecType(0), nRecLen(0), nFilePos(0) {} - bool IsContainer() const { return nRecVer == DFF_PSFLAG_CONTAINER; } - sal_uLong GetRecBegFilePos() const { return nFilePos; } - sal_uLong GetRecEndFilePos() const { return nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen; } - void SeekToEndOfRecord(SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen ); } - void SeekToContent( SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE ); } - void SeekToBegOfRecord(SvStream& rIn) const { rIn.Seek( nFilePos ); } + bool IsContainer() const { return nRecVer == DFF_PSFLAG_CONTAINER; } + sal_uLong GetRecBegFilePos() const { return nFilePos; } + sal_uLong GetRecEndFilePos() const { return nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen; } + bool SeekToEndOfRecord(SvStream& rIn) const + { + sal_Size nPos = nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen; + return nPos == rIn.Seek(nPos); + } + bool SeekToContent(SvStream& rIn) const + { + sal_Size nPos = nFilePos + DFF_COMMON_RECORD_HEADER_SIZE; + return nPos == rIn.Seek(nPos); + } + bool SeekToBegOfRecord(SvStream& rIn) const + { + return nFilePos == rIn.Seek(nFilePos); + } MSFILTER_DLLPUBLIC friend SvStream& operator>>(SvStream& rIn, DffRecordHeader& rRec); @@ -97,28 +109,31 @@ class SvxMSDffManager; class MSFILTER_DLLPUBLIC DffPropSet : public Table { - protected : +protected: - sal_uInt32 mpContents[ 1024 ]; - DffPropFlags mpFlags[ 1024 ]; + sal_uInt32 mpContents[ 1024 ]; + DffPropFlags mpFlags[ 1024 ]; - public : +public: - DffPropSet( sal_Bool bInitialize = sal_False ){ if ( bInitialize ) - memset( mpFlags, 0, 0x400 * sizeof( DffPropFlags ) ); }; - - inline sal_Bool IsProperty( sal_uInt32 nRecType ) const { return ( mpFlags[ nRecType & 0x3ff ].bSet ); }; - sal_Bool IsHardAttribute( sal_uInt32 nId ) const; - sal_uInt32 GetPropertyValue( sal_uInt32 nId, sal_uInt32 nDefault = 0 ) const; - /** Returns a boolean property by its real identifier. */ - bool GetPropertyBool( sal_uInt32 nId, bool bDefault = false ) const; - /** Returns a string property. */ - ::rtl::OUString GetPropertyString( sal_uInt32 nId, SvStream& rStrm ) const; - void SetPropertyValue( sal_uInt32 nId, sal_uInt32 nValue ) const; - sal_Bool SeekToContent( sal_uInt32 nRecType, SvStream& rSt ) const; - void Merge( DffPropSet& rMasterPropSet ) const; - void InitializePropSet() const; - friend SvStream& operator>>( SvStream& rIn, DffPropSet& rPropSet ); + DffPropSet( sal_Bool bInitialize = sal_False ) + { + if ( bInitialize ) + memset( mpFlags, 0, 0x400 * sizeof( DffPropFlags ) ); + }; + + inline sal_Bool IsProperty( sal_uInt32 nRecType ) const { return ( mpFlags[ nRecType & 0x3ff ].bSet ); }; + sal_Bool IsHardAttribute( sal_uInt32 nId ) const; + sal_uInt32 GetPropertyValue( sal_uInt32 nId, sal_uInt32 nDefault = 0 ) const; + /** Returns a boolean property by its real identifier. */ + bool GetPropertyBool( sal_uInt32 nId, bool bDefault = false ) const; + /** Returns a string property. */ + ::rtl::OUString GetPropertyString( sal_uInt32 nId, SvStream& rStrm ) const; + void SetPropertyValue( sal_uInt32 nId, sal_uInt32 nValue ) const; + sal_Bool SeekToContent( sal_uInt32 nRecType, SvStream& rSt ) const; + void Merge( DffPropSet& rMasterPropSet ) const; + void InitializePropSet() const; + friend SvStream& operator>>( SvStream& rIn, DffPropSet& rPropSet ); }; class SfxItemSet; @@ -215,17 +230,20 @@ struct SvxMSDffConnectorRule sal_uInt32 nSpFlagsA; // SpFlags of shape A ( the original mirror flags must be known when solving the Solver Container ) sal_uInt32 nSpFlagsB; // SpFlags of shape A - SdrObject* pAObj; // pPtr of object ( corresponding to shape A ) - SdrObject* pBObj; // " - SdrObject* pCObj; // " of connector object + SdrObject* pAObj; // pPtr of object ( corresponding to shape A ) + SdrObject* pBObj; // " + SdrObject* pCObj; // " of connector object SvxMSDffConnectorRule() : nSpFlagsA( 0 ), nSpFlagsB( 0 ), pAObj( NULL ), pBObj( NULL ), pCObj( NULL ) {}; friend SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rAtom ); }; + +typedef ::std::vector< SvxMSDffConnectorRule* > SvxMSDffConnectorRuleList; + struct MSFILTER_DLLPUBLIC SvxMSDffSolverContainer { - List aCList; + SvxMSDffConnectorRuleList aCList; SvxMSDffSolverContainer(); ~SvxMSDffSolverContainer(); @@ -258,11 +276,11 @@ struct MSFILTER_DLLPUBLIC SvxMSDffImportRec { static const int RELTO_DEFAULT = 2; - SdrObject* pObj; - Polygon* pWrapPolygon; - char* pClientAnchorBuffer; + SdrObject* pObj; + Polygon* pWrapPolygon; + char* pClientAnchorBuffer; sal_uInt32 nClientAnchorLen; - char* pClientDataBuffer; + char* pClientDataBuffer; sal_uInt32 nClientDataLen; sal_uInt32 nXAlign; sal_uInt32 *pXRelTo; @@ -270,24 +288,24 @@ struct MSFILTER_DLLPUBLIC SvxMSDffImportRec sal_uInt32 *pYRelTo; sal_uInt32 nLayoutInTableCell; sal_uInt32 nFlags; - long nTextRotationAngle; - long nDxTextLeft; // Abstand der Textbox vom umgebenden Shape - long nDyTextTop; - long nDxTextRight; - long nDyTextBottom; - long nDxWrapDistLeft; - long nDyWrapDistTop; - long nDxWrapDistRight; - long nDyWrapDistBottom; - long nCropFromTop; - long nCropFromBottom; - long nCropFromLeft; - long nCropFromRight; - MSDffTxId aTextId; // Kennungen fuer Textboxen + long nTextRotationAngle; + long nDxTextLeft; // Abstand der Textbox vom umgebenden Shape + long nDyTextTop; + long nDxTextRight; + long nDyTextBottom; + long nDxWrapDistLeft; + long nDyWrapDistTop; + long nDxWrapDistRight; + long nDyWrapDistBottom; + long nCropFromTop; + long nCropFromBottom; + long nCropFromLeft; + long nCropFromRight; + MSDffTxId aTextId; // Kennungen fuer Textboxen sal_uLong nNextShapeId; // fuer verlinkte Textboxen sal_uLong nShapeId; - MSO_SPT eShapeType; - MSO_LineStyle eLineStyle; // Umrandungs-Arten + MSO_SPT eShapeType; + MSO_LineStyle eLineStyle; // Umrandungs-Arten MSO_LineDashing eLineDashing; sal_Bool bDrawHell :1; sal_Bool bHidden :1; @@ -303,11 +321,13 @@ struct MSFILTER_DLLPUBLIC SvxMSDffImportRec ~SvxMSDffImportRec(); sal_Bool operator==( const SvxMSDffImportRec& rEntry ) const { return nShapeId == rEntry.nShapeId; } + sal_Bool operator<( const SvxMSDffImportRec& rEntry ) const { return nShapeId < rEntry.nShapeId; } private: SvxMSDffImportRec &operator=(const SvxMSDffImportRec&); }; + typedef SvxMSDffImportRec* MSDffImportRec_Ptr; // Liste aller SvxMSDffImportRec fuer eine Gruppe @@ -345,8 +365,8 @@ struct DffObjData Rectangle aBoundRect; Rectangle aChildAnchor; - sal_uInt32 nShapeId; - sal_uInt32 nSpFlags; + sal_uInt32 nShapeId; + sal_uInt32 nSpFlags; MSO_SPT eShapeType; sal_Bool bShapeType : 1; @@ -379,15 +399,15 @@ struct DffObjData struct DffRecordList { - sal_uInt32 nCount; - sal_uInt32 nCurrent; - DffRecordList* pPrev; - DffRecordList* pNext; + sal_uInt32 nCount; + sal_uInt32 nCurrent; + DffRecordList* pPrev; + DffRecordList* pNext; - DffRecordHeader mHd[ DFF_RECORD_MANAGER_BUF_SIZE ]; + DffRecordHeader mHd[ DFF_RECORD_MANAGER_BUF_SIZE ]; - DffRecordList( DffRecordList* pList ); - ~DffRecordList(); + DffRecordList( DffRecordList* pList ); + ~DffRecordList(); }; enum DffSeekToContentMode @@ -406,7 +426,7 @@ class MSFILTER_DLLPUBLIC DffRecordManager : public DffRecordList void Clear(); void Consume( SvStream& rIn, sal_Bool bAppend = sal_False, sal_uInt32 nStOfs = 0 ); - sal_Bool SeekToContent( SvStream& rIn, sal_uInt16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING ); + sal_Bool SeekToContent( SvStream& rIn, sal_uInt16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING ); DffRecordHeader* GetRecordHeader( sal_uInt16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING ); DffRecordManager(); @@ -437,23 +457,23 @@ class MSFILTER_DLLPUBLIC SvxMSDffManager : public DffPropertyReader SvxMSDffBLIPInfos* pBLIPInfos; SvxMSDffShapeInfos* pShapeInfos; SvxMSDffShapeOrders* pShapeOrders; - sal_uLong nDefaultFontHeight; - long nOffsDgg; - sal_uInt16 nBLIPCount; - sal_uInt16 nShapeCount; + sal_uLong nDefaultFontHeight; + sal_uInt32 nOffsDgg; + sal_uInt16 nBLIPCount; + sal_uInt16 nShapeCount; sal_uInt32 nGroupShapeFlags; void CheckTxBxStoryChain(); - void GetFidclData( long nOffsDgg ); + void GetFidclData(sal_uInt32 nOffsDgg); protected : - String maBaseURL; - sal_uInt32 mnCurMaxShapeId; // we need this information to - sal_uInt32 mnDrawingsSaved; // access the right drawing - sal_uInt32 mnIdClusters; // while only knowing the shapeid - FIDCL* mpFidcls; - Table maDgOffsetTable; // array of fileoffsets + String maBaseURL; + sal_uInt32 mnCurMaxShapeId; // we need this information to + sal_uInt32 mnDrawingsSaved; // access the right drawing + sal_uInt32 mnIdClusters; // while only knowing the shapeid + FIDCL* mpFidcls; + Table maDgOffsetTable; // array of fileoffsets friend class DffPropertyReader; @@ -470,16 +490,16 @@ protected : long nEmuDiv; long nPntMul; long nPntDiv; - bool bNeedMap; - sal_uInt32 nSvxMSDffSettings; - sal_uInt32 nSvxMSDffOLEConvFlags; + bool bNeedMap; + sal_uInt32 nSvxMSDffSettings; + sal_uInt32 nSvxMSDffOLEConvFlags; /** stores a reference to an imported SdrObject with its shape id if it has one */ SvxMSDffShapeIdContainer maShapeIdContainer; - void GetCtrlData( long nOffsDgg ); + void GetCtrlData(sal_uInt32 nOffsDgg); void GetDrawingGroupContainerData( SvStream& rSt, sal_uLong nLenDgg ); // #156763# @@ -522,9 +542,9 @@ protected : /* folgende Methoden sind zum Excel-Import zu ueberschreiben: */ - virtual sal_Bool ProcessClientAnchor(SvStream& rStData, sal_uLong nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const; + virtual sal_Bool ProcessClientAnchor(SvStream& rStData, sal_uInt32 nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const; virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& ); - virtual sal_Bool ProcessClientData( SvStream& rStData, sal_uLong nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const; + virtual sal_Bool ProcessClientData( SvStream& rStData, sal_uInt32 nDatLen, char*& rpBuff, sal_uInt32& rBuffLen ) const; virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj = NULL); virtual sal_uLong Calc_nBLIPPos( sal_uLong nOrgVal, sal_uLong nStreamPos ) const; virtual bool GetColorFromPalette(sal_uInt16 nNum, Color& rColor) const; @@ -601,7 +621,7 @@ public: */ SvxMSDffManager( SvStream& rStCtrl, const String& rBaseURL, - long nOffsDgg, + sal_uInt32 nOffsDgg, SvStream* pStData, SdrModel* pSdrModel_ = 0, long nApplicationScale = 0, @@ -613,7 +633,7 @@ public: // in PPT werden die Parameter DGGContainerOffset und PicStream // mit Hilfe einer Init Routine Uebergeben. SvxMSDffManager( SvStream& rStCtrl, const String& rBaseURL, MSFilterTracer* pTracer ); - void InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nSvxMSDffOLEConvFlags ); + void InitSvxMSDffManager(sal_uInt32 nOffsDgg_, SvStream* pStData_, sal_uInt32 nSvxMSDffOLEConvFlags); void SetDgContainer( SvStream& rSt ); virtual ~SvxMSDffManager(); @@ -729,16 +749,16 @@ public: return pShapeOrders; } - void StoreShapeOrder(sal_uLong nId, - sal_uLong nTxBx, + void StoreShapeOrder(sal_uLong nId, + sal_uLong nTxBx, SdrObject* pObject, SwFlyFrmFmt* pFly = 0, short nHdFtSection = 0) const; - void ExchangeInShapeOrder(SdrObject* pOldObject, - sal_uLong nTxBx, - SwFlyFrmFmt* pFly, - SdrObject* pObject) const; + void ExchangeInShapeOrder(SdrObject* pOldObject, + sal_uLong nTxBx, + SwFlyFrmFmt* pFly, + SdrObject* pObject) const; void RemoveFromShapeOrder( SdrObject* pObject ) const; @@ -762,9 +782,10 @@ public: static sal_Bool SetPropValue( const ::com::sun::star::uno::Any& rAny, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, - const String& rPropertyName, - sal_Bool bTestPropertyAvailability = sal_False ); + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet, + const String& rPropertyName, + sal_Bool bTestPropertyAvailability = sal_False + ); void insertShapeId( sal_Int32 nShapeId, SdrObject* pShape ); void removeShapeId( SdrObject* pShape ); diff --git a/filter/inc/filter/msfilter/msocximex.hxx b/filter/inc/filter/msfilter/msocximex.hxx index 5e1915d0406f..31b3732dbfdd 100644 --- a/filter/inc/filter/msfilter/msocximex.hxx +++ b/filter/inc/filter/msfilter/msocximex.hxx @@ -96,18 +96,12 @@ public: virtual ~SvxMSConvertOCXControls(); //Reads a control from the given storage, constructed shape in pShapeRef - sal_Bool ReadOCXStream( SotStorageRef& rSrc1, + virtual sal_Bool ReadOCXStream( SotStorageRef& rSrc1, com::sun::star::uno::Reference< com::sun::star::drawing::XShape > *pShapeRef=0, - sal_Bool bFloatingCtrl=sal_False ); + sal_Bool bFloatingCtrl=sal_False ) = 0; - //Excel has a nasty kludged mechanism for this, read - //the comments in the source to follow it - sal_Bool ReadOCXExcelKludgeStream(SotStorageStreamRef& rSrc1, - com::sun::star::uno::Reference < - com::sun::star::drawing::XShape > *pShapeRef,sal_Bool bFloatingCtrl); - //Writes the given Uno Control into the given storage diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx index d9f52434b101..57ab915cec71 100644 --- a/filter/inc/filter/msfilter/svdfppt.hxx +++ b/filter/inc/filter/msfilter/svdfppt.hxx @@ -633,6 +633,7 @@ public: sal_uInt32* pTableArry, SvxMSDffSolverContainer* ); + virtual bool ReadFormControl( com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& rxInStrm, com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > & rFormComp ) const = 0; }; struct PPTTextCharacterStyleAtomInterpreter @@ -1258,13 +1259,20 @@ class PPTConvertOCXControls : public SvxMSConvertOCXControls { virtual const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > & GetDrawPage(); PptPageKind ePageKind; + const SdrPowerPointImport* mpPPTImporter; + com::sun::star::uno::Reference< com::sun::star::io::XInputStream > mxInStrm; public : - PPTConvertOCXControls( SfxObjectShell* pDSh, PptPageKind ePKind ) : + PPTConvertOCXControls( const SdrPowerPointImport* pPPTImporter, com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& rxInStrm, SfxObjectShell* pDSh, PptPageKind ePKind ) : SvxMSConvertOCXControls ( pDSh, NULL ), - ePageKind ( ePKind ) + ePageKind ( ePKind ), + mpPPTImporter ( pPPTImporter ), + mxInStrm ( rxInStrm ) {}; - + virtual sal_Bool ReadOCXStream( SotStorageRef& rSrc1, + com::sun::star::uno::Reference< + com::sun::star::drawing::XShape > *pShapeRef=0, + sal_Bool bFloatingCtrl=sal_False ); virtual sal_Bool InsertControl( const com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > &rFComp, const com::sun::star::awt::Size& rSize, |