diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2010-03-03 14:30:52 +0100 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2010-03-03 14:30:52 +0100 |
commit | 2b800723513199616bb04c6bb377b685c4bde218 (patch) | |
tree | 3a4ad853ceee92080f80bd1c5311cebe571217c5 | |
parent | bcdb702df7ee74fc1bb4adf9372985d7036ec457 (diff) | |
parent | 64539591dfde88ee3b482a267f99a222af5015c2 (diff) |
CWS-TOOLING: integrate CWS chartshapes
Notes
Notes:
split repo tag: impress_ooo/DEV300_m74
split repo tag: impress_ooo/DEV300_m75
-rw-r--r-- | sd/source/filter/eppt/eppt.cxx | 4 | ||||
-rw-r--r-- | sd/source/filter/eppt/epptso.cxx | 20 | ||||
-rw-r--r-- | sd/source/filter/eppt/escherex.cxx | 82 | ||||
-rw-r--r-- | sd/source/filter/eppt/escherex.hxx | 7 |
4 files changed, 23 insertions, 90 deletions
diff --git a/sd/source/filter/eppt/eppt.cxx b/sd/source/filter/eppt/eppt.cxx index d0603ea4d5d4..2a40c8707866 100644 --- a/sd/source/filter/eppt/eppt.cxx +++ b/sd/source/filter/eppt/eppt.cxx @@ -205,7 +205,7 @@ PPTWriter::PPTWriter( SvStorageRef& rSvStorage, if ( !mpPicStrm ) mpPicStrm = mrStg->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Pictures" ) ) ); - mpPptEscherEx = new PptEscherEx( *mpStrm, mnDrawings ); + mpPptEscherEx = new PptEscherEx( *mpStrm ); if ( !ImplGetStyleSheets() ) return; @@ -1694,7 +1694,7 @@ void PPTWriter::ImplWriteBackground( ::com::sun::star::uno::Reference< ::com::su mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xc00 ); // Flags: Connector | Background | HasSpt Point aEmptyPoint = Point(); Rectangle aRect( aEmptyPoint, Size( 28000, 21000 ) ); - EscherPropertyContainer aPropOpt( (EscherGraphicProvider&)*mpPptEscherEx, mpPicStrm, aRect ); + EscherPropertyContainer aPropOpt( mpPptEscherEx->GetGraphicProvider(), mpPicStrm, aRect ); aPropOpt.AddOpt( ESCHER_Prop_fillType, ESCHER_FillSolid ); ::com::sun::star::drawing::FillStyle aFS( ::com::sun::star::drawing::FillStyle_NONE ); if ( ImplGetPropertyValue( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillStyle" ) ) ) ) diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index cda15e75831d..f07245d1ff31 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -754,7 +754,7 @@ sal_Bool PPTWriter::ImplCloseDocument() nBytesToInsert += ImplDocumentListContainer( NULL ); // nBytes im Stream einfuegen, und abhaengige Container anpassen - mpPptEscherEx->InsertAtCurrentPos( nBytesToInsert, TRUE ); + mpPptEscherEx->InsertAtCurrentPos( nBytesToInsert, false ); // CREATE HYPERLINK CONTAINER if ( nExEmbedSize ) @@ -1506,7 +1506,7 @@ void PPTWriter::ImplWritePortions( SvStream& rOut, TextObj& rTextObj ) { Point aEmptyPoint = Point(); Rectangle aRect( aEmptyPoint, Size( 28000, 21000 ) ); - EscherPropertyContainer aPropOpt( (EscherGraphicProvider&)*mpPptEscherEx, mpPicStrm, aRect ); + EscherPropertyContainer aPropOpt( mpPptEscherEx->GetGraphicProvider(), mpPicStrm, aRect ); aPropOpt.CreateGradientProperties( mXPropSet ); aPropOpt.GetOpt( ESCHER_Prop_fillColor, nBackgroundColor ); } @@ -1529,7 +1529,7 @@ void PPTWriter::ImplWritePortions( SvStream& rOut, TextObj& rTextObj ) { Point aEmptyPoint = Point(); Rectangle aRect( aEmptyPoint, Size( 28000, 21000 ) ); - EscherPropertyContainer aPropOpt( (EscherGraphicProvider&)*mpPptEscherEx, mpPicStrm, aRect ); + EscherPropertyContainer aPropOpt( mpPptEscherEx->GetGraphicProvider(), mpPicStrm, aRect ); aPropOpt.CreateGradientProperties( mXBackgroundPropSet ); aPropOpt.GetOpt( ESCHER_Prop_fillColor, nBackgroundColor ); } @@ -4135,7 +4135,7 @@ sal_Bool PPTWriter::ImplCreatePresentationPlaceholder( const sal_Bool bMasterPag if ( bRet && bMasterPage ) { mpPptEscherEx->OpenContainer( ESCHER_SpContainer ); - sal_uInt32 nPresShapeID = mpPptEscherEx->GetShapeID(); + sal_uInt32 nPresShapeID = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xa00, nPresShapeID );// Flags: HaveAnchor | HasSpt EscherPropertyContainer aPropOpt; aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x50001 ); @@ -4191,7 +4191,7 @@ sal_Bool PPTWriter::ImplCreatePresentationPlaceholder( const sal_Bool bMasterPag void PPTWriter::ImplCreateShape( sal_uInt32 nType, sal_uInt32 nFlags, EscherSolverContainer& rSolver ) { - sal_uInt32 nId = mpPptEscherEx->GetShapeID(); + sal_uInt32 nId = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( nType, nFlags, nId ); rSolver.AddShape( mXShape, nId ); } @@ -4279,7 +4279,7 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a const ::com::sun::star::awt::Size aSize100thmm( mXShape->getSize() ); const ::com::sun::star::awt::Point aPoint100thmm( mXShape->getPosition() ); Rectangle aRect100thmm( Point( aPoint100thmm.X, aPoint100thmm.Y ), Size( aSize100thmm.Width, aSize100thmm.Height ) ); - EscherPropertyContainer aPropOpt( (EscherGraphicProvider&)*mpPptEscherEx, mpPicStrm, aRect100thmm ); + EscherPropertyContainer aPropOpt( mpPptEscherEx->GetGraphicProvider(), mpPicStrm, aRect100thmm ); if ( bGroup ) { @@ -4837,7 +4837,7 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a sal_uInt16 nChar; mpPptEscherEx->OpenContainer( ESCHER_SpContainer ); - mnShapeMasterTitle = mpPptEscherEx->GetShapeID(); + mnShapeMasterTitle = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xa00, mnShapeMasterTitle );// Flags: HaveAnchor | HasSpt EscherPropertyContainer aPropertyOptions; aPropertyOptions.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x50001 ); @@ -4931,7 +4931,7 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a if ( mnTextSize ) { mpPptEscherEx->OpenContainer( ESCHER_SpContainer ); - mnShapeMasterBody = mpPptEscherEx->GetShapeID(); + mnShapeMasterBody = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xa00, mnShapeMasterBody ); // Flags: HaveAnchor | HasSpt EscherPropertyContainer aPropOpt2; aPropOpt2.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x50001 ); @@ -5540,7 +5540,7 @@ void PPTWriter::ImplCreateCellBorder( const CellBorder* pCellBorder, sal_Int32 n mpPptEscherEx->OpenContainer( ESCHER_SpContainer ); EscherPropertyContainer aPropOptSp; - sal_uInt32 nId = mpPptEscherEx->GetShapeID(); + sal_uInt32 nId = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( ESCHER_ShpInst_Line, 0xa02, nId ); aPropOptSp.AddOpt( ESCHER_Prop_shapePath, ESCHER_ShapeComplex ); aPropOptSp.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0xa0008 ); @@ -5586,7 +5586,7 @@ void PPTWriter::ImplCreateTable( uno::Reference< drawing::XShape >& rXShape, Esc << (INT32)maRect.Right() << (INT32)maRect.Bottom(); - sal_uInt32 nShapeId = mpPptEscherEx->GetShapeID(); + sal_uInt32 nShapeId = mpPptEscherEx->GenerateShapeId(); mpPptEscherEx->AddShape( ESCHER_ShpInst_Min, 0x201, nShapeId ); // Flags: Group | Patriarch aSolverContainer.AddShape( rXShape, nShapeId ); EscherPropertyContainer aPropOpt2; diff --git a/sd/source/filter/eppt/escherex.cxx b/sd/source/filter/eppt/escherex.cxx index 1f91b4947026..fbb94de67ae7 100644 --- a/sd/source/filter/eppt/escherex.cxx +++ b/sd/source/filter/eppt/escherex.cxx @@ -37,14 +37,10 @@ // --------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------- -PptEscherEx::PptEscherEx( SvStream& rOutStrm, UINT32 nDrawings ) : - EscherEx ( rOutStrm, nDrawings ) +PptEscherEx::PptEscherEx( SvStream& rOutStrm ) : + EscherEx( EscherExGlobalRef( new EscherExGlobal ), rOutStrm ) { - mnFIDCLs = nDrawings; mnCurrentDg = 0; - mnCurrentShapeID = 0; - mnTotalShapesDgg = 0; - mnCurrentShapeMaximumID = 0; } // --------------------------------------------------------------------------------------------- @@ -69,8 +65,8 @@ sal_uInt32 PptEscherEx::ImplDggContainerSize() { UINT32 nSize; - nSize = ImplDggAtomSize(); - nSize += GetBlibStoreContainerSize(); + nSize = mxGlobal->GetDggAtomSize(); + nSize += mxGlobal->GetBlibStoreContainerSize(); nSize += ImplOptAtomSize(); nSize += ImplSplitMenuColorsAtomSize(); @@ -85,8 +81,9 @@ void PptEscherEx::ImplWriteDggContainer( SvStream& rSt ) rSt << (sal_uInt32)( 0xf | ( ESCHER_DggContainer << 16 ) ) << (sal_uInt32)( nSize - 8 ); - ImplWriteDggAtom( rSt ); - WriteBlibStoreContainer( rSt ); + mxGlobal->SetDggContainer(); + mxGlobal->WriteDggAtom( rSt ); + mxGlobal->WriteBlibStoreContainer( rSt ); ImplWriteOptAtom( rSt ); ImplWriteSplitMenuColorsAtom( rSt ); } @@ -94,29 +91,6 @@ void PptEscherEx::ImplWriteDggContainer( SvStream& rSt ) // --------------------------------------------------------------------------------------------- -sal_uInt32 PptEscherEx::ImplDggAtomSize() -{ - return maFIDCLs.Tell() + 24; -} - -void PptEscherEx::ImplWriteDggAtom( SvStream& rSt ) -{ - sal_uInt32 nSize = ImplDggAtomSize(); - if ( nSize ) - { - rSt << (sal_uInt32)( ESCHER_Dgg << 16 ) - << (sal_uInt32)( nSize - 8 ) - << mnCurrentShapeID - << (sal_uInt32)( mnFIDCLs + 1 ) - << mnTotalShapesDgg - << mnDrawings; - - rSt.Write( maFIDCLs.GetData(), nSize - 24 ); - } -} - -// --------------------------------------------------------------------------------------------- - #define ESCHER_OPT_COUNT 6 sal_uInt32 PptEscherEx::ImplOptAtomSize() @@ -191,11 +165,7 @@ void PptEscherEx::OpenContainer( UINT16 n_EscherContainer, int nRecInstance ) if ( !mbEscherDg ) { mbEscherDg = TRUE; - mnCurrentDg++; - mnTotalShapesDg = 0; - mnTotalShapeIdUsedDg = 0; - mnCurrentShapeID = ( mnCurrentShapeMaximumID &~0x3ff ) + 0x400; // eine neue Seite bekommt immer eine neue ShapeId die ein vielfaches von 1024 ist, - // damit ist erste aktuelle Shape ID 0x400 + mnCurrentDg = mxGlobal->GenerateDrawingId(); AddAtom( 8, ESCHER_Dg, 0, mnCurrentDg ); PtReplaceOrInsert( ESCHER_Persist_Dg | mnCurrentDg, mpOutStrm->Tell() ); *mpOutStrm << (UINT32)0 // The number of shapes in this drawing @@ -246,39 +216,7 @@ void PptEscherEx::CloseContainer() { mbEscherDg = FALSE; if ( DoSeek( ESCHER_Persist_Dg | mnCurrentDg ) ) - { - // shapeanzahl des drawings setzen - mnTotalShapesDgg += mnTotalShapesDg; - *mpOutStrm << mnTotalShapesDg << mnCurrentShapeMaximumID; - - if ( !mnTotalShapesDg ) - { - maFIDCLs << (UINT32)0 - << (UINT32)0; - } - else - { - if ( mnTotalShapeIdUsedDg ) - { - UINT32 i, nFIDCL = ( ( mnTotalShapeIdUsedDg - 1 ) / 0x400 ); - if ( nFIDCL ) - mnFIDCLs += nFIDCL; - for ( i = 0; i <= nFIDCL; i++ ) - { - maFIDCLs << mnCurrentDg; // drawing number - if ( i < nFIDCL ) - maFIDCLs << 0x400; - else - { - UINT32 nShapesLeft = mnTotalShapeIdUsedDg % 0x400; - if ( !nShapesLeft ) - nShapesLeft = 0x400; // shape count in this IDCL - maFIDCLs << (UINT32)nShapesLeft; - } - } - } - } - } + *mpOutStrm << mxGlobal->GetDrawingShapeCount( mnCurrentDg ) << mxGlobal->GetLastShapeId( mnCurrentDg ); } } break; @@ -326,7 +264,7 @@ sal_uInt32 PptEscherEx::EnterGroup( Rectangle* pBoundRect, SvMemoryStream* pClie << (INT32)aRect.Right() << (INT32)aRect.Bottom(); - nShapeId = GetShapeID(); + nShapeId = GenerateShapeId(); if ( !mnGroupLevel ) AddShape( ESCHER_ShpInst_Min, 5, nShapeId ); // Flags: Group | Patriarch else diff --git a/sd/source/filter/eppt/escherex.hxx b/sd/source/filter/eppt/escherex.hxx index 5b8370857430..739ef6300d1c 100644 --- a/sd/source/filter/eppt/escherex.hxx +++ b/sd/source/filter/eppt/escherex.hxx @@ -48,14 +48,9 @@ enum PPT_TextHeader class PptEscherEx : public EscherEx { - SvMemoryStream maFIDCLs; - sal_uInt32 ImplDggContainerSize(); void ImplWriteDggContainer( SvStream& rSt ); - sal_uInt32 ImplDggAtomSize(); - void ImplWriteDggAtom( SvStream& rSt ); - sal_uInt32 ImplOptAtomSize(); void ImplWriteOptAtom( SvStream& rSt ); @@ -64,7 +59,7 @@ class PptEscherEx : public EscherEx public: - PptEscherEx( SvStream& rOut, UINT32 nDrawings ); + PptEscherEx( SvStream& rOut ); ~PptEscherEx(); void OpenContainer( UINT16 n_EscherContainer, int nRecInstance = 0 ); |