diff options
author | Armin Le Grand <alg@apache.org> | 2014-10-06 13:59:33 +0000 |
---|---|---|
committer | Armin Le Grand <alg@apache.org> | 2014-10-06 13:59:33 +0000 |
commit | 36cc153d32bc262c2285d333a1369f6ca36a7fba (patch) | |
tree | 605b99676e97ded6d0035e4ddd0621244445a7f6 | |
parent | 79ff7fc76c74a012933230d6f3c37977eccc6398 (diff) |
i125163 Corrected FillStyle handling for tables in Writer
Notes
-rw-r--r-- | sw/inc/format.hxx | 4 | ||||
-rw-r--r-- | sw/inc/frmfmt.hxx | 2 | ||||
-rw-r--r-- | sw/inc/swtblfmt.hxx | 51 | ||||
-rw-r--r-- | sw/source/core/attr/format.cxx | 18 | ||||
-rw-r--r-- | sw/source/core/layout/atrfrm.cxx | 15 | ||||
-rw-r--r-- | sw/source/core/layout/paintfrm.cxx | 2 | ||||
-rw-r--r-- | sw/source/core/table/swtable.cxx | 66 |
7 files changed, 121 insertions, 37 deletions
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx index 360358c594bf..070a273e17e2 100644 --- a/sw/inc/format.hxx +++ b/sw/inc/format.hxx @@ -333,6 +333,10 @@ public: */ virtual sal_Bool IsShadowTransparent() const; + //UUUU decide if DrawingLayer FillAttributes are supported. If answering this with yes + // the full FillStyle ItemSet will be used to handle/visualize the element + virtual bool supportsFullDrawingLayerFillAttributeSet() const; + //UUUU Access to DrawingLayer FillAttributes in a preprocessed form for primitive usage virtual drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const; }; diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx index f5ce6ad7621e..39ecd23775fb 100644 --- a/sw/inc/frmfmt.hxx +++ b/sw/inc/frmfmt.hxx @@ -71,6 +71,8 @@ protected: public: TYPEINFO(); //Bereits in Basisklasse Client drin. + //UUUU + ~SwFrmFmt(); //Vernichtet alle Frms in aDepend (Frms werden per PTR_CAST erkannt). virtual void DelFrms(); diff --git a/sw/inc/swtblfmt.hxx b/sw/inc/swtblfmt.hxx index fe27009d3d9c..5bba53a3f679 100644 --- a/sw/inc/swtblfmt.hxx +++ b/sw/inc/swtblfmt.hxx @@ -32,18 +32,17 @@ class SW_DLLPUBLIC SwTableFmt : public SwFrmFmt friend class SwDoc; protected: - SwTableFmt( SwAttrPool& rPool, const sal_Char* pFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableSetRange ) - {} - SwTableFmt( SwAttrPool& rPool, const String &rFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableSetRange ) - {} - + //UUUU + SwTableFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm); + SwTableFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm); public: TYPEINFO(); //Bereits in Basisklasse Client drin. + //UUUU + virtual ~SwTableFmt(); + + //UUUU + virtual bool supportsFullDrawingLayerFillAttributeSet() const; DECL_FIXEDMEMPOOL_NEWDEL(SwTableFmt) }; @@ -53,17 +52,17 @@ class SwTableLineFmt : public SwFrmFmt friend class SwDoc; protected: - SwTableLineFmt( SwAttrPool& rPool, const sal_Char* pFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableLineSetRange ) - {} - SwTableLineFmt( SwAttrPool& rPool, const String &rFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableLineSetRange ) - {} + //UUUU + SwTableLineFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm); + SwTableLineFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm); public: TYPEINFO(); //Bereits in Basisklasse Client drin. + //UUUU + virtual ~SwTableLineFmt(); + + //UUUU + virtual bool supportsFullDrawingLayerFillAttributeSet() const; DECL_FIXEDMEMPOOL_NEWDEL(SwTableLineFmt) }; @@ -73,20 +72,20 @@ class SW_DLLPUBLIC SwTableBoxFmt : public SwFrmFmt friend class SwDoc; protected: - SwTableBoxFmt( SwAttrPool& rPool, const sal_Char* pFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, pFmtNm, pDrvdFrm, RES_FRMFMT, aTableBoxSetRange ) - {} - SwTableBoxFmt( SwAttrPool& rPool, const String &rFmtNm, - SwFrmFmt *pDrvdFrm ) - : SwFrmFmt( rPool, rFmtNm, pDrvdFrm, RES_FRMFMT, aTableBoxSetRange ) - {} + //UUUU + SwTableBoxFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm); + SwTableBoxFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm); // zum Erkennen von Veraenderungen (haupts. TableBoxAttribute) - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNewValue ); + virtual void Modify(const SfxPoolItem* pOld,const SfxPoolItem* pNewValue); public: TYPEINFO(); //Bereits in Basisklasse Client drin. + //UUUU + virtual ~SwTableBoxFmt(); + + //UUUU + virtual bool supportsFullDrawingLayerFillAttributeSet() const; DECL_FIXEDMEMPOOL_NEWDEL(SwTableBoxFmt) }; diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx index 456d9d1a739f..6f67dd5210e6 100644 --- a/sw/source/core/attr/format.cxx +++ b/sw/source/core/attr/format.cxx @@ -436,7 +436,7 @@ sal_Bool SwFmt::SetDerivedFrom(SwFmt *pDerFrom) const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, sal_Bool bInParents ) const { - if(RES_BACKGROUND == nWhich && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if(RES_BACKGROUND == nWhich && supportsFullDrawingLayerFillAttributeSet()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] OSL_ENSURE(false, "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); @@ -456,7 +456,7 @@ const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, sal_Bool bInParents ) c SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, sal_Bool bSrchInParent, const SfxPoolItem **ppItem ) const { - if(RES_BACKGROUND == nWhich && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if(RES_BACKGROUND == nWhich && supportsFullDrawingLayerFillAttributeSet()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] OSL_ENSURE(false, "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); @@ -500,7 +500,7 @@ sal_Bool SwFmt::SetFmtAttr(const SfxPoolItem& rAttr ) sal_Bool bRet = sal_False; //UUUU - if(RES_BACKGROUND == rAttr.Which() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if(RES_BACKGROUND == rAttr.Which() && supportsFullDrawingLayerFillAttributeSet()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] OSL_ENSURE(false, "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); @@ -601,7 +601,7 @@ sal_Bool SwFmt::SetFmtAttr( const SfxItemSet& rSet ) } //UUUU FlyFrame PageStyle - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if(supportsFullDrawingLayerFillAttributeSet()) { const SfxPoolItem* pSource = 0; @@ -842,7 +842,7 @@ IDocumentChartDataProviderAccess* SwFmt::getIDocumentChartDataProviderAccess() { const SvxBrushItem& SwFmt::GetBackground(sal_Bool bInP) const { //UUUU FlyFrame PageStyle - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if(supportsFullDrawingLayerFillAttributeSet()) { //UUUU FALLBACKBREAKHERE should not be used; instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] OSL_ENSURE(false, "Do no longer use SvxBrushItem, instead use [XATTR_FILL_FIRST .. XATTR_FILL_LAST] FillAttributes (simple fallback is in place and used)"); @@ -860,6 +860,14 @@ const SvxBrushItem& SwFmt::GetBackground(sal_Bool bInP) const } //UUUU +bool SwFmt::supportsFullDrawingLayerFillAttributeSet() const +{ + // base definition - probably not completely correct, e.g. for Table FillStyles + //UUUU FlyFrame PageStyle + return (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()); +} + +//UUUU drawinglayer::attribute::SdrAllFillAttributesHelperPtr SwFmt::getSdrAllFillAttributesHelper() const { return drawinglayer::attribute::SdrAllFillAttributesHelperPtr(); diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index fa28d8c857a1..d86271386f32 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -2508,6 +2508,11 @@ SwFrmFmt::SwFrmFmt( { } +//UUUU +SwFrmFmt::~SwFrmFmt() +{ +} + void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { SwFmtHeader *pH = 0; @@ -2523,7 +2528,7 @@ void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) RES_FOOTER, sal_False, (const SfxPoolItem**)&pF ); //UUUU reset fill information - if(maFillAttributes.get() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if(maFillAttributes.get() && supportsFullDrawingLayerFillAttributeSet()) { SfxItemIter aIter(*((SwAttrSetChg*)pNew)->GetChgSet()); bool bReset(false); @@ -2542,7 +2547,7 @@ void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) else if(RES_FMT_CHG == nWhich) { //UUUU reset fill information on format change (e.g. style changed) - if(maFillAttributes.get() && (RES_FLYFRMFMT == Which() || RES_FRMFMT == Which())) + if(maFillAttributes.get() && supportsFullDrawingLayerFillAttributeSet()) { maFillAttributes.reset(); } @@ -3086,7 +3091,7 @@ const String SwFlyFrmFmt::GetObjDescription() const sal_Bool SwFlyFrmFmt::IsBackgroundTransparent() const { //UUUU - if((RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) && getSdrAllFillAttributesHelper()) + if(supportsFullDrawingLayerFillAttributeSet() && getSdrAllFillAttributesHelper()) { return getSdrAllFillAttributesHelper()->isTransparent(); } @@ -3130,7 +3135,7 @@ sal_Bool SwFlyFrmFmt::IsBackgroundTransparent() const sal_Bool SwFlyFrmFmt::IsBackgroundBrushInherited() const { //UUUU - if((RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) && getSdrAllFillAttributesHelper()) + if(supportsFullDrawingLayerFillAttributeSet() && getSdrAllFillAttributesHelper()) { return !getSdrAllFillAttributesHelper()->isUsed(); } @@ -3377,7 +3382,7 @@ SwFrmFmt* SwFrmFmt::GetCaptionFmt() const //UUUU drawinglayer::attribute::SdrAllFillAttributesHelperPtr SwFrmFmt::getSdrAllFillAttributesHelper() const { - if(RES_FLYFRMFMT == Which() || RES_FRMFMT == Which()) + if(supportsFullDrawingLayerFillAttributeSet()) { // create FillAttributes on demand if(!maFillAttributes.get()) diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 2cb2186e44ef..9ff50d065195 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -3665,7 +3665,7 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const { const SwFrmFmt* pSwFrmFmt = dynamic_cast< const SwFrmFmt* >(GetFmt()); - if(pSwFrmFmt && (RES_FLYFRMFMT == pSwFrmFmt->Which() || RES_FRMFMT == pSwFrmFmt->Which())) + if(pSwFrmFmt && pSwFrmFmt->supportsFullDrawingLayerFillAttributeSet()) { //UUUU check for transparency const drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes(pSwFrmFmt->getSdrAllFillAttributesHelper()); diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx index f1652f74f1dc..d395edbfd1ab 100644 --- a/sw/source/core/table/swtable.cxx +++ b/sw/source/core/table/swtable.cxx @@ -79,10 +79,76 @@ using namespace com::sun::star; TYPEINIT1( SwTable, SwClient ); TYPEINIT1( SwTableBox, SwClient ); TYPEINIT1( SwTableLine, SwClient ); + +//UUUU TYPEINIT1( SwTableFmt, SwFrmFmt ); + +SwTableFmt::SwTableFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,pFmtNm,pDrvdFrm,RES_FRMFMT,aTableSetRange) +{ +} + +SwTableFmt::SwTableFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,rFmtNm,pDrvdFrm,RES_FRMFMT,aTableSetRange) +{ +} + +SwTableFmt::~SwTableFmt() +{ +} + +//UUUU Do not support for table frames - may change later if support will be added +bool SwTableFmt::supportsFullDrawingLayerFillAttributeSet() const +{ + return false; +} + +//UUUU TYPEINIT1( SwTableBoxFmt, SwFrmFmt ); + +SwTableBoxFmt::SwTableBoxFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,pFmtNm,pDrvdFrm,RES_FRMFMT,aTableBoxSetRange) +{ +} + +SwTableBoxFmt::SwTableBoxFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,rFmtNm,pDrvdFrm,RES_FRMFMT,aTableBoxSetRange) +{ +} + +SwTableBoxFmt::~SwTableBoxFmt() +{ +} + +//UUUU Do not support for table frames - may change later if support will be added +bool SwTableBoxFmt::supportsFullDrawingLayerFillAttributeSet() const +{ + return false; +} + +//UUUU TYPEINIT1( SwTableLineFmt, SwFrmFmt ); +SwTableLineFmt::SwTableLineFmt(SwAttrPool& rPool,const sal_Char* pFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,pFmtNm,pDrvdFrm,RES_FRMFMT,aTableLineSetRange) +{ +} + +SwTableLineFmt::SwTableLineFmt(SwAttrPool& rPool,const String &rFmtNm, SwFrmFmt *pDrvdFrm) +: SwFrmFmt(rPool,rFmtNm,pDrvdFrm,RES_FRMFMT,aTableLineSetRange) +{ +} + +SwTableLineFmt::~SwTableLineFmt() +{ +} + +//UUUU Do not support for table frames - may change later if support will be added +bool SwTableLineFmt::supportsFullDrawingLayerFillAttributeSet() const +{ + return false; +} + SV_IMPL_PTRARR(SwTableLines,SwTableLine*); SV_IMPL_PTRARR(SwTableBoxes,SwTableBox*); SV_IMPL_PTRARR_SORT(SwTableSortBoxes,SwTableBoxPtr); |