Author: alg
Date: Tue Jan 14 21:43:43 2014
New Revision: 1558210
URL: http://svn.apache.org/r1558210
Log:
Rearranged helpers, added fallbacks as preparation for adaption of im/exporters
and as last rescue
Added:
openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx (with
props)
openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx
(with props)
Modified:
openoffice/branches/alg_writerframes/main/sw/Library_sw.mk
openoffice/branches/alg_writerframes/main/sw/inc/format.hxx
openoffice/branches/alg_writerframes/main/sw/inc/frmatr.hxx
openoffice/branches/alg_writerframes/main/sw/inc/frmfmt.hxx
openoffice/branches/alg_writerframes/main/sw/inc/unobrushitemhelper.hxx
openoffice/branches/alg_writerframes/main/sw/source/core/attr/format.cxx
openoffice/branches/alg_writerframes/main/sw/source/core/layout/atrfrm.cxx
openoffice/branches/alg_writerframes/main/sw/source/core/layout/paintfrm.cxx
openoffice/branches/alg_writerframes/main/sw/source/core/unocore/unobrushitemhelper.cxx
Modified: openoffice/branches/alg_writerframes/main/sw/Library_sw.mk
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/Library_sw.mk?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/Library_sw.mk (original)
+++ openoffice/branches/alg_writerframes/main/sw/Library_sw.mk Tue Jan 14
21:43:43 2014
@@ -281,6 +281,7 @@ $(eval $(call gb_Library_add_exception_o
sw/source/core/layout/anchoreddrawobject \
sw/source/core/layout/anchoredobject \
sw/source/core/layout/atrfrm \
+ sw/source/core/layout/fillattributes \
sw/source/core/layout/calcmove \
sw/source/core/layout/colfrm \
sw/source/core/layout/dbg_lay \
Added: openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx?rev=1558210&view=auto
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx (added)
+++ openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx Tue Jan
14 21:43:43 2014
@@ -0,0 +1,72 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#ifndef FILLATTRIBUTES_HXX
+#define FILLATTRIBUTES_HXX
+
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <boost/shared_ptr.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class FillAttributes
+{
+private:
+ basegfx::B2DRange
maLastPaintRange;
+ basegfx::B2DRange
maLastDefineRange;
+ boost::shared_ptr< drawinglayer::attribute::SdrFillAttribute >
maFillAttribute;
+ boost::shared_ptr< drawinglayer::attribute::FillGradientAttribute >
maFillGradientAttribute;
+ drawinglayer::primitive2d::Primitive2DSequence
maPrimitives;
+
+ void createPrimitive2DSequence(
+ const basegfx::B2DRange& rPaintRange,
+ const basegfx::B2DRange& rDefineRange);
+
+protected:
+public:
+ FillAttributes();
+ FillAttributes(const Color& rColor);
+ FillAttributes(const SfxItemSet& rSet);
+ ~FillAttributes();
+
+ bool isUsed() const;
+ bool hasSdrFillAttribute() const { return maFillAttribute.get(); }
+ bool hasFillGradientAttribute() const { return
maFillGradientAttribute.get(); }
+ bool isTransparent() const;
+
+ const drawinglayer::attribute::SdrFillAttribute& getFillAttribute() const;
+ const drawinglayer::attribute::FillGradientAttribute&
getFillGradientAttribute() const;
+ const drawinglayer::primitive2d::Primitive2DSequence&
getPrimitive2DSequence(
+ const basegfx::B2DRange& rPaintRange,
+ const basegfx::B2DRange& rDefineRange) const;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+typedef boost::shared_ptr< FillAttributes > FillAttributesPtr;
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // FILLATTRIBUTES_HXX
+
+// eof
Propchange: openoffice/branches/alg_writerframes/main/sw/inc/fillattributes.hxx
------------------------------------------------------------------------------
svn:executable = *
Modified: openoffice/branches/alg_writerframes/main/sw/inc/format.hxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/inc/format.hxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/inc/format.hxx (original)
+++ openoffice/branches/alg_writerframes/main/sw/inc/format.hxx Tue Jan 14
21:43:43 2014
@@ -29,6 +29,8 @@
#include <swatrset.hxx> // fuer SfxItemPool/-Set, Attr forward
decl.
#include <calbck.hxx> // fuer SwModify
#include <hintids.hxx>
+//UUUU
+#include <fillattributes.hxx>
class IDocumentSettingAccess;
class IDocumentDrawModelAccess;
@@ -89,10 +91,11 @@ public:
// Ist bInParents sal_False,
// wird nur in diesem Format nach dem Attribut gesucht.
- inline const SfxPoolItem& GetFmtAttr( sal_uInt16 nWhich,
- sal_Bool bInParents = sal_True )
const;
- inline SfxItemState GetItemState( sal_uInt16 nWhich, sal_Bool
bSrchInParent = sal_True,
- const
SfxPoolItem **ppItem = 0 ) const;
+ //UUUUinline
+ const SfxPoolItem& GetFmtAttr( sal_uInt16 nWhich, sal_Bool bInParents =
sal_True ) const;
+ //UUUUinline
+ SfxItemState GetItemState( sal_uInt16 nWhich, sal_Bool bSrchInParent =
sal_True, const SfxPoolItem **ppItem = 0 ) const;
+
// --> OD 2008-03-03 #refactorlists#
// methods renamed and made virtual
virtual sal_Bool SetFmtAttr( const SfxPoolItem& rAttr );
@@ -239,7 +242,10 @@ public:
inline const SwFmtVertOrient &GetVertOrient( sal_Bool = sal_True )
const;
inline const SvxBoxItem &GetBox( sal_Bool = sal_True ) const;
inline const SvxFmtKeepItem &GetKeep( sal_Bool = sal_True ) const;
- inline const SvxBrushItem &GetBackground( sal_Bool = sal_True )
const;
+
+ //UUUU
+ const SvxBrushItem& GetBackground( sal_Bool = sal_True ) const;
+
inline const SvxShadowItem &GetShadow( sal_Bool = sal_True )
const;
inline const SwFmtPageDesc &GetPageDesc( sal_Bool = sal_True )
const;
inline const SvxFmtBreakItem &GetBreak( sal_Bool = sal_True ) const;
@@ -323,15 +329,18 @@ public:
@return false, default implementation
*/
virtual sal_Bool IsShadowTransparent() const;
+
+ //UUUU
+ virtual FillAttributesPtr getFillAttributes() const;
};
// --------------- inline Implementierungen ------------------------
-inline const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich,
- sal_Bool bInParents ) const
-{
- return aSet.Get( nWhich, bInParents );
-}
+//UUUUinline const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich,
+//UUUU sal_Bool bInParents ) const
+//UUUU{
+//UUUU return aSet.Get( nWhich, bInParents );
+//UUUU}
inline void SwFmt::SetName( const sal_Char* pNewName,
sal_Bool bBroadcast )
@@ -340,11 +349,11 @@ inline void SwFmt::SetName( const sal_Ch
SetName( aTmp, bBroadcast );
}
-inline SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, sal_Bool
bSrchInParent,
-
const SfxPoolItem **ppItem ) const
-{
- return aSet.GetItemState( nWhich, bSrchInParent, ppItem );
-}
+//UUUUinline SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, sal_Bool
bSrchInParent,
+//UUUU
const SfxPoolItem **ppItem ) const
+//UUUU{
+//UUUU return aSet.GetItemState( nWhich, bSrchInParent, ppItem );
+//UUUU}
#undef inline
Modified: openoffice/branches/alg_writerframes/main/sw/inc/frmatr.hxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/inc/frmatr.hxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/inc/frmatr.hxx (original)
+++ openoffice/branches/alg_writerframes/main/sw/inc/frmatr.hxx Tue Jan 14
21:43:43 2014
@@ -81,8 +81,8 @@ inline const SvxBoxItem &SwFmt::GetBox(s
{ return aSet.GetBox(bInP); }
inline const SvxFmtKeepItem &SwFmt::GetKeep(sal_Bool bInP) const
{ return aSet.GetKeep(bInP); }
-inline const SvxBrushItem &SwFmt::GetBackground(sal_Bool bInP) const
- { return aSet.GetBackground(bInP); }
+//UUUUinline const SvxBrushItem &SwFmt::GetBackground(sal_Bool bInP) const
+//UUUU { return aSet.GetBackground(bInP); }
inline const SvxShadowItem &SwFmt::GetShadow(sal_Bool bInP) const
{ return aSet.GetShadow(bInP); }
inline const SvxFmtBreakItem &SwFmt::GetBreak(sal_Bool bInP) const
Modified: openoffice/branches/alg_writerframes/main/sw/inc/frmfmt.hxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/inc/frmfmt.hxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/inc/frmfmt.hxx (original)
+++ openoffice/branches/alg_writerframes/main/sw/inc/frmfmt.hxx Tue Jan 14
21:43:43 2014
@@ -29,12 +29,6 @@
#include <format.hxx>
#include "swdllapi.h"
-//UUUU
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <boost/shared_ptr.hpp>
-
class SwFlyFrm;
class SwAnchoredObject;
class Graphic;
@@ -45,41 +39,6 @@ class SwRect;
class SwContact;
class SdrObject;
-//UUUU
-class FillAttributes
-{
-private:
- basegfx::B2DRange
maLastPaintRange;
- basegfx::B2DRange
maLastDefineRange;
- boost::shared_ptr< drawinglayer::attribute::SdrFillAttribute >
maFillAttribute;
- boost::shared_ptr< drawinglayer::attribute::FillGradientAttribute >
maFillGradientAttribute;
- drawinglayer::primitive2d::Primitive2DSequence
maPrimitives;
-
- void createPrimitive2DSequence(
- const basegfx::B2DRange& rPaintRange,
- const basegfx::B2DRange& rDefineRange);
-
-protected:
-public:
- FillAttributes();
- FillAttributes(const Color& rColor);
- FillAttributes(const SfxItemSet& rSet);
- ~FillAttributes();
-
- bool isUsed() const;
- bool hasSdrFillAttribute() const { return maFillAttribute.get(); }
- bool hasFillGradientAttribute() const { return
maFillGradientAttribute.get(); }
- bool isTransparent() const;
-
- const drawinglayer::attribute::SdrFillAttribute& getFillAttribute() const;
- const drawinglayer::attribute::FillGradientAttribute&
getFillGradientAttribute() const;
- const drawinglayer::primitive2d::Primitive2DSequence&
getPrimitive2DSequence(
- const basegfx::B2DRange& rPaintRange,
- const basegfx::B2DRange& rDefineRange) const;
-};
-
-typedef boost::shared_ptr< FillAttributes > FillAttributesPtr;
-
class SW_DLLPUBLIC SwFrmFmt: public SwFmt
{
friend class SwDoc;
@@ -189,7 +148,7 @@ public:
void RegisterToFormat( SwFmt& rFmt );
//UUUU
- FillAttributesPtr getFillAttributes() const;
+ virtual FillAttributesPtr getFillAttributes() const;
};
//Das FlyFrame-Format ------------------------------
Modified:
openoffice/branches/alg_writerframes/main/sw/inc/unobrushitemhelper.hxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/inc/unobrushitemhelper.hxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/inc/unobrushitemhelper.hxx
(original)
+++ openoffice/branches/alg_writerframes/main/sw/inc/unobrushitemhelper.hxx Tue
Jan 14 21:43:43 2014
@@ -26,7 +26,7 @@
//UUUU helper function definintions for UNO API fallbacks to replace
SvxBrushItem
void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush,
SfxItemSet& rToSet);
-SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet);
+SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet,
sal_Bool bSearchInParents = sal_True);
#endif // _UNOBRUSHITEMHELPER_HXX
Modified:
openoffice/branches/alg_writerframes/main/sw/source/core/attr/format.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/source/core/attr/format.cxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/source/core/attr/format.cxx
(original)
+++ openoffice/branches/alg_writerframes/main/sw/source/core/attr/format.cxx
Tue Jan 14 21:43:43 2014
@@ -19,12 +19,9 @@
*
*************************************************************/
-
-
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
-
#include <hintids.hxx> // fuer RES_..
#include <frame.hxx> // fuer AttrCache
#include <format.hxx>
@@ -33,6 +30,8 @@
#include <paratr.hxx> // fuer SwParaFmt - SwHyphenBug
#include <swcache.hxx>
#include <fmtcolfunc.hxx>
+//UUUU
+#include <unobrushitemhelper.hxx>
TYPEINIT1( SwFmt, SwClient ); //rtti fuer SwFmt
@@ -431,6 +430,59 @@ sal_Bool SwFmt::SetDerivedFrom(SwFmt *pD
}
+const SfxPoolItem& SwFmt::GetFmtAttr( sal_uInt16 nWhich, sal_Bool bInParents )
const
+{
+ if(RES_BACKGROUND == nWhich && RES_FLYFRMFMT == Which())
+ {
+ //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)");
+ static SvxBrushItem aSvxBrushItem(RES_BACKGROUND);
+
+ // fill the local static SvxBrushItem from the current ItemSet so that
+ // the fill attributes [XATTR_FILL_FIRST .. XATTR_FILL_LAST] are used
+ // as good as possible to create a fallback representation and return
that
+ aSvxBrushItem = getSvxBrushItemFromSourceSet(aSet, bInParents);
+
+ return aSvxBrushItem;
+ }
+
+ return aSet.Get( nWhich, bInParents );
+}
+
+
+SfxItemState SwFmt::GetItemState( sal_uInt16 nWhich, sal_Bool bSrchInParent,
const SfxPoolItem **ppItem ) const
+{
+ if(RES_BACKGROUND == nWhich && RES_FLYFRMFMT == Which())
+ {
+ //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)");
+ const FillAttributesPtr aFill = getFillAttributes();
+
+ // check if the new fill attributes are used
+ if(aFill.get() && aFill->isUsed())
+ {
+ // if yes, fill the local SvxBrushItem using the new fill
attributes
+ // as good as possible to have an instance for the pointer to
point
+ // to and return as state that it is set
+ static SvxBrushItem aSvxBrushItem(RES_BACKGROUND);
+
+ aSvxBrushItem = getSvxBrushItemFromSourceSet(aSet, bSrchInParent);
+ *ppItem = &aSvxBrushItem;
+
+ return SFX_ITEM_SET;
+ }
+
+ // if not, reset pointer and return SFX_ITEM_DEFAULT to signal that
+ // the item is not set
+ *ppItem = 0;
+
+ return SFX_ITEM_DEFAULT;
+ }
+
+ return aSet.GetItemState( nWhich, bSrchInParent, ppItem );
+}
+
+
sal_Bool SwFmt::SetFmtAttr(const SfxPoolItem& rAttr )
{
if ( IsInCache() || IsInSwFntCache() )
@@ -439,9 +491,50 @@ sal_Bool SwFmt::SetFmtAttr(const SfxPool
CheckCaching( nWhich );
}
+ sal_Bool bRet = sal_False;
+
+ //UUUU
+ if(RES_BACKGROUND == rAttr.Which() && RES_FLYFRMFMT == Which())
+ {
+ //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)");
+ SfxItemSet aTempSet(*aSet.GetPool(), XATTR_FILL_FIRST,
XATTR_FILL_LAST, 0, 0);
+ const SvxBrushItem& rSource = static_cast< const SvxBrushItem&
>(rAttr);
+
+ // fill a local ItemSet with the attributes corresponding as good as
possible
+ // to the new fill properties [XATTR_FILL_FIRST .. XATTR_FILL_LAST]
and set these
+ // as ItemSet
+ setSvxBrushItemAsFillAttributesToTargetSet(rSource, aTempSet);
+
+ if(IsModifyLocked())
+ {
+ if( 0 != ( bRet = (0 != aSet.Put( aTempSet ))) )
+ {
+ aSet.SetModifyAtAttr( this );
+ }
+ }
+ else
+ {
+ SwAttrSet aOld(*aSet.GetPool(), aSet.GetRanges()),
aNew(*aSet.GetPool(), aSet.GetRanges());
+
+ bRet = 0 != aSet.Put_BC(aTempSet, &aOld, &aNew);
+
+ if(bRet)
+ {
+ aSet.SetModifyAtAttr(this);
+
+ SwAttrSetChg aChgOld(aSet, aOld);
+ SwAttrSetChg aChgNew(aSet, aNew);
+
+ ModifyNotification(&aChgOld, &aChgNew);
+ }
+ }
+
+ return bRet;
+ }
+
// wenn Modify gelockt ist, werden keine Modifies verschickt;
// fuer FrmFmt's immer das Modify verschicken!
- sal_Bool bRet = sal_False;
const sal_uInt16 nFmtWhich = Which();
if( IsModifyLocked() || (!GetDepends() &&
(RES_GRFFMTCOLL == nFmtWhich ||
@@ -489,9 +582,55 @@ sal_Bool SwFmt::SetFmtAttr( const SfxIte
}
SetInSwFntCache( sal_False );
- // wenn Modify gelockt ist, werden keine Modifies verschickt;
- // fuer FrmFmt's immer das Modify verschicken!
sal_Bool bRet = sal_False;
+
+ //UUUU
+ if(RES_FLYFRMFMT == Which())
+ {
+ const SfxPoolItem* pSource = 0;
+
+ if(SFX_ITEM_SET == rSet.GetItemState(RES_BACKGROUND, sal_False,
&pSource))
+ {
+ //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)");
+ SfxItemSet aTempSet(rSet);
+
+ // copy all items to be set anyways to a local ItemSet with is
also prepared for the new
+ // fill attribute ranges [XATTR_FILL_FIRST .. XATTR_FILL_LAST].
Add the attributes
+ // corresponding as good as possible to the new fill properties
and set the whole ItemSet
+ const SvxBrushItem& rSource(static_cast< const SvxBrushItem&
>(*pSource));
+ setSvxBrushItemAsFillAttributesToTargetSet(rSource, aTempSet);
+
+ if(IsModifyLocked())
+ {
+ if( 0 != ( bRet = (0 != aSet.Put( aTempSet ))) )
+ {
+ aSet.SetModifyAtAttr( this );
+ }
+ }
+ else
+ {
+ SwAttrSet aOld(*aSet.GetPool(), aSet.GetRanges()),
aNew(*aSet.GetPool(), aSet.GetRanges());
+
+ bRet = 0 != aSet.Put_BC(aTempSet, &aOld, &aNew);
+
+ if(bRet)
+ {
+ aSet.SetModifyAtAttr(this);
+
+ SwAttrSetChg aChgOld(aSet, aOld);
+ SwAttrSetChg aChgNew(aSet, aNew);
+
+ ModifyNotification(&aChgOld, &aChgNew);
+ }
+ }
+ }
+
+ return bRet;
+ }
+
+ // wenn Modify gelockt ist, werden keine Modifies verschickt;
+ // fuer FrmFmt's immer das Modify verschicken!
const sal_uInt16 nFmtWhich = Which();
if ( IsModifyLocked() ||
( !GetDepends() &&
@@ -686,3 +825,32 @@ IDocumentTimerAccess* SwFmt::getIDocumen
IDocumentFieldsAccess* SwFmt::getIDocumentFieldsAccess() { return GetDoc(); }
IDocumentChartDataProviderAccess* SwFmt::getIDocumentChartDataProviderAccess()
{ return GetDoc(); }
+//UUUU
+const SvxBrushItem& SwFmt::GetBackground(sal_Bool bInP) const
+{
+ if(RES_FLYFRMFMT == Which())
+ {
+ //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)");
+ static SvxBrushItem aSvxBrushItem(RES_BACKGROUND);
+
+ // fill the local static SvxBrushItem from the current ItemSet so that
+ // the fill attributes [XATTR_FILL_FIRST .. XATTR_FILL_LAST] are used
+ // as good as possible to create a fallback representation and return
that
+ aSvxBrushItem = getSvxBrushItemFromSourceSet(aSet, bInP);
+ return aSvxBrushItem;
+ }
+
+ return aSet.GetBackground(bInP);
+}
+
+//UUUU
+FillAttributesPtr SwFmt::getFillAttributes() const
+{
+ // FALLBACKBREAKHERE return empty pointer
+ OSL_ENSURE(false, "getFillAttributes() call only valid for RES_FLYFRMFMT
currently (!)");
+
+ return FillAttributesPtr();
+}
+
+// eof
Modified:
openoffice/branches/alg_writerframes/main/sw/source/core/layout/atrfrm.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/source/core/layout/atrfrm.cxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/sw/source/core/layout/atrfrm.cxx
(original)
+++ openoffice/branches/alg_writerframes/main/sw/source/core/layout/atrfrm.cxx
Tue Jan 14 21:43:43 2014
@@ -106,15 +106,9 @@
#include <svl/cjkoptions.hxx>
#include <switerator.hxx>
#include <pagedeschint.hxx>
-#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
//UUUU
-#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <drawinglayer/attribute/sdrfillgraphicattribute.hxx>
+#include <fillattributes.hxx>
#include <svx/xfillit0.hxx>
using namespace ::com::sun::star;
@@ -2481,130 +2475,6 @@ SfxPoolItem* SwHeaderAndFooterEatSpacing
}
//////////////////////////////////////////////////////////////////////////////
-//UUUU FillAttributes
-
-void FillAttributes::createPrimitive2DSequence(
- const basegfx::B2DRange& rPaintRange,
- const basegfx::B2DRange& rDefineRange)
-{
- // reset and remember new target range for object geometry
- maLastPaintRange = rPaintRange;
- maLastDefineRange = rDefineRange;
-
- if(isUsed())
- {
- maPrimitives.realloc(1);
- maPrimitives[0] =
drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
- basegfx::B2DPolyPolygon(
- basegfx::tools::createPolygonFromRect(
- maLastPaintRange)),
- maLastDefineRange,
- maFillAttribute.get() ? *maFillAttribute.get() :
drawinglayer::attribute::SdrFillAttribute(),
- maFillGradientAttribute.get() ? *maFillGradientAttribute.get() :
drawinglayer::attribute::FillGradientAttribute());
- }
-}
-
-FillAttributes::FillAttributes()
-: maLastPaintRange(),
- maLastDefineRange(),
- maFillAttribute(),
- maFillGradientAttribute(),
- maPrimitives()
-{
-}
-
-FillAttributes::FillAttributes(const Color& rColor)
-: maLastPaintRange(),
- maLastDefineRange(),
- maFillAttribute(),
- maFillGradientAttribute(),
- maPrimitives()
-{
- maFillAttribute.reset(
- new drawinglayer::attribute::SdrFillAttribute(
- 0.0,
- Color(rColor.GetRGBColor()).getBColor(),
- drawinglayer::attribute::FillGradientAttribute(),
- drawinglayer::attribute::FillHatchAttribute(),
- drawinglayer::attribute::SdrFillGraphicAttribute()));
-}
-
-FillAttributes::FillAttributes(const SfxItemSet& rSet)
-: maLastPaintRange(),
- maLastDefineRange(),
- maFillAttribute(
- new drawinglayer::attribute::SdrFillAttribute(
- drawinglayer::primitive2d::createNewSdrFillAttribute(rSet))),
- maFillGradientAttribute(
- new drawinglayer::attribute::FillGradientAttribute(
-
drawinglayer::primitive2d::createNewTransparenceGradientAttribute(rSet))),
- maPrimitives()
-{
-}
-
-FillAttributes::~FillAttributes()
-{
-}
-
-bool FillAttributes::isUsed() const
-{
- // only depends on fill, FillGradientAttribute alone defines no fill
- return maFillAttribute.get() && !maFillAttribute->isDefault();
-}
-
-bool FillAttributes::isTransparent() const
-{
- if(hasSdrFillAttribute() && 0.0 != maFillAttribute->getTransparence())
- {
- return true;
- }
-
- if(hasFillGradientAttribute() && !maFillGradientAttribute->isDefault())
- {
- return true;
- }
-
- return false;
-}
-
-const drawinglayer::attribute::SdrFillAttribute&
FillAttributes::getFillAttribute() const
-{
- if(!maFillAttribute.get())
- {
- const_cast< FillAttributes* >(this)->maFillAttribute.reset(new
drawinglayer::attribute::SdrFillAttribute());
- }
-
- return *maFillAttribute.get();
-}
-
-const drawinglayer::attribute::FillGradientAttribute&
FillAttributes::getFillGradientAttribute() const
-{
- if(!maFillGradientAttribute.get())
- {
- const_cast< FillAttributes* >(this)->maFillGradientAttribute.reset(new
drawinglayer::attribute::FillGradientAttribute());
- }
-
- return *maFillGradientAttribute.get();
-}
-
-const drawinglayer::primitive2d::Primitive2DSequence&
FillAttributes::getPrimitive2DSequence(
- const basegfx::B2DRange& rPaintRange,
- const basegfx::B2DRange& rDefineRange) const
-{
- if(maPrimitives.getLength() && (maLastPaintRange != rPaintRange ||
maLastDefineRange != rDefineRange))
- {
- const_cast< FillAttributes* >(this)->maPrimitives.realloc(0);
- }
-
- if(!maPrimitives.getLength())
- {
- const_cast< FillAttributes*
>(this)->createPrimitive2DSequence(rPaintRange, rDefineRange);
- }
-
- return maPrimitives;
-}
-
-//////////////////////////////////////////////////////////////////////////////
// class SwFrmFmt
// Implementierung teilweise inline im hxx
@@ -2686,7 +2556,7 @@ void SwFrmFmt::Modify( const SfxPoolItem
RES_FOOTER, sal_False, (const SfxPoolItem**)&pF );
//UUUU reset fill information
- if(maFillAttributes.get())
+ if(RES_FLYFRMFMT == Which() && maFillAttributes.get())
{
SfxItemIter aIter(*((SwAttrSetChg*)pNew)->GetChgSet());
bool bReset(false);
@@ -2704,8 +2574,11 @@ void SwFrmFmt::Modify( const SfxPoolItem
}
else if(RES_FMT_CHG == nWhich) //UUUU
{
- // reset fill information on format change (e.g. style changed)
- maFillAttributes.reset();
+ //UUUU reset fill information on format change (e.g. style changed)
+ if(RES_FLYFRMFMT == Which() && maFillAttributes.get())
+ {
+ maFillAttributes.reset();
+ }
}
else if( RES_HEADER == nWhich )
pH = (SwFmtHeader*)pNew;
@@ -3530,9 +3403,18 @@ SwFrmFmt* SwFrmFmt::GetCaptionFmt() cons
//UUUU
FillAttributesPtr SwFrmFmt::getFillAttributes() const
{
- if(!maFillAttributes.get())
+ if(RES_FLYFRMFMT == Which())
+ {
+ // create FillAttributes on demand
+ if(!maFillAttributes.get())
+ {
+ const_cast< SwFrmFmt* >(this)->maFillAttributes.reset(new
FillAttributes(GetAttrSet()));
+ }
+ }
+ else
{
- const_cast< SwFrmFmt* >(this)->maFillAttributes.reset(new
FillAttributes(GetAttrSet()));
+ // FALLBACKBREAKHERE assert wrong usage
+ OSL_ENSURE(false, "getFillAttributes() call only valid for
RES_FLYFRMFMT currently (!)");
}
return maFillAttributes;
Added:
openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx?rev=1558210&view=auto
==============================================================================
---
openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx
(added)
+++
openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx
Tue Jan 14 21:43:43 2014
@@ -0,0 +1,159 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+#include <fillattributes.hxx>
+#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
+#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/attribute/sdrfillgraphicattribute.hxx>
+#include <svx/xfillit0.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+void FillAttributes::createPrimitive2DSequence(
+ const basegfx::B2DRange& rPaintRange,
+ const basegfx::B2DRange& rDefineRange)
+{
+ // reset and remember new target range for object geometry
+ maLastPaintRange = rPaintRange;
+ maLastDefineRange = rDefineRange;
+
+ if(isUsed())
+ {
+ maPrimitives.realloc(1);
+ maPrimitives[0] =
drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(
+ maLastPaintRange)),
+ maLastDefineRange,
+ maFillAttribute.get() ? *maFillAttribute.get() :
drawinglayer::attribute::SdrFillAttribute(),
+ maFillGradientAttribute.get() ? *maFillGradientAttribute.get() :
drawinglayer::attribute::FillGradientAttribute());
+ }
+}
+
+FillAttributes::FillAttributes()
+: maLastPaintRange(),
+ maLastDefineRange(),
+ maFillAttribute(),
+ maFillGradientAttribute(),
+ maPrimitives()
+{
+}
+
+FillAttributes::FillAttributes(const Color& rColor)
+: maLastPaintRange(),
+ maLastDefineRange(),
+ maFillAttribute(),
+ maFillGradientAttribute(),
+ maPrimitives()
+{
+ maFillAttribute.reset(
+ new drawinglayer::attribute::SdrFillAttribute(
+ 0.0,
+ Color(rColor.GetRGBColor()).getBColor(),
+ drawinglayer::attribute::FillGradientAttribute(),
+ drawinglayer::attribute::FillHatchAttribute(),
+ drawinglayer::attribute::SdrFillGraphicAttribute()));
+}
+
+FillAttributes::FillAttributes(const SfxItemSet& rSet)
+: maLastPaintRange(),
+ maLastDefineRange(),
+ maFillAttribute(
+ new drawinglayer::attribute::SdrFillAttribute(
+ drawinglayer::primitive2d::createNewSdrFillAttribute(rSet))),
+ maFillGradientAttribute(
+ new drawinglayer::attribute::FillGradientAttribute(
+
drawinglayer::primitive2d::createNewTransparenceGradientAttribute(rSet))),
+ maPrimitives()
+{
+}
+
+FillAttributes::~FillAttributes()
+{
+}
+
+bool FillAttributes::isUsed() const
+{
+ // only depends on fill, FillGradientAttribute alone defines no fill
+ return maFillAttribute.get() && !maFillAttribute->isDefault();
+}
+
+bool FillAttributes::isTransparent() const
+{
+ if(hasSdrFillAttribute() && 0.0 != maFillAttribute->getTransparence())
+ {
+ return true;
+ }
+
+ if(hasFillGradientAttribute() && !maFillGradientAttribute->isDefault())
+ {
+ return true;
+ }
+
+ return false;
+}
+
+const drawinglayer::attribute::SdrFillAttribute&
FillAttributes::getFillAttribute() const
+{
+ if(!maFillAttribute.get())
+ {
+ const_cast< FillAttributes* >(this)->maFillAttribute.reset(new
drawinglayer::attribute::SdrFillAttribute());
+ }
+
+ return *maFillAttribute.get();
+}
+
+const drawinglayer::attribute::FillGradientAttribute&
FillAttributes::getFillGradientAttribute() const
+{
+ if(!maFillGradientAttribute.get())
+ {
+ const_cast< FillAttributes* >(this)->maFillGradientAttribute.reset(new
drawinglayer::attribute::FillGradientAttribute());
+ }
+
+ return *maFillGradientAttribute.get();
+}
+
+const drawinglayer::primitive2d::Primitive2DSequence&
FillAttributes::getPrimitive2DSequence(
+ const basegfx::B2DRange& rPaintRange,
+ const basegfx::B2DRange& rDefineRange) const
+{
+ if(maPrimitives.getLength() && (maLastPaintRange != rPaintRange ||
maLastDefineRange != rDefineRange))
+ {
+ const_cast< FillAttributes* >(this)->maPrimitives.realloc(0);
+ }
+
+ if(!maPrimitives.getLength())
+ {
+ const_cast< FillAttributes*
>(this)->createPrimitive2DSequence(rPaintRange, rDefineRange);
+ }
+
+ return maPrimitives;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
Propchange:
openoffice/branches/alg_writerframes/main/sw/source/core/layout/fillattributes.cxx
------------------------------------------------------------------------------
svn:executable = *
Modified:
openoffice/branches/alg_writerframes/main/sw/source/core/layout/paintfrm.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/source/core/layout/paintfrm.cxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
---
openoffice/branches/alg_writerframes/main/sw/source/core/layout/paintfrm.cxx
(original)
+++
openoffice/branches/alg_writerframes/main/sw/source/core/layout/paintfrm.cxx
Tue Jan 14 21:43:43 2014
@@ -3663,7 +3663,7 @@ void SwFlyFrm::Paint(SwRect const& rRect
{
const SwFrmFmt* pSwFrmFmt = dynamic_cast< const SwFrmFmt*
>(GetFmt());
- if(pSwFrmFmt)
+ if(pSwFrmFmt && RES_FLYFRMFMT == pSwFrmFmt->Which())
{
//UUUU check for transparency
const FillAttributesPtr
aFillAttributes(pSwFrmFmt->getFillAttributes());
@@ -6702,7 +6702,7 @@ sal_Bool SwFrm::GetBackgroundBrush(
{
const SwFrmFmt* pSwFrmFmt = dynamic_cast< const SwFrmFmt*
>(pSwLayoutFrm->GetFmt());
- if(pSwFrmFmt)
+ if(pSwFrmFmt && RES_FLYFRMFMT == pSwFrmFmt->Which())
{
rFillAttributes = pSwFrmFmt->getFillAttributes();
}
Modified:
openoffice/branches/alg_writerframes/main/sw/source/core/unocore/unobrushitemhelper.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/sw/source/core/unocore/unobrushitemhelper.cxx?rev=1558210&r1=1558209&r2=1558210&view=diff
==============================================================================
---
openoffice/branches/alg_writerframes/main/sw/source/core/unocore/unobrushitemhelper.cxx
(original)
+++
openoffice/branches/alg_writerframes/main/sw/source/core/unocore/unobrushitemhelper.cxx
Tue Jan 14 21:43:43 2014
@@ -133,11 +133,11 @@ void setSvxBrushItemAsFillAttributesToTa
}
//UUUU
-SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet)
+SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet,
sal_Bool bSearchInParents)
{
SvxBrushItem aRetval(RES_BACKGROUND);
- const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem*
>(rSourceSet.GetItem(XATTR_FILLSTYLE, false)));
+ const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem*
>(rSourceSet.GetItem(XATTR_FILLSTYLE, bSearchInParents)));
if(!pXFillStyleItem)
{
@@ -154,8 +154,8 @@ SvxBrushItem getSvxBrushItemFromSourceSe
case XFILL_SOLID:
{
// create SvxBrushItem with fill color
- Color aFillColor(static_cast< const XFillColorItem&
>(rSourceSet.Get(XATTR_FILLCOLOR)).GetColorValue());
- const sal_uInt16 nFillTransparence(static_cast< const
XFillTransparenceItem& >(rSourceSet.Get(XATTR_FILLTRANSPARENCE)).GetValue());
+ Color aFillColor(static_cast< const XFillColorItem&
>(rSourceSet.Get(XATTR_FILLCOLOR, bSearchInParents)).GetColorValue());
+ const sal_uInt16 nFillTransparence(static_cast< const
XFillTransparenceItem& >(rSourceSet.Get(XATTR_FILLTRANSPARENCE,
bSearchInParents)).GetValue());
if(0 != nFillTransparence)
{
@@ -174,15 +174,15 @@ SvxBrushItem getSvxBrushItemFromSourceSe
case XFILL_BITMAP:
{
// create SvxBrushItem with bitmap info and flags
- const XFillBitmapItem& rBmpItm = static_cast< const
XFillBitmapItem& >(rSourceSet.Get(XATTR_FILLBITMAP));
+ const XFillBitmapItem& rBmpItm = static_cast< const
XFillBitmapItem& >(rSourceSet.Get(XATTR_FILLBITMAP, bSearchInParents));
const Graphic aGraphic(rBmpItm.GetGraphicObject().GetGraphic());
if(GRAPHIC_NONE != aGraphic.GetType())
{
// get graphic position
SvxGraphicPosition aSvxGraphicPosition(GPOS_NONE);
- const XFillBmpStretchItem& rStretchItem = static_cast< const
XFillBmpStretchItem& >(rSourceSet.Get(XATTR_FILLBMP_STRETCH));
- const XFillBmpTileItem& rTileItem = static_cast< const
XFillBmpTileItem& >(rSourceSet.Get(XATTR_FILLBMP_TILE));
+ const XFillBmpStretchItem& rStretchItem = static_cast< const
XFillBmpStretchItem& >(rSourceSet.Get(XATTR_FILLBMP_STRETCH, bSearchInParents));
+ const XFillBmpTileItem& rTileItem = static_cast< const
XFillBmpTileItem& >(rSourceSet.Get(XATTR_FILLBMP_TILE, bSearchInParents));
if(rTileItem.GetValue())
{
@@ -194,7 +194,7 @@ SvxBrushItem getSvxBrushItemFromSourceSe
}
else
{
- const XFillBmpPosItem& rPosItem = static_cast< const
XFillBmpPosItem& >(rSourceSet.Get(XATTR_FILLBMP_POS));
+ const XFillBmpPosItem& rPosItem = static_cast< const
XFillBmpPosItem& >(rSourceSet.Get(XATTR_FILLBMP_POS, bSearchInParents));
switch(rPosItem.GetValue())
{
@@ -213,7 +213,7 @@ SvxBrushItem getSvxBrushItemFromSourceSe
// create with given graphic and position
aRetval = SvxBrushItem(aGraphic, aSvxGraphicPosition,
RES_BACKGROUND);
- const sal_uInt16 nFillTransparence(static_cast< const
XFillTransparenceItem& >(rSourceSet.Get(XATTR_FILLTRANSPARENCE)).GetValue());
+ const sal_uInt16 nFillTransparence(static_cast< const
XFillTransparenceItem& >(rSourceSet.Get(XATTR_FILLTRANSPARENCE,
bSearchInParents)).GetValue());
if(0 != nFillTransparence)
{