svx/source/customshapes/EnhancedCustomShape2d.cxx |   30 ++++++++++++++++++++++
 1 file changed, 30 insertions(+)

New commits:
commit 76bbe5ff357406ac1e0f212373c9fd4132b0d178
Author: Armin Le Grand <[email protected]>
Date:   Mon Dec 10 14:45:55 2012 +0000

    #121437# Added patch from Regina which implements QuadraticBezier segemnts 
to CustomShapes
    
    Patch by: Regina
    Review by: ALG
    (cherry picked from commit 4faa46872cad4ed779b07803b7f616b32d800284)

diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx 
b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index 0675abd..e5d5c2b 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -1562,6 +1562,36 @@ void EnhancedCustomShape2d::CreateSubPath( sal_uInt16& 
rSrcPt, sal_uInt16& rSegm
                 }
                 break;
 
+                case QUADRATICCURVETO :
+                {
+                    for ( sal_uInt16 i = 0; ( i < nPntCount ) && ( ( rSrcPt + 
1 ) < nCoordSize ); i++ )
+                    {
+                        if ( rSrcPt )
+                        {
+                            const Point aPreviousEndPoint(GetPoint( 
seqCoordinates[ rSrcPt - 1 ], sal_True, sal_True));
+                            const Point aControlQ(GetPoint( seqCoordinates[ 
rSrcPt++ ], sal_True, sal_True ));
+                            const Point aEnd(GetPoint( seqCoordinates[ 
rSrcPt++ ], sal_True, sal_True ));
+                            const Point aControlA((aPreviousEndPoint + 
(aControlQ * 2)) / 3);
+                            const Point aControlB(((aControlQ * 2) + aEnd) / 
3);
+
+                            DBG_ASSERT(aNewB2DPolygon.count(), 
"EnhancedCustomShape2d::CreateSubPath: Error in adding Q control point (!)");
+                            aNewB2DPolygon.appendBezierSegment(
+                                basegfx::B2DPoint(aControlA.X(), 
aControlA.Y()),
+                                basegfx::B2DPoint(aControlB.X(), 
aControlB.Y()),
+                                basegfx::B2DPoint(aEnd.X(), aEnd.Y()));
+                        }
+                        else // no previous point , do a moveto
+                        {
+                            rSrcPt++; // skip control point
+                            const Point aEnd(GetPoint( seqCoordinates[ 
rSrcPt++ ], sal_True, sal_True ));
+
+                            DBG_ASSERT(aNewB2DPolygon.count(), 
"EnhancedCustomShape2d::CreateSubPath: Error in adding Q control point (!)");
+                            aNewB2DPolygon.append(basegfx::B2DPoint(aEnd.X(), 
aEnd.Y()));
+                        }
+                    }
+                }
+                break;
+
                 case ANGLEELLIPSE :
                 {
                     if ( nPntCount )
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to