summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/draw/XMLShapeStyleContext.cxx31
-rw-r--r--xmloff/source/draw/ximpstyl.cxx44
-rw-r--r--xmloff/source/style/PageMasterImportContext.cxx69
-rw-r--r--xmloff/source/text/txtstyli.cxx31
4 files changed, 117 insertions, 58 deletions
diff --git a/xmloff/source/draw/XMLShapeStyleContext.cxx b/xmloff/source/draw/XMLShapeStyleContext.cxx
index 1da9e11cf074..98191b71c8cd 100644
--- a/xmloff/source/draw/XMLShapeStyleContext.cxx
+++ b/xmloff/source/draw/XMLShapeStyleContext.cxx
@@ -22,6 +22,7 @@
#include <xmloff/XMLShapeStyleContext.hxx>
#include <XMLShapePropertySetContext.hxx>
#include <xmloff/contextid.hxx>
+#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/XControlShape.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
@@ -175,18 +176,18 @@ void XMLShapeStyleContext::FillPropertySet( const Reference< beans::XPropertySet
struct ContextID_Index_Pair aContextIDs[] =
{
- { CTF_DASHNAME , -1 },
- { CTF_LINESTARTNAME , -1 },
- { CTF_LINEENDNAME , -1 },
- { CTF_FILLGRADIENTNAME, -1 },
- { CTF_FILLTRANSNAME , -1 },
- { CTF_FILLHATCHNAME , -1 },
- { CTF_FILLBITMAPNAME , -1 },
- { CTF_SD_OLE_VIS_AREA_IMPORT_LEFT, -1 },
- { CTF_SD_OLE_VIS_AREA_IMPORT_TOP, -1 },
- { CTF_SD_OLE_VIS_AREA_IMPORT_WIDTH, -1 },
- { CTF_SD_OLE_VIS_AREA_IMPORT_HEIGHT, -1 },
- { -1, -1 }
+ { CTF_DASHNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_LINESTARTNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_LINEENDNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_FILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_FILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
+ { CTF_SD_OLE_VIS_AREA_IMPORT_LEFT, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_SD_OLE_VIS_AREA_IMPORT_TOP, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_SD_OLE_VIS_AREA_IMPORT_WIDTH, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_SD_OLE_VIS_AREA_IMPORT_HEIGHT, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { -1, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE }
};
static const XmlStyleFamily aFamilies[] =
{
@@ -243,6 +244,12 @@ void XMLShapeStyleContext::FillPropertySet( const Reference< beans::XPropertySet
break;
}
+ if (::xmloff::IsIgnoreFillStyleNamedItem(rPropSet, aContextIDs[i].nExpectedFillStyle))
+ {
+ SAL_INFO("xmloff.style", "ShapeStyleContext: dropping fill named item: " << sStyleName);
+ break; // ignore it, it's not used
+ }
+
try
{
diff --git a/xmloff/source/draw/ximpstyl.cxx b/xmloff/source/draw/ximpstyl.cxx
index c9449a900b1f..aa1520fe7047 100644
--- a/xmloff/source/draw/ximpstyl.cxx
+++ b/xmloff/source/draw/ximpstyl.cxx
@@ -34,6 +34,7 @@
#include <com/sun/star/style/XStyle.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/XDrawPages.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -138,14 +139,14 @@ public:
const sal_uInt16 MAX_SPECIAL_DRAW_STYLES = 7;
ContextID_Index_Pair const g_ContextIDs[MAX_SPECIAL_DRAW_STYLES+1] =
{
- { CTF_DASHNAME , -1 },
- { CTF_LINESTARTNAME , -1 },
- { CTF_LINEENDNAME , -1 },
- { CTF_FILLGRADIENTNAME, -1 },
- { CTF_FILLTRANSNAME , -1 },
- { CTF_FILLHATCHNAME , -1 },
- { CTF_FILLBITMAPNAME , -1 },
- { -1, -1 }
+ { CTF_DASHNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_LINESTARTNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_LINEENDNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT},
+ { CTF_FILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_FILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
+ { -1, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE }
};
XmlStyleFamily const g_Families[MAX_SPECIAL_DRAW_STYLES] =
{
@@ -257,6 +258,13 @@ void XMLDrawingPageStyleContext::FillPropertySet(
struct XMLPropertyState& rState = GetProperties()[nIndex];
OUString sStyleName;
rState.maValue >>= sStyleName;
+
+ if (::xmloff::IsIgnoreFillStyleNamedItem(rPropSet, m_pContextIDs[i].nExpectedFillStyle))
+ {
+ SAL_INFO("xmloff.style", "XMLDrawingPageStyleContext: dropping fill named item: " << sStyleName);
+ break; // ignore it, it's not used
+ }
+
sStyleName = GetImport().GetStyleDisplayName( m_pFamilies[i],
sStyleName );
// get property set mapper
@@ -1422,4 +1430,24 @@ void SdXMLHeaderFooterDeclContext::characters( const OUString& rChars )
maStrText += rChars;
}
+namespace xmloff {
+
+bool IsIgnoreFillStyleNamedItem(
+ css::uno::Reference<css::beans::XPropertySet> const& xProps,
+ drawing::FillStyle const nExpectedFillStyle)
+{
+ assert(xProps.is());
+ if (nExpectedFillStyle == drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE)
+ {
+ return false;
+ }
+
+ // note: the caller must have called FillPropertySet() previously
+ drawing::FillStyle fillStyle{drawing::FillStyle_NONE};
+ xProps->getPropertyValue("FillStyle") >>= fillStyle;
+ return fillStyle != nExpectedFillStyle;
+}
+
+} // namespace xmloff
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/style/PageMasterImportContext.cxx b/xmloff/source/style/PageMasterImportContext.cxx
index 685d82b9091a..2a50ae855719 100644
--- a/xmloff/source/style/PageMasterImportContext.cxx
+++ b/xmloff/source/style/PageMasterImportContext.cxx
@@ -201,24 +201,24 @@ void PageStyleContext::FillPropertySet_PageStyle(
// properties that need special handling because they need the used name to be translated first
struct ContextID_Index_Pair aContextIDs[] =
{
- { CTF_PM_FILLGRADIENTNAME, -1 },
- { CTF_PM_FILLTRANSNAME, -1 },
- { CTF_PM_FILLHATCHNAME, -1 },
- { CTF_PM_FILLBITMAPNAME, -1 },
+ { CTF_PM_FILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_PM_FILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_PM_FILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_PM_FILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
// also need to special handling for header entries
- { CTF_PM_HEADERFILLGRADIENTNAME, -1 },
- { CTF_PM_HEADERFILLTRANSNAME, -1 },
- { CTF_PM_HEADERFILLHATCHNAME, -1 },
- { CTF_PM_HEADERFILLBITMAPNAME, -1 },
+ { CTF_PM_HEADERFILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_PM_HEADERFILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_PM_HEADERFILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_PM_HEADERFILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
// also need to special handling for footer entries
- { CTF_PM_FOOTERFILLGRADIENTNAME, -1 },
- { CTF_PM_FOOTERFILLTRANSNAME, -1 },
- { CTF_PM_FOOTERFILLHATCHNAME, -1 },
- { CTF_PM_FOOTERFILLBITMAPNAME, -1 },
+ { CTF_PM_FOOTERFILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_PM_FOOTERFILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_PM_FOOTERFILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_PM_FOOTERFILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
- {-1, -1}
+ {-1, -1, drawing::FillStyle::FillStyle_GRADIENT}
};
// the style families associated with the same index modulo 4
@@ -235,7 +235,19 @@ void PageStyleContext::FillPropertySet_PageStyle(
// get property set mapper
const rtl::Reference< XMLPropertySetMapper >& rMapper = xImpPrMap->getPropertySetMapper();
- Reference< XPropertySetInfo > xInfo;
+ Reference<XPropertySetInfo> const xInfo(xPropSet->getPropertySetInfo());
+
+ // don't look at the attributes, look at the property, could
+ // theoretically be inherited and we don't want to delete erroneously
+ drawing::FillStyle fillStyle{drawing::FillStyle_NONE};
+ drawing::FillStyle fillStyleHeader{drawing::FillStyle_NONE};
+ drawing::FillStyle fillStyleFooter{drawing::FillStyle_NONE};
+ if (xInfo->hasPropertyByName("FillStyle")) // SwXTextDefaults lacks it?
+ {
+ xPropSet->getPropertyValue("FillStyle") >>= fillStyle;
+ xPropSet->getPropertyValue("HeaderFillStyle") >>= fillStyleHeader;
+ xPropSet->getPropertyValue("FooterFillStyle") >>= fillStyleFooter;
+ }
// handle special attributes which have MID_FLAG_NO_PROPERTY_IMPORT set
for(sal_uInt16 i = 0; aContextIDs[i].nContextID != -1; i++)
@@ -244,27 +256,37 @@ void PageStyleContext::FillPropertySet_PageStyle(
if(nIndex != -1)
{
+ drawing::FillStyle const* pFillStyle(nullptr);
switch(aContextIDs[i].nContextID)
{
case CTF_PM_FILLGRADIENTNAME:
case CTF_PM_FILLTRANSNAME:
case CTF_PM_FILLHATCHNAME:
case CTF_PM_FILLBITMAPNAME:
-
+ pFillStyle = &fillStyle;
+ [[fallthrough]];
case CTF_PM_HEADERFILLGRADIENTNAME:
case CTF_PM_HEADERFILLTRANSNAME:
case CTF_PM_HEADERFILLHATCHNAME:
case CTF_PM_HEADERFILLBITMAPNAME:
-
+ if (!pFillStyle) { pFillStyle = &fillStyleHeader; }
+ [[fallthrough]];
case CTF_PM_FOOTERFILLGRADIENTNAME:
case CTF_PM_FOOTERFILLTRANSNAME:
case CTF_PM_FOOTERFILLHATCHNAME:
case CTF_PM_FOOTERFILLBITMAPNAME:
{
+ if (!pFillStyle) { pFillStyle = &fillStyleFooter; }
struct XMLPropertyState& rState = GetProperties()[nIndex];
OUString sStyleName;
rState.maValue >>= sStyleName;
+ if (aContextIDs[i].nExpectedFillStyle != drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE
+ && aContextIDs[i].nExpectedFillStyle != *pFillStyle)
+ {
+ SAL_INFO("xmloff.style", "PageStyleContext: dropping fill named item: " << sStyleName);
+ break; // ignore it, it's not used
+ }
// translate the used name from ODF intern to the name used in the Model
sStyleName = GetImport().GetStyleDisplayName(aFamilies[i%4], sStyleName);
@@ -273,11 +295,6 @@ void PageStyleContext::FillPropertySet_PageStyle(
// set property
const OUString& rPropertyName = rMapper->GetEntryAPIName(rState.mnIndex);
- if(!xInfo.is())
- {
- xInfo = xPropSet->getPropertySetInfo();
- }
-
if(xInfo->hasPropertyByName(rPropertyName))
{
xPropSet->setPropertyValue(rPropertyName,Any(sStyleName));
@@ -385,12 +402,12 @@ void PageStyleContext::FillPropertySet_PageStyle(
extern ContextID_Index_Pair const g_MasterPageContextIDs[] =
{
- { CTF_PM_FILLGRADIENTNAME, -1 },
- { CTF_PM_FILLTRANSNAME, -1 },
- { CTF_PM_FILLHATCHNAME, -1 },
- { CTF_PM_FILLBITMAPNAME, -1 },
+ { CTF_PM_FILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_PM_FILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_PM_FILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_PM_FILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
- {-1, -1}
+ {-1, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE}
};
extern XmlStyleFamily const g_MasterPageFamilies[] =
diff --git a/xmloff/source/text/txtstyli.cxx b/xmloff/source/text/txtstyli.cxx
index 701136e98fb2..5aa600c25c00 100644
--- a/xmloff/source/text/txtstyli.cxx
+++ b/xmloff/source/text/txtstyli.cxx
@@ -34,6 +34,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/document/XEventsSupplier.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/style/ParagraphStyleCategory.hpp>
@@ -380,21 +381,21 @@ void XMLTextStyleContext::FillPropertySet(
// intelligent solution.
struct ContextID_Index_Pair aContextIDs[] =
{
- { CTF_COMBINED_CHARACTERS_FIELD, -1 },
- { CTF_KEEP_TOGETHER, -1 },
- { CTF_BORDER_MODEL, -1 },
- { CTF_TEXT_DISPLAY, -1 },
- { CTF_FONTFAMILYNAME, -1 },
- { CTF_FONTFAMILYNAME_CJK, -1 },
- { CTF_FONTFAMILYNAME_CTL, -1 },
+ { CTF_COMBINED_CHARACTERS_FIELD, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_KEEP_TOGETHER, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_BORDER_MODEL, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_TEXT_DISPLAY, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FONTFAMILYNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FONTFAMILYNAME_CJK, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FONTFAMILYNAME_CTL, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
//UUU need special handling for DrawingLayer FillStyle names
- { CTF_FILLGRADIENTNAME, -1 },
- { CTF_FILLTRANSNAME, -1 },
- { CTF_FILLHATCHNAME, -1 },
- { CTF_FILLBITMAPNAME, -1 },
+ { CTF_FILLGRADIENTNAME, -1, drawing::FillStyle::FillStyle_GRADIENT },
+ { CTF_FILLTRANSNAME, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE },
+ { CTF_FILLHATCHNAME, -1, drawing::FillStyle::FillStyle_HATCH },
+ { CTF_FILLBITMAPNAME, -1, drawing::FillStyle::FillStyle_BITMAP },
- { -1, -1 }
+ { -1, -1, drawing::FillStyle::FillStyle_MAKE_FIXED_SIZE }
};
// the style families associated with the same index modulo 4
@@ -532,6 +533,12 @@ void XMLTextStyleContext::FillPropertySet(
break;
}
+ if (::xmloff::IsIgnoreFillStyleNamedItem(rPropSet, aContextIDs[i].nExpectedFillStyle))
+ {
+ SAL_INFO("xmloff.style", "XMLTextStyleContext: dropping fill named item: " << sStyleName);
+ break; // ignore it, it's not used
+ }
+
// Still needed if it's not an AutomaticStyle (!)
try
{