From c35863cc970ab6ef049b9177a5aeec46e9f865f66703b3e2af9da587458c11c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Wed, 7 Nov 2018 12:36:55 +0000 Subject: [PATCH] Accepting request 646502 from LibreOffice:6.1 - bsc#1110348 LO-L3: [PPTX] Charts having weird/darker/ugly background versus Office 365 and strange artefacts where overlapping * bsc1110348.patch OBS-URL: https://build.opensuse.org/request/show/646502 OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=724 --- bsc1110348.patch | 275 ++++++++++++++++++++++++++++++++++++++++++++ libreoffice.changes | 8 +- libreoffice.spec | 7 +- 3 files changed, 287 insertions(+), 3 deletions(-) create mode 100644 bsc1110348.patch diff --git a/bsc1110348.patch b/bsc1110348.patch new file mode 100644 index 0000000..f679997 --- /dev/null +++ b/bsc1110348.patch @@ -0,0 +1,275 @@ +From b77f4f69bb2f1d3ab740446799da2fd3db9094da Mon Sep 17 00:00:00 2001 +From: Balazs Varga +Date: Wed, 31 Oct 2018 08:43:47 +0100 +Subject: [PATCH] tdf#108104 OOXML Import: Fix Hatch fill in Charts + +Sets an explicit fill hatch, or creates a named fill hatch +and stored in a global container. With this patch the +SUPPORTED MS Office hatch styles by LibreOffice, or the custom +LibreOffice hatches will be appeared correctly instead of the +previous display as horizontal lines in LibreOffice. +(The background color of the hatch styles are not imported correcty, +but that is another BUG.) + +Change-Id: Ifda9dc805dd08f58db10b35f40d7f511a8614f77 +Reviewed-on: https://gerrit.libreoffice.org/62681 +Tested-by: Jenkins +Reviewed-by: Miklos Vajna +Reviewed-on: https://gerrit.libreoffice.org/62891 +Reviewed-by: Andras Timar +--- + +diff --git a/include/oox/drawingml/shapepropertymap.hxx b/include/oox/drawingml/shapepropertymap.hxx +index 2fb237c..dd2d0d4 100644 +--- a/include/oox/drawingml/shapepropertymap.hxx ++++ b/include/oox/drawingml/shapepropertymap.hxx +@@ -71,7 +71,7 @@ + FillBitmapOffsetX, + FillBitmapOffsetY, + FillBitmapRectanglePoint, +- FillHatch, ++ FillHatch, /// Explicit fill hatch or name of a fill hatch stored in a global container. + ShadowXDistance, + FillBitmapName, + FillBackground, +@@ -87,12 +87,13 @@ + bool mbNamedLineDash; /// True = use named line dash instead of explicit line dash. + bool mbNamedFillGradient; /// True = use named fill gradient instead of explicit fill gradient. + bool mbNamedFillBitmap; /// True = use named fill bitmap instead of explicit fill bitmap. ++ bool mbNamedFillHatch; /// True = use named fill hatch instead of explicit fill hatch. + + static ShapePropertyInfo DEFAULT; /// Default property info (used as default parameter of other methods). + + explicit ShapePropertyInfo(const ShapePropertyIds& rnPropertyIds, + bool bNamedLineMarker, bool bNamedLineDash, +- bool bNamedFillGradient, bool bNamedFillBitmap); ++ bool bNamedFillGradient, bool bNamedFillBitmap, bool bNamedFillHatch); + + bool has(ShapeProperty ePropId) const + { +@@ -147,6 +148,8 @@ + bool setFillBitmap( sal_Int32 nPropId, const css::uno::Any& rValue ); + /** Sets an explicit fill bitmap and pushes the name to FillBitmapName */ + bool setFillBitmapName( const css::uno::Any& rValue ); ++ /** Sets an explicit fill hatch, or creates a named fill hatch. */ ++ bool setFillHatch( sal_Int32 nPropId, const css::uno::Any& rValue ); + + // not implemented, to prevent implicit conversion from enum to int + css::uno::Any& operator[]( ShapeProperty ePropId ) = delete; +diff --git a/include/oox/helper/modelobjecthelper.hxx b/include/oox/helper/modelobjecthelper.hxx +index eb9c7ba..016b963 100644 +--- a/include/oox/helper/modelobjecthelper.hxx ++++ b/include/oox/helper/modelobjecthelper.hxx +@@ -32,6 +32,7 @@ + namespace graphic { class XGraphic; } + namespace container { class XNameContainer; } + namespace drawing { struct LineDash; } ++ namespace drawing { struct Hatch; } + namespace drawing { struct PolyPolygonBezierCoords; } + namespace lang { class XMultiServiceFactory; } + } } } +@@ -105,6 +106,8 @@ + + OUString insertTransGrandient( const css::awt::Gradient& rGradient ); + ++ OUString insertFillHatch( const css::drawing::Hatch& rHatch ); ++ + /** Inserts a new named fill graphic, returns the bitmap name, based on + an internal constant name with a new unused index appended. */ + OUString insertFillBitmapXGraphic(css::uno::Reference const & rxGraphic); +@@ -117,10 +120,12 @@ + ObjectContainer maGradientContainer; ///< Contains all named fill gradients. + ObjectContainer maTransGradContainer; ///< Contains all named transparency Gradients. + ObjectContainer maBitmapUrlContainer; ///< Contains all named fill bitmap URLs. ++ ObjectContainer maHatchContainer; ///< Contains all named fill hatches. + const OUString maDashNameBase; ///< Base name for all named line dashes. + const OUString maGradientNameBase; ///< Base name for all named fill gradients. + const OUString maTransGradNameBase; ///< Base name for all named fill gradients. + const OUString maBitmapUrlNameBase; ///< Base name for all named fill bitmap URLs. ++ const OUString maHatchNameBase; ///< Base name for all named fill hatch URLs. + }; + + +diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx +index 5b5f67b..2eaad42 100644 +--- a/oox/source/drawingml/chart/objectformatter.cxx ++++ b/oox/source/drawingml/chart/objectformatter.cxx +@@ -449,7 +449,8 @@ + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, + PROP_FillStyle, PROP_FillColor, PROP_FillTransparence, PROP_INVALID, PROP_FillGradientName, + PROP_FillBitmapName, PROP_FillBitmapMode, PROP_FillBitmapSizeX, PROP_FillBitmapSizeY, +- PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint ++ PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint, ++ PROP_FillHatchName + }; + + static const ShapePropertyIds spnLinearPropIds = +@@ -458,7 +459,8 @@ + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, +- PROP_INVALID, PROP_INVALID, PROP_INVALID ++ PROP_INVALID, PROP_INVALID, PROP_INVALID, ++ PROP_INVALID + }; + + static const ShapePropertyIds spnFilledPropIds = +@@ -487,15 +489,15 @@ + PROP_FillBitmapPositionOffsetX, + PROP_FillBitmapPositionOffsetY, + PROP_FillBitmapRectanglePoint, +- PROP_FillHatch ++ PROP_HatchName + }; + + /** Property info for common chart objects, to be used in ShapePropertyMap. */ +-static const ShapePropertyInfo saCommonPropInfo( spnCommonPropIds, false, true, true, true ); ++static const ShapePropertyInfo saCommonPropInfo( spnCommonPropIds, false, true, true, true, true ); + /** Property info for linear data series, to be used in ShapePropertyMap. */ +-static const ShapePropertyInfo saLinearPropInfo( spnLinearPropIds, false, true, true, true ); ++static const ShapePropertyInfo saLinearPropInfo( spnLinearPropIds, false, true, true, true, true ); + /** Property info for filled data series, to be used in ShapePropertyMap. */ +-static const ShapePropertyInfo saFilledPropInfo( spnFilledPropIds, false, true, true, true ); ++static const ShapePropertyInfo saFilledPropInfo( spnFilledPropIds, false, true, true, true, true ); + + /** Contains information about formatting of a specific chart object type. */ + struct ObjectTypeFormatEntry +diff --git a/oox/source/drawingml/shapepropertymap.cxx b/oox/source/drawingml/shapepropertymap.cxx +index fcb1549..b072403 100644 +--- a/oox/source/drawingml/shapepropertymap.cxx ++++ b/oox/source/drawingml/shapepropertymap.cxx +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -53,15 +54,16 @@ + + } // namespace + +-ShapePropertyInfo ShapePropertyInfo::DEFAULT( spnDefaultShapeIds, true, false, false, false ); ++ShapePropertyInfo ShapePropertyInfo::DEFAULT( spnDefaultShapeIds, true, false, false, false, false ); + + ShapePropertyInfo::ShapePropertyInfo( const ShapePropertyIds& rnPropertyIds, +- bool bNamedLineMarker, bool bNamedLineDash, bool bNamedFillGradient, bool bNamedFillBitmap ) : ++ bool bNamedLineMarker, bool bNamedLineDash, bool bNamedFillGradient, bool bNamedFillBitmap, bool bNamedFillHatch ) : + mrPropertyIds(rnPropertyIds), + mbNamedLineMarker( bNamedLineMarker ), + mbNamedLineDash( bNamedLineDash ), + mbNamedFillGradient( bNamedFillGradient ), +- mbNamedFillBitmap( bNamedFillBitmap ) ++ mbNamedFillBitmap( bNamedFillBitmap ), ++ mbNamedFillHatch( bNamedFillHatch ) + { + } + +@@ -108,6 +110,9 @@ + + case ShapeProperty::FillBitmapName: + return setFillBitmapName(rValue); ++ ++ case ShapeProperty::FillHatch: ++ return setFillHatch( nPropId, rValue ); + + default:; // suppress compiler warnings + } +@@ -168,6 +173,22 @@ + return false; + } + ++bool ShapePropertyMap::setFillHatch( sal_Int32 nPropId, const Any& rValue ) ++{ ++ // push hatch explicitly ++ if( !maShapePropInfo.mbNamedFillHatch ) ++ return setAnyProperty( nPropId, rValue ); ++ ++ // create named hatch and push its name ++ if( rValue.has< Hatch >() ) ++ { ++ OUString aHatchName = mrModelObjHelper.insertFillHatch( rValue.get< Hatch >() ); ++ return !aHatchName.isEmpty() && setProperty( nPropId, aHatchName ); ++ } ++ ++ return false; ++} ++ + bool ShapePropertyMap::setGradientTrans( sal_Int32 nPropId, const Any& rValue ) + { + // create named gradient and push its name +diff --git a/oox/source/helper/modelobjecthelper.cxx b/oox/source/helper/modelobjecthelper.cxx +index 4929dc2..02481e2 100644 +--- a/oox/source/helper/modelobjecthelper.cxx ++++ b/oox/source/helper/modelobjecthelper.cxx +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -92,12 +93,14 @@ + maMarkerContainer( rxModelFactory, "com.sun.star.drawing.MarkerTable" ), + maDashContainer( rxModelFactory, "com.sun.star.drawing.DashTable" ), + maGradientContainer( rxModelFactory, "com.sun.star.drawing.GradientTable" ), +- maTransGradContainer( rxModelFactory, "com.sun.star.drawing.TransparencyGradientTable" ), ++ maTransGradContainer( rxModelFactory, "com.sun.star.drawing.TransparencyGradientTable" ), + maBitmapUrlContainer( rxModelFactory, "com.sun.star.drawing.BitmapTable" ), ++ maHatchContainer( rxModelFactory, "com.sun.star.drawing.HatchTable" ), + maDashNameBase( "msLineDash " ), + maGradientNameBase( "msFillGradient " ), + maTransGradNameBase( "msTransGradient " ), +- maBitmapUrlNameBase( "msFillBitmap " ) ++ maBitmapUrlNameBase( "msFillBitmap " ), ++ maHatchNameBase( "msFillHatch " ) + { + } + +@@ -137,6 +140,11 @@ + return OUString(); + } + ++OUString ModelObjectHelper::insertFillHatch( const Hatch& rHatch ) ++{ ++ return maHatchContainer.insertObject( maHatchNameBase, Any( rHatch ), true ); ++} ++ + uno::Reference ModelObjectHelper::getFillBitmap(OUString const & rGraphicName) + { + uno::Reference xBitmap; +diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx +index 8d6abaa..2704a24 100644 +--- a/oox/source/ppt/slidepersist.cxx ++++ b/oox/source/ppt/slidepersist.cxx +@@ -171,7 +171,7 @@ + + oox::drawingml::ShapePropertyIds aPropertyIds = oox::drawingml::ShapePropertyInfo::DEFAULT.mrPropertyIds; + aPropertyIds[oox::drawingml::ShapeProperty::FillGradient] = PROP_FillGradientName; +- oox::drawingml::ShapePropertyInfo aPropInfo( aPropertyIds, true, false, true, false ); ++ oox::drawingml::ShapePropertyInfo aPropInfo( aPropertyIds, true, false, true, false, false ); + oox::drawingml::ShapePropertyMap aPropMap( rFilterBase.getModelObjectHelper(), aPropInfo ); + mpBackgroundPropertiesPtr->pushToPropMap( aPropMap, rFilterBase.getGraphicHelper(), 0, nPhClr ); + PropertySet( mxPage ).setProperty( PROP_Background, aPropMap.makePropertySet() ); +diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt +index 86dd843..1b06aa7 100644 +--- a/oox/source/token/properties.txt ++++ b/oox/source/token/properties.txt +@@ -171,6 +171,7 @@ + FillGradient + FillGradientName + FillHatch ++FillHatchName + FillStyle + FillTransparence + FillTransparenceGradient +@@ -202,6 +203,7 @@ + GenerateVbaEvents + Geometry3D + GradientName ++HatchName + Graphic + GraphicBitmap + GraphicColorMode diff --git a/libreoffice.changes b/libreoffice.changes index fd79d5a..8156d8a 100644 --- a/libreoffice.changes +++ b/libreoffice.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Nov 5 19:57:23 UTC 2018 - andras.timar@collabora.com + +- bsc#1110348 LO-L3: [PPTX] Charts having weird/darker/ugly background versus Office 365 and strange artefacts where overlapping + * bsc1110348.patch + ------------------------------------------------------------------- Wed Oct 31 11:08:05 UTC 2018 - Tomáš Chvátal @@ -209,7 +215,7 @@ Sun Jun 17 07:56:09 UTC 2018 - tchvatal@suse.com * Tajik * Uyghur * Vietnamese - * Kurdish + * Kurdish ------------------------------------------------------------------- Sat Jun 16 12:08:53 UTC 2018 - tchvatal@suse.com diff --git a/libreoffice.spec b/libreoffice.spec index e4740a2..30be40b 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -104,6 +104,8 @@ Patch3: mediawiki-no-broken-help.diff Patch4: libreoffice-java-sched.patch Patch5: old-boost.patch Patch6: 0001-call-System.runFinalizersOnExit-by-reflection-since-.patch +# Bug 1110348 - LO-L3: [PPTX] Charts having weird/darker/ugly background versus Office 365 and strange artefacts where overlapping +Patch7: bsc1110348.patch # try to save space by using hardlinks Patch990: install-with-hardlinks.diff BuildRequires: %{name}-share-linker @@ -827,7 +829,7 @@ Provides %{langname} translations and additional resources (help files, etc.) fo %langpack -l am -n Amharic -T %langpack -l ar -n Arabic -s ctl -m ar -T %langpack -l as -n Assamese -%langpack -l ast -n Asturian -T +%langpack -l ast -n Asturian -T %langpack -l be -n Belarusian -m be_BY %langpack -l bg -n Bulgarian -X -m bg_BG -T %langpack -l bn -n Bengali -m bn_BD -T @@ -950,6 +952,7 @@ Provides %{langname} translations and additional resources (help files, etc.) fo %patch3 %patch4 -p1 %patch6 -p1 +%patch7 -p1 %patch990 -p1 # Disable some of the failing tests (some are random)