This is an automated email from the ASF dual-hosted git repository.

mseidel pushed a commit to branch AOO42X
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/AOO42X by this push:
     new 3646db82e3 Fixed typos, cleanup
3646db82e3 is described below

commit 3646db82e3baa51852eddbc5d3d5c5340a5f0dee
Author: mseidel <msei...@apache.org>
AuthorDate: Tue Mar 4 00:59:52 2025 +0100

    Fixed typos, cleanup
    
    (cherry picked from commit d0f02d504f020883217ddafca9ad519609418cfb)
---
 main/basegfx/source/polygon/b2dlinegeometry.cxx    | 1569 ++++++++++----------
 .../examples/java/Spreadsheet/EuroAdaption.java    |  148 +-
 main/ucb/source/ucp/file/prov.hxx                  |   36 +-
 3 files changed, 872 insertions(+), 881 deletions(-)

diff --git a/main/basegfx/source/polygon/b2dlinegeometry.cxx 
b/main/basegfx/source/polygon/b2dlinegeometry.cxx
index ead888c928..8e7daec215 100644
--- a/main/basegfx/source/polygon/b2dlinegeometry.cxx
+++ b/main/basegfx/source/polygon/b2dlinegeometry.cxx
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,20 +7,18 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
-
-
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_basegfx.hxx"
 #include <cstdio>
@@ -37,15 +35,13 @@
 #include <com/sun/star/drawing/LineCap.hpp>
 #include <basegfx/polygon/b2dpolypolygoncutter.hxx>
 
-//////////////////////////////////////////////////////////////////////////////
-
 namespace basegfx
 {
        namespace tools
        {
                B2DPolyPolygon createAreaGeometryForLineStartEnd(
-                       const B2DPolygon& rCandidate, 
-                       const B2DPolyPolygon& rArrow, 
+                       const B2DPolygon& rCandidate,
+                       const B2DPolyPolygon& rArrow,
                        bool bStart,
                        double fWidth,
                        double fCandidateLength,
@@ -56,79 +52,79 @@ namespace basegfx
                        OSL_ENSURE(rCandidate.count() > 1L, 
"createAreaGeometryForLineStartEnd: Line polygon has too less points (!)");
                        OSL_ENSURE(rArrow.count() > 0L, 
"createAreaGeometryForLineStartEnd: Empty arrow PolyPolygon (!)");
                        OSL_ENSURE(fWidth > 0.0, 
"createAreaGeometryForLineStartEnd: Width too small (!)");
-                       OSL_ENSURE(fDockingPosition >= 0.0 && fDockingPosition 
<= 1.0, 
+                       OSL_ENSURE(fDockingPosition >= 0.0 && fDockingPosition 
<= 1.0,
                                "createAreaGeometryForLineStartEnd: 
fDockingPosition out of range [0.0 .. 1.0] (!)");
 
-            if(fWidth < 0.0)
-            {
-                fWidth = -fWidth;
-            }
-
-            if(rCandidate.count() > 1 && rArrow.count() && 
!fTools::equalZero(fWidth))
-            {
-                if(fDockingPosition < 0.0)
-                {
-                    fDockingPosition = 0.0;
-                }
-                else if(fDockingPosition > 1.0)
-                {
-                    fDockingPosition = 1.0;
-                }
-
-                           // init return value from arrow
-                           aRetval.append(rArrow);
-
-                           // get size of the arrow
-                           const B2DRange aArrowSize(getRange(rArrow));
-
-                           // build ArrowTransform; center in X, align with 
axis in Y
-                B2DHomMatrix 
aArrowTransform(basegfx::tools::createTranslateB2DHomMatrix(
-                    -aArrowSize.getCenter().getX(), 
-aArrowSize.getMinimum().getY()));
-
-                           // scale to target size
-                           const double fArrowScale(fWidth / 
(aArrowSize.getRange().getX()));
-                           aArrowTransform.scale(fArrowScale, fArrowScale);
-
-                           // get arrow size in Y
-                           B2DPoint 
aUpperCenter(aArrowSize.getCenter().getX(), aArrowSize.getMaximum().getY());
-                           aUpperCenter *= aArrowTransform;
-                           const double 
fArrowYLength(B2DVector(aUpperCenter).getLength());
-
-                           // move arrow to have docking position centered
-                           aArrowTransform.translate(0.0, -fArrowYLength * 
fDockingPosition);
-
-                           // prepare polygon length
-                           if(fTools::equalZero(fCandidateLength))
-                           {
-                                   fCandidateLength = getLength(rCandidate);
-                           }
-
-                           // get the polygon vector we want to plant this 
arrow on
-                           const double fConsumedLength(fArrowYLength * (1.0 - 
fDockingPosition));
-                           const B2DVector 
aHead(rCandidate.getB2DPoint((bStart) ? 0L : rCandidate.count() - 1L));
-                           const B2DVector 
aTail(getPositionAbsolute(rCandidate, 
-                                   (bStart) ? fConsumedLength : 
fCandidateLength - fConsumedLength, fCandidateLength));
-
-                           // from that vector, take the needed rotation and 
add rotate for arrow to transformation
-                           const B2DVector aTargetDirection(aHead - aTail);
-                           const double 
fRotation(atan2(aTargetDirection.getY(), aTargetDirection.getX()) + (90.0 * 
F_PI180));
-
-                           // rotate around docking position
-                           aArrowTransform.rotate(fRotation);
-
-                           // move arrow docking position to polygon head
-                           aArrowTransform.translate(aHead.getX(), 
aHead.getY());
-
-                           // transform retval and close
-                           aRetval.transform(aArrowTransform);
-                           aRetval.setClosed(true);
-
-                           // if pConsumedLength is asked for, fill it
-                           if(pConsumedLength)
-                           {
-                                   *pConsumedLength = fConsumedLength;
-                           }
-            }
+                       if(fWidth < 0.0)
+                       {
+                               fWidth = -fWidth;
+                       }
+
+                       if(rCandidate.count() > 1 && rArrow.count() && 
!fTools::equalZero(fWidth))
+                       {
+                               if(fDockingPosition < 0.0)
+                               {
+                                       fDockingPosition = 0.0;
+                               }
+                               else if(fDockingPosition > 1.0)
+                               {
+                                       fDockingPosition = 1.0;
+                               }
+
+                               // init return value from arrow
+                               aRetval.append(rArrow);
+
+                               // get size of the arrow
+                               const B2DRange aArrowSize(getRange(rArrow));
+
+                               // build ArrowTransform; center in X, align 
with axis in Y
+                               B2DHomMatrix 
aArrowTransform(basegfx::tools::createTranslateB2DHomMatrix(
+                                       -aArrowSize.getCenter().getX(), 
-aArrowSize.getMinimum().getY()));
+
+                               // scale to target size
+                               const double fArrowScale(fWidth / 
(aArrowSize.getRange().getX()));
+                               aArrowTransform.scale(fArrowScale, fArrowScale);
+
+                               // get arrow size in Y
+                               B2DPoint 
aUpperCenter(aArrowSize.getCenter().getX(), aArrowSize.getMaximum().getY());
+                               aUpperCenter *= aArrowTransform;
+                               const double 
fArrowYLength(B2DVector(aUpperCenter).getLength());
+
+                               // move arrow to have docking position centered
+                               aArrowTransform.translate(0.0, -fArrowYLength * 
fDockingPosition);
+
+                               // prepare polygon length
+                               if(fTools::equalZero(fCandidateLength))
+                               {
+                                       fCandidateLength = 
getLength(rCandidate);
+                               }
+
+                               // get the polygon vector we want to plant this 
arrow on
+                               const double fConsumedLength(fArrowYLength * 
(1.0 - fDockingPosition));
+                               const B2DVector 
aHead(rCandidate.getB2DPoint((bStart) ? 0L : rCandidate.count() - 1L));
+                               const B2DVector 
aTail(getPositionAbsolute(rCandidate,
+                                       (bStart) ? fConsumedLength : 
fCandidateLength - fConsumedLength, fCandidateLength));
+
+                               // from that vector, take the needed rotation 
and add rotate for arrow to transformation
+                               const B2DVector aTargetDirection(aHead - aTail);
+                               const double 
fRotation(atan2(aTargetDirection.getY(), aTargetDirection.getX()) + (90.0 * 
F_PI180));
+
+                               // rotate around docking position
+                               aArrowTransform.rotate(fRotation);
+
+                               // move arrow docking position to polygon head
+                               aArrowTransform.translate(aHead.getX(), 
aHead.getY());
+
+                               // transform retval and close
+                               aRetval.transform(aArrowTransform);
+                               aRetval.setClosed(true);
+
+                               // if pConsumedLength is asked for, fill it
+                               if(pConsumedLength)
+                               {
+                                       *pConsumedLength = fConsumedLength;
+                               }
+                       }
 
                        return aRetval;
                }
@@ -142,31 +138,31 @@ namespace basegfx
        // anonymus namespace for local helpers
        namespace
        {
-        bool impIsSimpleEdge(const B2DCubicBezier& rCandidate, double 
fMaxCosQuad, double fMaxPartOfEdgeQuad)
-        {
-            // isBezier() is true, already tested by caller
-            const B2DVector aEdge(rCandidate.getEndPoint() - 
rCandidate.getStartPoint());
-
-            if(aEdge.equalZero())
-            {
-                // start and end point the same, but control vectors used -> 
baloon curve loop
-                // is not a simple edge
-                return false;
-            }
-
-            // get tangentA and scalar with edge
-            const B2DVector aTangentA(rCandidate.getTangent(0.0));
-               const double fScalarAE(aEdge.scalar(aTangentA));
-
-            if(fTools::lessOrEqual(fScalarAE, 0.0))
-            {
-                // angle between TangentA and Edge is bigger or equal 90 
degrees
-                return false;
-            }
-
-            // get self-scalars for E and A
-               const double fScalarE(aEdge.scalar(aEdge));
-               const double fScalarA(aTangentA.scalar(aTangentA));
+               bool impIsSimpleEdge(const B2DCubicBezier& rCandidate, double 
fMaxCosQuad, double fMaxPartOfEdgeQuad)
+               {
+                       // isBezier() is true, already tested by caller
+                       const B2DVector aEdge(rCandidate.getEndPoint() - 
rCandidate.getStartPoint());
+
+                       if(aEdge.equalZero())
+                       {
+                               // start and end point the same, but control 
vectors used -> balloon curve loop
+                               // is not a simple edge
+                               return false;
+                       }
+
+                       // get tangentA and scalar with edge
+                       const B2DVector aTangentA(rCandidate.getTangent(0.0));
+                       const double fScalarAE(aEdge.scalar(aTangentA));
+
+                       if(fTools::lessOrEqual(fScalarAE, 0.0))
+                       {
+                               // angle between TangentA and Edge is bigger or 
equal 90 degrees
+                               return false;
+                       }
+
+                       // get self-scalars for E and A
+                       const double fScalarE(aEdge.scalar(aEdge));
+                       const double fScalarA(aTangentA.scalar(aTangentA));
                        const double fLengthCompareE(fScalarE * 
fMaxPartOfEdgeQuad);
 
                        if(fTools::moreOrEqual(fScalarA, fLengthCompareE))
@@ -175,24 +171,24 @@ namespace basegfx
                                return false;
                        }
 
-            if(fTools::lessOrEqual(fScalarAE * fScalarAE, fScalarA * fScalarE 
* fMaxCosQuad))
-            {
-                // angle between TangentA and Edge is bigger or equal angle 
defined by fMaxCos
-                return false;
-            }
+                       if(fTools::lessOrEqual(fScalarAE * fScalarAE, fScalarA 
* fScalarE * fMaxCosQuad))
+                       {
+                               // angle between TangentA and Edge is bigger or 
equal angle defined by fMaxCos
+                               return false;
+                       }
 
-            // get tangentB and scalar with edge
-            const B2DVector aTangentB(rCandidate.getTangent(1.0));
-               const double fScalarBE(aEdge.scalar(aTangentB));
+                       // get tangentB and scalar with edge
+                       const B2DVector aTangentB(rCandidate.getTangent(1.0));
+                       const double fScalarBE(aEdge.scalar(aTangentB));
 
-            if(fTools::lessOrEqual(fScalarBE, 0.0))
-            {
-                // angle between TangentB and Edge is bigger or equal 90 
degrees
-                return false;
-            }
+                       if(fTools::lessOrEqual(fScalarBE, 0.0))
+                       {
+                               // angle between TangentB and Edge is bigger or 
equal 90 degrees
+                               return false;
+                       }
 
-            // get self-scalar for B
-               const double fScalarB(aTangentB.scalar(aTangentB));
+                       // get self-scalar for B
+                       const double fScalarB(aTangentB.scalar(aTangentB));
 
                        if(fTools::moreOrEqual(fScalarB, fLengthCompareE))
                        {
@@ -201,500 +197,500 @@ namespace basegfx
                        }
 
                        if(fTools::lessOrEqual(fScalarBE * fScalarBE, fScalarB 
* fScalarE * fMaxCosQuad))
-            {
-                // angle between TangentB and Edge is bigger or equal defined 
by fMaxCos
-                return false;
-            }
-
-            return true;
-        }
-
-        void impSubdivideToSimple(const B2DCubicBezier& rCandidate, 
B2DPolygon& rTarget, double fMaxCosQuad, double fMaxPartOfEdgeQuad, sal_uInt32 
nMaxRecursionDepth)
-        {
-            if(!nMaxRecursionDepth || impIsSimpleEdge(rCandidate, fMaxCosQuad, 
fMaxPartOfEdgeQuad))
-            {
-                rTarget.appendBezierSegment(rCandidate.getControlPointA(), 
rCandidate.getControlPointB(), rCandidate.getEndPoint());
-            }
-            else
-            {
-                B2DCubicBezier aLeft, aRight;
-                rCandidate.split(0.5, &aLeft, &aRight);
-        
-                impSubdivideToSimple(aLeft, rTarget, fMaxCosQuad, 
fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
-                impSubdivideToSimple(aRight, rTarget, fMaxCosQuad, 
fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
-            }
-        }
-
-        B2DPolygon subdivideToSimple(const B2DPolygon& rCandidate, double 
fMaxCosQuad, double fMaxPartOfEdgeQuad)
-        {
-            const sal_uInt32 nPointCount(rCandidate.count());
-
-            if(rCandidate.areControlPointsUsed() && nPointCount)
-            {
-                const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? 
nPointCount : nPointCount - 1);
-                B2DPolygon aRetval;
+                       {
+                               // angle between TangentB and Edge is bigger or 
equal defined by fMaxCos
+                               return false;
+                       }
+
+                       return true;
+               }
+
+               void impSubdivideToSimple(const B2DCubicBezier& rCandidate, 
B2DPolygon& rTarget, double fMaxCosQuad, double fMaxPartOfEdgeQuad, sal_uInt32 
nMaxRecursionDepth)
+               {
+                       if(!nMaxRecursionDepth || impIsSimpleEdge(rCandidate, 
fMaxCosQuad, fMaxPartOfEdgeQuad))
+                       {
+                               
rTarget.appendBezierSegment(rCandidate.getControlPointA(), 
rCandidate.getControlPointB(), rCandidate.getEndPoint());
+                       }
+                       else
+                       {
+                               B2DCubicBezier aLeft, aRight;
+                               rCandidate.split(0.5, &aLeft, &aRight);
+
+                               impSubdivideToSimple(aLeft, rTarget, 
fMaxCosQuad, fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
+                               impSubdivideToSimple(aRight, rTarget, 
fMaxCosQuad, fMaxPartOfEdgeQuad, nMaxRecursionDepth - 1);
+                       }
+               }
+
+               B2DPolygon subdivideToSimple(const B2DPolygon& rCandidate, 
double fMaxCosQuad, double fMaxPartOfEdgeQuad)
+               {
+                       const sal_uInt32 nPointCount(rCandidate.count());
+
+                       if(rCandidate.areControlPointsUsed() && nPointCount)
+                       {
+                               const sal_uInt32 
nEdgeCount(rCandidate.isClosed() ? nPointCount : nPointCount - 1);
+                               B2DPolygon aRetval;
                                B2DCubicBezier aEdge;
 
                                // prepare edge for loop
                                aEdge.setStartPoint(rCandidate.getB2DPoint(0));
                                aRetval.append(aEdge.getStartPoint());
 
-                for(sal_uInt32 a(0); a < nEdgeCount; a++)
-                {
-                    // fill B2DCubicBezier
-                    const sal_uInt32 nNextIndex((a + 1) % nPointCount);
-                    aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
-                    
aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
-                    aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
-                    
-                    // get rid of unnecessary bezier segments
-                    aEdge.testAndSolveTrivialBezier();
-
-                    if(aEdge.isBezier())
-                    {
+                               for(sal_uInt32 a(0); a < nEdgeCount; a++)
+                               {
+                                       // fill B2DCubicBezier
+                                       const sal_uInt32 nNextIndex((a + 1) % 
nPointCount);
+                                       
aEdge.setControlPointA(rCandidate.getNextControlPoint(a));
+                                       
aEdge.setControlPointB(rCandidate.getPrevControlPoint(nNextIndex));
+                                       
aEdge.setEndPoint(rCandidate.getB2DPoint(nNextIndex));
+
+                                       // get rid of unnecessary bezier 
segments
+                                       aEdge.testAndSolveTrivialBezier();
+
+                                       if(aEdge.isBezier())
+                                       {
                                                // before splitting recursively 
with internal simple criteria, use
                                                // ExtremumPosFinder to remove 
those
-                               ::std::vector< double > aExtremumPositions;
-
-                        aExtremumPositions.reserve(4);
-                               
aEdge.getAllExtremumPositions(aExtremumPositions);
-                               
-                        const sal_uInt32 nCount(aExtremumPositions.size());
-
-                        if(nCount)
-                        {
-                            if(nCount > 1)
-                            {
-                                // create order from left to right
-                                ::std::sort(aExtremumPositions.begin(), 
aExtremumPositions.end());
-                            }
-
-                            for(sal_uInt32 b(0); b < nCount;)
-                            {
-                                // split aEdge at next split pos
-                                B2DCubicBezier aLeft;
-                                const double 
fSplitPos(aExtremumPositions[b++]);
-                                
-                                aEdge.split(fSplitPos, &aLeft, &aEdge);
-                                aLeft.testAndSolveTrivialBezier();
-
-                                // consume left part
-                                if(aLeft.isBezier())
-                                                       {
-                                       impSubdivideToSimple(aLeft, aRetval, 
fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
-                                                       }
-                                                       else
-                                                       {
-                                       aRetval.append(aLeft.getEndPoint());
-                                                       }
-                            
-                                if(b < nCount)
-                                {
-                                    // correct the remaining split positions 
to fit to shortened aEdge
-                                    const double fScaleFactor(1.0 / (1.0 - 
fSplitPos));
-
-                                    for(sal_uInt32 c(b); c < nCount; c++)
-                                    {
-                                        aExtremumPositions[c] = 
(aExtremumPositions[c] - fSplitPos) * fScaleFactor;
-                                    }
-                                }
-                            }
-                        
-                            // test the shortened rest of aEdge
-                            aEdge.testAndSolveTrivialBezier();
-
-                            // consume right part
-                            if(aEdge.isBezier())
-                                               {
-                                impSubdivideToSimple(aEdge, aRetval, 
fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
-                                               }
-                                               else
-                                               {
-                                aRetval.append(aEdge.getEndPoint());
-                                               }
-                        }
-                        else
-                        {
-                               impSubdivideToSimple(aEdge, aRetval, 
fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
-                        }
-                    }
-                    else
-                    {
-                        // straight edge, add point
-                        aRetval.append(aEdge.getEndPoint());
-                    }
+                                               ::std::vector< double > 
aExtremumPositions;
+
+                                               aExtremumPositions.reserve(4);
+                                               
aEdge.getAllExtremumPositions(aExtremumPositions);
+
+                                               const sal_uInt32 
nCount(aExtremumPositions.size());
+
+                                               if(nCount)
+                                               {
+                                                       if(nCount > 1)
+                                                       {
+                                                               // create order 
from left to right
+                                                               
::std::sort(aExtremumPositions.begin(), aExtremumPositions.end());
+                                                       }
+
+                                                       for(sal_uInt32 b(0); b 
< nCount;)
+                                                       {
+                                                               // split aEdge 
at next split pos
+                                                               B2DCubicBezier 
aLeft;
+                                                               const double 
fSplitPos(aExtremumPositions[b++]);
+
+                                                               
aEdge.split(fSplitPos, &aLeft, &aEdge);
+                                                               
aLeft.testAndSolveTrivialBezier();
+
+                                                               // consume left 
part
+                                                               
if(aLeft.isBezier())
+                                                               {
+                                                                       
impSubdivideToSimple(aLeft, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+                                                               }
+                                                               else
+                                                               {
+                                                                       
aRetval.append(aLeft.getEndPoint());
+                                                               }
+
+                                                               if(b < nCount)
+                                                               {
+                                                                       // 
correct the remaining split positions to fit to shortened aEdge
+                                                                       const 
double fScaleFactor(1.0 / (1.0 - fSplitPos));
+
+                                                                       
for(sal_uInt32 c(b); c < nCount; c++)
+                                                                       {
+                                                                               
aExtremumPositions[c] = (aExtremumPositions[c] - fSplitPos) * fScaleFactor;
+                                                                       }
+                                                               }
+                                                       }
+
+                                                       // test the shortened 
rest of aEdge
+                                                       
aEdge.testAndSolveTrivialBezier();
+
+                                                       // consume right part
+                                                       if(aEdge.isBezier())
+                                                       {
+                                                               
impSubdivideToSimple(aEdge, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+                                                       }
+                                                       else
+                                                       {
+                                                               
aRetval.append(aEdge.getEndPoint());
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       
impSubdivideToSimple(aEdge, aRetval, fMaxCosQuad, fMaxPartOfEdgeQuad, 6);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               // straight edge, add point
+                                               
aRetval.append(aEdge.getEndPoint());
+                                       }
 
                                        // prepare edge for next step
                                        
aEdge.setStartPoint(aEdge.getEndPoint());
-                }
+                               }
 
                                // copy closed flag and check for double points
-                aRetval.setClosed(rCandidate.isClosed());
-                aRetval.removeDoublePoints();
-
-                return aRetval;
-            }
-            else
-            {
-                return rCandidate;
-            }
-        }
-
-        B2DPolygon createAreaGeometryForEdge(
-            const B2DCubicBezier& rEdge, 
-            double fHalfLineWidth,
-            bool bStartRound,
-            bool bEndRound,
-            bool bStartSquare,
-            bool bEndSquare)
-        {
-            // create polygon for edge
-            // Unfortunately, while it would be geometrically correct to not 
add
-            // the in-between points EdgeEnd and EdgeStart, it leads to 
rounding
-            // errors when converting to integer polygon coordinates for 
painting
-            if(rEdge.isBezier())
-            {
-                // prepare target and data common for upper and lower
-                B2DPolygon aBezierPolygon;
-                const B2DVector aPureEdgeVector(rEdge.getEndPoint() - 
rEdge.getStartPoint());
-                const double fEdgeLength(aPureEdgeVector.getLength());
-                const bool bIsEdgeLengthZero(fTools::equalZero(fEdgeLength));
-                B2DVector aTangentA(rEdge.getTangent(0.0)); 
aTangentA.normalize();
-                B2DVector aTangentB(rEdge.getTangent(1.0)); 
aTangentB.normalize();
-                const B2DVector 
aNormalizedPerpendicularA(getPerpendicular(aTangentA));
-                const B2DVector 
aNormalizedPerpendicularB(getPerpendicular(aTangentB));
-
-                // create upper displacement vectors and check if they cut
-                const B2DVector aPerpendStartA(aNormalizedPerpendicularA * 
-fHalfLineWidth);
-                const B2DVector aPerpendEndA(aNormalizedPerpendicularB * 
-fHalfLineWidth);
-                double fCutA(0.0);
-                const tools::CutFlagValue aCutA(tools::findCut(
-                    rEdge.getStartPoint(), aPerpendStartA,
-                    rEdge.getEndPoint(), aPerpendEndA, 
-                    CUTFLAG_ALL, &fCutA));
-                const bool bCutA(CUTFLAG_NONE != aCutA);
-
-                // create lower displacement vectors and check if they cut
-                const B2DVector aPerpendStartB(aNormalizedPerpendicularA * 
fHalfLineWidth);
-                const B2DVector aPerpendEndB(aNormalizedPerpendicularB * 
fHalfLineWidth);
-                double fCutB(0.0);
-                const tools::CutFlagValue aCutB(tools::findCut(
-                    rEdge.getEndPoint(), aPerpendEndB,
-                    rEdge.getStartPoint(), aPerpendStartB, 
-                    CUTFLAG_ALL, &fCutB));
-                const bool bCutB(CUTFLAG_NONE != aCutB);
-
-                // check if cut happens
-                const bool bCut(bCutA || bCutB);
-                B2DPoint aCutPoint;
-
-                // create left edge
-                if(bStartRound || bStartSquare)
-                {
-                    if(bStartRound)
-                    {
-                        basegfx::B2DPolygon 
aStartPolygon(tools::createHalfUnitCircle());
-
-                        aStartPolygon.transform(
-                            
tools::createScaleShearXRotateTranslateB2DHomMatrix(
-                                fHalfLineWidth, fHalfLineWidth,
-                                0.0,
-                                atan2(aTangentA.getY(), aTangentA.getX()) + 
F_PI2,
-                                rEdge.getStartPoint().getX(), 
rEdge.getStartPoint().getY()));
-                        aBezierPolygon.append(aStartPolygon);
-                    }
-                    else // bStartSquare
-                    {
-                        const basegfx::B2DPoint aStart(rEdge.getStartPoint() - 
(aTangentA * fHalfLineWidth));
-
-                        if(bCutB)
-                        {
-                            aBezierPolygon.append(rEdge.getStartPoint() + 
aPerpendStartB);
-                        }
-
-                        aBezierPolygon.append(aStart + aPerpendStartB);
-                        aBezierPolygon.append(aStart + aPerpendStartA);
-
-                        if(bCutA)
-                        {
-                            aBezierPolygon.append(rEdge.getStartPoint() + 
aPerpendStartA);
-                        }
-                    }
-                }
-                else
-                {
-                    // append original in-between point
-                    aBezierPolygon.append(rEdge.getStartPoint());
-                }
-
-                // create upper edge.
-                {
-                    if(bCutA)
-                    {
-                        // calculate cut point and add
-                        aCutPoint = rEdge.getStartPoint() + (aPerpendStartA * 
fCutA);
-                        aBezierPolygon.append(aCutPoint);
-                    }
-                    else
-                    {
-                        // create scaled bezier segment
-                        const B2DPoint aStart(rEdge.getStartPoint() + 
aPerpendStartA);
-                        const B2DPoint aEnd(rEdge.getEndPoint() + 
aPerpendEndA);
-                        const B2DVector aEdge(aEnd - aStart);
-                        const double fLength(aEdge.getLength());
-                        const double fScale(bIsEdgeLengthZero ? 1.0 : fLength 
/ fEdgeLength);
-                        const B2DVector fRelNext(rEdge.getControlPointA() - 
rEdge.getStartPoint());
-                        const B2DVector fRelPrev(rEdge.getControlPointB() - 
rEdge.getEndPoint());
-
-                        aBezierPolygon.append(aStart);
-                        aBezierPolygon.appendBezierSegment(aStart + (fRelNext 
* fScale), aEnd + (fRelPrev * fScale), aEnd);
-                    }
-                }
-
-                // create right edge
-                if(bEndRound || bEndSquare)
-                {
-                    if(bEndRound)
-                    {
-                        basegfx::B2DPolygon 
aEndPolygon(tools::createHalfUnitCircle());
-
-                        aEndPolygon.transform(
-                            
tools::createScaleShearXRotateTranslateB2DHomMatrix(
-                                fHalfLineWidth, fHalfLineWidth,
-                                0.0,
-                                atan2(aTangentB.getY(), aTangentB.getX()) - 
F_PI2,
-                                rEdge.getEndPoint().getX(), 
rEdge.getEndPoint().getY()));
-                        aBezierPolygon.append(aEndPolygon);
-                    }
-                    else // bEndSquare
-                    {
-                        const basegfx::B2DPoint aEnd(rEdge.getEndPoint() + 
(aTangentB * fHalfLineWidth));
-
-                        if(bCutA)
-                        {
-                            aBezierPolygon.append(rEdge.getEndPoint() + 
aPerpendEndA);
-                        }
-
-                        aBezierPolygon.append(aEnd + aPerpendEndA);
-                        aBezierPolygon.append(aEnd + aPerpendEndB);
-
-                        if(bCutB)
-                        {
-                            aBezierPolygon.append(rEdge.getEndPoint() + 
aPerpendEndB);
-                        }
-                    }
-                }
-                else
-                {
-                    // append original in-between point
-                    aBezierPolygon.append(rEdge.getEndPoint());
-                }
-
-                // create lower edge. 
-                {
-                    if(bCutB)
-                    {
-                        // calculate cut point and add
-                        aCutPoint = rEdge.getEndPoint() + (aPerpendEndB * 
fCutB);
-                        aBezierPolygon.append(aCutPoint);
-                    }
-                    else
-                    {
-                        // create scaled bezier segment
-                        const B2DPoint aStart(rEdge.getEndPoint() + 
aPerpendEndB);
-                        const B2DPoint aEnd(rEdge.getStartPoint() + 
aPerpendStartB);
-                        const B2DVector aEdge(aEnd - aStart);
-                        const double fLength(aEdge.getLength());
-                        const double fScale(bIsEdgeLengthZero ? 1.0 : fLength 
/ fEdgeLength);
-                        const B2DVector fRelNext(rEdge.getControlPointB() - 
rEdge.getEndPoint());
-                        const B2DVector fRelPrev(rEdge.getControlPointA() - 
rEdge.getStartPoint());
-
-                        aBezierPolygon.append(aStart);
-                        aBezierPolygon.appendBezierSegment(aStart + (fRelNext 
* fScale), aEnd + (fRelPrev * fScale), aEnd);
-                    }
-                }
-
-                // close
-                aBezierPolygon.setClosed(true);
-
-                if(bStartRound || bEndRound)
-                {
-                    // double points possible when round caps are used at 
start or end
-                    aBezierPolygon.removeDoublePoints();
-                }
-
-                if(bCut && ((bStartRound || bStartSquare) && (bEndRound || 
bEndSquare)))
-                {
-                    // When cut exists and both ends are extended with caps, a 
self-intersecting polygon
-                    // is created; one cut point is known, but there is a 2nd 
one in the caps geometry.
-                    // Solve by using tooling.
-                    // Remark: This nearly never happens due to curve 
preparations to extreme points
-                    // and maximum angle turning, but I constructed a test 
case and checkd that it is 
-                    // working propery.
-                    const B2DPolyPolygon 
aTemp(tools::solveCrossovers(aBezierPolygon));
-                    const sal_uInt32 nTempCount(aTemp.count());
-
-                    if(nTempCount)
-                    {
-                        if(nTempCount > 1)
-                        {
-                            // as expected, multiple polygons (with same 
orientation). Remove
-                            // the one which contains aCutPoint, or better 
take the one without
-                            for (sal_uInt32 a(0); a < nTempCount; a++)
-                            {
-                                aBezierPolygon = aTemp.getB2DPolygon(a);
-
-                                const sal_uInt32 
nCandCount(aBezierPolygon.count());
-
-                                for(sal_uInt32 b(0); b < nCandCount; b++)
-                                {
-                                    
if(aCutPoint.equal(aBezierPolygon.getB2DPoint(b)))
-                                    {
-                                        aBezierPolygon.clear();
-                                        break;
-                                    }
-                                }
-
-                                if(aBezierPolygon.count())
-                                {
-                                    break;
-                                }
-                            }
-
-                            OSL_ENSURE(aBezierPolygon.count(), "Error in line 
geometry creation, could not solve self-intersection (!)");
-                        }
-                        else
-                        {
-                            // none found, use result
-                            aBezierPolygon = aTemp.getB2DPolygon(0);
-                        }
-                    }
-                    else
-                    {
-                        OSL_ENSURE(false, "Error in line geometry creation, 
could not solve self-intersection (!)");
-                    }
-                }
-
-                // return
-                return aBezierPolygon;
-            }
-            else
-            {
-                // Get start and  end point, create tangent and set to needed 
length
-                B2DVector aTangent(rEdge.getEndPoint() - 
rEdge.getStartPoint());
-                aTangent.setLength(fHalfLineWidth);
-                
-                // prepare return value
-                B2DPolygon aEdgePolygon;
-
-                // buffered angle
-                double fAngle(0.0);
-                bool bAngle(false);
-
-                // buffered perpendicular
-                B2DVector aPerpend;
-                bool bPerpend(false);
-
-                // create left vertical
-                if(bStartRound)
-                {
-                    aEdgePolygon = tools::createHalfUnitCircle();
-                    fAngle = atan2(aTangent.getY(), aTangent.getX());
-                    bAngle = true;
-                    aEdgePolygon.transform(
-                        tools::createScaleShearXRotateTranslateB2DHomMatrix(
-                            fHalfLineWidth, fHalfLineWidth,
-                            0.0,
-                            fAngle + F_PI2,
-                            rEdge.getStartPoint().getX(), 
rEdge.getStartPoint().getY()));
-                }
-                else
-                {
-                    aPerpend.setX(-aTangent.getY());
-                    aPerpend.setY(aTangent.getX());
-                    bPerpend = true;
-
-                    if(bStartSquare)
-                    {
-                        const basegfx::B2DPoint aStart(rEdge.getStartPoint() - 
aTangent);
-
-                        aEdgePolygon.append(aStart + aPerpend);
-                        aEdgePolygon.append(aStart - aPerpend);
-                    }
-                    else
-                    {
-                        aEdgePolygon.append(rEdge.getStartPoint() + aPerpend);
-                        aEdgePolygon.append(rEdge.getStartPoint()); // keep 
the in-between point for numerical reasons
-                        aEdgePolygon.append(rEdge.getStartPoint() - aPerpend);
-                    }
-                }
-
-                // create right vertical
-                if(bEndRound)
-                {
-                    basegfx::B2DPolygon 
aEndPolygon(tools::createHalfUnitCircle());
-
-                    if(!bAngle)
-                    {
-                        fAngle = atan2(aTangent.getY(), aTangent.getX());
-                    }
-
-                    aEndPolygon.transform(
-                        tools::createScaleShearXRotateTranslateB2DHomMatrix(
-                            fHalfLineWidth, fHalfLineWidth,
-                            0.0,
-                            fAngle - F_PI2,
-                            rEdge.getEndPoint().getX(), 
rEdge.getEndPoint().getY()));
-                    aEdgePolygon.append(aEndPolygon);
-                }
-                else
-                {
-                    if(!bPerpend)
-                    {
-                        aPerpend.setX(-aTangent.getY());
-                        aPerpend.setY(aTangent.getX());
-                    }
-
-                    if(bEndSquare)
-                    {
-                        const basegfx::B2DPoint aEnd(rEdge.getEndPoint() + 
aTangent);
-
-                        aEdgePolygon.append(aEnd - aPerpend);
-                        aEdgePolygon.append(aEnd + aPerpend);
-                    }
-                    else
-                    {
-                        aEdgePolygon.append(rEdge.getEndPoint() - aPerpend);
-                        aEdgePolygon.append(rEdge.getEndPoint()); // keep the 
in-between point for numerical reasons
-                        aEdgePolygon.append(rEdge.getEndPoint() + aPerpend);
-                    }
-                }
-
-                // close and return
-                aEdgePolygon.setClosed(true);
-
-                return aEdgePolygon;
-            }
-        }
-
-        B2DPolygon createAreaGeometryForJoin(
-            const B2DVector& rTangentPrev, 
-            const B2DVector& rTangentEdge,
-            const B2DVector& rPerpendPrev, 
-            const B2DVector& rPerpendEdge,
-            const B2DPoint& rPoint,
-            double fHalfLineWidth, 
-            B2DLineJoin eJoin, 
-            double fMiterMinimumAngle)
+                               aRetval.setClosed(rCandidate.isClosed());
+                               aRetval.removeDoublePoints();
+
+                               return aRetval;
+                       }
+                       else
+                       {
+                               return rCandidate;
+                       }
+               }
+
+               B2DPolygon createAreaGeometryForEdge(
+                       const B2DCubicBezier& rEdge,
+                       double fHalfLineWidth,
+                       bool bStartRound,
+                       bool bEndRound,
+                       bool bStartSquare,
+                       bool bEndSquare)
+               {
+                       // create polygon for edge
+                       // Unfortunately, while it would be geometrically 
correct to not add
+                       // the in-between points EdgeEnd and EdgeStart, it 
leads to rounding
+                       // errors when converting to integer polygon 
coordinates for painting
+                       if(rEdge.isBezier())
+                       {
+                               // prepare target and data common for upper and 
lower
+                               B2DPolygon aBezierPolygon;
+                               const B2DVector 
aPureEdgeVector(rEdge.getEndPoint() - rEdge.getStartPoint());
+                               const double 
fEdgeLength(aPureEdgeVector.getLength());
+                               const bool 
bIsEdgeLengthZero(fTools::equalZero(fEdgeLength));
+                               B2DVector aTangentA(rEdge.getTangent(0.0)); 
aTangentA.normalize();
+                               B2DVector aTangentB(rEdge.getTangent(1.0)); 
aTangentB.normalize();
+                               const B2DVector 
aNormalizedPerpendicularA(getPerpendicular(aTangentA));
+                               const B2DVector 
aNormalizedPerpendicularB(getPerpendicular(aTangentB));
+
+                               // create upper displacement vectors and check 
if they cut
+                               const B2DVector 
aPerpendStartA(aNormalizedPerpendicularA * -fHalfLineWidth);
+                               const B2DVector 
aPerpendEndA(aNormalizedPerpendicularB * -fHalfLineWidth);
+                               double fCutA(0.0);
+                               const tools::CutFlagValue aCutA(tools::findCut(
+                                       rEdge.getStartPoint(), aPerpendStartA,
+                                       rEdge.getEndPoint(), aPerpendEndA,
+                                       CUTFLAG_ALL, &fCutA));
+                               const bool bCutA(CUTFLAG_NONE != aCutA);
+
+                               // create lower displacement vectors and check 
if they cut
+                               const B2DVector 
aPerpendStartB(aNormalizedPerpendicularA * fHalfLineWidth);
+                               const B2DVector 
aPerpendEndB(aNormalizedPerpendicularB * fHalfLineWidth);
+                               double fCutB(0.0);
+                               const tools::CutFlagValue aCutB(tools::findCut(
+                                       rEdge.getEndPoint(), aPerpendEndB,
+                                       rEdge.getStartPoint(), aPerpendStartB,
+                                       CUTFLAG_ALL, &fCutB));
+                               const bool bCutB(CUTFLAG_NONE != aCutB);
+
+                               // check if cut happens
+                               const bool bCut(bCutA || bCutB);
+                               B2DPoint aCutPoint;
+
+                               // create left edge
+                               if(bStartRound || bStartSquare)
+                               {
+                                       if(bStartRound)
+                                       {
+                                               basegfx::B2DPolygon 
aStartPolygon(tools::createHalfUnitCircle());
+
+                                               aStartPolygon.transform(
+                                                       
tools::createScaleShearXRotateTranslateB2DHomMatrix(
+                                                               fHalfLineWidth, 
fHalfLineWidth,
+                                                               0.0,
+                                                               
atan2(aTangentA.getY(), aTangentA.getX()) + F_PI2,
+                                                               
rEdge.getStartPoint().getX(), rEdge.getStartPoint().getY()));
+                                               
aBezierPolygon.append(aStartPolygon);
+                                       }
+                                       else // bStartSquare
+                                       {
+                                               const basegfx::B2DPoint 
aStart(rEdge.getStartPoint() - (aTangentA * fHalfLineWidth));
+
+                                               if(bCutB)
+                                               {
+                                                       
aBezierPolygon.append(rEdge.getStartPoint() + aPerpendStartB);
+                                               }
+
+                                               aBezierPolygon.append(aStart + 
aPerpendStartB);
+                                               aBezierPolygon.append(aStart + 
aPerpendStartA);
+
+                                               if(bCutA)
+                                               {
+                                                       
aBezierPolygon.append(rEdge.getStartPoint() + aPerpendStartA);
+                                               }
+                                       }
+                               }
+                               else
+                               {
+                                       // append original in-between point
+                                       
aBezierPolygon.append(rEdge.getStartPoint());
+                               }
+
+                               // create upper edge.
+                               {
+                                       if(bCutA)
+                                       {
+                                               // calculate cut point and add
+                                               aCutPoint = 
rEdge.getStartPoint() + (aPerpendStartA * fCutA);
+                                               
aBezierPolygon.append(aCutPoint);
+                                       }
+                                       else
+                                       {
+                                               // create scaled bezier segment
+                                               const B2DPoint 
aStart(rEdge.getStartPoint() + aPerpendStartA);
+                                               const B2DPoint 
aEnd(rEdge.getEndPoint() + aPerpendEndA);
+                                               const B2DVector aEdge(aEnd - 
aStart);
+                                               const double 
fLength(aEdge.getLength());
+                                               const double 
fScale(bIsEdgeLengthZero ? 1.0 : fLength / fEdgeLength);
+                                               const B2DVector 
fRelNext(rEdge.getControlPointA() - rEdge.getStartPoint());
+                                               const B2DVector 
fRelPrev(rEdge.getControlPointB() - rEdge.getEndPoint());
+
+                                               aBezierPolygon.append(aStart);
+                                               
aBezierPolygon.appendBezierSegment(aStart + (fRelNext * fScale), aEnd + 
(fRelPrev * fScale), aEnd);
+                                       }
+                               }
+
+                               // create right edge
+                               if(bEndRound || bEndSquare)
+                               {
+                                       if(bEndRound)
+                                       {
+                                               basegfx::B2DPolygon 
aEndPolygon(tools::createHalfUnitCircle());
+
+                                               aEndPolygon.transform(
+                                                       
tools::createScaleShearXRotateTranslateB2DHomMatrix(
+                                                               fHalfLineWidth, 
fHalfLineWidth,
+                                                               0.0,
+                                                               
atan2(aTangentB.getY(), aTangentB.getX()) - F_PI2,
+                                                               
rEdge.getEndPoint().getX(), rEdge.getEndPoint().getY()));
+                                               
aBezierPolygon.append(aEndPolygon);
+                                       }
+                                       else // bEndSquare
+                                       {
+                                               const basegfx::B2DPoint 
aEnd(rEdge.getEndPoint() + (aTangentB * fHalfLineWidth));
+
+                                               if(bCutA)
+                                               {
+                                                       
aBezierPolygon.append(rEdge.getEndPoint() + aPerpendEndA);
+                                               }
+
+                                               aBezierPolygon.append(aEnd + 
aPerpendEndA);
+                                               aBezierPolygon.append(aEnd + 
aPerpendEndB);
+
+                                               if(bCutB)
+                                               {
+                                                       
aBezierPolygon.append(rEdge.getEndPoint() + aPerpendEndB);
+                                               }
+                                       }
+                               }
+                               else
+                               {
+                                       // append original in-between point
+                                       
aBezierPolygon.append(rEdge.getEndPoint());
+                               }
+
+                               // create lower edge.
+                               {
+                                       if(bCutB)
+                                       {
+                                               // calculate cut point and add
+                                               aCutPoint = rEdge.getEndPoint() 
+ (aPerpendEndB * fCutB);
+                                               
aBezierPolygon.append(aCutPoint);
+                                       }
+                                       else
+                                       {
+                                               // create scaled bezier segment
+                                               const B2DPoint 
aStart(rEdge.getEndPoint() + aPerpendEndB);
+                                               const B2DPoint 
aEnd(rEdge.getStartPoint() + aPerpendStartB);
+                                               const B2DVector aEdge(aEnd - 
aStart);
+                                               const double 
fLength(aEdge.getLength());
+                                               const double 
fScale(bIsEdgeLengthZero ? 1.0 : fLength / fEdgeLength);
+                                               const B2DVector 
fRelNext(rEdge.getControlPointB() - rEdge.getEndPoint());
+                                               const B2DVector 
fRelPrev(rEdge.getControlPointA() - rEdge.getStartPoint());
+
+                                               aBezierPolygon.append(aStart);
+                                               
aBezierPolygon.appendBezierSegment(aStart + (fRelNext * fScale), aEnd + 
(fRelPrev * fScale), aEnd);
+                                       }
+                               }
+
+                               // close
+                               aBezierPolygon.setClosed(true);
+
+                               if(bStartRound || bEndRound)
+                               {
+                                       // double points possible when round 
caps are used at start or end
+                                       aBezierPolygon.removeDoublePoints();
+                               }
+
+                               if(bCut && ((bStartRound || bStartSquare) && 
(bEndRound || bEndSquare)))
+                               {
+                                       // When cut exists and both ends are 
extended with caps, a self-intersecting polygon
+                                       // is created; one cut point is known, 
but there is a 2nd one in the caps geometry.
+                                       // Solve by using tooling.
+                                       // Remark: This nearly never happens 
due to curve preparations to extreme points
+                                       // and maximum angle turning, but I 
constructed a test case and checked that it is
+                                       // working properly.
+                                       const B2DPolyPolygon 
aTemp(tools::solveCrossovers(aBezierPolygon));
+                                       const sal_uInt32 
nTempCount(aTemp.count());
+
+                                       if(nTempCount)
+                                       {
+                                               if(nTempCount > 1)
+                                               {
+                                                       // as expected, 
multiple polygons (with same orientation). Remove
+                                                       // the one which 
contains aCutPoint, or better take the one without
+                                                       for (sal_uInt32 a(0); a 
< nTempCount; a++)
+                                                       {
+                                                               aBezierPolygon 
= aTemp.getB2DPolygon(a);
+
+                                                               const 
sal_uInt32 nCandCount(aBezierPolygon.count());
+
+                                                               for(sal_uInt32 
b(0); b < nCandCount; b++)
+                                                               {
+                                                                       
if(aCutPoint.equal(aBezierPolygon.getB2DPoint(b)))
+                                                                       {
+                                                                               
aBezierPolygon.clear();
+                                                                               
break;
+                                                                       }
+                                                               }
+
+                                                               
if(aBezierPolygon.count())
+                                                               {
+                                                                       break;
+                                                               }
+                                                       }
+
+                                                       
OSL_ENSURE(aBezierPolygon.count(), "Error in line geometry creation, could not 
solve self-intersection (!)");
+                                               }
+                                               else
+                                               {
+                                                       // none found, use 
result
+                                                       aBezierPolygon = 
aTemp.getB2DPolygon(0);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               OSL_ENSURE(false, "Error in 
line geometry creation, could not solve self-intersection (!)");
+                                       }
+                               }
+
+                               // return
+                               return aBezierPolygon;
+                       }
+                       else
+                       {
+                               // Get start and end point, create tangent and 
set to needed length
+                               B2DVector aTangent(rEdge.getEndPoint() - 
rEdge.getStartPoint());
+                               aTangent.setLength(fHalfLineWidth);
+
+                               // prepare return value
+                               B2DPolygon aEdgePolygon;
+
+                               // buffered angle
+                               double fAngle(0.0);
+                               bool bAngle(false);
+
+                               // buffered perpendicular
+                               B2DVector aPerpend;
+                               bool bPerpend(false);
+
+                               // create left vertical
+                               if(bStartRound)
+                               {
+                                       aEdgePolygon = 
tools::createHalfUnitCircle();
+                                       fAngle = atan2(aTangent.getY(), 
aTangent.getX());
+                                       bAngle = true;
+                                       aEdgePolygon.transform(
+                                               
tools::createScaleShearXRotateTranslateB2DHomMatrix(
+                                                       fHalfLineWidth, 
fHalfLineWidth,
+                                                       0.0,
+                                                       fAngle + F_PI2,
+                                                       
rEdge.getStartPoint().getX(), rEdge.getStartPoint().getY()));
+                               }
+                               else
+                               {
+                                       aPerpend.setX(-aTangent.getY());
+                                       aPerpend.setY(aTangent.getX());
+                                       bPerpend = true;
+
+                                       if(bStartSquare)
+                                       {
+                                               const basegfx::B2DPoint 
aStart(rEdge.getStartPoint() - aTangent);
+
+                                               aEdgePolygon.append(aStart + 
aPerpend);
+                                               aEdgePolygon.append(aStart - 
aPerpend);
+                                       }
+                                       else
+                                       {
+                                               
aEdgePolygon.append(rEdge.getStartPoint() + aPerpend);
+                                               
aEdgePolygon.append(rEdge.getStartPoint()); // keep the in-between point for 
numerical reasons
+                                               
aEdgePolygon.append(rEdge.getStartPoint() - aPerpend);
+                                       }
+                               }
+
+                               // create right vertical
+                               if(bEndRound)
+                               {
+                                       basegfx::B2DPolygon 
aEndPolygon(tools::createHalfUnitCircle());
+
+                                       if(!bAngle)
+                                       {
+                                               fAngle = atan2(aTangent.getY(), 
aTangent.getX());
+                                       }
+
+                                       aEndPolygon.transform(
+                                               
tools::createScaleShearXRotateTranslateB2DHomMatrix(
+                                                       fHalfLineWidth, 
fHalfLineWidth,
+                                                       0.0,
+                                                       fAngle - F_PI2,
+                                                       
rEdge.getEndPoint().getX(), rEdge.getEndPoint().getY()));
+                                       aEdgePolygon.append(aEndPolygon);
+                               }
+                               else
+                               {
+                                       if(!bPerpend)
+                                       {
+                                               aPerpend.setX(-aTangent.getY());
+                                               aPerpend.setY(aTangent.getX());
+                                       }
+
+                                       if(bEndSquare)
+                                       {
+                                               const basegfx::B2DPoint 
aEnd(rEdge.getEndPoint() + aTangent);
+
+                                               aEdgePolygon.append(aEnd - 
aPerpend);
+                                               aEdgePolygon.append(aEnd + 
aPerpend);
+                                       }
+                                       else
+                                       {
+                                               
aEdgePolygon.append(rEdge.getEndPoint() - aPerpend);
+                                               
aEdgePolygon.append(rEdge.getEndPoint()); // keep the in-between point for 
numerical reasons
+                                               
aEdgePolygon.append(rEdge.getEndPoint() + aPerpend);
+                                       }
+                               }
+
+                               // close and return
+                               aEdgePolygon.setClosed(true);
+
+                               return aEdgePolygon;
+                       }
+               }
+
+               B2DPolygon createAreaGeometryForJoin(
+                       const B2DVector& rTangentPrev,
+                       const B2DVector& rTangentEdge,
+                       const B2DVector& rPerpendPrev,
+                       const B2DVector& rPerpendEdge,
+                       const B2DPoint& rPoint,
+                       double fHalfLineWidth,
+                       B2DLineJoin eJoin,
+                       double fMiterMinimumAngle)
                {
                        OSL_ENSURE(fHalfLineWidth > 0.0, 
"createAreaGeometryForJoin: LineWidth too small (!)");
                        OSL_ENSURE(B2DLINEJOIN_NONE != eJoin, 
"createAreaGeometryForJoin: B2DLINEJOIN_NONE not allowed (!)");
 
-            // LineJoin from tangent rPerpendPrev to tangent rPerpendEdge in 
rPoint
-            B2DPolygon aEdgePolygon;
+                       // LineJoin from tangent rPerpendPrev to tangent 
rPerpendEdge in rPoint
+                       B2DPolygon aEdgePolygon;
                        const B2DPoint aStartPoint(rPoint + rPerpendPrev);
                        const B2DPoint aEndPoint(rPoint + rPerpendEdge);
-            
+
                        // test if for Miter, the angle is too small and the 
fallback
                        // to bevel needs to be used
                        if(B2DLINEJOIN_MITER == eJoin)
@@ -715,13 +711,13 @@ namespace basegfx
                                        aEdgePolygon.append(aEndPoint);
                                        aEdgePolygon.append(rPoint);
                                        aEdgePolygon.append(aStartPoint);
-                                       
+
                                        // Look for the cut point between start 
point along rTangentPrev and
                                        // end point along rTangentEdge. 
-rTangentEdge should be used, but since
                                        // the cut value is used for 
interpolating along the first edge, the negation
                                        // is not needed since the same fCut 
will be found on the first edge.
                                        // If it exists, insert it to complete 
the mitered fill polygon.
-                               double fCutPos(0.0);
+                                       double fCutPos(0.0);
                                        tools::findCut(aStartPoint, 
rTangentPrev, aEndPoint, rTangentEdge, CUTFLAG_ALL, &fCutPos);
 
                                        if(0.0 != fCutPos)
@@ -729,7 +725,7 @@ namespace basegfx
                                                const B2DPoint 
aCutPoint(aStartPoint + (rTangentPrev * fCutPos));
                                                aEdgePolygon.append(aCutPoint);
                                        }
-                                       
+
                                        break;
                                }
                                case B2DLINEJOIN_ROUND :
@@ -737,7 +733,7 @@ namespace basegfx
                                        // use tooling to add needed 
EllipseSegment
                                        double 
fAngleStart(atan2(rPerpendPrev.getY(), rPerpendPrev.getX()));
                                        double 
fAngleEnd(atan2(rPerpendEdge.getY(), rPerpendEdge.getX()));
-                       
+
                                        // atan2 results are [-PI .. PI], 
consolidate to [0.0 .. 2PI]
                                        if(fAngleStart < 0.0)
                                        {
@@ -774,206 +770,205 @@ namespace basegfx
                                        aEdgePolygon.append(aEndPoint);
                                        aEdgePolygon.append(rPoint);
                                        aEdgePolygon.append(aStartPoint);
-                                       
+
                                        break;
                                }
                        }
 
-            // create last polygon part for edge
-            aEdgePolygon.setClosed(true);
+                       // create last polygon part for edge
+                       aEdgePolygon.setClosed(true);
 
-            return aEdgePolygon;
-        }
-    } // end of anonymus namespace
+                       return aEdgePolygon;
+               }
+       } // end of anonymous namespace
 
        namespace tools
        {
-        B2DPolyPolygon createAreaGeometry(
-            const B2DPolygon& rCandidate, 
-            double fHalfLineWidth, 
-            B2DLineJoin eJoin, 
-            com::sun::star::drawing::LineCap eCap,
-            double fMaxAllowedAngle, 
+               B2DPolyPolygon createAreaGeometry(
+                       const B2DPolygon& rCandidate,
+                       double fHalfLineWidth,
+                       B2DLineJoin eJoin,
+                       com::sun::star::drawing::LineCap eCap,
+                       double fMaxAllowedAngle,
                        double fMaxPartOfEdge,
-            double fMiterMinimumAngle)
+                       double fMiterMinimumAngle)
                {
-            if(fMaxAllowedAngle > F_PI2)
-            {
-                fMaxAllowedAngle = F_PI2;
-            }
-            else if(fMaxAllowedAngle < 0.01 * F_PI2)
-            {
-                fMaxAllowedAngle = 0.01 * F_PI2;
-            }
-
-            if(fMaxPartOfEdge > 1.0)
-            {
-                fMaxPartOfEdge = 1.0;
-            }
-            else if(fMaxPartOfEdge < 0.01)
-            {
-                fMaxPartOfEdge = 0.01;
-            }
-
-            if(fMiterMinimumAngle > F_PI)
-            {
-                fMiterMinimumAngle = F_PI;
-            }
-            else if(fMiterMinimumAngle < 0.01 * F_PI)
-            {
-                fMiterMinimumAngle = 0.01 * F_PI;
-            }
-
-            B2DPolygon aCandidate(rCandidate);
-            const double fMaxCos(cos(fMaxAllowedAngle));
-            
-            aCandidate.removeDoublePoints();
-            aCandidate = subdivideToSimple(aCandidate, fMaxCos * fMaxCos, 
fMaxPartOfEdge * fMaxPartOfEdge);
-               
-            const sal_uInt32 nPointCount(aCandidate.count());
+                       if(fMaxAllowedAngle > F_PI2)
+                       {
+                               fMaxAllowedAngle = F_PI2;
+                       }
+                       else if(fMaxAllowedAngle < 0.01 * F_PI2)
+                       {
+                               fMaxAllowedAngle = 0.01 * F_PI2;
+                       }
+
+                       if(fMaxPartOfEdge > 1.0)
+                       {
+                               fMaxPartOfEdge = 1.0;
+                       }
+                       else if(fMaxPartOfEdge < 0.01)
+                       {
+                               fMaxPartOfEdge = 0.01;
+                       }
+
+                       if(fMiterMinimumAngle > F_PI)
+                       {
+                               fMiterMinimumAngle = F_PI;
+                       }
+                       else if(fMiterMinimumAngle < 0.01 * F_PI)
+                       {
+                               fMiterMinimumAngle = 0.01 * F_PI;
+                       }
+
+                       B2DPolygon aCandidate(rCandidate);
+                       const double fMaxCos(cos(fMaxAllowedAngle));
+
+                       aCandidate.removeDoublePoints();
+                       aCandidate = subdivideToSimple(aCandidate, fMaxCos * 
fMaxCos, fMaxPartOfEdge * fMaxPartOfEdge);
+
+                       const sal_uInt32 nPointCount(aCandidate.count());
 
                        if(nPointCount)
                        {
-                B2DPolyPolygon aRetval;
+                               B2DPolyPolygon aRetval;
                                const bool 
bEventuallyCreateLineJoin(B2DLINEJOIN_NONE != eJoin);
-                const bool bIsClosed(aCandidate.isClosed());
-                const sal_uInt32 nEdgeCount(bIsClosed ? nPointCount : 
nPointCount - 1);
-                const bool bLineCap(!bIsClosed && 
com::sun::star::drawing::LineCap_BUTT != eCap);
-
-                if(nEdgeCount)
-                {
-                    B2DCubicBezier aEdge;
-                    B2DCubicBezier aPrev;
-
-                    // prepare edge
-                    aEdge.setStartPoint(aCandidate.getB2DPoint(0));
-
-                    if(bIsClosed && bEventuallyCreateLineJoin)
-                    {
-                        // prepare previous edge
-                        const sal_uInt32 nPrevIndex(nPointCount - 1);
-                        
aPrev.setStartPoint(aCandidate.getB2DPoint(nPrevIndex));
-                        
aPrev.setControlPointA(aCandidate.getNextControlPoint(nPrevIndex));
-                        
aPrev.setControlPointB(aCandidate.getPrevControlPoint(0));
-                        aPrev.setEndPoint(aEdge.getStartPoint());
-                    }
-
-                    for(sal_uInt32 a(0); a < nEdgeCount; a++)
-                    {
-                        // fill current Edge
-                        const sal_uInt32 nNextIndex((a + 1) % nPointCount);
-                        
aEdge.setControlPointA(aCandidate.getNextControlPoint(a));
-                        
aEdge.setControlPointB(aCandidate.getPrevControlPoint(nNextIndex));
-                        aEdge.setEndPoint(aCandidate.getB2DPoint(nNextIndex));
-
-                        // check and create linejoin
-                        if(bEventuallyCreateLineJoin && (bIsClosed || 0 != a))
-                        {
-                            B2DVector aTangentPrev(aPrev.getTangent(1.0)); 
aTangentPrev.normalize();
-                            B2DVector aTangentEdge(aEdge.getTangent(0.0)); 
aTangentEdge.normalize();
-                            B2VectorOrientation 
aOrientation(getOrientation(aTangentPrev, aTangentEdge));
-
-                            if(ORIENTATION_NEUTRAL == aOrientation)
-                            {
-                                   // they are parallel or empty; if they are 
both not zero and point 
-                                   // in opposite direction, a half-circle is 
needed
-                                   if(!aTangentPrev.equalZero() && 
!aTangentEdge.equalZero())
-                                   {
-                                    const double 
fAngle(fabs(aTangentPrev.angle(aTangentEdge)));
-        
-                                    if(fTools::equal(fAngle, F_PI))
-                                    {
-                                        // for half-circle production, 
fallback to positive
-                                        // orientation
-                                        aOrientation = ORIENTATION_POSITIVE;
-                                    }
-                                }
-                            }
-
-                            if(ORIENTATION_POSITIVE == aOrientation)
-                            {
-                                const B2DVector 
aPerpendPrev(getPerpendicular(aTangentPrev) * -fHalfLineWidth);
-                                const B2DVector 
aPerpendEdge(getPerpendicular(aTangentEdge) * -fHalfLineWidth);
-                                
-                                aRetval.append(
-                                    createAreaGeometryForJoin(
-                                        aTangentPrev, 
-                                        aTangentEdge,
-                                        aPerpendPrev, 
-                                        aPerpendEdge, 
-                                        aEdge.getStartPoint(), 
-                                        fHalfLineWidth, 
-                                        eJoin, 
-                                        fMiterMinimumAngle));
-                            }
-                            else if(ORIENTATION_NEGATIVE == aOrientation)
-                            {
-                                const B2DVector 
aPerpendPrev(getPerpendicular(aTangentPrev) * fHalfLineWidth);
-                                const B2DVector 
aPerpendEdge(getPerpendicular(aTangentEdge) * fHalfLineWidth);
-
-                                aRetval.append(
-                                    createAreaGeometryForJoin(
-                                        aTangentEdge, 
-                                        aTangentPrev,
-                                        aPerpendEdge, 
-                                        aPerpendPrev, 
-                                        aEdge.getStartPoint(), 
-                                        fHalfLineWidth, 
-                                        eJoin, 
-                                        fMiterMinimumAngle));
-                            }
-                        }
-
-                        // create geometry for edge
-                        const bool bLast(a + 1 == nEdgeCount);
-
-                        if(bLineCap)
-                        {
-                            const bool bFirst(!a);
-
-                            aRetval.append(
-                                createAreaGeometryForEdge(
-                                    aEdge, 
-                                    fHalfLineWidth,
-                                    bFirst && 
com::sun::star::drawing::LineCap_ROUND == eCap,
-                                    bLast && 
com::sun::star::drawing::LineCap_ROUND == eCap,
-                                    bFirst && 
com::sun::star::drawing::LineCap_SQUARE == eCap,
-                                    bLast && 
com::sun::star::drawing::LineCap_SQUARE == eCap));
-                        }
-                        else
-                        {
-                            aRetval.append(
-                                createAreaGeometryForEdge(
-                                    aEdge, 
-                                    fHalfLineWidth,
-                                    false,
-                                    false,
-                                    false,
-                                    false));
-                        }
-
-                        // prepare next step
-                        if(!bLast)
-                        {
-                            if(bEventuallyCreateLineJoin)
-                            {
-                                aPrev = aEdge;
-                            }
-
-                            aEdge.setStartPoint(aEdge.getEndPoint());
-                        }
-                    }
-                }
-
-                return aRetval;
-            }
-            else
-            {
-                return B2DPolyPolygon(rCandidate);
-            }
-        }
-    } // end of namespace tools
+                               const bool bIsClosed(aCandidate.isClosed());
+                               const sal_uInt32 nEdgeCount(bIsClosed ? 
nPointCount : nPointCount - 1);
+                               const bool bLineCap(!bIsClosed && 
com::sun::star::drawing::LineCap_BUTT != eCap);
+
+                               if(nEdgeCount)
+                               {
+                                       B2DCubicBezier aEdge;
+                                       B2DCubicBezier aPrev;
+
+                                       // prepare edge
+                                       
aEdge.setStartPoint(aCandidate.getB2DPoint(0));
+
+                                       if(bIsClosed && 
bEventuallyCreateLineJoin)
+                                       {
+                                               // prepare previous edge
+                                               const sal_uInt32 
nPrevIndex(nPointCount - 1);
+                                               
aPrev.setStartPoint(aCandidate.getB2DPoint(nPrevIndex));
+                                               
aPrev.setControlPointA(aCandidate.getNextControlPoint(nPrevIndex));
+                                               
aPrev.setControlPointB(aCandidate.getPrevControlPoint(0));
+                                               
aPrev.setEndPoint(aEdge.getStartPoint());
+                                       }
+
+                                       for(sal_uInt32 a(0); a < nEdgeCount; 
a++)
+                                       {
+                                               // fill current Edge
+                                               const sal_uInt32 nNextIndex((a 
+ 1) % nPointCount);
+                                               
aEdge.setControlPointA(aCandidate.getNextControlPoint(a));
+                                               
aEdge.setControlPointB(aCandidate.getPrevControlPoint(nNextIndex));
+                                               
aEdge.setEndPoint(aCandidate.getB2DPoint(nNextIndex));
+
+                                               // check and create linejoin
+                                               if(bEventuallyCreateLineJoin && 
(bIsClosed || 0 != a))
+                                               {
+                                                       B2DVector 
aTangentPrev(aPrev.getTangent(1.0)); aTangentPrev.normalize();
+                                                       B2DVector 
aTangentEdge(aEdge.getTangent(0.0)); aTangentEdge.normalize();
+                                                       B2VectorOrientation 
aOrientation(getOrientation(aTangentPrev, aTangentEdge));
+
+                                                       if(ORIENTATION_NEUTRAL 
== aOrientation)
+                                                       {
+                                                                  // they are 
parallel or empty; if they are both not zero and point
+                                                                  // in 
opposite direction, a half-circle is needed
+                                                                  
if(!aTangentPrev.equalZero() && !aTangentEdge.equalZero())
+                                                                  {
+                                                                       const 
double fAngle(fabs(aTangentPrev.angle(aTangentEdge)));
+
+                                                                       
if(fTools::equal(fAngle, F_PI))
+                                                                       {
+                                                                               
// for half-circle production, fallback to positive
+                                                                               
// orientation
+                                                                               
aOrientation = ORIENTATION_POSITIVE;
+                                                                       }
+                                                               }
+                                                       }
+
+                                                       if(ORIENTATION_POSITIVE 
== aOrientation)
+                                                       {
+                                                               const B2DVector 
aPerpendPrev(getPerpendicular(aTangentPrev) * -fHalfLineWidth);
+                                                               const B2DVector 
aPerpendEdge(getPerpendicular(aTangentEdge) * -fHalfLineWidth);
+
+                                                               aRetval.append(
+                                                                       
createAreaGeometryForJoin(
+                                                                               
aTangentPrev,
+                                                                               
aTangentEdge,
+                                                                               
aPerpendPrev,
+                                                                               
aPerpendEdge,
+                                                                               
aEdge.getStartPoint(),
+                                                                               
fHalfLineWidth,
+                                                                               
eJoin,
+                                                                               
fMiterMinimumAngle));
+                                                       }
+                                                       else 
if(ORIENTATION_NEGATIVE == aOrientation)
+                                                       {
+                                                               const B2DVector 
aPerpendPrev(getPerpendicular(aTangentPrev) * fHalfLineWidth);
+                                                               const B2DVector 
aPerpendEdge(getPerpendicular(aTangentEdge) * fHalfLineWidth);
+
+                                                               aRetval.append(
+                                                                       
createAreaGeometryForJoin(
+                                                                               
aTangentEdge,
+                                                                               
aTangentPrev,
+                                                                               
aPerpendEdge,
+                                                                               
aPerpendPrev,
+                                                                               
aEdge.getStartPoint(),
+                                                                               
fHalfLineWidth,
+                                                                               
eJoin,
+                                                                               
fMiterMinimumAngle));
+                                                       }
+                                               }
+
+                                               // create geometry for edge
+                                               const bool bLast(a + 1 == 
nEdgeCount);
+
+                                               if(bLineCap)
+                                               {
+                                                       const bool bFirst(!a);
+
+                                                       aRetval.append(
+                                                               
createAreaGeometryForEdge(
+                                                                       aEdge,
+                                                                       
fHalfLineWidth,
+                                                                       bFirst 
&& com::sun::star::drawing::LineCap_ROUND == eCap,
+                                                                       bLast 
&& com::sun::star::drawing::LineCap_ROUND == eCap,
+                                                                       bFirst 
&& com::sun::star::drawing::LineCap_SQUARE == eCap,
+                                                                       bLast 
&& com::sun::star::drawing::LineCap_SQUARE == eCap));
+                                               }
+                                               else
+                                               {
+                                                       aRetval.append(
+                                                               
createAreaGeometryForEdge(
+                                                                       aEdge,
+                                                                       
fHalfLineWidth,
+                                                                       false,
+                                                                       false,
+                                                                       false,
+                                                                       false));
+                                               }
+
+                                               // prepare next step
+                                               if(!bLast)
+                                               {
+                                                       
if(bEventuallyCreateLineJoin)
+                                                       {
+                                                               aPrev = aEdge;
+                                                       }
+
+                                                       
aEdge.setStartPoint(aEdge.getEndPoint());
+                                               }
+                                       }
+                               }
+
+                               return aRetval;
+                       }
+                       else
+                       {
+                               return B2DPolyPolygon(rCandidate);
+                       }
+               }
+       } // end of namespace tools
 } // end of namespace basegfx
 
-//////////////////////////////////////////////////////////////////////////////
-// eof
+/* vim: set noet sw=4 ts=4: */
diff --git a/main/odk/examples/java/Spreadsheet/EuroAdaption.java 
b/main/odk/examples/java/Spreadsheet/EuroAdaption.java
index 2f161e641b..6383944450 100644
--- a/main/odk/examples/java/Spreadsheet/EuroAdaption.java
+++ b/main/odk/examples/java/Spreadsheet/EuroAdaption.java
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,20 +7,18 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
-
-
 //***************************************************************************
 // comment: Step 1: get the Desktop object from the office
 //          Step 2: open an empty Calc document
@@ -68,120 +66,120 @@ import com.sun.star.util.XNumberFormatsSupplier;
 
 public class EuroAdaption {
 
-    public static void main(String args[]) {        
+    public static void main(String args[]) {
         // You need the desktop to create a document
         // The getDesktop method does the UNO bootstrapping, gets the
         // remote servie manager and the desktop object.
         com.sun.star.frame.XDesktop xDesktop = null;
         xDesktop = getDesktop();
-        
+
         // create a sheet document
         XSpreadsheetDocument xSheetdocument = null;
         xSheetdocument = ( XSpreadsheetDocument ) createSheetdocument( 
xDesktop );
         System.out.println( "Create a new Spreadsheet" );
-        
+
         // get the collection of all sheets from the document
         XSpreadsheets xSheets = null;
         xSheets = (XSpreadsheets) xSheetdocument.getSheets();
-        
+
         // the Action Interface provides methods to hide actions,
         // like inserting data, on a sheet, that increase the performance
         XActionLockable xActionInterface = null;
         xActionInterface = (XActionLockable) UnoRuntime.queryInterface(
             XActionLockable.class, xSheetdocument );
-        
+
         // lock all actions
         xActionInterface.addActionLock();
-        
+
         com.sun.star.sheet.XSpreadsheet xSheet = null;
         try {
             // get via the index access the first sheet
             XIndexAccess xElements = (XIndexAccess) UnoRuntime.queryInterface(
                 XIndexAccess.class, xSheets );
 
-            // specify the first sheet from the spreadsheet            
+            // specify the first sheet from the spreadsheet
             xSheet = (XSpreadsheet) UnoRuntime.queryInterface(
-                XSpreadsheet.class, xElements.getByIndex( 0 )); 
+                XSpreadsheet.class, xElements.getByIndex( 0 ));
         }
         catch( Exception e) {
             e.printStackTrace(System.err);
         }
-        
+
         // get the interface to apply and create new numberformats
         XNumberFormatsSupplier xNumberFormatSupplier = null;
         xNumberFormatSupplier = (XNumberFormatsSupplier) 
UnoRuntime.queryInterface(
             XNumberFormatsSupplier.class, xSheetdocument );
         XNumberFormats xNumberFormats = null;
         xNumberFormats = xNumberFormatSupplier.getNumberFormats();
-        
+
         // insert some example data in a sheet
         createExampleData( xSheet, xNumberFormats );
         System.out.println( "Insert example data and use the number format 
with the currency 'DM'" );
-        
+
         // Change the currency from the cells from DM to Euro
-        Convert(  xSheet, xNumberFormats, "DM", "EUR", 1.95583f );
+        Convert( xSheet, xNumberFormats, "DM", "EUR", 1.95583f );
         System.out.println( "Change the number format to EUR and divide the 
values with the factor 1.95583" );
-        
+
         // remove all locks, the user see all changes
         xActionInterface.removeActionLock();
-        
+
         System.out.println("done");
         System.exit(0);
     }
-    
-    
+
+
     public static void Convert( XSpreadsheet xSheet, XNumberFormats 
xNumberFormats,
                                 String sOldSymbol, String sNewSymbol,
                                 float fFactor ) {
         try {
             Locale xLanguage = new Locale();
-            xLanguage.Country = "de";    // Germany -> DM
-            xLanguage.Language = "de";   // German
-            
+            xLanguage.Country = "de"; // Germany -> DM
+            xLanguage.Language = "de"; // German
+
             // Numberformat string with sNewSymbol
             String sSimple = "0 [$" + sNewSymbol + "]";
             // create a number format key with the sNewSymbol
             int iSimpleKey = NumberFormat( xNumberFormats, sSimple, xLanguage 
);
-            
+
             // you have to use the FormatSupplier interface to get the
             // CellFormat enumeration
             XCellFormatRangesSupplier xCellFormatSupplier =
                 (XCellFormatRangesSupplier)UnoRuntime.queryInterface(
                     XCellFormatRangesSupplier.class, xSheet );
-            
+
             // getCellFormatRanges() has the interfaces for the enumeration
             XEnumerationAccess xEnumerationAccess =
                 (XEnumerationAccess)UnoRuntime.queryInterface(
                     XEnumerationAccess.class,
                     xCellFormatSupplier.getCellFormatRanges() );
-            
+
             XEnumeration xRanges = xEnumerationAccess.createEnumeration();
 
             // create an AnyConverter for later use
             AnyConverter aAnyConv = new AnyConverter();
-            
+
             while( xRanges.hasMoreElements() ) {
                 // the enumeration returns a cellrange
                 XCellRange xCellRange = (XCellRange) UnoRuntime.queryInterface(
                     XCellRange.class, xRanges.nextElement());
-                
+
                 // the PropertySet the get and set the properties from the 
cellrange
                 XPropertySet xCellProp = 
(XPropertySet)UnoRuntime.queryInterface(
                     XPropertySet.class, xCellRange );
-                
+
                 // getPropertyValue returns an Object, you have to cast it to
                 // type that you need
                 Object oNumberObject = xCellProp.getPropertyValue( 
"NumberFormat" );
                 int iNumberFormat = aAnyConv.toInt(oNumberObject);
-                
+
                 // get the properties from the cellrange numberformat
                 XPropertySet xFormat = (XPropertySet)
                     xNumberFormats.getByKey(iNumberFormat );
-                
+
                 short fType = 
aAnyConv.toShort(xFormat.getPropertyValue("Type"));
                 String sCurrencySymbol = aAnyConv.toString(
                     xFormat.getPropertyValue("CurrencySymbol"));
-                
+
                 // change the numberformat only on cellranges with a
                 // currency numberformat
                 if( ( (fType & com.sun.star.util.NumberFormat.CURRENCY) > 0) &&
@@ -197,36 +195,36 @@ public class EuroAdaption {
                     Locale oLocale = (Locale) aAnyConv.toObject(
                        new com.sun.star.uno.Type(Locale.class),
                        xFormat.getPropertyValue("Locale"));
-                    
+
                     // create a new numberformat string
                     String sNew = xNumberFormats.generateFormat( iSimpleKey,
                                          oLocale, bThousandSep, bNegativeRed,
                                          fDecimals, fLeadingZeros );
-                    
+
                     // get the NumberKey from the numberformat
                     int iNewNumberFormat = NumberFormat( xNumberFormats,
                                                          sNew, oLocale );
-                    
+
                     // set the new numberformat to the cellrange DM->EUR
                     xCellProp.setPropertyValue( "NumberFormat",
                                                 new Integer( iNewNumberFormat 
) );
-                    
+
                     // interate over all cells from the cellrange with an
                     // content and use the DM/EUR factor
                     XCellRangesQuery xCellRangesQuery = (XCellRangesQuery)
                         UnoRuntime.queryInterface(
                         XCellRangesQuery.class, xCellRange );
-                    
+
                     XSheetCellRanges xSheetCellRanges =
                         xCellRangesQuery.queryContentCells(
                             (short) com.sun.star.sheet.CellFlags.VALUE );
-                    
+
                     if( xSheetCellRanges.getCount() > 0 ) {
                         XEnumerationAccess xCellEnumerationAccess =
                             xSheetCellRanges.getCells();
                         XEnumeration xCellEnumeration =
                             xCellEnumerationAccess.createEnumeration();
-                        
+
                         while( xCellEnumeration.hasMoreElements() ) {
                             XCell xCell = (XCell) UnoRuntime.queryInterface(
                                 XCell.class, xCellEnumeration.nextElement());
@@ -240,16 +238,16 @@ public class EuroAdaption {
             e.printStackTrace(System.err);
         }
     }
-    
-    
+
+
     public static int NumberFormat( XNumberFormats xNumberFormat, String 
sFormat,
                                     com.sun.star.lang.Locale xLanguage ) {
         int nRetKey = 0;
-        
+
         try {
             // exists the numberformat
             nRetKey = xNumberFormat.queryKey( sFormat, xLanguage, true );
-            
+
             // if not, create a new one
             if( nRetKey == -1 ) {
                 nRetKey = xNumberFormat.addNew( sFormat, xLanguage );
@@ -260,37 +258,37 @@ public class EuroAdaption {
         catch( Exception e) {
             e.printStackTrace(System.err);
         }
-        
+
         return( nRetKey );
     }
-    
-    
+
+
     public static void createExampleData( XSpreadsheet xSheet,
                                           XNumberFormats xNumberFormat ) {
-        
+
         // enter in a cellrange numbers and change the numberformat to DM
         XCell xCell = null;
         XCellRange xCellRange = null;
-        
+
         try {
             Locale xLanguage = new Locale();
-            xLanguage.Country = "de";    // Germany -> DM
-            xLanguage.Language = "de";   // German
-            
+            xLanguage.Country = "de"; // Germany -> DM
+            xLanguage.Language = "de"; // German
+
             // Numberformat string from DM
             String sSimple = "0 [$DM]";
-            
+
             // get the numberformat key
             int iNumberFormatKey = NumberFormat(xNumberFormat, sSimple, 
xLanguage);
-            
+
             for( int iCounter=1; iCounter < 10; iCounter++ ) {
                 // get one cell and insert a number
                 xCell = xSheet.getCellByPosition( 2, 1 + iCounter );
                 xCell.setValue( (double) iCounter * 2 );
                 xCellRange = xSheet.getCellRangeByPosition( 2, 1 + iCounter,
                                                             2, 1 + iCounter );
-                
-                // get the ProperySet from the cell, to change the numberformat
+
+                // get the PropertySet from the cell, to change the 
numberformat
                 XPropertySet xCellProp = 
(XPropertySet)UnoRuntime.queryInterface(
                     XPropertySet.class, xCellRange );
                 xCellProp.setPropertyValue( "NumberFormat",
@@ -301,17 +299,17 @@ public class EuroAdaption {
             e.printStackTrace(System.err);
         }
     }
-    
+
     public static XDesktop getDesktop() {
         XDesktop xDesktop = null;
         XMultiComponentFactory xMCF = null;
-        
+
         try {
             XComponentContext xContext = null;
-            
+
             // get the remote office component context
             xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
-            
+
             // get the remote office service manager
             xMCF = xContext.getServiceManager();
             if( xMCF != null ) {
@@ -329,50 +327,50 @@ public class EuroAdaption {
             e.printStackTrace(System.err);
             System.exit(1);
         }
-        
-        
+
+
         return xDesktop;
     }
-    
-    
+
+
     public static XSpreadsheetDocument createSheetdocument( XDesktop xDesktop 
) {
         XSpreadsheetDocument aSheetDocument = null;
-        
+
         try {
             XComponent xComponent = null;
             xComponent = CreateNewDocument( xDesktop, "scalc" );
-            
+
             aSheetDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
                 XSpreadsheetDocument.class, xComponent);
         }
         catch( Exception e) {
             e.printStackTrace(System.err);
         }
-        
+
         return aSheetDocument;
     }
-    
+
     protected static XComponent CreateNewDocument( XDesktop xDesktop,
                                                    String sDocumentType ) {
         String sURL = "private:factory/" + sDocumentType;
-        
+
         XComponent xComponent = null;
         XComponentLoader xComponentLoader = null;
         PropertyValue xValues[] = new PropertyValue[1];
         PropertyValue xEmptyArgs[] = new PropertyValue[0];
-        
+
         try {
             xComponentLoader = (XComponentLoader) UnoRuntime.queryInterface(
                 XComponentLoader.class, xDesktop );
-        
-            xComponent  = xComponentLoader.loadComponentFromURL(
+
+            xComponent = xComponentLoader.loadComponentFromURL(
                 sURL, "_blank", 0, xEmptyArgs);
         }
         catch( Exception e) {
             e.printStackTrace(System.err);
         }
-        
+
         return xComponent ;
     }
-    
+
 }
diff --git a/main/ucb/source/ucp/file/prov.hxx 
b/main/ucb/source/ucp/file/prov.hxx
index c05f05a758..7bff2266ad 100644
--- a/main/ucb/source/ucp/file/prov.hxx
+++ b/main/ucb/source/ucp/file/prov.hxx
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,20 +7,18 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
-
-
 #ifndef _PROV_HXX_
 #define _PROV_HXX_
 
@@ -42,8 +40,6 @@
 
 // FileProvider
 
-
-
 namespace fileaccess {
 
        // Forward declaration
@@ -54,7 +50,7 @@ namespace fileaccess {
        class FileProvider:
                public cppu::OWeakObject,
                public com::sun::star::lang::XServiceInfo,
-        public com::sun::star::lang::XInitialization,
+               public com::sun::star::lang::XInitialization,
                public com::sun::star::lang::XTypeProvider,
                public com::sun::star::ucb::XContentProvider,
                public com::sun::star::ucb::XContentIdentifierFactory,
@@ -112,11 +108,11 @@ namespace fileaccess {
 
                XTYPEPROVIDER_DECL()
 
-        // XInitialization
-        virtual void SAL_CALL
-        initialize( 
-            const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any 
>& aArguments ) 
-            throw (::com::sun::star::uno::Exception, 
::com::sun::star::uno::RuntimeException);
+               // XInitialization
+               virtual void SAL_CALL
+               initialize(
+                       const ::com::sun::star::uno::Sequence< 
::com::sun::star::uno::Any >& aArguments )
+                       throw (::com::sun::star::uno::Exception, 
::com::sun::star::uno::RuntimeException);
 
 
                // XContentProvider
@@ -140,7 +136,7 @@ namespace fileaccess {
                        const com::sun::star::uno::Reference< 
com::sun::star::ucb::XContentIdentifier >& Id2 )
                        throw( com::sun::star::uno::RuntimeException );
 
-               // XProperySet
+               // XPropertySet
 
                virtual com::sun::star::uno::Reference< 
com::sun::star::beans::XPropertySetInfo > SAL_CALL
                getPropertySetInfo(  )
@@ -211,9 +207,9 @@ namespace fileaccess {
 
 
        private:
-        // methods
-        void SAL_CALL init();
-        
+               // methods
+               void SAL_CALL init();
+
                // Members
                com::sun::star::uno::Reference< 
com::sun::star::lang::XMultiServiceFactory >  m_xMultiServiceFactory;
 
@@ -228,6 +224,8 @@ namespace fileaccess {
                shell*                                                          
              m_pMyShell;
        };
 
-}       // end namespace fileaccess
+} // end namespace fileaccess
 
 #endif
+
+/* vim: set noet sw=4 ts=4: */

Reply via email to