[ooo-build-commit] patches/dev300

Thorsten Behrens thorsten at kemper.freedesktop.org
Tue Aug 4 11:57:59 PDT 2009


 patches/dev300/apply                            |    1 
 patches/dev300/ppt-customshape-shading-fix.diff |   40 +++++++++++++-----------
 patches/dev300/svx-fontwork-crash-fix.diff      |   24 ++++++++++++++
 3 files changed, 47 insertions(+), 18 deletions(-)

New commits:
commit a954aa33b806464f490edd2fa9ddd73af4f770b7
Author: Thorsten Behrens <tbehrens at novell.com>
Date:   Tue Aug 4 20:55:03 2009 +0200

    Improve gradient fix, prevent crash in fontwork
    
    * patches/dev300/apply: added fontwork fix
    * patches/dev300/ppt-customshape-shading-fix.diff: only modify
      polygons when a *fill* is requested - this avoids messing with
      fontwork glyph polygons, which otherwise look ugly
    * patches/dev300/svx-fontwork-crash-fix.diff: avoid obvious crash
      for single-point polygons in fontwork

diff --git a/patches/dev300/apply b/patches/dev300/apply
index f2a8d33..ecfda6f 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3324,6 +3324,7 @@ basegfx-color-tools.diff, thorsten
 
 # much improved surface shades, gradient color for customshapes
 ppt-customshape-shading-fix.diff, n#485637, thorsten
+svx-fontwork-crash-fix.diff, n#526342, thorsten
 
 # purge autoshape geometry on model change
 svx-autoshape-cache-purge.diff, n#520104, thorsten
diff --git a/patches/dev300/ppt-customshape-shading-fix.diff b/patches/dev300/ppt-customshape-shading-fix.diff
index 71bc91b..80c8b88 100644
--- a/patches/dev300/ppt-customshape-shading-fix.diff
+++ b/patches/dev300/ppt-customshape-shading-fix.diff
@@ -5,14 +5,14 @@ From: Thorsten Behrens <thb at openoffice.org>
 
 ---
 
- svx/source/customshapes/EnhancedCustomShape2d.cxx |  248 +++++++++++++--------
+ svx/source/customshapes/EnhancedCustomShape2d.cxx |  252 +++++++++++++--------
  svx/source/customshapes/EnhancedCustomShape2d.hxx |    5 
  svx/source/msfilter/msdffimp.cxx                  |    9 -
- 3 files changed, 160 insertions(+), 102 deletions(-)
+ 3 files changed, 164 insertions(+), 102 deletions(-)
 
 
 diff --git svx/source/customshapes/EnhancedCustomShape2d.cxx svx/source/customshapes/EnhancedCustomShape2d.cxx
-index 0361511..796cd40 100644
+index 0361511..daf4454 100644
 --- svx/source/customshapes/EnhancedCustomShape2d.cxx
 +++ svx/source/customshapes/EnhancedCustomShape2d.cxx
 @@ -55,6 +55,12 @@
@@ -195,24 +195,28 @@ index 0361511..796cd40 100644
  }
  
  Rectangle EnhancedCustomShape2d::GetTextRect() const
-@@ -1713,6 +1727,16 @@ void EnhancedCustomShape2d::CreateSubPath( sal_uInt16& rSrcPt, sal_uInt16& rSegm
+@@ -1713,6 +1727,20 @@ void EnhancedCustomShape2d::CreateSubPath( sal_uInt16& rSrcPt, sal_uInt16& rSegm
  
  	if(aNewB2DPolyPolygon.count())
  	{
-+        // hack aNewB2DPolyPolygon to fill logic rect
-+        aNewB2DPolygon.clear();
-+        aNewB2DPolygon.append(basegfx::B2DPoint(0,0));
-+        aNewB2DPolyPolygon.append(aNewB2DPolygon);
++        if( !bLineGeometryNeededOnly )
++        {
++            // hack aNewB2DPolyPolygon to fill logic rect - this is
++            // needed to produce gradient fills that look like mso
++            aNewB2DPolygon.clear();
++            aNewB2DPolygon.append(basegfx::B2DPoint(0,0));
++            aNewB2DPolyPolygon.append(aNewB2DPolygon);
 +
-+        aNewB2DPolygon.clear();
-+        aNewB2DPolygon.append(basegfx::B2DPoint(aLogicRect.GetWidth(),
-+                                                aLogicRect.GetHeight()));
-+        aNewB2DPolyPolygon.append(aNewB2DPolygon);
++            aNewB2DPolygon.clear();
++            aNewB2DPolygon.append(basegfx::B2DPoint(aLogicRect.GetWidth(),
++                                                    aLogicRect.GetHeight()));
++            aNewB2DPolyPolygon.append(aNewB2DPolygon);
++        }
 +
  		// #i37011#
  		bool bForceCreateTwoObjects(false);
  
-@@ -1882,6 +1906,78 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve
+@@ -1882,6 +1910,78 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, std::ve
  	}
  }
  
@@ -291,7 +295,7 @@ index 0361511..796cd40 100644
  
  SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnly )
  {
-@@ -1906,18 +2002,10 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
+@@ -1906,18 +2006,10 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
  	if ( vObjectList.size() )
  	{
  		const SfxItemSet& rCustomShapeSet = pCustomShapeObj->GetMergedItemSet();
@@ -310,7 +314,7 @@ index 0361511..796cd40 100644
  		// #i37011# remove invisible objects
  		if(vObjectList.size())
  		{
-@@ -1927,7 +2015,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
+@@ -1927,7 +2019,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
  			{
  				SdrPathObj* pObj(vObjectList[i]);
  				const XLineStyle eLineStyle = ((const XLineStyleItem&)pObj->GetMergedItem(XATTR_LINESTYLE)).GetValue();
@@ -319,7 +323,7 @@ index 0361511..796cd40 100644
  
  				//SJ: #i40600# if bLineGeometryNeededOnly is set linystyle does not matter
  				if( !bLineGeometryNeededOnly && ( XLINE_NONE == eLineStyle ) && ( XFILL_NONE == eFillStyle ) )
-@@ -1942,26 +2030,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
+@@ -1942,26 +2034,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
  		if(1L == vObjectList.size())
  		{
  			// a single object, correct some values
@@ -347,7 +351,7 @@ index 0361511..796cd40 100644
  		}
  		else
  		{
-@@ -1980,16 +2049,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
+@@ -1980,16 +2053,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( sal_Bool bLineGeometryNeededOnl
  				else
  				{
  					nAreaObjectCount++;
@@ -382,7 +386,7 @@ index 9d0f04b..fc28b3d 100644
  													const sal_Bool bReplaceGeoWidth, const sal_Bool bReplaceGeoHeight ) const;
  		Point						GetPoint( const com::sun::star::drawing::EnhancedCustomShapeParameterPair&,
 diff --git svx/source/msfilter/msdffimp.cxx svx/source/msfilter/msdffimp.cxx
-index 05ae58c..cf4a5df 100644
+index 0ef0d6e..98b96cf 100644
 --- svx/source/msfilter/msdffimp.cxx
 +++ svx/source/msfilter/msdffimp.cxx
 @@ -1668,12 +1668,7 @@ void DffPropertyReader::ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, co
diff --git a/patches/dev300/svx-fontwork-crash-fix.diff b/patches/dev300/svx-fontwork-crash-fix.diff
new file mode 100644
index 0000000..dab5736
--- /dev/null
+++ b/patches/dev300/svx-fontwork-crash-fix.diff
@@ -0,0 +1,24 @@
+Fix crash in fontwork
+
+From: Thorsten Behrens <thb at openoffice.org>
+
+
+---
+
+ .../customshapes/EnhancedCustomShapeFontWork.cxx   |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+
+diff --git svx/source/customshapes/EnhancedCustomShapeFontWork.cxx svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
+index dfcebaa..2345036 100644
+--- svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
++++ svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
+@@ -639,7 +639,7 @@ void InsertMissingOutlinePoints( const Polygon& /*rOutlinePoly*/, const std::vec
+ void GetPoint( const Polygon& rPoly, const std::vector< double >& rDistances, const double& fX, double& fx1, double& fy1 )
+ {
+ 	fy1 = fx1 = 0.0;
+-	if ( rPoly.GetSize() )
++	if ( rPoly.GetSize() > 1 )
+ 	{
+ 		std::vector< double >::const_iterator aIter = std::lower_bound( rDistances.begin(), rDistances.end(), fX );
+ 		sal_uInt16 nIdx = sal::static_int_cast<sal_uInt16>( std::distance( rDistances.begin(), aIter ) );


More information about the ooo-build-commit mailing list