summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/editeng/memberids.h19
-rw-r--r--include/oox/helper/modelobjecthelper.hxx4
-rw-r--r--include/xmloff/xmltypes.hxx1
-rw-r--r--oox/source/drawingml/fillproperties.cxx7
-rw-r--r--oox/source/drawingml/shape.cxx14
-rw-r--r--oox/source/drawingml/shapepropertymap.cxx17
-rw-r--r--oox/source/export/drawingml.cxx17
-rw-r--r--oox/source/helper/modelobjecthelper.cxx9
-rw-r--r--oox/source/token/properties.txt2
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx9
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport2.cxx13
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx13
-rw-r--r--sw/source/core/unocore/unosett.cxx48
-rw-r--r--sw/source/core/unocore/unotbl.cxx1
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx2
-rw-r--r--sw/source/filter/xml/xmlbrsh.cxx75
-rw-r--r--sw/source/filter/xml/xmlbrshi.hxx7
-rw-r--r--sw/source/filter/xml/xmlexpit.cxx12
-rw-r--r--sw/source/filter/xml/xmlimpit.cxx11
-rw-r--r--writerfilter/source/dmapper/NumberingManager.cxx25
-rw-r--r--writerfilter/source/dmapper/NumberingManager.hxx2
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx1
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx1
-rw-r--r--xmloff/inc/XMLBackgroundImageContext.hxx4
-rw-r--r--xmloff/source/style/PageMasterStyleMap.cxx6
-rw-r--r--xmloff/source/style/XMLBackgroundImageContext.cxx29
-rw-r--r--xmloff/source/style/XMLBackgroundImageExport.cxx30
-rw-r--r--xmloff/source/style/prstylei.cxx8
-rw-r--r--xmloff/source/style/xmlnume.cxx30
-rw-r--r--xmloff/source/text/txtprhdl.cxx38
-rw-r--r--xmloff/source/text/txtprmap.cxx6
31 files changed, 257 insertions, 204 deletions
diff --git a/include/editeng/memberids.h b/include/editeng/memberids.h
index d7d0a538ee4d..2f13be47a0f2 100644
--- a/include/editeng/memberids.h
+++ b/include/editeng/memberids.h
@@ -157,16 +157,15 @@
//BrushItem
#define MID_BACK_COLOR 0
#define MID_GRAPHIC_POSITION 1
-#define MID_GRAPHIC_LINK 2
-#define MID_GRAPHIC 3
-#define MID_GRAPHIC_TRANSPARENT 4
-#define MID_GRAPHIC_URL 5
-#define MID_GRAPHIC_FILTER 6
-#define MID_GRAPHIC_REPEAT 7
-#define MID_GRAPHIC_TRANSPARENCY 8
-#define MID_BACK_COLOR_R_G_B 9
-#define MID_BACK_COLOR_TRANSPARENCY 10
-#define MID_SHADING_VALUE 11
+#define MID_GRAPHIC 2
+#define MID_GRAPHIC_TRANSPARENT 3
+#define MID_GRAPHIC_URL 4
+#define MID_GRAPHIC_FILTER 5
+#define MID_GRAPHIC_REPEAT 6
+#define MID_GRAPHIC_TRANSPARENCY 7
+#define MID_BACK_COLOR_R_G_B 8
+#define MID_BACK_COLOR_TRANSPARENCY 9
+#define MID_SHADING_VALUE 10
//SvxFormatBreakItem
#define MID_BREAK_BEFORE 0
diff --git a/include/oox/helper/modelobjecthelper.hxx b/include/oox/helper/modelobjecthelper.hxx
index 67980b57f6c8..694bdf13ddb7 100644
--- a/include/oox/helper/modelobjecthelper.hxx
+++ b/include/oox/helper/modelobjecthelper.hxx
@@ -27,7 +27,8 @@
#include <sal/types.h>
namespace com { namespace sun { namespace star {
- namespace awt { struct Gradient; }
+ namespace awt { struct Gradient;
+ class XBitmap; }
namespace graphic { class XGraphic; }
namespace container { class XNameContainer; }
namespace drawing { struct LineDash; }
@@ -113,6 +114,7 @@ public:
OUString insertFillBitmapXGraphic(css::uno::Reference<css::graphic::XGraphic> const & rxGraphic);
OUString getFillBitmapUrl( const OUString& rGraphicName );
+ css::uno::Reference<css::awt::XBitmap> getFillBitmap(OUString const & rGraphicName);
private:
ObjectContainer maMarkerContainer; ///< Contains all named line markers (line end polygons).
diff --git a/include/xmloff/xmltypes.hxx b/include/xmloff/xmltypes.hxx
index 8b7fc23981c7..dc2e6558321e 100644
--- a/include/xmloff/xmltypes.hxx
+++ b/include/xmloff/xmltypes.hxx
@@ -290,6 +290,7 @@
#define XML_SW_TYPE_BITMAPREPOFFSETY (XML_TEXT_TYPES_START + 125)
#define XML_TYPE_TEXT_RUBY_IS_ABOVE (XML_TEXT_TYPES_START + 126)
+#define XML_TYPE_GRAPHIC (XML_TEXT_TYPES_START + 127)
#endif // INCLUDED_XMLOFF_XMLTYPES_HXX
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index 7f6a7044a386..c22654ebeb6f 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -604,17 +604,14 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
uno::Reference<awt::XBitmap> xBitmap(xGraphic, uno::UNO_QUERY);
// TODO: "rotate with shape" is not possible with our current core
- OUString aGraphicUrl = rGraphicHelper.createGraphicObject( xGraphic );
- // push bitmap or named bitmap to property map
-
- if (!aGraphicUrl.isEmpty())
+ if (xGraphic.is())
{
if (rPropMap.supportsProperty(ShapeProperty::FillBitmapNameFromUrl) &&
rPropMap.setProperty(ShapeProperty::FillBitmapNameFromUrl, xGraphic))
{
eFillStyle = FillStyle_BITMAP;
}
- else if (rPropMap.setProperty(ShapeProperty::FillBitmapUrl, aGraphicUrl))
+ else if (rPropMap.setProperty(ShapeProperty::FillBitmapUrl, xGraphic))
{
eFillStyle = FillStyle_BITMAP;
}
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 6d83c68e3df2..b3c48b0b67c7 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -54,6 +54,7 @@
#include <tools/mapunit.hxx>
#include <editeng/unoprnms.hxx>
#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
@@ -841,16 +842,19 @@ Reference< XShape > const & Shape::createAndInsert(
aShapeProps.setAnyProperty(PROP_BackColorTransparency, aShapeProps.getProperty(PROP_FillTransparence));
aShapeProps.erase(PROP_FillTransparence);
}
- // TextFrames have BackGrahicURL, not FillBitmapURL
- if (aShapeProps.hasProperty(PROP_FillBitmapURL))
+ // TextFrames have BackGrahic, not FillBitmap
+ if (aShapeProps.hasProperty(PROP_FillBitmap))
{
- aShapeProps.setAnyProperty(PROP_BackGraphicURL, aShapeProps.getProperty(PROP_FillBitmapURL));
- aShapeProps.erase(PROP_FillBitmapURL);
+ aShapeProps.setAnyProperty(PROP_BackGraphic, aShapeProps.getProperty(PROP_FillBitmap));
+ aShapeProps.erase(PROP_FillBitmap);
}
if (aShapeProps.hasProperty(PROP_FillBitmapName))
{
uno::Any aAny = aShapeProps.getProperty(PROP_FillBitmapName);
- aShapeProps.setProperty(PROP_BackGraphicURL, rFilterBase.getModelObjectHelper().getFillBitmapUrl( aAny.get<OUString>() ));
+ OUString aFillBitmapName = aAny.get<OUString>();
+ uno::Reference<awt::XBitmap> xBitmap = rFilterBase.getModelObjectHelper().getFillBitmap(aFillBitmapName);
+ uno::Reference<graphic::XGraphic> xGraphic(xBitmap, uno::UNO_QUERY);
+ aShapeProps.setProperty(PROP_BackGraphic, xGraphic);
// aShapeProps.erase(PROP_FillBitmapName); // Maybe, leave the name as well
}
// And no LineColor property; individual borders can have colors
diff --git a/oox/source/drawingml/shapepropertymap.cxx b/oox/source/drawingml/shapepropertymap.cxx
index 53226434dfb1..c0704381b19c 100644
--- a/oox/source/drawingml/shapepropertymap.cxx
+++ b/oox/source/drawingml/shapepropertymap.cxx
@@ -180,17 +180,20 @@ bool ShapePropertyMap::setGradientTrans( sal_Int32 nPropId, const Any& rValue )
return false;
}
-bool ShapePropertyMap::setFillBitmapUrl( sal_Int32 nPropId, const Any& rValue )
+bool ShapePropertyMap::setFillBitmapUrl(sal_Int32 nPropId, const Any& rValue)
{
- // push bitmap URL explicitly
- if( !maShapePropInfo.mbNamedFillBitmapUrl )
- return setAnyProperty( nPropId, rValue );
+ // push bitmap explicitly
+ if (!maShapePropInfo.mbNamedFillBitmapUrl)
+ {
+ return setAnyProperty(nPropId, rValue);
+ }
// create named bitmap URL and push its name
- if( rValue.has< OUString >() )
+ if (rValue.has<uno::Reference<graphic::XGraphic>>())
{
- OUString aBitmapUrlName = mrModelObjHelper.insertFillBitmapUrl( rValue.get< OUString >() );
- return !aBitmapUrlName.isEmpty() && setProperty( nPropId, aBitmapUrlName );
+ auto xGraphic = rValue.get<uno::Reference<graphic::XGraphic>>();
+ OUString aBitmapName = mrModelObjHelper.insertFillBitmapXGraphic(xGraphic);
+ return !aBitmapName.isEmpty() && setProperty(nPropId, aBitmapName);
}
return false;
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 093ed3c4ec24..469420e0d616 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1227,7 +1227,22 @@ void DrawingML::WriteBlipFill( const Reference< XPropertySet >& rXPropSet, const
uno::Reference<graphic::XGraphic> xGraphic(xBitmap, uno::UNO_QUERY);
if (xBitmap.is() && xGraphic.is())
{
- WriteXGraphicBlipFill(rXPropSet, xGraphic, nXmlNamespace, true);
+ bool bWriteMode = false;
+ if (sURLPropName == "FillBitmap" || sURLPropName == "BackGraphic")
+ bWriteMode = true;
+ WriteXGraphicBlipFill(rXPropSet, xGraphic, nXmlNamespace, bWriteMode);
+ }
+ }
+ else if (mAny.has<uno::Reference<graphic::XGraphic>>())
+ {
+ uno::Reference<graphic::XGraphic> xGraphic;
+ xGraphic = mAny.get<uno::Reference<graphic::XGraphic>>();
+ if (xGraphic.is())
+ {
+ bool bWriteMode = false;
+ if (sURLPropName == "FillBitmap" || sURLPropName == "BackGraphic")
+ bWriteMode = true;
+ WriteXGraphicBlipFill(rXPropSet, xGraphic, nXmlNamespace, bWriteMode);
}
}
else
diff --git a/oox/source/helper/modelobjecthelper.cxx b/oox/source/helper/modelobjecthelper.cxx
index 24f6e7fbb539..95c466f48a89 100644
--- a/oox/source/helper/modelobjecthelper.cxx
+++ b/oox/source/helper/modelobjecthelper.cxx
@@ -152,6 +152,15 @@ OUString ModelObjectHelper::getFillBitmapUrl( const OUString &rGraphicName )
return OUString();
}
+uno::Reference<awt::XBitmap> ModelObjectHelper::getFillBitmap(OUString const & rGraphicName)
+{
+ uno::Reference<awt::XBitmap> xBitmap;
+ uno::Any aAny = maBitmapUrlContainer.getObject(rGraphicName);
+ if (aAny.has<uno::Reference<awt::XBitmap>>())
+ xBitmap = aAny.get<uno::Reference<awt::XBitmap>>();
+ return xBitmap;
+}
+
} // namespace oox
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index b4da0cb63439..6754ee58558c 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -21,6 +21,7 @@ Autocomplete
BackColor
BackColorTransparency
BackGraphicLocation
+BackGraphic
BackGraphicURL
Background
BackgroundColor
@@ -167,6 +168,7 @@ FillBitmapRectanglePoint
FillBitmapSizeX
FillBitmapSizeY
FillBitmapURL
+FillBitmap
FillColor
FillGradient
FillGradientName
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 3d93aac63cb3..44831588ee0a 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -3285,6 +3285,7 @@ void ScExportTest::testImageWithSpecialID()
{
OUString sURL;
XPropSet->getPropertyValue("GraphicURL") >>= sURL;
+ CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), !sURL.isEmpty());
CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), sURL != "vnd.sun.star.GraphicObject:00000000000000000000000000000000");
}
// Check size
@@ -3303,6 +3304,7 @@ void ScExportTest::testImageWithSpecialID()
{
OUString sURL;
XPropSet->getPropertyValue("GraphicURL") >>= sURL;
+ CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), !sURL.isEmpty());
CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), sURL != "vnd.sun.star.GraphicObject:00000000000000000000000000000000");
}
// Check size
@@ -3781,9 +3783,10 @@ void ScExportTest::testHeaderImageODS()
uno::Reference<container::XNameAccess> xStyleFamilies = xStyleFamiliesSupplier->getStyleFamilies();
uno::Reference<container::XNameAccess> xPageStyles(xStyleFamilies->getByName("PageStyles"), uno::UNO_QUERY);
uno::Reference<beans::XPropertySet> xStyle(xPageStyles->getByName("Default"), uno::UNO_QUERY);
- OUString aURL;
- xStyle->getPropertyValue("HeaderBackGraphicURL") >>= aURL;
- CPPUNIT_ASSERT(aURL.startsWith("vnd.sun.star.GraphicObject:"));
+
+ uno::Reference<graphic::XGraphic> xGraphic;
+ xStyle->getPropertyValue("HeaderBackGraphic") >>= xGraphic;
+ CPPUNIT_ASSERT(xGraphic.is());
xDocSh->DoClose();
}
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
index d796e58e88ee..a4b4bfec4b9a 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
@@ -603,17 +603,20 @@ DECLARE_OOXMLEXPORT_TEST(testI120928, "i120928.docx")
uno::Sequence<beans::PropertyValue> aProps;
xLevels->getByIndex(0) >>= aProps; // 1st level
- bool bIsGraphic = false;
+ uno::Reference<graphic::XGraphic> xGraphic;
+ sal_Int16 nNumberingType = -1;
+
for (int i = 0; i < aProps.getLength(); ++i)
{
const beans::PropertyValue& rProp = aProps[i];
if (rProp.Name == "NumberingType")
- CPPUNIT_ASSERT_EQUAL(style::NumberingType::BITMAP, rProp.Value.get<sal_Int16>());
- else if (rProp.Name == "GraphicURL")
- bIsGraphic = true;
+ nNumberingType = rProp.Value.get<sal_Int16>();
+ else if (rProp.Name == "Graphic")
+ xGraphic = rProp.Value.get<uno::Reference<graphic::XGraphic>>();
}
- CPPUNIT_ASSERT_EQUAL(true, bIsGraphic);
+ CPPUNIT_ASSERT_EQUAL(style::NumberingType::BITMAP, nNumberingType);
+ CPPUNIT_ASSERT(xGraphic.is());
}
DECLARE_OOXMLEXPORT_TEST(testFdo64826, "fdo64826.docx")
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index cd0b7d962f45..5f1b96b01ebb 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -552,17 +552,20 @@ DECLARE_RTFEXPORT_TEST(testI120928, "i120928.rtf")
uno::Sequence<beans::PropertyValue> aProps;
xLevels->getByIndex(0) >>= aProps; // 1st level
- bool bIsGraphic = false;
+ uno::Reference<graphic::XGraphic> xGraphic;
+ sal_Int16 nNumberingType = -1;
+
for (int i = 0; i < aProps.getLength(); ++i)
{
const beans::PropertyValue& rProp = aProps[i];
if (rProp.Name == "NumberingType")
- CPPUNIT_ASSERT_EQUAL(style::NumberingType::BITMAP, rProp.Value.get<sal_Int16>());
- else if (rProp.Name == "GraphicURL")
- bIsGraphic = true;
+ nNumberingType = rProp.Value.get<sal_Int16>();
+ else if (rProp.Name == "Graphic")
+ xGraphic = rProp.Value.get<uno::Reference<graphic::XGraphic>>();
}
- CPPUNIT_ASSERT_EQUAL(true, bIsGraphic);
+ CPPUNIT_ASSERT_EQUAL(style::NumberingType::BITMAP, nNumberingType);
+ CPPUNIT_ASSERT(xGraphic.is());
}
DECLARE_RTFEXPORT_TEST(testBookmark, "bookmark.rtf")
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index 4c4c206a5747..cafbbcd56950 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1432,30 +1432,27 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetPropertiesForNumFormat
aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_BULLET_FONT, aDesc));
}
}
- if(SVX_NUM_BITMAP == rFormat.GetNumberingType())
+ if (SVX_NUM_BITMAP == rFormat.GetNumberingType())
{
//GraphicURL
const SvxBrushItem* pBrush = rFormat.GetBrush();
- if(pBrush)
+ uno::Reference<graphic::XGraphic> xGraphic;
+ if (pBrush)
{
- Any aAny;
- pBrush->QueryValue( aAny, MID_GRAPHIC_URL );
- aAny >>= aUString;
+ xGraphic = pBrush->GetGraphic()->GetXGraphic();
+ aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_GRAPHIC, xGraphic));
}
- else
- aUString.clear();
- aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_GRAPHIC_URL, aUString));
- //graphicbitmap
+ //GraphicBitmap
const Graphic* pGraphic = nullptr;
- if(pBrush )
+ if (pBrush)
pGraphic = pBrush->GetGraphic();
- if(pGraphic)
+ if (pGraphic)
{
uno::Reference<awt::XBitmap> xBitmap(pGraphic->GetXGraphic(), uno::UNO_QUERY);
aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_GRAPHIC_BITMAP, xBitmap));
}
- Size aSize = rFormat.GetGraphicSize();
+ Size aSize = rFormat.GetGraphicSize();
// #i101131#
// adjust conversion due to type mismatch between <Size> and <awt::Size>
awt::Size aAwtSize(convertTwipToMm100(aSize.Width()), convertTwipToMm100(aSize.Height()));
@@ -1580,7 +1577,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
UNO_NAME_BULLET_FONT, // 17
UNO_NAME_BULLET_FONT_NAME, // 18
UNO_NAME_BULLET_CHAR, // 19
- UNO_NAME_GRAPHIC_URL, // 20
+ UNO_NAME_GRAPHIC, // 20
UNO_NAME_GRAPHIC_BITMAP, // 21
UNO_NAME_GRAPHIC_SIZE, // 22
UNO_NAME_VERT_ORIENT, // 23
@@ -1925,22 +1922,27 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
}
}
break;
- case 20: //UNO_NAME_GRAPHIC_URL,
+ case 20: //UNO_NAME_GRAPHIC,
{
assert( !pDocShell );
- OUString sBrushURL;
- pProp->Value >>= sBrushURL;
- if(!pSetBrush)
+ uno::Reference<graphic::XGraphic> xGraphic;
+ if (pProp->Value >>= xGraphic)
{
- const SvxBrushItem* pOrigBrush = aFormat.GetBrush();
- if(pOrigBrush)
+ if (!pSetBrush)
{
- pSetBrush = new SvxBrushItem(*pOrigBrush);
+ const SvxBrushItem* pOrigBrush = aFormat.GetBrush();
+ if(pOrigBrush)
+ {
+ pSetBrush = new SvxBrushItem(*pOrigBrush);
+ }
+ else
+ pSetBrush = new SvxBrushItem(OUString(), OUString(), GPOS_AREA, RES_BACKGROUND);
}
- else
- pSetBrush = new SvxBrushItem(OUString(), OUString(), GPOS_AREA, RES_BACKGROUND);
+ Graphic aGraphic(xGraphic);
+ pSetBrush->SetGraphic(aGraphic);
}
- pSetBrush->PutValue( pProp->Value, MID_GRAPHIC_URL );
+ else
+ bWrongArg = true;
}
break;
case 21: //UNO_NAME_GRAPHIC_BITMAP,
diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx
index ea14bc88228c..1f5b1811b282 100644
--- a/sw/source/core/unocore/unotbl.cxx
+++ b/sw/source/core/unocore/unotbl.cxx
@@ -1838,7 +1838,6 @@ void SwTableProperties_Impl::ApplyTableAttr(const SwTable& rTable, SwDoc& rDoc)
MID_BACK_COLOR,
MID_GRAPHIC_TRANSPARENT,
MID_GRAPHIC_POSITION,
- MID_GRAPHIC_URL,
MID_GRAPHIC,
MID_GRAPHIC_FILTER });
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 0e81dae183ae..29d5cf1dbb78 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -8454,7 +8454,7 @@ void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox )
uno::Reference< drawing::XShape > xShape( const_cast<SdrObject*>(pSdrObj)->getUnoShape(), uno::UNO_QUERY );
uno::Reference< beans::XPropertySet > xPropertySet( xShape, uno::UNO_QUERY );
m_rDrawingML.SetFS(m_pSerializer);
- m_rDrawingML.WriteBlipFill( xPropertySet, "BackGraphicURL" );
+ m_rDrawingML.WriteBlipFill(xPropertySet, "BackGraphic");
}
}
}
diff --git a/sw/source/filter/xml/xmlbrsh.cxx b/sw/source/filter/xml/xmlbrsh.cxx
index 6bb997059b65..85d6bd963143 100644
--- a/sw/source/filter/xml/xmlbrsh.cxx
+++ b/sw/source/filter/xml/xmlbrsh.cxx
@@ -83,9 +83,7 @@ void SwXMLBrushItemImportContext::ProcessAttrs(
switch( aTokenMap.Get( nPrefix, aLocalName ) )
{
case XML_TOK_BGIMG_HREF:
- SvXMLImportItemMapper::PutXMLValue(
- *pItem, GetImport().ResolveGraphicObjectURL( rValue, false),
- MID_GRAPHIC_LINK, rUnitConv );
+ m_xGraphic = GetImport().loadGraphicByURL(rValue);
break;
case XML_TOK_BGIMG_TYPE:
case XML_TOK_BGIMG_ACTUATE:
@@ -113,24 +111,16 @@ SvXMLImportContextRef SwXMLBrushItemImportContext::CreateChildContext(
const uno::Reference< xml::sax::XAttributeList > & xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- if( xmloff::token::IsXMLToken( rLocalName,
- xmloff::token::XML_BINARY_DATA ) )
+ if (xmloff::token::IsXMLToken(rLocalName, xmloff::token::XML_BINARY_DATA))
{
- if( !xBase64Stream.is() && pItem->GetGraphicLink().isEmpty() )
+ if (!m_xBase64Stream.is())
{
- const GraphicObject *pGrObj = pItem->GetGraphicObject();
- if( !pGrObj || GraphicType::NONE == pGrObj->GetType() )
- {
- xBase64Stream =
- GetImport().GetStreamForGraphicObjectURLFromBase64();
- if( xBase64Stream.is() )
- pContext = new XMLBase64ImportContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
- xBase64Stream );
- }
+ m_xBase64Stream = GetImport().GetStreamForGraphicObjectURLFromBase64();
+ if (m_xBase64Stream.is())
+ pContext = new XMLBase64ImportContext(GetImport(), nPrefix, rLocalName, xAttrList, m_xBase64Stream);
}
}
- if( !pContext )
+ if (!pContext)
{
pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
}
@@ -140,17 +130,21 @@ SvXMLImportContextRef SwXMLBrushItemImportContext::CreateChildContext(
void SwXMLBrushItemImportContext::EndElement()
{
- if( xBase64Stream.is() )
+ if (m_xBase64Stream.is())
+ {
+ m_xGraphic = GetImport().loadGraphicFromBase64(m_xBase64Stream);
+ m_xBase64Stream = nullptr;
+ }
+ if (m_xGraphic.is())
{
- const OUString sURL( GetImport().ResolveGraphicObjectURLFromBase64( xBase64Stream ) );
- xBase64Stream = nullptr;
- SvXMLImportItemMapper::PutXMLValue( *pItem, sURL, MID_GRAPHIC_LINK, GetImport().GetMM100UnitConverter() );
+ Graphic aGraphic(m_xGraphic);
+ pItem->SetGraphic(aGraphic);
}
- if( pItem->GetGraphicLink().isEmpty() && !(pItem->GetGraphic()) )
- pItem->SetGraphicPos( GPOS_NONE );
- else if( GPOS_NONE == pItem->GetGraphicPos() )
- pItem->SetGraphicPos( GPOS_TILED );
+ if (!(pItem->GetGraphic()))
+ pItem->SetGraphicPos(GPOS_NONE);
+ else if (GPOS_NONE == pItem->GetGraphicPos())
+ pItem->SetGraphicPos(GPOS_TILED);
}
SwXMLBrushItemImportContext::SwXMLBrushItemImportContext(
@@ -197,39 +191,42 @@ void SwXMLBrushItemExport::exportXML( const SvxBrushItem& rItem )
{
GetExport().CheckAttrList();
- OUString sURL;
- const SvXMLUnitConverter& rUnitConv = GetExport().GetTwipUnitConverter();
- if( SvXMLExportItemMapper::QueryXMLValue(
- rItem, sURL, MID_GRAPHIC_LINK, rUnitConv ) )
+ uno::Reference<graphic::XGraphic> xGraphic;
+
+ const Graphic* pGraphic = rItem.GetGraphic();
+
+ if (pGraphic)
+ xGraphic = pGraphic->GetXGraphic();
+
+ if (xGraphic.is())
{
- OUString sValue = GetExport().AddEmbeddedGraphicObject( sURL );
- if( !sValue.isEmpty() )
+ OUString sMimeType;
+ OUString sValue = GetExport().AddEmbeddedXGraphic(xGraphic, sMimeType);
+ if (!sValue.isEmpty())
{
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sValue );
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD );
}
- if( SvXMLExportItemMapper::QueryXMLValue(
- rItem, sValue, MID_GRAPHIC_POSITION, rUnitConv ) )
+ const SvXMLUnitConverter& rUnitConv = GetExport().GetTwipUnitConverter();
+ if (SvXMLExportItemMapper::QueryXMLValue(rItem, sValue, MID_GRAPHIC_POSITION, rUnitConv))
GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_POSITION, sValue );
- if( SvXMLExportItemMapper::QueryXMLValue(
- rItem, sValue, MID_GRAPHIC_REPEAT, rUnitConv ) )
+ if (SvXMLExportItemMapper::QueryXMLValue(rItem, sValue, MID_GRAPHIC_REPEAT, rUnitConv))
GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_REPEAT, sValue );
- if( SvXMLExportItemMapper::QueryXMLValue(
- rItem, sValue, MID_GRAPHIC_FILTER, rUnitConv ) )
+ if (SvXMLExportItemMapper::QueryXMLValue(rItem, sValue, MID_GRAPHIC_FILTER, rUnitConv))
GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_FILTER_NAME, sValue );
}
{
SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE,
true, true );
- if( !sURL.isEmpty() )
+ if (xGraphic.is())
{
// optional office:binary-data
- GetExport().AddEmbeddedGraphicObjectAsBase64( sURL );
+ GetExport().AddEmbeddedXGraphicAsBase64(xGraphic);
}
}
}
diff --git a/sw/source/filter/xml/xmlbrshi.hxx b/sw/source/filter/xml/xmlbrshi.hxx
index 75d5da234cca..3e07e42de3aa 100644
--- a/sw/source/filter/xml/xmlbrshi.hxx
+++ b/sw/source/filter/xml/xmlbrshi.hxx
@@ -22,6 +22,7 @@
#include <memory>
#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <xmloff/xmlictxt.hxx>
@@ -36,8 +37,10 @@ namespace com { namespace sun { namespace star {
class SwXMLBrushItemImportContext : public SvXMLImportContext
{
private:
- css::uno::Reference < css::io::XOutputStream > xBase64Stream;
- std::unique_ptr<SvxBrushItem> pItem;
+ css::uno::Reference<css::io::XOutputStream> m_xBase64Stream;
+ css::uno::Reference<css::graphic::XGraphic> m_xGraphic;
+
+ std::unique_ptr<SvxBrushItem> pItem;
void ProcessAttrs(
const css::uno::Reference<css::xml::sax::XAttributeList > & xAttrList,
diff --git a/sw/source/filter/xml/xmlexpit.cxx b/sw/source/filter/xml/xmlexpit.cxx
index c4234435ada5..69f982f1e8f7 100644
--- a/sw/source/filter/xml/xmlexpit.cxx
+++ b/sw/source/filter/xml/xmlexpit.cxx
@@ -902,18 +902,6 @@ bool SvXMLExportItemMapper::QueryXMLValue(
bOk = true;
break;
- case MID_GRAPHIC_LINK:
- if (rBrush.GetGraphicPos() != GPOS_NONE)
- {
- uno::Any aAny;
- rBrush.QueryValue( aAny, MID_GRAPHIC_URL );
- OUString sTmp;
- aAny >>= sTmp;
- aOut.append( sTmp );
- bOk = true;
- }
- break;
-
case MID_GRAPHIC_POSITION:
switch (rBrush.GetGraphicPos())
{
diff --git a/sw/source/filter/xml/xmlimpit.cxx b/sw/source/filter/xml/xmlimpit.cxx
index 6806ae9b62b3..13f8591292cb 100644
--- a/sw/source/filter/xml/xmlimpit.cxx
+++ b/sw/source/filter/xml/xmlimpit.cxx
@@ -661,17 +661,6 @@ bool SvXMLImportItemMapper::PutXMLValue(
}
break;
- case MID_GRAPHIC_LINK:
- {
- SvxGraphicPosition eOldGraphicPos = rBrush.GetGraphicPos();
- rBrush.PutValue( Any(rValue), MID_GRAPHIC_URL );
- if( GPOS_NONE == eOldGraphicPos &&
- GPOS_NONE != rBrush.GetGraphicPos() )
- rBrush.SetGraphicPos( GPOS_TILED );
- bOk = true;
- }
- break;
-
case MID_GRAPHIC_REPEAT:
{
SvxGraphicPosition eGraphicPos = rBrush.GetGraphicPos();
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index b406c44a6152..71e839ec32e7 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -33,6 +33,7 @@
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/PositionAndSpaceMode.hpp>
#include <com/sun/star/text/XChapterNumberingSupplier.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <osl/diagnose.h>
#include <rtl/ustring.hxx>
@@ -241,7 +242,7 @@ uno::Sequence<beans::PropertyValue> ListLevel::GetLevelProperties(bool bDefaults
sal_Int16 nNumberFormat = ConversionHelper::ConvertNumberingType(m_nNFC);
if( m_nNFC >= 0)
{
- if (!m_sGraphicURL.isEmpty() || m_sGraphicBitmap.is())
+ if (m_sGraphicBitmap.is())
nNumberFormat = style::NumberingType::BITMAP;
else if (m_sBulletChar.isEmpty() && nNumberFormat != style::NumberingType::CHAR_SPECIAL)
// w:lvlText is empty, that means no numbering in Word.
@@ -268,8 +269,6 @@ uno::Sequence<beans::PropertyValue> ListLevel::GetLevelProperties(bool bDefaults
aNumberingProperties.push_back(lcl_makePropVal<sal_Unicode>(PROP_BULLET_CHAR, 0));
}
}
- if (!m_sGraphicURL.isEmpty())
- aNumberingProperties.push_back(lcl_makePropVal(PROP_GRAPHIC_URL, m_sGraphicURL));
if (m_sGraphicBitmap.is())
{
aNumberingProperties.push_back(lcl_makePropVal(PROP_GRAPHIC_BITMAP, m_sGraphicBitmap));
@@ -879,17 +878,21 @@ void ListsManager::lcl_sprm( Sprm& rSprm )
uno::Reference<beans::XPropertySet> xPropertySet(xShape, uno::UNO_QUERY);
try
{
- uno::Any aAny = xPropertySet->getPropertyValue("GraphicURL");
- if (aAny.has<OUString>() && pCurrentLevel)
- pCurrentLevel->SetGraphicURL(aAny.get<OUString>());
- } catch(const beans::UnknownPropertyException&)
+ uno::Any aAny = xPropertySet->getPropertyValue("GraphicBitmap");
+ if (aAny.has<uno::Reference<graphic::XGraphic>>() && pCurrentLevel)
+ pCurrentLevel->SetGraphicBitmap(aAny.get<uno::Reference<graphic::XGraphic>>());
+ }
+ catch (const beans::UnknownPropertyException&)
{}
+
try
{
- uno::Reference< graphic::XGraphic > gr;
- xPropertySet->getPropertyValue("Bitmap") >>= gr;
- pCurrentLevel->SetGraphicBitmap( gr );
- } catch(const beans::UnknownPropertyException&)
+ uno::Any aAny = xPropertySet->getPropertyValue("Bitmap");
+ if (aAny.has<uno::Reference<graphic::XGraphic>>() && pCurrentLevel)
+ pCurrentLevel->SetGraphicBitmap(aAny.get<uno::Reference<graphic::XGraphic>>());
+
+ }
+ catch (const beans::UnknownPropertyException&)
{}
// Respect only the aspect ratio of the picture, not its size.
diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx
index 339e6d491757..f93269b5b1f9 100644
--- a/writerfilter/source/dmapper/NumberingManager.hxx
+++ b/writerfilter/source/dmapper/NumberingManager.hxx
@@ -46,7 +46,6 @@ class ListLevel : public PropertyMap
sal_Int32 m_nJC; //LN_JC
sal_Int16 m_nXChFollow; //LN_IXCHFOLLOW
OUString m_sBulletChar;
- OUString m_sGraphicURL;
css::awt::Size m_aGraphicSize;
css::uno::Reference<css::graphic::XGraphic> m_sGraphicBitmap;
sal_Int32 m_nTabstop;
@@ -70,7 +69,6 @@ public:
// Setters for the import
void SetValue( Id nId, sal_Int32 nValue );
void SetBulletChar( const OUString& sValue ) { m_sBulletChar = sValue; };
- void SetGraphicURL( const OUString& sValue ) { m_sGraphicURL = sValue; };
void SetGraphicSize( const css::awt::Size& aValue ) { m_aGraphicSize = aValue; };
void SetGraphicBitmap(css::uno::Reference<css::graphic::XGraphic> const& sValue)
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index 6035b617a465..592063a4d312 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -291,7 +291,6 @@ OUString getPropertyName( PropertyIds eId )
case PROP_SHADOW_FORMAT: sName = "ShadowFormat"; break;
case PROP_RELATIVE_WIDTH: sName = "RelativeWidth"; break;
case PROP_IS_WIDTH_RELATIVE: sName = "IsWidthRelative"; break;
- case PROP_GRAPHIC_URL: sName = "GraphicURL"; break;
case PROP_GRAPHIC_BITMAP: sName = "GraphicBitmap"; break;
case PROP_GRAPHIC_SIZE: sName = "GraphicSize"; break;
case PROP_CHAR_SHADING_VALUE: sName = "CharShadingValue"; break;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index f69b6531b7db..a3465fe8d98a 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -288,7 +288,6 @@ enum PropertyIds
,PROP_SHADOW_FORMAT
,PROP_RELATIVE_WIDTH
,PROP_IS_WIDTH_RELATIVE
- ,PROP_GRAPHIC_URL
,PROP_GRAPHIC_BITMAP
,PROP_GRAPHIC_SIZE
,PROP_CHAR_SHADING_VALUE
diff --git a/xmloff/inc/XMLBackgroundImageContext.hxx b/xmloff/inc/XMLBackgroundImageContext.hxx
index e965935206a6..8080f3f3b458 100644
--- a/xmloff/inc/XMLBackgroundImageContext.hxx
+++ b/xmloff/inc/XMLBackgroundImageContext.hxx
@@ -35,11 +35,11 @@ class XMLBackgroundImageContext : public XMLElementPropertyContext
XMLPropertyState aTransparencyProp;
css::style::GraphicLocation ePos;
- OUString sURL;
+ OUString m_sURL;
OUString sFilter;
sal_Int8 nTransparency;
- css::uno::Reference < css::io::XOutputStream > xBase64Stream;
+ css::uno::Reference < css::io::XOutputStream > m_xBase64Stream;
private:
void ProcessAttrs(
diff --git a/xmloff/source/style/PageMasterStyleMap.cxx b/xmloff/source/style/PageMasterStyleMap.cxx
index 7b11abbd2795..50b90fe35e7b 100644
--- a/xmloff/source/style/PageMasterStyleMap.cxx
+++ b/xmloff/source/style/PageMasterStyleMap.cxx
@@ -75,7 +75,7 @@ const XMLPropertyMapEntry aXMLPageMasterStyleMap[] =
PLMAP( "BackTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT | MID_FLAG_MERGE_ATTRIBUTE, 0 ),
PLMAP( "BackGraphicLocation", XML_NAMESPACE_STYLE, XML_POSITION, XML_TYPE_BUILDIN_CMP_ONLY | MID_FLAG_SPECIAL_ITEM, CTF_PM_GRAPHICPOSITION ),
PLMAP( "BackGraphicFilter", XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TYPE_STRING | MID_FLAG_SPECIAL_ITEM, CTF_PM_GRAPHICFILTER ),
- PLMAP( "BackGraphicURL", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_GRAPHICURL ),
+ PLMAP( "BackGraphic", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_GRAPHICURL ),
PLMAP( "PrintAnnotations", XML_NAMESPACE_STYLE, XML_PRINT, XML_PM_TYPE_PRINTANNOTATIONS | MID_FLAG_MULTI_PROPERTY, CTF_PM_PRINT_ANNOTATIONS ),
PLMAP( "PrintCharts", XML_NAMESPACE_STYLE, XML_PRINT, XML_PM_TYPE_PRINTCHARTS | MID_FLAG_MULTI_PROPERTY | MID_FLAG_MERGE_ATTRIBUTE, CTF_PM_PRINT_CHARTS ),
PLMAP( "PrintDrawing", XML_NAMESPACE_STYLE, XML_PRINT, XML_PM_TYPE_PRINTDRAWING | MID_FLAG_MULTI_PROPERTY | MID_FLAG_MERGE_ATTRIBUTE, CTF_PM_PRINT_DRAWING ),
@@ -184,7 +184,7 @@ const XMLPropertyMapEntry aXMLPageMasterStyleMap[] =
HFMAP( "HeaderBackTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT | MID_FLAG_MERGE_ATTRIBUTE, CTF_PM_HEADERFLAG ),
HFMAP( "HeaderBackGraphicLocation", XML_NAMESPACE_STYLE, XML_POSITION, XML_TYPE_BUILDIN_CMP_ONLY | MID_FLAG_SPECIAL_ITEM, CTF_PM_HEADERGRAPHICPOSITION ),
HFMAP( "HeaderBackGraphicFilter", XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TYPE_STRING | MID_FLAG_SPECIAL_ITEM, CTF_PM_HEADERGRAPHICFILTER ),
- HFMAP( "HeaderBackGraphicURL", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_HEADERGRAPHICURL ),
+ HFMAP( "HeaderBackGraphic", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_HEADERGRAPHICURL ),
HFMAP( "HeaderDynamicSpacing", XML_NAMESPACE_STYLE, XML_DYNAMIC_SPACING, XML_TYPE_BOOL, CTF_PM_HEADERFLAG ),
//Index 121: Header DrawingLayer FillAttributes
@@ -240,7 +240,7 @@ const XMLPropertyMapEntry aXMLPageMasterStyleMap[] =
HFMAP( "FooterBackTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT | MID_FLAG_MERGE_ATTRIBUTE, CTF_PM_FOOTERFLAG ),
HFMAP( "FooterBackGraphicLocation", XML_NAMESPACE_STYLE, XML_POSITION, XML_TYPE_BUILDIN_CMP_ONLY | MID_FLAG_SPECIAL_ITEM, CTF_PM_FOOTERGRAPHICPOSITION ),
HFMAP( "FooterBackGraphicFilter", XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TYPE_STRING | MID_FLAG_SPECIAL_ITEM, CTF_PM_FOOTERGRAPHICFILTER ),
- HFMAP( "FooterBackGraphicURL", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_FOOTERGRAPHICURL ),
+ HFMAP( "FooterBackGraphic", XML_NAMESPACE_STYLE, XML_BACKGROUND_IMAGE, XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_PM_FOOTERGRAPHICURL ),
HFMAP( "FooterDynamicSpacing", XML_NAMESPACE_STYLE, XML_DYNAMIC_SPACING, XML_TYPE_BOOL, CTF_PM_FOOTERFLAG ),
//Index 170: Footer DrawingLayer FillAttributes
diff --git a/xmloff/source/style/XMLBackgroundImageContext.cxx b/xmloff/source/style/XMLBackgroundImageContext.cxx
index 28c421f43bb8..39d9b167ce6e 100644
--- a/xmloff/source/style/XMLBackgroundImageContext.cxx
+++ b/xmloff/source/style/XMLBackgroundImageContext.cxx
@@ -185,7 +185,7 @@ void XMLBackgroundImageContext::ProcessAttrs(
switch( aTokenMap.Get( nPrefix, aLocalName ) )
{
case XML_TOK_BGIMG_HREF:
- sURL = rValue;
+ m_sURL = rValue;
if( GraphicLocation_NONE == ePos )
ePos = GraphicLocation_TILED;
break;
@@ -353,13 +353,13 @@ SvXMLImportContextRef XMLBackgroundImageContext::CreateChildContext(
xmloff::token::IsXMLToken( rLocalName,
xmloff::token::XML_BINARY_DATA ) )
{
- if( sURL.isEmpty() && !xBase64Stream.is() )
+ if( m_sURL.isEmpty() && !m_xBase64Stream.is() )
{
- xBase64Stream = GetImport().GetStreamForGraphicObjectURLFromBase64();
- if( xBase64Stream.is() )
+ m_xBase64Stream = GetImport().GetStreamForGraphicObjectURLFromBase64();
+ if( m_xBase64Stream.is() )
pContext = new XMLBase64ImportContext( GetImport(), nPrefix,
rLocalName, xAttrList,
- xBase64Stream );
+ m_xBase64Stream );
}
}
if( !pContext )
@@ -372,23 +372,24 @@ SvXMLImportContextRef XMLBackgroundImageContext::CreateChildContext(
void XMLBackgroundImageContext::EndElement()
{
- if( !sURL.isEmpty() )
+ uno::Reference<graphic::XGraphic> xGraphic;
+ if (!m_sURL.isEmpty())
{
- sURL = GetImport().ResolveGraphicObjectURL( sURL, false );
+ xGraphic = GetImport().loadGraphicByURL(m_sURL);
}
- else if( xBase64Stream.is() )
+ else if (m_xBase64Stream.is())
{
- sURL = GetImport().ResolveGraphicObjectURLFromBase64( xBase64Stream );
- xBase64Stream = nullptr;
+ xGraphic = GetImport().loadGraphicFromBase64(m_xBase64Stream);
+ m_xBase64Stream = nullptr;
}
- if( sURL.isEmpty() )
+ if (!xGraphic.is())
ePos = GraphicLocation_NONE;
- else if( GraphicLocation_NONE == ePos )
+ else if (GraphicLocation_NONE == ePos)
ePos = GraphicLocation_TILED;
- if (!sURL.isEmpty())
- aProp.maValue <<= sURL;
+ if (xGraphic.is())
+ aProp.maValue <<= xGraphic;
aPosProp.maValue <<= ePos;
aFilterProp.maValue <<= sFilter;
aTransparencyProp.maValue <<= nTransparency;
diff --git a/xmloff/source/style/XMLBackgroundImageExport.cxx b/xmloff/source/style/XMLBackgroundImageExport.cxx
index 8e744611a227..abedea9f37b2 100644
--- a/xmloff/source/style/XMLBackgroundImageExport.cxx
+++ b/xmloff/source/style/XMLBackgroundImageExport.cxx
@@ -43,7 +43,7 @@ XMLBackgroundImageExport::~XMLBackgroundImageExport()
{
}
-void XMLBackgroundImageExport::exportXML( const Any& rURL,
+void XMLBackgroundImageExport::exportXML( const Any& rGraphicAny,
const Any *pPos,
const Any *pFilter,
const Any *pTransparency,
@@ -54,18 +54,20 @@ void XMLBackgroundImageExport::exportXML( const Any& rURL,
if( !(pPos && ((*pPos) >>= ePos)) )
ePos = GraphicLocation_AREA;
- OUString sURL;
- rURL >>= sURL;
- if( !sURL.isEmpty() && GraphicLocation_NONE != ePos )
+ uno::Reference<graphic::XGraphic> xGraphic;
+ if (rGraphicAny.has<uno::Reference<graphic::XGraphic>>())
+ xGraphic = rGraphicAny.get<uno::Reference<graphic::XGraphic>>();
+
+ if (xGraphic.is() && GraphicLocation_NONE != ePos)
{
- OUString sTempURL( GetExport().AddEmbeddedGraphicObject( sURL ) );
- if( !sTempURL.isEmpty() )
+ OUString sUsedMimeType;
+ OUString sInternalURL(GetExport().AddEmbeddedXGraphic(xGraphic, sUsedMimeType));
+
+ if (!sInternalURL.isEmpty())
{
- GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sTempURL );
- GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE,
- XML_SIMPLE );
- GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE,
- XML_ONLOAD );
+ GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sInternalURL);
+ GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
+ GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD);
}
OUStringBuffer aOut;
@@ -154,11 +156,11 @@ void XMLBackgroundImageExport::exportXML( const Any& rURL,
}
{
- SvXMLElementExport aElem( GetExport(), nPrefix, rLocalName, true, true );
- if( !sURL.isEmpty() && GraphicLocation_NONE != ePos )
+ SvXMLElementExport aElem(GetExport(), nPrefix, rLocalName, true, true);
+ if (xGraphic.is() && GraphicLocation_NONE != ePos)
{
// optional office:binary-data
- GetExport().AddEmbeddedGraphicObjectAsBase64( sURL );
+ GetExport().AddEmbeddedXGraphicAsBase64(xGraphic);
}
}
}
diff --git a/xmloff/source/style/prstylei.cxx b/xmloff/source/style/prstylei.cxx
index a3d4ca85292a..d48f940b59dc 100644
--- a/xmloff/source/style/prstylei.cxx
+++ b/xmloff/source/style/prstylei.cxx
@@ -77,7 +77,7 @@ namespace
aSet.insert("BackColorRGB");
aSet.insert("BackTransparent");
aSet.insert("BackColorTransparency");
- aSet.insert("BackGraphicURL");
+ aSet.insert("BackGraphic");
aSet.insert("BackGraphicFilter");
aSet.insert("BackGraphicLocation");
aSet.insert("BackGraphicTransparency");
@@ -93,7 +93,7 @@ namespace
aSet.insert("HeaderBackColorRGB");
aSet.insert("HeaderBackTransparent");
aSet.insert("HeaderBackColorTransparency");
- aSet.insert("HeaderBackGraphicURL");
+ aSet.insert("HeaderBackGraphic");
aSet.insert("HeaderBackGraphicFilter");
aSet.insert("HeaderBackGraphicLocation");
aSet.insert("HeaderBackGraphicTransparency");
@@ -109,7 +109,7 @@ namespace
aSet.insert("FooterBackColorRGB");
aSet.insert("FooterBackTransparent");
aSet.insert("FooterBackColorTransparency");
- aSet.insert("FooterBackGraphicURL");
+ aSet.insert("FooterBackGraphic");
aSet.insert("FooterBackGraphicFilter");
aSet.insert("FooterBackGraphicLocation");
aSet.insert("FooterBackGraphicTransparency");
@@ -128,7 +128,7 @@ namespace
aSet.insert("ParaBackTransparent");
aSet.insert("ParaBackGraphicLocation");
aSet.insert("ParaBackGraphicFilter");
- aSet.insert("ParaBackGraphicURL");
+ aSet.insert("ParaBackGraphic");
// These are not used in aXMLParaPropMap definition, thus not needed here
// aSet.insert("ParaBackColorTransparency");
diff --git a/xmloff/source/style/xmlnume.cxx b/xmloff/source/style/xmlnume.cxx
index 63e5b89ddebc..e3965469916c 100644
--- a/xmloff/source/style/xmlnume.cxx
+++ b/xmloff/source/style/xmlnume.cxx
@@ -24,6 +24,7 @@
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/awt/FontDescriptor.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/VertOrientation.hpp>
@@ -37,7 +38,6 @@
#include <rtl/ustrbuf.hxx>
-
#include <sax/tools/converter.hxx>
#include <xmloff/nmspmap.hxx>
@@ -95,8 +95,8 @@ void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
FontPitch eBulletFontPitch = PITCH_DONTKNOW;
rtl_TextEncoding eBulletFontEncoding = RTL_TEXTENCODING_DONTKNOW;
- OUString sImageURL;
- uno::Reference< css::awt::XBitmap > xBitmap;
+ uno::Reference<graphic::XGraphic> xGraphic;
+
sal_Int32 nImageWidth = 0, nImageHeight = 0;
sal_Int16 eImageVertOrient = VertOrientation::LINE_CENTER;
@@ -155,13 +155,11 @@ void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
eBulletFontEncoding = static_cast<rtl_TextEncoding>(rFDesc.CharSet);
}
}
- else if( rProp.Name == "GraphicURL" )
- {
- rProp.Value >>= sImageURL;
- }
else if( rProp.Name == "GraphicBitmap" )
{
+ uno::Reference<awt::XBitmap> xBitmap;
rProp.Value >>= xBitmap;
+ xGraphic.set(xBitmap, uno::UNO_QUERY);
}
else if( rProp.Name == "BulletColor" )
{
@@ -299,14 +297,13 @@ void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
eElem = XML_LIST_LEVEL_STYLE_IMAGE;
-
- if( !sImageURL.isEmpty() )
+ if (xGraphic.is())
{
- OUString sURL( GetExport().AddEmbeddedGraphicObject( sImageURL ) );
- if( !sURL.isEmpty() )
+ OUString sUsedMimeType;
+ OUString sInternalURL = GetExport().AddEmbeddedXGraphic(xGraphic, sUsedMimeType);
+ if (!sInternalURL.isEmpty())
{
- GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sURL );
-
+ GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sInternalURL);
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED );
GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD );
@@ -314,8 +311,7 @@ void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
}
else
{
- SAL_WARN_IF( xBitmap.is(), "xmloff",
- "embedded images are not supported by now" );
+ SAL_WARN_IF(xGraphic.is(), "xmloff", "embedded images are not supported by now");
}
}
else
@@ -602,10 +598,10 @@ void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
SvXMLElementExport aElement( GetExport(), XML_NAMESPACE_STYLE,
XML_TEXT_PROPERTIES, true, true );
}
- if( NumberingType::BITMAP == eType && !sImageURL.isEmpty() )
+ if (xGraphic.is() && NumberingType::BITMAP == eType)
{
// optional office:binary-data
- GetExport().AddEmbeddedGraphicObjectAsBase64( sImageURL );
+ GetExport().AddEmbeddedXGraphicAsBase64(xGraphic);
}
}
}
diff --git a/xmloff/source/text/txtprhdl.cxx b/xmloff/source/text/txtprhdl.cxx
index 993b100976bd..482dd4f02aee 100644
--- a/xmloff/source/text/txtprhdl.cxx
+++ b/xmloff/source/text/txtprhdl.cxx
@@ -37,6 +37,7 @@
#include <com/sun/star/text/RubyPosition.hpp>
#include <com/sun/star/text/FontEmphasis.hpp>
#include <com/sun/star/text/ParagraphVertAlign.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <sax/tools/converter.hxx>
#include <xmloff/xmltypes.hxx>
#include <xmloff/xmluconv.hxx>
@@ -56,6 +57,7 @@
#include <com/sun/star/drawing/RectanglePoint.hpp>
#include <com/sun/star/drawing/BitmapMode.hpp>
#include <XMLBitmapRepeatOffsetPropertyHandler.hxx>
+#include <vcl/graph.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -1137,6 +1139,38 @@ bool XMLNumber8OneBasedHdl::exportXML(
return bRet;
}
+class XMLGraphicPropertyHandler : public XMLPropertyHandler
+{
+public:
+ XMLGraphicPropertyHandler() {}
+
+ virtual bool importXML(const OUString& , uno::Any& , const SvXMLUnitConverter& ) const override
+ {
+ SAL_WARN( "xmloff", "drop caps are an element import property" );
+ return false;
+ }
+
+ virtual bool exportXML(OUString& , const uno::Any& , const SvXMLUnitConverter& ) const override
+ {
+ SAL_WARN( "xmloff", "drop caps are an element import property" );
+ return false;
+ }
+
+ virtual bool equals(const css::uno::Any& rAny1, const css::uno::Any& rAny2) const override;
+};
+
+bool XMLGraphicPropertyHandler::equals(const Any& rAny1, const Any& rAny2) const
+{
+ uno::Reference<graphic::XGraphic> xGraphic1;
+ uno::Reference<graphic::XGraphic> xGraphic2;
+ rAny1 >>= xGraphic1;
+ rAny2 >>= xGraphic2;
+ Graphic aGraphic1(xGraphic1);
+ Graphic aGraphic2(xGraphic2);
+
+ return aGraphic1 == aGraphic2;
+}
+
static const XMLPropertyHandler *GetPropertyHandler
( sal_Int32 nType )
{
@@ -1327,7 +1361,9 @@ static const XMLPropertyHandler *GetPropertyHandler
case XML_SW_TYPE_BITMAPREPOFFSETY:
pHdl = new XMLBitmapRepeatOffsetPropertyHandler(XML_SW_TYPE_BITMAPREPOFFSETX == nType);
break;
-
+ case XML_TYPE_GRAPHIC:
+ pHdl = new XMLGraphicPropertyHandler;
+ break;
default:
{
OSL_ENSURE(false, "XMLPropertyHandler missing (!)");
diff --git a/xmloff/source/text/txtprmap.cxx b/xmloff/source/text/txtprmap.cxx
index b6b90c1c538a..ae484f236f5b 100644
--- a/xmloff/source/text/txtprmap.cxx
+++ b/xmloff/source/text/txtprmap.cxx
@@ -384,7 +384,7 @@ XMLPropertyMapEntry const aXMLParaPropMap[] =
MP_E( "ParaBackTransparent", FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MP_E( "ParaBackGraphicLocation", STYLE, POSITION, MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS ),
MP_E( "ParaBackGraphicFilter",STYLE, FILTER_NAME, MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
- MP_E( "ParaBackGraphicURL", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
+ MP_E( "ParaBackGraphic", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_GRAPHIC, CTF_BACKGROUND_URL ),
// RES_BOX
MP_E( "LeftBorder", STYLE, BORDER_LINE_WIDTH, XML_TYPE_BORDER_WIDTH, CTF_ALLBORDERWIDTH ),
@@ -748,7 +748,7 @@ XMLPropertyMapEntry const aXMLFramePropMap[] =
MG_E( "BackGraphicTransparency", STYLE, BACKGROUND_IMAGE_TRANSPARENCY, MID_FLAG_SPECIAL_ITEM|XML_TYPE_PERCENT8, CTF_BACKGROUND_TRANSPARENCY ),
MG_E( "BackGraphicLocation", STYLE, POSITION, MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS ),
MG_E( "BackGraphicFilter",STYLE, FILTER_NAME, MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
- MG_E( "BackGraphicURL", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
+ MG_E( "BackGraphic", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_GRAPHIC, CTF_BACKGROUND_URL ),
// fill attributes
GMAP( "FillStyle", XML_NAMESPACE_DRAW, XML_FILL, XML_SW_TYPE_FILLSTYLE, 0 ),
@@ -926,7 +926,7 @@ XMLPropertyMapEntry const aXMLSectionPropMap[] =
MS_E( "BackTransparent", FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MS_E( "BackGraphicLocation", STYLE, POSITION, MID_FLAG_SPECIAL_ITEM|XML_TYPE_BUILDIN_CMP_ONLY, CTF_BACKGROUND_POS ),
MS_E( "BackGraphicFilter",STYLE, FILTER_NAME, MID_FLAG_SPECIAL_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_FILTER ),
- MS_E( "BackGraphicURL", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_STRING, CTF_BACKGROUND_URL ),
+ MS_E( "BackGraphic", STYLE, BACKGROUND_IMAGE, MID_FLAG_ELEMENT_ITEM|XML_TYPE_GRAPHIC, CTF_BACKGROUND_URL ),
// move protect-flag into section element
// M_E( "IsProtected", STYLE, PROTECT, XML_TYPE_BOOL, 0 ),