diff options
-rw-r--r-- | editeng/source/uno/unonrule.cxx | 14 | ||||
-rw-r--r-- | oox/source/drawingml/textparagraphproperties.cxx | 6 | ||||
-rw-r--r-- | oox/source/token/properties.txt | 2 | ||||
-rw-r--r-- | sd/qa/unit/data/odp/BulletsAsImage.odp | bin | 0 -> 11475 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml2.cxx | 28 | ||||
-rw-r--r-- | sw/qa/extras/odfexport/data/BulletAsImage.odt | bin | 0 -> 9856 bytes | |||
-rw-r--r-- | sw/qa/extras/odfexport/odfexport.cxx | 17 | ||||
-rw-r--r-- | sw/source/core/unocore/unosett.cxx | 11 | ||||
-rw-r--r-- | xmloff/source/style/xmlnumi.cxx | 21 |
9 files changed, 76 insertions, 23 deletions
diff --git a/editeng/source/uno/unonrule.cxx b/editeng/source/uno/unonrule.cxx index 50fcd053ebcd..a682132c5b01 100644 --- a/editeng/source/uno/unonrule.cxx +++ b/editeng/source/uno/unonrule.cxx @@ -22,6 +22,7 @@ #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> #include <com/sun/star/text/HoriOrientation.hpp> #include <com/sun/star/awt/XBitmap.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> #include <cppuhelper/supportsservice.hxx> #include <vcl/svapp.hxx> #include <vcl/graph.hxx> @@ -225,7 +226,7 @@ Sequence<beans::PropertyValue> SvxUnoNumberingRules::getNumberingRuleByIndex(sal pGraphic = pBrush->GetGraphic(); if (pGraphic) { - uno::Reference<awt::XBitmap> xBitmap = VCLUnoHelper::CreateBitmap(pGraphic->GetBitmapEx()); + uno::Reference<awt::XBitmap> xBitmap(pGraphic->GetXGraphic(), uno::UNO_QUERY); aVal <<= xBitmap; const beans::PropertyValue aGraphicProp("GraphicBitmap", -1, aVal, beans::PropertyState_DIRECT_VALUE); @@ -352,13 +353,14 @@ void SvxUnoNumberingRules::setNumberingRuleByIndex(const Sequence<beans::Propert continue; } } - else if ( rPropName == "Graphic" ) + else if ( rPropName == "GraphicBitmap" ) { - Reference< awt::XBitmap > xBmp; - if( aVal >>= xBmp ) + uno::Reference<awt::XBitmap> xBitmap; + if(aVal >>= xBitmap) { - Graphic aGraf( VCLUnoHelper::GetBitmap( xBmp ) ); - SvxBrushItem aBrushItem(aGraf, GPOS_AREA, SID_ATTR_BRUSH); + uno::Reference<graphic::XGraphic> xGraphic(xBitmap, uno::UNO_QUERY); + Graphic aGraphic(xGraphic); + SvxBrushItem aBrushItem(aGraphic, GPOS_AREA, SID_ATTR_BRUSH); aFmt.SetGraphicBrush( &aBrushItem ); continue; } diff --git a/oox/source/drawingml/textparagraphproperties.cxx b/oox/source/drawingml/textparagraphproperties.cxx index 8f4e635db48c..807a2deff54f 100644 --- a/oox/source/drawingml/textparagraphproperties.cxx +++ b/oox/source/drawingml/textparagraphproperties.cxx @@ -346,9 +346,9 @@ void BulletList::pushToPropMap( const ::oox::core::XmlFilterBase* pFilterBase, P } if ( maGraphic.hasValue() ) { - Reference< css::awt::XBitmap > xBitmap( maGraphic, UNO_QUERY ); - if ( xBitmap.is() ) - rPropMap.setProperty( PROP_Graphic, xBitmap); + Reference<css::awt::XBitmap> xBitmap(maGraphic, UNO_QUERY); + if (xBitmap.is()) + rPropMap.setProperty(PROP_GraphicBitmap, xBitmap); } if( mnSize.hasValue() ) rPropMap.setAnyProperty( PROP_BulletRelSize, mnSize); diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index e90bd9c58912..b4da0cb63439 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -203,6 +203,7 @@ GenerateVbaEvents Geometry3D GradientName Graphic +GraphicBitmap GraphicColorMode GraphicCrop GraphicSize @@ -245,7 +246,6 @@ IgnoreBlankCells IgnoreCase IgnoreLeadingSpaces ImagePosition -ImageURL IncludeHiddenCells InputMessage InputTitle diff --git a/sd/qa/unit/data/odp/BulletsAsImage.odp b/sd/qa/unit/data/odp/BulletsAsImage.odp Binary files differnew file mode 100644 index 000000000000..21d10e494829 --- /dev/null +++ b/sd/qa/unit/data/odp/BulletsAsImage.odp diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index 9fc5302f0325..ed282a6e787b 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -131,6 +131,7 @@ public: void testFontScale(); void testTdf115394(); void testTdf115394Zero(); + void testBulletsAsImage(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest2); @@ -187,6 +188,7 @@ public: CPPUNIT_TEST(testFontScale); CPPUNIT_TEST(testTdf115394); CPPUNIT_TEST(testTdf115394Zero); + CPPUNIT_TEST(testBulletsAsImage); CPPUNIT_TEST_SUITE_END(); @@ -1471,6 +1473,32 @@ void SdOOXMLExportTest2::testTdf115394Zero() xDocShRef->DoClose(); } +void SdOOXMLExportTest2::testBulletsAsImage() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/BulletsAsImage.odp"), ODP); + utl::TempFile tempFile; + xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile); + + uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0, xDocShRef)); + uno::Reference<text::XTextRange> const xParagraph(getParagraphFromShape(0, xShape)); + uno::Reference<beans::XPropertySet> xPropSet(xParagraph, uno::UNO_QUERY_THROW); + + uno::Reference<container::XIndexAccess> xLevels(xPropSet->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aProperties; + xLevels->getByIndex(0) >>= aProperties; // 1st level + uno::Reference<awt::XBitmap> xBitmap; + for (const beans::PropertyValue& rProperty : aProperties) + { + if (rProperty.Name == "GraphicBitmap") + { + xBitmap = rProperty.Value.get<uno::Reference<awt::XBitmap>>(); + } + } + CPPUNIT_ASSERT_MESSAGE("No bitmap for the bullets", xBitmap.is()); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/qa/extras/odfexport/data/BulletAsImage.odt b/sw/qa/extras/odfexport/data/BulletAsImage.odt Binary files differnew file mode 100644 index 000000000000..85e0c0735487 --- /dev/null +++ b/sw/qa/extras/odfexport/data/BulletAsImage.odt diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index ae5ae1735e35..de1399620fea 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -1918,6 +1918,23 @@ DECLARE_ODFEXPORT_TEST(testReferenceLanguage, "referencelanguage.odt") } } +DECLARE_ODFEXPORT_TEST(testBulletAsImage, "BulletAsImage.odt") +{ + uno::Reference<text::XTextRange> xPara(getParagraph(1)); + uno::Reference<beans::XPropertySet> xPropertySet(xPara, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xLevels; + xLevels.set(xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aProperties; + xLevels->getByIndex(0) >>= aProperties; + uno::Reference<awt::XBitmap> xBitmap; + for (int i = 0; i < aProperties.getLength(); ++i) + { + if (aProperties[i].Name == "GraphicBitmap") + xBitmap = aProperties[i].Value.get<uno::Reference<awt::XBitmap>>(); + } + CPPUNIT_ASSERT(xBitmap.is()); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx index fbcafd56637a..ce39098a3bd2 100644 --- a/sw/source/core/unocore/unosett.cxx +++ b/sw/source/core/unocore/unosett.cxx @@ -50,6 +50,7 @@ #include <com/sun/star/text/HoriOrientation.hpp> #include <com/sun/star/style/LineNumberPosition.hpp> #include <com/sun/star/awt/XBitmap.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/style/VerticalAlignment.hpp> #include <o3tl/any.hxx> @@ -1451,8 +1452,8 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetPropertiesForNumFormat pGraphic = pBrush->GetGraphic(); if(pGraphic) { - uno::Reference<awt::XBitmap> xBmp = VCLUnoHelper::CreateBitmap( pGraphic->GetBitmapEx() ); - aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_GRAPHIC_BITMAP, xBmp)); + uno::Reference<awt::XBitmap> xBitmap(pGraphic->GetXGraphic(), uno::UNO_QUERY); + aPropertyValues.push_back(comphelper::makePropertyValue(UNO_NAME_GRAPHIC_BITMAP, xBitmap)); } Size aSize = rFormat.GetGraphicSize(); // #i101131# @@ -1959,9 +1960,9 @@ void SwXNumberingRules::SetPropertiesToNumFormat( pSetBrush = new SvxBrushItem(OUString(), OUString(), GPOS_AREA, RES_BACKGROUND); } - BitmapEx aBmp = VCLUnoHelper::GetBitmap(xBitmap); - Graphic aNewGr(aBmp); - pSetBrush->SetGraphic( aNewGr ); + uno::Reference<graphic::XGraphic> xGraphic(xBitmap, uno::UNO_QUERY); + Graphic aGraphic(xGraphic); + pSetBrush->SetGraphic(aGraphic); } else bWrongArg = true; diff --git a/xmloff/source/style/xmlnumi.cxx b/xmloff/source/style/xmlnumi.cxx index 2003144946b9..7c0a4665b611 100644 --- a/xmloff/source/style/xmlnumi.cxx +++ b/xmloff/source/style/xmlnumi.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/style/XStyle.hpp> #include <com/sun/star/io/XOutputStream.hpp> +#include <com/sun/star/awt/XBitmap.hpp> #include <o3tl/any.hxx> #include <o3tl/make_unique.hxx> @@ -528,23 +529,27 @@ Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties() if( bImage ) { - OUString sStr( sImageURL ); - if( !sImageURL.isEmpty() ) + uno::Reference<graphic::XGraphic> xGraphic; + if (!sImageURL.isEmpty()) { - sStr = GetImport().ResolveGraphicObjectURL( sImageURL, false ); + xGraphic = GetImport().loadGraphicByURL(sImageURL); } else if( xBase64Stream.is() ) { - sStr = GetImport().ResolveGraphicObjectURLFromBase64( xBase64Stream ); + xGraphic = GetImport().loadGraphicFromBase64(xBase64Stream); } - if( !sStr.isEmpty() ) + uno::Reference<awt::XBitmap> xBitmap; + if (xGraphic.is()) + xBitmap.set(xGraphic, uno::UNO_QUERY); + + if (xBitmap.is()) { - pProps[nPos].Name = "GraphicURL"; - pProps[nPos++].Value <<= sStr; + pProps[nPos].Name = "GraphicBitmap"; + pProps[nPos++].Value <<= xBitmap; } - awt::Size aSize( nImageWidth, nImageHeight ); + awt::Size aSize(nImageWidth, nImageHeight); pProps[nPos].Name = "GraphicSize"; pProps[nPos++].Value <<= aSize; |