[Libreoffice-commits] core.git: 2 commits - include/xmloff officecfg/registry sw/sdi sw/source sw/uiconfig xmloff/source
Miklos Vajna
vmiklos at collabora.co.uk
Fri Apr 25 04:08:54 PDT 2014
include/xmloff/XMLShapeStyleContext.hxx | 2
officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu | 3
sw/sdi/_frmsh.sdi | 12 +
sw/source/core/attr/format.cxx | 19 ++
sw/source/core/layout/paintfrm.cxx | 5
sw/source/core/uibase/shells/frmsh.cxx | 6
sw/source/core/uibase/shells/grfsh.cxx | 57 +++++--
sw/source/core/unocore/unobrushitemhelper.cxx | 26 ++-
sw/source/core/unocore/unoframe.cxx | 60 ++++++++
sw/source/core/unocore/unomap.cxx | 36 ++++
sw/source/core/unocore/unostyle.cxx | 48 +++---
sw/uiconfig/swriter/ui/objectdialog.ui | 20 ++
sw/uiconfig/swriter/ui/picturedialog.ui | 20 ++
xmloff/source/draw/XMLShapeStyleContext.cxx | 81 ++++++++++-
14 files changed, 330 insertions(+), 65 deletions(-)
New commits:
commit 270fabec85f37b513d29e74cb66b38d5eae7cf80
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Apr 25 12:26:07 2014 +0200
sw: adapt object/picturedialog.ui to FillAttributes
Change-Id: I7e1876c61468a5c45cf4dfd5db6d9c4a9697d751
diff --git a/sw/uiconfig/swriter/ui/objectdialog.ui b/sw/uiconfig/swriter/ui/objectdialog.ui
index dc48bdf..cd56896 100644
--- a/sw/uiconfig/swriter/ui/objectdialog.ui
+++ b/sw/uiconfig/swriter/ui/objectdialog.ui
@@ -160,10 +160,10 @@
<placeholder/>
</child>
<child type="tab">
- <object class="GtkLabel" id="background">
+ <object class="GtkLabel" id="area">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Background</property>
+ <property name="label" translatable="yes">Area</property>
</object>
<packing>
<property name="position">5</property>
@@ -174,13 +174,27 @@
<placeholder/>
</child>
<child type="tab">
+ <object class="GtkLabel" id="transparence">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Transparency</property>
+ </object>
+ <packing>
+ <property name="position">6</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
<object class="GtkLabel" id="macro">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Macro</property>
</object>
<packing>
- <property name="position">6</property>
+ <property name="position">7</property>
<property name="tab_fill">False</property>
</packing>
</child>
diff --git a/sw/uiconfig/swriter/ui/picturedialog.ui b/sw/uiconfig/swriter/ui/picturedialog.ui
index 71e3140..5562076 100644
--- a/sw/uiconfig/swriter/ui/picturedialog.ui
+++ b/sw/uiconfig/swriter/ui/picturedialog.ui
@@ -188,10 +188,10 @@
<placeholder/>
</child>
<child type="tab">
- <object class="GtkLabel" id="background">
+ <object class="GtkLabel" id="area">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Background</property>
+ <property name="label" translatable="yes">Area</property>
</object>
<packing>
<property name="position">7</property>
@@ -202,13 +202,27 @@
<placeholder/>
</child>
<child type="tab">
+ <object class="GtkLabel" id="transparence">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Transparency</property>
+ </object>
+ <packing>
+ <property name="position">8</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
<object class="GtkLabel" id="macro">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Macro</property>
</object>
<packing>
- <property name="position">8</property>
+ <property name="position">9</property>
<property name="tab_fill">False</property>
</packing>
</child>
commit 4a0b5e569d070c286daefb0fdfe45c0dd15d241c
Author: Armin Le Grand <alg at apache.org>
Date: Thu Apr 17 16:44:58 2014 +0000
i#124638 support for DrawingLayre FillStyle for GraphicFrames and ...
... EmbeddedObjectFrames in Writer
(cherry picked from commit 8433ee82c9323501545164ddf6e6008db483ab7a)
Conflicts:
sw/source/core/attr/format.cxx
sw/source/core/layout/paintfrm.cxx
sw/source/core/uibase/shells/grfsh.cxx
sw/source/core/unocore/unomap.cxx
sw/source/core/unocore/unostyle.cxx
sw/source/ui/frmdlg/frmpage.src
xmloff/inc/xmloff/XMLShapeStyleContext.hxx
xmloff/source/draw/XMLShapeStyleContext.cxx
Change-Id: I441378ec3e9a32764781a8063adcc52051efe17f
diff --git a/include/xmloff/XMLShapeStyleContext.hxx b/include/xmloff/XMLShapeStyleContext.hxx
index 89662c0..a93181a 100644
--- a/include/xmloff/XMLShapeStyleContext.hxx
+++ b/include/xmloff/XMLShapeStyleContext.hxx
@@ -36,6 +36,8 @@ protected:
OUString m_sControlDataStyleName;
OUString m_sListStyleName;
bool m_bIsNumRuleAlreadyConverted;
+ //UUUU
+ bool m_bIsFillStyleAlreadyConverted;
protected:
virtual void SetAttribute( sal_uInt16 nPrefixKey,
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
index f718fca..0b3cf4d 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
@@ -320,9 +320,12 @@
Calc, OLE, hidden ;
DrawImpress, 3DObject, visible ;
DrawImpress, Draw, visible ;
+ DrawImpress, Graphic, hidden ;
DrawImpress, TextObject, hidden ;
DrawImpress, OLE, hidden ;
WriterVariants, Draw, visible ;
+ Writer, Graphic, hidden ;
+ Writer, OLE, hidden ;
Writer, Frame, visible ;
</value>
</prop>
diff --git a/sw/sdi/_frmsh.sdi b/sw/sdi/_frmsh.sdi
index 7325486..6d1bd32 100644
--- a/sw/sdi/_frmsh.sdi
+++ b/sw/sdi/_frmsh.sdi
@@ -21,6 +21,7 @@ interface BaseTextFrame
Automation = FALSE;
]
{
+ //UUUU
SID_ATTR_FILL_STYLE
[
Export = FALSE;
@@ -29,6 +30,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_COLOR
[
Export = FALSE;
@@ -37,6 +39,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_GRADIENT
[
Export = FALSE;
@@ -45,6 +48,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_HATCH
[
Export = FALSE;
@@ -53,6 +57,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_BITMAP
[
Export = FALSE;
@@ -61,6 +66,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_TRANSPARENCE
[
Export = FALSE;
@@ -69,6 +75,7 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_ATTR_FILL_FLOATTRANSPARENCE
[
Export = FALSE;
@@ -77,26 +84,31 @@ interface BaseTextFrame
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ //UUUU
SID_COLOR_TABLE
[
StateMethod = GetDrawAttrStateTextFrame;
]
+ //UUUU
SID_GRADIENT_LIST
[
StateMethod = GetDrawAttrStateTextFrame;
]
+ //UUUU
SID_HATCH_LIST
[
StateMethod = GetDrawAttrStateTextFrame;
]
+ //UUUU
SID_BITMAP_LIST
[
StateMethod = GetDrawAttrStateTextFrame;
]
+ //UUUU
SID_ATTRIBUTES_AREA
[
ExecMethod = ExecDrawDlgTextFrame;
diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx
index 776827c..ea2d88a 100644
--- a/sw/source/core/attr/format.cxx
+++ b/sw/source/core/attr/format.cxx
@@ -538,16 +538,27 @@ bool SwFmt::SetFmtAttr( const SfxItemSet& rSet )
bool bRet = false;
+ //UUUU Usel local copy to be able to apply needed changes, e.g. call
+ // CheckForUniqueItemForLineFillNameOrIndex which is needed for NameOrIndex stuff
+ SfxItemSet aTempSet(rSet);
+
+ //UUUU Need to check for unique item for DrawingLayer items of type NameOrIndex
+ // and evtl. correct that item to ensure unique names for that type. This call may
+ // modify/correct entries inside of the given SfxItemSet
+ if(GetDoc())
+ {
+ GetDoc()->CheckForUniqueItemForLineFillNameOrIndex(aTempSet);
+ }
+
//UUUU
if(RES_FLYFRMFMT == Which())
{
const SfxPoolItem* pSource = 0;
- if(SFX_ITEM_SET == rSet.GetItemState(RES_BACKGROUND, false, &pSource))
+ if(SFX_ITEM_SET == aTempSet.GetItemState(RES_BACKGROUND, 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
@@ -591,7 +602,7 @@ bool SwFmt::SetFmtAttr( const SfxItemSet& rSet )
( RES_GRFFMTCOLL == nFmtWhich ||
RES_TXTFMTCOLL == nFmtWhich ) ) )
{
- if( ( bRet = aSet.Put( rSet )) )
+ if( ( bRet = aSet.Put( aTempSet )) )
aSet.SetModifyAtAttr( this );
// #i71574#
if ( nFmtWhich == RES_TXTFMTCOLL )
@@ -603,7 +614,7 @@ bool SwFmt::SetFmtAttr( const SfxItemSet& rSet )
{
SwAttrSet aOld( *aSet.GetPool(), aSet.GetRanges() ),
aNew( *aSet.GetPool(), aSet.GetRanges() );
- bRet = aSet.Put_BC( rSet, &aOld, &aNew );
+ bRet = aSet.Put_BC( aTempSet, &aOld, &aNew );
if( bRet )
{
// some special treatments for attributes
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 7806a76..1c91e5c 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -4121,9 +4121,10 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
//UUUU check for transparency
const FillAttributesPtr aFillAttributes(pSwFrmFmt->getFillAttributes());
- if(aFillAttributes.get())
+ // check if the new fill attributes are used
+ if(aFillAttributes.get() && aFillAttributes->isUsed())
{
- bPaintCompleteBack = aFillAttributes->isTransparent();
+ bPaintCompleteBack = true;
}
}
else
diff --git a/sw/source/core/uibase/shells/frmsh.cxx b/sw/source/core/uibase/shells/frmsh.cxx
index b140b44..9e2f389 100644
--- a/sw/source/core/uibase/shells/frmsh.cxx
+++ b/sw/source/core/uibase/shells/frmsh.cxx
@@ -433,11 +433,9 @@ void SwFrameShell::Execute(SfxRequest &rReq)
SID_HTML_MODE, SID_HTML_MODE, // [10414
FN_GET_PRINT_AREA, FN_GET_PRINT_AREA, // [21032
FN_SURROUND, FN_HORI_ORIENT, // [21303
- FN_SET_FRM_NAME, FN_SET_FRM_NAME, // [21306
- FN_KEEP_ASPECT_RATIO, FN_KEEP_ASPECT_RATIO, // [21307
+ FN_SET_FRM_NAME, FN_KEEP_ASPECT_RATIO, // [21306
FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME, // [21318
- FN_OLE_IS_MATH, FN_OLE_IS_MATH, // [22314
- FN_MATH_BASELINE_ALIGNMENT, FN_MATH_BASELINE_ALIGNMENT, // [22315
+ FN_OLE_IS_MATH, FN_MATH_BASELINE_ALIGNMENT, // [22314
FN_PARAM_CHAIN_PREVIOUS, FN_PARAM_CHAIN_NEXT, // [22420
0);
diff --git a/sw/source/core/uibase/shells/grfsh.cxx b/sw/source/core/uibase/shells/grfsh.cxx
index d78af68..4f0797b 100644
--- a/sw/source/core/uibase/shells/grfsh.cxx
+++ b/sw/source/core/uibase/shells/grfsh.cxx
@@ -68,6 +68,10 @@
#include <svx/graphichelper.hxx>
#include <doc.hxx>
+#include <doc.hxx>
+#include <docsh.hxx>
+#include <svx/drawitem.hxx>
+
#define SwGrfShell
#include <sfx2/msg.hxx>
@@ -204,23 +208,42 @@ void SwGrfShell::Execute(SfxRequest &rReq)
const SwViewOption* pVOpt = rSh.GetViewOptions();
SwViewOption aUsrPref( *pVOpt );
- SfxItemSet aSet(GetPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1,
- RES_GRFATR_MIRRORGRF, RES_GRFATR_CROPGRF,
- SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
- SID_ATTR_GRAF_KEEP_ZOOM, SID_ATTR_GRAF_KEEP_ZOOM,
- SID_ATTR_GRAF_FRMSIZE, SID_ATTR_GRAF_FRMSIZE,
- SID_ATTR_GRAF_FRMSIZE_PERCENT, SID_ATTR_GRAF_FRMSIZE_PERCENT,
- SID_ATTR_GRAF_GRAPHIC, SID_ATTR_GRAF_GRAPHIC,
- FN_PARAM_GRF_CONNECT, FN_PARAM_GRF_CONNECT,
- SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
- FN_GET_PRINT_AREA, FN_GET_PRINT_AREA,
- FN_SET_FRM_NAME, FN_KEEP_ASPECT_RATIO,
- FN_PARAM_GRF_DIALOG, FN_PARAM_GRF_DIALOG,
- SID_DOCFRAME, SID_DOCFRAME,
- SID_HTML_MODE, SID_HTML_MODE,
- FN_SET_FRM_ALT_NAME, FN_SET_FRM_ALT_NAME,
- SID_REFERER, SID_REFERER,
- 0);
+ SfxItemSet aSet(GetPool(), //UUUU sorted by indices
+
+ RES_FRMATR_BEGIN,RES_FRMATR_END - 1, // [ 82
+ RES_GRFATR_MIRRORGRF,RES_GRFATR_CROPGRF, // [ 123
+
+ //UUUU FillAttribute support
+ XATTR_FILL_FIRST, XATTR_FILL_LAST, // [ 1014
+
+ SID_DOCFRAME,SID_DOCFRAME, // [ 5598
+ SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023
+ SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051
+ SID_ATTR_GRAF_KEEP_ZOOM,SID_ATTR_GRAF_KEEP_ZOOM, // [10882
+ SID_ATTR_GRAF_FRMSIZE,SID_ATTR_GRAF_GRAPHIC, // [10884, contains SID_ATTR_GRAF_FRMSIZE_PERCENT
+
+ //UUUU items to hand over XPropertyList things like
+ // XColorList, XHatchList, XGradientList and XBitmapList
+ // to the Area TabPage
+ SID_COLOR_TABLE, SID_BITMAP_LIST, // [10179
+
+ SID_HTML_MODE,SID_HTML_MODE, // [10414
+ FN_GET_PRINT_AREA,FN_GET_PRINT_AREA, // [21032
+ FN_PARAM_GRF_CONNECT,FN_PARAM_GRF_CONNECT, // [21153
+ FN_PARAM_GRF_DIALOG,FN_PARAM_GRF_DIALOG, // [21171
+ FN_SET_FRM_NAME,FN_KEEP_ASPECT_RATIO, // [21306
+ FN_SET_FRM_ALT_NAME,FN_SET_FRM_ALT_NAME, // [21318
+ SID_REFERER, SID_REFERER,
+ 0);
+
+ //UUUU create needed items for XPropertyList entries from the DrawModel so that
+ // the Area TabPage can access them
+ const SdrModel* pDrawModel = rSh.GetView().GetDocShell()->GetDoc()->GetDrawModel();
+
+ aSet.Put(SvxColorListItem(pDrawModel->GetColorList(), SID_COLOR_TABLE));
+ aSet.Put(SvxGradientListItem(pDrawModel->GetGradientList(), SID_GRADIENT_LIST));
+ aSet.Put(SvxHatchListItem(pDrawModel->GetHatchList(), SID_HATCH_LIST));
+ aSet.Put(SvxBitmapListItem(pDrawModel->GetBitmapList(), SID_BITMAP_LIST));
sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
aSet.Put(SfxUInt16Item(SID_HTML_MODE, nHtmlMode));
diff --git a/sw/source/core/unocore/unobrushitemhelper.cxx b/sw/source/core/unocore/unobrushitemhelper.cxx
index ebf9a94..d28c40e 100644
--- a/sw/source/core/unocore/unobrushitemhelper.cxx
+++ b/sw/source/core/unocore/unobrushitemhelper.cxx
@@ -130,6 +130,18 @@ void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush, SfxI
OSL_ENSURE(false, "Could not get Graphic from SvxBrushItem (!)");
}
}
+ else
+ {
+ // GPOS_NONE == rBrush.GetGraphicPos() && 0xff == rBrush.GetColor().GetTransparency(),
+ // still need to rescue the color used. There are sequences used on the UNO API at
+ // import time (OLE. e.g. chart) which first set RGB color (MID_BACK_COLOR_R_G_B,
+ // color stays transparent) and then set transparency (MID_BACK_COLOR_TRANSPARENCY)
+ // to zero later. When not saving the color, it will be lost
+ const Color aColor(rBrush.GetColor().GetRGBColor());
+
+ // rToSet.Put(XFillStyleItem(XFILL_NONE));
+ rToSet.Put(XFillColorItem(OUString(), aColor));
+ }
}
//UUUU
@@ -172,20 +184,24 @@ SvxBrushItem getSvxBrushItemForSolid(const SfxItemSet& rSourceSet, sal_Bool bSea
//UUUU
SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet, sal_Bool bSearchInParents)
{
- SvxBrushItem aRetval(RES_BACKGROUND);
-
const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem* >(rSourceSet.GetItem(XATTR_FILLSTYLE, bSearchInParents)));
- if(!pXFillStyleItem)
+ if(!pXFillStyleItem || XFILL_NONE == pXFillStyleItem->GetValue())
{
- return aRetval;
+ // need to rescue the evtl. set RGB color, but use as transparent color (we have XFILL_NONE)
+ Color aFillColor(static_cast< const XFillColorItem& >(rSourceSet.Get(XATTR_FILLCOLOR, bSearchInParents)).GetColorValue());
+ aFillColor.SetTransparency(0xff);
+
+ return SvxBrushItem(aFillColor, RES_BACKGROUND);
}
+ SvxBrushItem aRetval(RES_BACKGROUND);
+
switch(pXFillStyleItem->GetValue())
{
case XFILL_NONE:
{
- // done; return default item
+ // already handled above, can not happen again
break;
}
case XFILL_SOLID:
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index 3bf159a..1bc89b4 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -1770,6 +1770,64 @@ void SwXFrame::setPropertyValue(const :: OUString& rPropertyName, const :: uno::
bDone = true;
}
+ switch(nMemberId)
+ {
+ case MID_NAME:
+ {
+ //UUUU when named items get set, replace these with the NameOrIndex items
+ // which exist already in the pool
+ switch(pEntry->nWID)
+ {
+ case XATTR_FILLGRADIENT:
+ case XATTR_FILLHATCH:
+ case XATTR_FILLBITMAP:
+ case XATTR_FILLFLOATTRANSPARENCE:
+ {
+ OUString aTempName;
+
+ if(!(aValue >>= aTempName ))
+ {
+ throw lang::IllegalArgumentException();
+ }
+
+ bDone = SvxShape::SetFillAttribute(pEntry->nWID, aTempName, aSet);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ break;
+ }
+ case MID_GRAFURL:
+ {
+ //UUUU Bitmap also has the MID_GRAFURL mode where a Bitmap URL is used
+ switch(pEntry->nWID)
+ {
+ case XATTR_FILLBITMAP:
+ {
+ const Graphic aNullGraphic;
+ XFillBitmapItem aXFillBitmapItem(aSet.GetPool(), aNullGraphic);
+
+ aXFillBitmapItem.PutValue(aValue, nMemberId);
+ aSet.Put(aXFillBitmapItem);
+ bDone = true;
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
if(!bDone)
{
m_pPropSet->setPropertyValue(*pEntry, aValue, aSet);
@@ -1836,7 +1894,9 @@ void SwXFrame::setPropertyValue(const :: OUString& rPropertyName, const :: uno::
throw lang::IllegalArgumentException();
}
else
+ {
pFmt->SetFmtAttr(aSet);
+ }
}
}
else if(IsDescriptor())
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index 3bd9cd8..b2fb907 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -337,6 +337,9 @@ SwUnoPropertyMapProvider::~SwUnoPropertyMapProvider()
#define ANCHOR_TYPES_PROPERTY { OUString(UNO_NAME_ANCHOR_TYPES), FN_UNO_ANCHOR_TYPES, cppu::UnoType< cppu::UnoSequenceType<css::text::TextContentAnchorType> >::get(),PropertyAttribute::READONLY, 0xff},
// #i18732# #i28701# #i73249#
+//UUUU all users of COMMON_FRAME_PROPERTIES add the new XATTR_FILL_FIRST, XATTR_FILL_LAST FillStyle,
+// thus it may be possible to remove the RES_BACKGROUND entries from SvxBrushItem completely (this includes
+// all using UNO_NAME_BACK_* slots) in the future
#define COMMON_FRAME_PROPERTIES \
{ OUString(UNO_NAME_ANCHOR_PAGE_NO), RES_ANCHOR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_ANCHOR_PAGENUM }, \
{ OUString(UNO_NAME_ANCHOR_TYPE), RES_ANCHOR, cppu::UnoType<css::text::TextContentAnchorType>::get(), PROPERTY_NONE, MID_ANCHOR_ANCHORTYPE}, \
@@ -901,9 +904,10 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
{ OUString(UNO_NAME_HIDDEN), FN_UNO_HIDDEN, cppu::UnoType<bool>::get(), PROPERTY_NONE, 0},
{ OUString(UNO_NAME_TEXT_VERT_ADJUST), RES_TEXT_VERT_ADJUST, cppu::UnoType<css::drawing::TextVerticalAdjust>::get(), PROPERTY_NONE ,0},
- //UUUU adf FillProperties for SW, same as FILL_PROPERTIES in svx
+ //UUUU added FillProperties for SW, same as FILL_PROPERTIES in svx
// but need own defines in Writer due to later association of strings
- // and uno types (see loop at end of this metjhod and definition of SW_PROP_NMID)
+ // and uno types (see loop at end of this method and definition of SW_PROP_NMID)
+ // This entry is for adding that properties to style import/export
FILL_PROPERTIES_SW
{ OUString(), 0, css::uno::Type(), 0, 0 }
@@ -1250,9 +1254,10 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
{ OUString(UNO_NAME_WIDTH_TYPE), RES_FRM_SIZE, cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, MID_FRMSIZE_WIDTH_TYPE },
{ OUString(UNO_NAME_WRITING_MODE), RES_FRAMEDIR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, 0 },
- //UUUU adf FillProperties for SW, same as FILL_PROPERTIES in svx
+ //UUUU added FillProperties for SW, same as FILL_PROPERTIES in svx
// but need own defines in Writer due to later association of strings
- // and uno types (see loop at end of this metjhod and definition of SW_PROP_NMID)
+ // and uno types (see loop at end of this method and definition of SW_PROP_NMID)
+ // This entry is for adding that properties to FlyFrame import/export
FILL_PROPERTIES_SW
{ OUString(), 0, css::uno::Type(), 0, 0 }
@@ -1263,7 +1268,10 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
case PROPERTY_MAP_TEXT_GRAPHIC:
{
static SfxItemPropertyMapEntry const aGraphicPropertyMap_Impl[] =
- {
+ { //UUUU
+ // evtl. completely remove SvxBrushItem stuff ()
+ // add support for XATTR_FILL_FIRST, XATTR_FILL_LAST
+ // COMMON_FRAME_PROPERTIES currently hosts the RES_BACKGROUND entries from SvxBrushItem
COMMON_FRAME_PROPERTIES
{ OUString(UNO_NAME_SURROUND_CONTOUR), RES_SURROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_SURROUND_CONTOUR },
{ OUString(UNO_NAME_CONTOUR_OUTSIDE), RES_SURROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_SURROUND_CONTOUROUTSIDE },
@@ -1289,6 +1297,13 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
{ OUString(UNO_NAME_GRAPHIC_IS_INVERTED), RES_GRFATR_INVERT, cppu::UnoType<bool>::get(), 0, 0},
{ OUString(UNO_NAME_TRANSPARENCY), RES_GRFATR_TRANSPARENCY, cppu::UnoType<sal_Int16>::get(), 0, 0},
{ OUString(UNO_NAME_GRAPHIC_COLOR_MODE), RES_GRFATR_DRAWMODE, cppu::UnoType<css::drawing::ColorMode>::get(), 0, 0},
+
+ //UUUU added FillProperties for SW, same as FILL_PROPERTIES in svx
+ // but need own defines in Writer due to later association of strings
+ // and uno types (see loop at end of this method and definition of SW_PROP_NMID)
+ // This entry is for adding that properties to Writer GraphicObject import/export
+ FILL_PROPERTIES_SW
+
{ OUString(), 0, css::uno::Type(), 0, 0 }
};
aMapEntriesArr[nPropertyId] = aGraphicPropertyMap_Impl;
@@ -1297,7 +1312,10 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
case PROPERTY_MAP_EMBEDDED_OBJECT:
{
static SfxItemPropertyMapEntry const aEmbeddedPropertyMap_Impl[] =
- {
+ { //UUUU
+ // evtl. completely remove SvxBrushItem stuff ()
+ // add support for XATTR_FILL_FIRST, XATTR_FILL_LAST
+ // COMMON_FRAME_PROPERTIES currently hosts the RES_BACKGROUND entries from SvxBrushItem
COMMON_FRAME_PROPERTIES
{ OUString(UNO_NAME_SURROUND_CONTOUR), RES_SURROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_SURROUND_CONTOUR },
{ OUString(UNO_NAME_CONTOUR_OUTSIDE), RES_SURROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_SURROUND_CONTOUROUTSIDE},
@@ -1311,6 +1329,12 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
{ OUString(UNO_NAME_GRAPHIC), FN_UNO_REPLACEMENT_GRAPHIC, cppu::UnoType<css::graphic::XGraphic>::get(), PropertyAttribute::MAYBEVOID, 0 },
{ OUString(UNO_NAME_COMPONENT),FN_UNO_COMPONENT, cppu::UnoType<css::lang::XComponent>::get(), PropertyAttribute::READONLY, 0},
{ OUString(UNO_NAME_EMBEDDED_OBJECT),FN_EMBEDDED_OBJECT, cppu::UnoType<css::embed::XEmbeddedObject>::get(), PROPERTY_NONE, 0},
+ //UUUU added FillProperties for SW, same as FILL_PROPERTIES in svx
+ // but need own defines in Writer due to later association of strings
+ // and uno types (see loop at end of this method and definition of SW_PROP_NMID)
+ // This entry is for adding that properties to OLE/EmbeddedObject import/export
+ FILL_PROPERTIES_SW
+
{ OUString(), 0, css::uno::Type(), 0, 0 }
};
aMapEntriesArr[nPropertyId] = aEmbeddedPropertyMap_Impl;
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 283692a..b3304e3 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -1739,22 +1739,26 @@ static void lcl_SetStyleProperty(const SfxItemPropertySimpleEntry& rEntry,
}
case RES_BACKGROUND:
{
- if (SFX_STYLE_FAMILY_FRAME == eFamily)
+ //UUUU No new FillStyle for PageBackground; need to remove again when we want
+ // to support that, too. Add a break to *not* set bDone to true
+ if(SFX_STYLE_FAMILY_PAGE == eFamily)
{
- //UUUU
- SfxItemSet& rStyleSet = rBase.GetItemSet();
- const SvxBrushItem aOriginalBrushItem(sw::getSvxBrushItemFromSourceSet(rStyleSet));
- SvxBrushItem aChangedBrushItem(aOriginalBrushItem);
+ break;
+ }
- aChangedBrushItem.PutValue(aValue, nMemberId);
+ //UUUU
+ SfxItemSet& rStyleSet = rBase.GetItemSet();
+ const SvxBrushItem aOriginalBrushItem(sw::getSvxBrushItemFromSourceSet(rStyleSet));
+ SvxBrushItem aChangedBrushItem(aOriginalBrushItem);
- if(!(aChangedBrushItem == aOriginalBrushItem))
- {
- sw::setSvxBrushItemAsFillAttributesToTargetSet(aChangedBrushItem, rStyleSet);
- }
+ aChangedBrushItem.PutValue(aValue, nMemberId);
- bDone = true;
+ if(!(aChangedBrushItem == aOriginalBrushItem))
+ {
+ sw::setSvxBrushItemAsFillAttributesToTargetSet(aChangedBrushItem, rStyleSet);
}
+
+ bDone = true;
break;
}
case OWN_ATTR_FILLBMP_MODE:
@@ -2498,19 +2502,23 @@ static uno::Any lcl_GetStyleProperty(const SfxItemPropertySimpleEntry& rEntry,
}
case RES_BACKGROUND:
{
- if (SFX_STYLE_FAMILY_FRAME == eFamily)
+ //UUUU No new FillStyle for PageBackground; need to remove again when we want
+ // to support that, too. Add a break to *not* set bDone to true
+ if(SFX_STYLE_FAMILY_PAGE == eFamily)
{
- //UUUU
- const SfxItemSet& rSet = rBase.GetItemSet();
- const SvxBrushItem aOriginalBrushItem(sw::getSvxBrushItemFromSourceSet(rSet));
+ break;
+ }
- if(!aOriginalBrushItem.QueryValue(aRet, nMemberId))
- {
- OSL_ENSURE(false, "Error getting attribute from RES_BACKGROUND (!)");
- }
+ //UUUU
+ const SfxItemSet& rSet = rBase.GetItemSet();
+ const SvxBrushItem aOriginalBrushItem(sw::getSvxBrushItemFromSourceSet(rSet));
- bDone = true;
+ if(!aOriginalBrushItem.QueryValue(aRet, nMemberId))
+ {
+ OSL_ENSURE(false, "Error getting attribute from RES_BACKGROUND (!)");
}
+
+ bDone = true;
break;
}
case OWN_ATTR_FILLBMP_MODE:
diff --git a/xmloff/source/draw/XMLShapeStyleContext.cxx b/xmloff/source/draw/XMLShapeStyleContext.cxx
index c6b03ee..e37f384 100644
--- a/xmloff/source/draw/XMLShapeStyleContext.cxx
+++ b/xmloff/source/draw/XMLShapeStyleContext.cxx
@@ -24,6 +24,7 @@
#include <com/sun/star/drawing/XControlShape.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmlnumi.hxx>
#include <xmloff/xmlnmspe.hxx>
@@ -36,6 +37,7 @@
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::drawing;
using ::xmloff::token::IsXMLToken;
using ::xmloff::token::XML_TEXT_PROPERTIES;
using ::xmloff::token::XML_GRAPHIC_PROPERTIES;
@@ -51,7 +53,8 @@ XMLShapeStyleContext::XMLShapeStyleContext(
SvXMLStylesContext& rStyles,
sal_uInt16 nFamily)
: XMLPropStyleContext(rImport, nPrfx, rLName, xAttrList, rStyles, nFamily ),
- m_bIsNumRuleAlreadyConverted( false )
+ m_bIsNumRuleAlreadyConverted( false ),
+ m_bIsFillStyleAlreadyConverted( false ) //UUUU
{
}
@@ -183,6 +186,82 @@ void XMLShapeStyleContext::FillPropertySet( const Reference< beans::XPropertySet
}
}
+ if(!m_bIsFillStyleAlreadyConverted && GetProperties().size())
+ {
+ const UniReference< XMLPropertySetMapper >&rMapper = GetStyles()->GetImportPropertyMapper(GetFamily())->getPropertySetMapper();
+ ::std::vector< XMLPropertyState >& rProperties = GetProperties();
+ ::std::vector< XMLPropertyState >::iterator a;
+ FillStyle eFS(FillStyle_NONE);
+ static ::rtl::OUString s_FillStyle(RTL_CONSTASCII_USTRINGPARAM("FillStyle"));
+
+ // try to find a FillStyle entry and a value from it
+ for(a = rProperties.begin(); a != rProperties.end(); a++)
+ {
+ if(a->mnIndex != -1)
+ {
+ const OUString& rPropName = rMapper->GetEntryAPIName(a->mnIndex);
+
+ if(rPropName == s_FillStyle)
+ {
+ if(a->maValue >>= eFS)
+ {
+ // okay, type was good, eFS is set
+ }
+ else
+ {
+ // also try an int (see XFillStyleItem::PutValue)
+ sal_Int32 nFS = 0;
+
+ if(a->maValue >>= nFS)
+ {
+ eFS = (FillStyle)nFS;
+ }
+ }
+
+ // exit loop, we found out what we needed to know
+ break;
+ }
+ }
+ }
+
+ if(FillStyle_NONE != eFS)
+ {
+ //UUUU a FillStyle was found, thus the new [XATTR_FILL_FIRST .. XATTR_FILL_LAST]
+ // description for the Fill definitions is used. All formally used props based
+ // on RES_BACKGROUND need to be deleted to get no conflicts between the two
+ // sets of properties; old files will keep these and adapt accordingly
+ static ::rtl::OUString s_BackColorRGB(RTL_CONSTASCII_USTRINGPARAM("BackColorRGB"));
+ static ::rtl::OUString s_BackTransparent(RTL_CONSTASCII_USTRINGPARAM("BackTransparent"));
+ static ::rtl::OUString s_BackColorTransparency(RTL_CONSTASCII_USTRINGPARAM("BackColorTransparency"));
+ static ::rtl::OUString s_BackGraphicURL(RTL_CONSTASCII_USTRINGPARAM("BackGraphicURL"));
+ static ::rtl::OUString s_BackGraphicFilter(RTL_CONSTASCII_USTRINGPARAM("BackGraphicFilter"));
+ static ::rtl::OUString s_BackGraphicLocation(RTL_CONSTASCII_USTRINGPARAM("BackGraphicLocation"));
+ static ::rtl::OUString s_BackGraphicTransparency(RTL_CONSTASCII_USTRINGPARAM("BackGraphicTransparency"));
+
+ for(a = rProperties.begin(); a != rProperties.end(); a++)
+ {
+ if(a->mnIndex != -1)
+ {
+ const OUString& rPropName = rMapper->GetEntryAPIName(a->mnIndex);
+
+ if(s_BackColorRGB == rPropName
+ || s_BackTransparent == rPropName
+ || s_BackColorTransparency == rPropName
+ || s_BackGraphicURL == rPropName
+ || s_BackGraphicFilter == rPropName
+ || s_BackGraphicLocation == rPropName
+ || s_BackGraphicTransparency== rPropName)
+ {
+ // mark entry as inactive
+ a->mnIndex = -1;
+ }
+ }
+ }
+ }
+
+ m_bIsFillStyleAlreadyConverted = sal_True;
+ }
+
struct _ContextID_Index_Pair aContextIDs[] =
{
{ CTF_DASHNAME , -1 },
More information about the Libreoffice-commits
mailing list