[Libreoffice-commits] core.git: basegfx/source compilerplugins/clang include/basegfx vcl/win

Noel Grandin noel at peralex.com
Tue Oct 27 02:33:41 UTC 2015


 basegfx/source/inc/hommatrixtemplate.hxx        |   48 --------
 basegfx/source/inc/stringconversiontools.hxx    |    7 -
 basegfx/source/polygon/b2dpolygontools.cxx      |   33 ------
 basegfx/source/polygon/b2dpolypolygontools.cxx  |   18 ---
 basegfx/source/vector/b2ivector.cxx             |    6 -
 compilerplugins/clang/unusedmethods.cxx         |   93 -----------------
 compilerplugins/clang/unusedmethods.py          |    9 +
 include/basegfx/matrix/b2dhommatrix.hxx         |   30 -----
 include/basegfx/matrix/b3dhommatrix.hxx         |   30 -----
 include/basegfx/pixel/bpixel.hxx                |   64 -----------
 include/basegfx/polygon/b2dpolygontools.hxx     |    5 
 include/basegfx/polygon/b2dpolypolygontools.hxx |    5 
 include/basegfx/polygon/b3dpolygontools.hxx     |    3 
 include/basegfx/range/b2dconnectedranges.hxx    |    9 -
 include/basegfx/raster/bpixelraster.hxx         |    3 
 include/basegfx/raster/bzpixelraster.hxx        |    7 -
 include/basegfx/tools/canvastools.hxx           |    4 
 include/basegfx/tuple/b2dtuple.hxx              |   29 -----
 include/basegfx/tuple/b2i64tuple.hxx            |  117 ---------------------
 include/basegfx/tuple/b2ituple.hxx              |   36 ------
 include/basegfx/tuple/b3dtuple.hxx              |   54 ----------
 include/basegfx/tuple/b3ituple.hxx              |  129 ------------------------
 include/basegfx/vector/b2ivector.hxx            |    7 -
 include/basegfx/vector/b3dvector.hxx            |   17 ---
 vcl/win/source/gdi/gdiimpl.cxx                  |   53 +++++++++
 25 files changed, 60 insertions(+), 756 deletions(-)

New commits:
commit 3ce9af420afafa1a81de646220706fcdc8d84b55
Author: Noel Grandin <noel at peralex.com>
Date:   Tue Oct 27 01:59:25 2015 +0100

    loplugin:unusedmethods
    
    Change-Id: I73180266c0af98dbd8d29bd3b11850996b94def9
    Reviewed-on: https://gerrit.libreoffice.org/19195
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/basegfx/source/inc/hommatrixtemplate.hxx b/basegfx/source/inc/hommatrixtemplate.hxx
index 52ffd0b..58a3b46 100644
--- a/basegfx/source/inc/hommatrixtemplate.hxx
+++ b/basegfx/source/inc/hommatrixtemplate.hxx
@@ -418,25 +418,6 @@ namespace basegfx
                 testLastLine();
             }
 
-            void doNormalize()
-            {
-                if(mpLine)
-                {
-                    const double fHomValue(get((RowSize - 1), (RowSize - 1)));
-
-                    for(sal_uInt16 a(0); a < RowSize; a++)
-                    {
-                        for(sal_uInt16 b(0); b < RowSize; b++)
-                        {
-                            set(a, b, get(a, b) / fHomValue);
-                        }
-                    }
-
-                    // evtl. get rid of last matrix line
-                    testLastLine();
-                }
-            }
-
             double doDeterminant() const
             {
                 ImplHomMatrixTemplate aWork(*this);
@@ -461,35 +442,6 @@ namespace basegfx
                 return fRetval;
             }
 
-            double doTrace() const
-            {
-                double fTrace = (mpLine) ? 0.0 : 1.0;
-                const sal_uInt16 nMaxLine(
-                    sal::static_int_cast<sal_uInt16>(mpLine ? RowSize : (RowSize - 1)) );
-
-                for(sal_uInt16 a(0); a < nMaxLine; a++)
-                {
-                    fTrace += get(a, a);
-                }
-
-                return fTrace;
-            }
-
-            void doTranspose()
-            {
-                for(sal_uInt16 a(0); a < (RowSize - 1); a++)
-                {
-                    for(sal_uInt16 b(a + 1); b < RowSize; b++)
-                    {
-                        const double fTemp(get(a, b));
-                        set(a, b, get(b, a));
-                        set(b, a, fTemp);
-                    }
-                }
-
-                testLastLine();
-            }
-
             void doAddMatrix(const ImplHomMatrixTemplate& rMat)
             {
                 for(sal_uInt16 a(0); a < RowSize; a++)
diff --git a/basegfx/source/inc/stringconversiontools.hxx b/basegfx/source/inc/stringconversiontools.hxx
index 92713bf..26fabdb 100644
--- a/basegfx/source/inc/stringconversiontools.hxx
+++ b/basegfx/source/inc/stringconversiontools.hxx
@@ -69,13 +69,6 @@ namespace basegfx
                                  const OUString& rStr,
                                  const sal_Int32 nLen);
 
-        void skipNumber(sal_Int32&       io_rPos,
-                        const OUString&  rStr,
-                        const sal_Int32  nLen);
-
-        void skipDouble(sal_Int32&       io_rPos,
-                        const OUString&  rStr);
-
         void putNumberCharWithSpace(OUStringBuffer& rStr,
                                     double          fValue,
                                     double          fOldValue,
diff --git a/basegfx/source/polygon/b2dpolygontools.cxx b/basegfx/source/polygon/b2dpolygontools.cxx
index 95ee250..54f8521 100644
--- a/basegfx/source/polygon/b2dpolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolygontools.cxx
@@ -3191,39 +3191,6 @@ namespace basegfx
             }
         }
 
-        bool containsOnlyHorizontalAndVerticalEdges(const B2DPolygon& rCandidate)
-        {
-            if(rCandidate.areControlPointsUsed())
-            {
-                return false;
-            }
-
-            const sal_uInt32 nPointCount(rCandidate.count());
-
-            if(nPointCount < 2)
-            {
-                return true;
-            }
-
-            const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount + 1 : nPointCount);
-            basegfx::B2DPoint aLast(rCandidate.getB2DPoint(0));
-
-            for(sal_uInt32 a(1); a < nEdgeCount; a++)
-            {
-                const sal_uInt32 nNextIndex(a % nPointCount);
-                const basegfx::B2DPoint aCurrent(rCandidate.getB2DPoint(nNextIndex));
-
-                if(!basegfx::fTools::equal(aLast.getX(), aCurrent.getX()) && !basegfx::fTools::equal(aLast.getY(), aCurrent.getY()))
-                {
-                    return false;
-                }
-
-                aLast = aCurrent;
-            }
-
-            return true;
-        }
-
         B2DVector getTangentEnteringPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex)
         {
             B2DVector aRetval(0.0, 0.0);
diff --git a/basegfx/source/polygon/b2dpolypolygontools.cxx b/basegfx/source/polygon/b2dpolypolygontools.cxx
index f290f37..b473367 100644
--- a/basegfx/source/polygon/b2dpolypolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolypolygontools.cxx
@@ -495,24 +495,6 @@ namespace basegfx
             return aRetval;
         }
 
-        bool containsOnlyHorizontalAndVerticalEdges(const B2DPolyPolygon& rCandidate)
-        {
-            if(rCandidate.areControlPointsUsed())
-            {
-                return false;
-            }
-
-            for(sal_uInt32 a(0); a < rCandidate.count(); a++)
-            {
-                if(!containsOnlyHorizontalAndVerticalEdges(rCandidate.getB2DPolygon(a)))
-                {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
         B2DPolyPolygon createSevenSegmentPolyPolygon(sal_Char nNumber, bool bLitSegments)
         {
             // config here
diff --git a/basegfx/source/vector/b2ivector.cxx b/basegfx/source/vector/b2ivector.cxx
index 7e3e65d..5b45871 100644
--- a/basegfx/source/vector/b2ivector.cxx
+++ b/basegfx/source/vector/b2ivector.cxx
@@ -60,12 +60,6 @@ namespace basegfx
         return *this;
     }
 
-    B2IVector operator*( const B2DHomMatrix& rMat, const B2IVector& rVec )
-    {
-        B2IVector aRes( rVec );
-        return aRes*=rMat;
-    }
-
 } // end of namespace basegfx
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/compilerplugins/clang/unusedmethods.cxx b/compilerplugins/clang/unusedmethods.cxx
index e5fab5b..a555031 100644
--- a/compilerplugins/clang/unusedmethods.cxx
+++ b/compilerplugins/clang/unusedmethods.cxx
@@ -19,7 +19,7 @@
 Dump a list of calls to methods, and a list of method definitions.
 Then we will post-process the 2 lists and find the set of unused methods.
 
-Be warned that it produces around 4G of log file.
+Be warned that it produces around 5G of log file.
 
 The process goes something like this:
   $ make check
@@ -99,9 +99,6 @@ public:
     bool VisitCallExpr(CallExpr* );
     bool VisitFunctionDecl( const FunctionDecl* decl );
     bool VisitDeclRefExpr( const DeclRefExpr* );
-    bool VisitCXXConstructExpr( const CXXConstructExpr* );
-    bool VisitVarDecl( const VarDecl* );
-    bool VisitCXXRecordDecl( CXXRecordDecl* );
 private:
     void logCallToRootMethods(const FunctionDecl* functionDecl);
     MyFuncInfo niceName(const FunctionDecl* functionDecl);
@@ -216,22 +213,7 @@ bool UnusedMethods::VisitCallExpr(CallExpr* expr)
                 goto gotfunc;
         }
         /*
-        // ignore case where we can't determine the target of the call because we're inside a template
-        if (isa<CXXDependentScopeMemberExpr>(callee))
-            return true;
-        if (isa<UnresolvedLookupExpr>(callee))
-            return true;
-        if (isa<UnresolvedMemberExpr>(callee))
-            return true;
-        if (isa<DependentScopeDeclRefExpr>(callee))
-            return true;
-        // ignore this, doesn't really exist (side-effect of template expansion on scalar types)
-        if (isa<CXXPseudoDestructorExpr>(callee))
-            return true;
         expr->dump();
-        std::string name = compiler.getSourceManager().getFilename(expansionLoc);
-        std::string sourceLocation = name + ":" + std::to_string(compiler.getSourceManager().getSpellingLineNumber(expansionLoc));
-        cout << sourceLocation << endl;
         throw "Cant touch this";
         */
         return true;
@@ -249,28 +231,6 @@ gotfunc:
     return true;
 }
 
-bool UnusedMethods::VisitCXXConstructExpr(const CXXConstructExpr* expr)
-{
-    const CXXConstructorDecl *consDecl = expr->getConstructor();
-    consDecl = consDecl->getCanonicalDecl();
-    if (consDecl->getTemplatedKind() == FunctionDecl::TemplatedKind::TK_NonTemplate
-        && !consDecl->isFunctionTemplateSpecialization()) {
-        return true;
-    }
-    // if we see a call to a constructor, it may effectively create a whole new class,
-    // if the constructor's class is templated.
-    if (!traversedFunctionSet.insert(fullyQualifiedName(consDecl)).second)
-        return true;
-
-    const CXXRecordDecl* parent = consDecl->getParent();
-    for( CXXRecordDecl::ctor_iterator it = parent->ctor_begin(); it != parent->ctor_end(); ++it)
-        TraverseCXXConstructorDecl(*it);
-    for( CXXRecordDecl::method_iterator it = parent->method_begin(); it != parent->method_end(); ++it)
-        TraverseCXXMethodDecl(*it);
-
-    return true;
-}
-
 bool UnusedMethods::VisitFunctionDecl( const FunctionDecl* functionDecl )
 {
     functionDecl = functionDecl->getCanonicalDecl();
@@ -311,57 +271,6 @@ bool UnusedMethods::VisitDeclRefExpr( const DeclRefExpr* declRefExpr )
     return true;
 }
 
-// this is for declarations of static variables that involve a template
-bool UnusedMethods::VisitVarDecl( const VarDecl* varDecl )
-{
-    varDecl = varDecl->getCanonicalDecl();
-
-    if (varDecl->getStorageClass() != SC_Static)
-        return true;
-    const CXXRecordDecl* recordDecl = varDecl->getType()->getAsCXXRecordDecl();
-    if (!recordDecl)
-        return true;
-// workaround clang-3.5 issue
-#if __clang_major__ > 3 || ( __clang_major__ == 3 && __clang_minor__ >= 6 )
-    if (!recordDecl->getTemplateInstantiationPattern())
-        return true;
-#endif
-    for( CXXRecordDecl::ctor_iterator it = recordDecl->ctor_begin(); it != recordDecl->ctor_end(); ++it)
-        TraverseCXXConstructorDecl(*it);
-    for( CXXRecordDecl::method_iterator it = recordDecl->method_begin(); it != recordDecl->method_end(); ++it)
-        TraverseCXXMethodDecl(*it);
-    return true;
-}
-
-// Sometimes a class will inherit from something, and in the process invoke a template,
-// which can create new methods.
-//
-bool UnusedMethods::VisitCXXRecordDecl( CXXRecordDecl* recordDecl )
-{
-    recordDecl = recordDecl->getCanonicalDecl();
-    if (!recordDecl->hasDefinition())
-        return true;
-// workaround clang-3.5 issue
-#if __clang_major__ > 3 || ( __clang_major__ == 3 && __clang_minor__ >= 6 )
-    for(CXXBaseSpecifier* baseSpecifier = recordDecl->bases_begin();
-        baseSpecifier != recordDecl->bases_end(); ++baseSpecifier)
-    {
-        const Type *baseType = baseSpecifier->getType().getTypePtr();
-        if (isa<TypedefType>(baseSpecifier->getType())) {
-            baseType = dyn_cast<TypedefType>(baseType)->desugar().getTypePtr();
-        }
-        if (isa<RecordType>(baseType)) {
-            const RecordType *baseRecord = dyn_cast<RecordType>(baseType);
-            CXXRecordDecl* baseRecordDecl = dyn_cast<CXXRecordDecl>(baseRecord->getDecl());
-            if (baseRecordDecl && baseRecordDecl->getTemplateInstantiationPattern()) {
-                TraverseCXXRecordDecl(baseRecordDecl);
-            }
-        }
-    }
-#endif
-    return true;
-}
-
 loplugin::Plugin::Registration< UnusedMethods > X("unusedmethods", false);
 
 }
diff --git a/compilerplugins/clang/unusedmethods.py b/compilerplugins/clang/unusedmethods.py
index 1ea2394..fd17cb5 100755
--- a/compilerplugins/clang/unusedmethods.py
+++ b/compilerplugins/clang/unusedmethods.py
@@ -103,6 +103,11 @@ exclusionSet = set([
     "class vcl::Window * CreateWindow(class VCLXWindow **,const struct com::sun::star::awt::WindowDescriptor *,class vcl::Window *,long)",
     ])
 
+# clang does not always use exactly the same numbers in the type-parameter vars it generates
+# so I need to substitute them to ensure we can match correctly.
+normalizeTypeParamsRegex = re.compile(r"type-parameter-\d+-\d+")
+def normalizeTypeParams( line ):
+    return normalizeTypeParamsRegex.sub("type-parameter-?-?", line)
 
 # The parsing here is designed to avoid grabbing stuff which is mixed in from gbuild.
 # I have not yet found a way of suppressing the gbuild output.
@@ -111,12 +116,12 @@ with io.open(sys.argv[1], "rb", buffering=1024*1024) as txt:
         if line.startswith("definition:\t"):
             idx1 = line.find("\t",12)
             idx2 = line.find("\t",idx1+1)
-            funcInfo = (line[12:idx1], line[idx1+1:idx2])
+            funcInfo = (normalizeTypeParams(line[12:idx1]), normalizeTypeParams(line[idx1+1:idx2]))
             definitionSet.add(funcInfo)
             definitionToSourceLocationMap[funcInfo] = line[idx2+1:].strip()
         elif line.startswith("call:\t"):
             idx1 = line.find("\t",6)
-            callSet.add((line[6:idx1], line[idx1+1:].strip()))
+            callSet.add((normalizeTypeParams(line[6:idx1]), normalizeTypeParams(line[idx1+1:].strip())))
 
 tmp1set = set()
 for d in definitionSet:
diff --git a/include/basegfx/matrix/b2dhommatrix.hxx b/include/basegfx/matrix/b2dhommatrix.hxx
index 68c119c..a3e6fcd 100644
--- a/include/basegfx/matrix/b2dhommatrix.hxx
+++ b/include/basegfx/matrix/b2dhommatrix.hxx
@@ -96,36 +96,6 @@ namespace basegfx
         bool decompose(B2DTuple& rScale, B2DTuple& rTranslate, double& rRotate, double& rShearX) const;
     };
 
-    // addition, subtraction
-    inline B2DHomMatrix operator+(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
-    {
-        B2DHomMatrix aSum(rMatA);
-        aSum += rMatB;
-        return aSum;
-    }
-
-    inline B2DHomMatrix operator-(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
-    {
-        B2DHomMatrix aDiv(rMatA);
-        aDiv -= rMatB;
-        return aDiv;
-    }
-
-    // multiplication, division by a constant
-    inline B2DHomMatrix operator*(const B2DHomMatrix& rMat, double fValue)
-    {
-        B2DHomMatrix aNew(rMat);
-        aNew *= fValue;
-        return aNew;
-    }
-
-    inline B2DHomMatrix operator/(const B2DHomMatrix& rMat, double fValue)
-    {
-        B2DHomMatrix aNew(rMat);
-        aNew *= 1.0 / fValue;
-        return aNew;
-    }
-
     inline B2DHomMatrix operator*(const B2DHomMatrix& rMatA, const B2DHomMatrix& rMatB)
     {
         B2DHomMatrix aMul(rMatB);
diff --git a/include/basegfx/matrix/b3dhommatrix.hxx b/include/basegfx/matrix/b3dhommatrix.hxx
index 0ffd911..b8e1c5b 100644
--- a/include/basegfx/matrix/b3dhommatrix.hxx
+++ b/include/basegfx/matrix/b3dhommatrix.hxx
@@ -112,36 +112,6 @@ namespace basegfx
         bool decompose(B3DTuple& rScale, B3DTuple& rTranslate, B3DTuple& rRotate, B3DTuple& rShear) const;
     };
 
-    // addition, subtraction
-    inline B3DHomMatrix operator+(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
-    {
-        B3DHomMatrix aSum(rMatA);
-        aSum += rMatB;
-        return aSum;
-    }
-
-    inline B3DHomMatrix operator-(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
-    {
-        B3DHomMatrix aDiv(rMatA);
-        aDiv -= rMatB;
-        return aDiv;
-    }
-
-    // multiplication, division by constant value
-    inline B3DHomMatrix operator*(const B3DHomMatrix& rMat, double fValue)
-    {
-        B3DHomMatrix aNew(rMat);
-        aNew *= fValue;
-        return aNew;
-    }
-
-    inline B3DHomMatrix operator/(const B3DHomMatrix& rMat, double fValue)
-    {
-        B3DHomMatrix aNew(rMat);
-        aNew *= 1.0 / fValue;
-        return aNew;
-    }
-
     inline B3DHomMatrix operator*(const B3DHomMatrix& rMatA, const B3DHomMatrix& rMatB)
     {
         B3DHomMatrix aMul(rMatB);
diff --git a/include/basegfx/pixel/bpixel.hxx b/include/basegfx/pixel/bpixel.hxx
index f42e757..a9fea5b 100644
--- a/include/basegfx/pixel/bpixel.hxx
+++ b/include/basegfx/pixel/bpixel.hxx
@@ -115,70 +115,6 @@ namespace basegfx
     };
 
 
-    // external operators
-
-    inline BPixel minimum(const BPixel& rTupA, const BPixel& rTupB)
-    {
-        return BPixel(
-            std::min(rTupB.getRed(), rTupA.getRed()),
-            std::min(rTupB.getGreen(), rTupA.getGreen()),
-            std::min(rTupB.getBlue(), rTupA.getBlue()),
-            std::min(rTupB.getOpacity(), rTupA.getOpacity()));
-    }
-
-    inline BPixel maximum(const BPixel& rTupA, const BPixel& rTupB)
-    {
-        return BPixel(
-            std::max(rTupB.getRed(), rTupA.getRed()),
-            std::max(rTupB.getGreen(), rTupA.getGreen()),
-            std::max(rTupB.getBlue(), rTupA.getBlue()),
-            std::max(rTupB.getOpacity(), rTupA.getOpacity()));
-    }
-
-    inline BPixel interpolate(const BPixel& rOld1, const BPixel& rOld2, double t)
-    {
-        if(rOld1 == rOld2)
-        {
-            return rOld1;
-        }
-        else if(0.0 >= t)
-        {
-            return rOld1;
-        }
-        else if(1.0 <= t)
-        {
-            return rOld2;
-        }
-        else
-        {
-            const sal_uInt32 nFactor(fround(256.0 * t));
-            const sal_uInt32 nNegFac(256L - nFactor);
-
-            return BPixel(
-                (sal_uInt8)(((sal_uInt32)rOld1.getRed() * nNegFac + (sal_uInt32)rOld2.getRed() * nFactor) >> 8L),
-                (sal_uInt8)(((sal_uInt32)rOld1.getGreen() * nNegFac + (sal_uInt32)rOld2.getGreen() * nFactor) >> 8L),
-                (sal_uInt8)(((sal_uInt32)rOld1.getBlue() * nNegFac + (sal_uInt32)rOld2.getBlue() * nFactor) >> 8L),
-                (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() * nNegFac + (sal_uInt32)rOld2.getOpacity() * nFactor) >> 8L));
-        }
-    }
-
-    inline BPixel average(const BPixel& rOld1, const BPixel& rOld2)
-    {
-        return BPixel(
-            rOld1.getRed() == rOld2.getRed() ? rOld1.getRed() : (sal_uInt8)(((sal_uInt32)rOld1.getRed() + (sal_uInt32)rOld2.getRed()) >> 1L),
-            rOld1.getGreen() == rOld2.getGreen() ? rOld1.getGreen() : (sal_uInt8)(((sal_uInt32)rOld1.getGreen() + (sal_uInt32)rOld2.getGreen()) >> 1L),
-            rOld1.getBlue() == rOld2.getBlue() ? rOld1.getBlue() : (sal_uInt8)(((sal_uInt32)rOld1.getBlue() + (sal_uInt32)rOld2.getBlue()) >> 1L),
-            rOld1.getOpacity() == rOld2.getOpacity() ? rOld1.getOpacity() : (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() + (sal_uInt32)rOld2.getOpacity()) >> 1L));
-    }
-
-    inline BPixel average(const BPixel& rOld1, const BPixel& rOld2, const BPixel& rOld3)
-    {
-        return BPixel(
-            (rOld1.getRed() == rOld2.getRed() && rOld2.getRed() == rOld3.getRed()) ? rOld1.getRed() : (sal_uInt8)(((sal_uInt32)rOld1.getRed() + (sal_uInt32)rOld2.getRed() + (sal_uInt32)rOld3.getRed()) / 3L),
-            (rOld1.getGreen() == rOld2.getGreen() && rOld2.getGreen() == rOld3.getGreen()) ? rOld1.getGreen() : (sal_uInt8)(((sal_uInt32)rOld1.getGreen() + (sal_uInt32)rOld2.getGreen() + (sal_uInt32)rOld3.getGreen()) / 3L),
-            (rOld1.getBlue() == rOld2.getBlue() && rOld2.getBlue() == rOld3.getBlue()) ? rOld1.getBlue() : (sal_uInt8)(((sal_uInt32)rOld1.getBlue() + (sal_uInt32)rOld2.getBlue() + (sal_uInt32)rOld3.getBlue()) / 3L),
-            (rOld1.getOpacity() == rOld2.getOpacity() && rOld2.getOpacity() == rOld3.getOpacity()) ? rOld1.getOpacity() : (sal_uInt8)(((sal_uInt32)rOld1.getOpacity() + (sal_uInt32)rOld2.getOpacity() + (sal_uInt32)rOld3.getOpacity()) / 3L));
-    }
 } // end of namespace basegfx
 
 #endif // INCLUDED_BASEGFX_PIXEL_BPIXEL_HXX
diff --git a/include/basegfx/polygon/b2dpolygontools.hxx b/include/basegfx/polygon/b2dpolygontools.hxx
index e963fa0..3edf22e 100644
--- a/include/basegfx/polygon/b2dpolygontools.hxx
+++ b/include/basegfx/polygon/b2dpolygontools.hxx
@@ -442,11 +442,6 @@ namespace basegfx
         */
         BASEGFX_DLLPUBLIC B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate);
 
-        /** returns true if the Polygon only contains horizontal or vertical edges
-            so that it could be represented by RegionBands
-        */
-        bool containsOnlyHorizontalAndVerticalEdges(const B2DPolygon& rCandidate);
-
         /// get the tangent with which the given point is entered seen from the previous
         /// polygon path data. Take into account all stuff like closed state, zero-length edges and others.
         BASEGFX_DLLPUBLIC B2DVector getTangentEnteringPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex);
diff --git a/include/basegfx/polygon/b2dpolypolygontools.hxx b/include/basegfx/polygon/b2dpolypolygontools.hxx
index 2c84287d..4059e22 100644
--- a/include/basegfx/polygon/b2dpolypolygontools.hxx
+++ b/include/basegfx/polygon/b2dpolypolygontools.hxx
@@ -287,11 +287,6 @@ namespace basegfx
         */
         BASEGFX_DLLPUBLIC B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate);
 
-        /** returns true if the Polygon only contains horizontal or vertical edges
-            so that it could be represented by RegionBands
-        */
-        BASEGFX_DLLPUBLIC bool containsOnlyHorizontalAndVerticalEdges(const B2DPolyPolygon& rCandidate);
-
         /// converters for css::drawing::PointSequence
         BASEGFX_DLLPUBLIC B2DPolyPolygon UnoPointSequenceSequenceToB2DPolyPolygon(
             const css::drawing::PointSequenceSequence& rPointSequenceSequenceSource,
diff --git a/include/basegfx/polygon/b3dpolygontools.hxx b/include/basegfx/polygon/b3dpolygontools.hxx
index bcee8be..49ba730 100644
--- a/include/basegfx/polygon/b3dpolygontools.hxx
+++ b/include/basegfx/polygon/b3dpolygontools.hxx
@@ -55,9 +55,6 @@ namespace basegfx
         // get size of polygon. Control vectors are included in that ranges.
         BASEGFX_DLLPUBLIC B3DRange getRange(const B3DPolygon& rCandidate);
 
-        // get area of polygon
-        BASEGFX_DLLPUBLIC double getArea(const ::basegfx::B3DPolygon& rCandidate);
-
         // get length of polygon
         BASEGFX_DLLPUBLIC double getLength(const B3DPolygon& rCandidate);
 
diff --git a/include/basegfx/range/b2dconnectedranges.hxx b/include/basegfx/range/b2dconnectedranges.hxx
index 6feb867..7679f5a 100644
--- a/include/basegfx/range/b2dconnectedranges.hxx
+++ b/include/basegfx/range/b2dconnectedranges.hxx
@@ -83,15 +83,6 @@ namespace basegfx
         {
         }
 
-        /** Query total bounds of all added ranges.
-
-            @return the union bound rect over all added ranges.
-         */
-        B2DRange getBounds() const
-        {
-            return maTotalBounds;
-        }
-
         /** Add an additional range.
 
             This method integrates a new range into the connected
diff --git a/include/basegfx/raster/bpixelraster.hxx b/include/basegfx/raster/bpixelraster.hxx
index 67eea7d..f85c0af 100644
--- a/include/basegfx/raster/bpixelraster.hxx
+++ b/include/basegfx/raster/bpixelraster.hxx
@@ -64,13 +64,10 @@ namespace basegfx
 
         // coordinate calcs between X/Y and span
         sal_uInt32 getIndexFromXY(sal_uInt32 nX, sal_uInt32 nY) const { return (nX + (nY * mnWidth)); }
-        sal_uInt32 getXFromIndex(sal_uInt32 nIndex) const { return (nIndex % mnWidth); }
-        sal_uInt32 getYFromIndex(sal_uInt32 nIndex) const { return (nIndex / mnWidth); }
 
         // data access read
         sal_uInt32 getWidth() const { return mnWidth; }
         sal_uInt32 getHeight() const { return mnHeight; }
-        sal_uInt32 getCount() const { return mnCount; }
 
         // data access read only
         const BPixel& getBPixel(sal_uInt32 nIndex) const
diff --git a/include/basegfx/raster/bzpixelraster.hxx b/include/basegfx/raster/bzpixelraster.hxx
index f11dcf2..722abde 100644
--- a/include/basegfx/raster/bzpixelraster.hxx
+++ b/include/basegfx/raster/bzpixelraster.hxx
@@ -33,13 +33,6 @@ namespace basegfx
         sal_uInt16*                 mpZBuffer;
 
     public:
-        // reset
-        void resetZ()
-        {
-            reset();
-            memset(mpZBuffer, 0, sizeof(sal_uInt16) * mnCount);
-        }
-
         // constructor/destructor
         BZPixelRaster(sal_uInt32 nWidth, sal_uInt32 nHeight)
         :   BPixelRaster(nWidth, nHeight),
diff --git a/include/basegfx/tools/canvastools.hxx b/include/basegfx/tools/canvastools.hxx
index 7e2c0c0..79b72f2 100644
--- a/include/basegfx/tools/canvastools.hxx
+++ b/include/basegfx/tools/canvastools.hxx
@@ -122,10 +122,6 @@ namespace basegfx
 
         BASEGFX_DLLPUBLIC ::basegfx::B3DHomMatrix homMatrixFromAffineMatrix3D( const css::geometry::AffineMatrix3D& matrix );
 
-        BASEGFX_DLLPUBLIC css::geometry::Matrix2D&
-            matrixFromHomMatrix( css::geometry::Matrix2D&         matrix,
-                                 const ::basegfx::B2DHomMatrix&   transform);
-
         // Geometry conversions
 
 
diff --git a/include/basegfx/tuple/b2dtuple.hxx b/include/basegfx/tuple/b2dtuple.hxx
index 5659c7b..3819a5b 100644
--- a/include/basegfx/tuple/b2dtuple.hxx
+++ b/include/basegfx/tuple/b2dtuple.hxx
@@ -221,20 +221,6 @@ namespace basegfx
     // external operators
 
 
-    inline B2DTuple minimum(const B2DTuple& rTupA, const B2DTuple& rTupB)
-    {
-        return B2DTuple(
-            std::min(rTupB.getX(), rTupA.getX()),
-            std::min(rTupB.getY(), rTupA.getY()));
-    }
-
-    inline B2DTuple maximum(const B2DTuple& rTupA, const B2DTuple& rTupB)
-    {
-        return B2DTuple(
-            std::max(rTupB.getX(), rTupA.getX()),
-            std::max(rTupB.getY(), rTupA.getY()));
-    }
-
     inline B2DTuple absolute(const B2DTuple& rTup)
     {
         B2DTuple aAbs(
@@ -272,13 +258,6 @@ namespace basegfx
             rOld1.getY() == rOld2.getY() ? rOld1.getY() : (rOld1.getY() + rOld2.getY()) * 0.5);
     }
 
-    inline B2DTuple average(const B2DTuple& rOld1, const B2DTuple& rOld2, const B2DTuple& rOld3)
-    {
-        return B2DTuple(
-            (rOld1.getX() == rOld2.getX() && rOld2.getX() == rOld3.getX()) ? rOld1.getX() : (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
-            (rOld1.getY() == rOld2.getY() && rOld2.getY() == rOld3.getY()) ? rOld1.getY() : (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0));
-    }
-
     inline B2DTuple operator+(const B2DTuple& rTupA, const B2DTuple& rTupB)
     {
         B2DTuple aSum(rTupA);
@@ -328,14 +307,6 @@ namespace basegfx
         return aNew;
     }
 
-    inline B2DTuple operator/(double t, const B2DTuple& rTup)
-    {
-        B2DTuple aNew(t, t);
-        B2DTuple aTmp(rTup);
-        aNew /= aTmp;
-        return aNew;
-    }
-
     /** Round double to nearest integer for 2D tuple
 
         @return the nearest integer for this tuple
diff --git a/include/basegfx/tuple/b2i64tuple.hxx b/include/basegfx/tuple/b2i64tuple.hxx
index e4b40ac..5c5aac7 100644
--- a/include/basegfx/tuple/b2i64tuple.hxx
+++ b/include/basegfx/tuple/b2i64tuple.hxx
@@ -177,123 +177,6 @@ namespace basegfx
         }
     };
 
-    // external operators
-
-
-    inline B2I64Tuple minimum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        return B2I64Tuple(
-            std::min(rTupB.getX(), rTupA.getX()),
-            std::min(rTupB.getY(), rTupA.getY()));
-    }
-
-    inline B2I64Tuple maximum(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        return B2I64Tuple(
-            std::max(rTupB.getX(), rTupA.getX()),
-            std::max(rTupB.getY(), rTupA.getY()));
-    }
-
-    inline B2I64Tuple absolute(const B2I64Tuple& rTup)
-    {
-        B2I64Tuple aAbs(
-            (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
-            (0 > rTup.getY()) ? -rTup.getY() : rTup.getY());
-        return aAbs;
-    }
-
-    inline B2I64Tuple interpolate(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, double t)
-    {
-        if(rOld1 == rOld2)
-        {
-            return rOld1;
-        }
-        else if(0.0 >= t)
-        {
-            return rOld1;
-        }
-        else if(1.0 <= t)
-        {
-            return rOld2;
-        }
-        else
-        {
-            return B2I64Tuple(
-                basegfx::fround64(((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX()),
-                basegfx::fround64(((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()));
-        }
-    }
-
-    inline B2I64Tuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2)
-    {
-        return B2I64Tuple(
-            rOld1.getX() == rOld2.getX() ? rOld1.getX() : basegfx::fround64((rOld1.getX() + rOld2.getX()) * 0.5),
-            rOld1.getY() == rOld2.getY() ? rOld1.getY() : basegfx::fround64((rOld1.getY() + rOld2.getY()) * 0.5));
-    }
-
-    inline B2I64Tuple average(const B2I64Tuple& rOld1, const B2I64Tuple& rOld2, const B2I64Tuple& rOld3)
-    {
-        return B2I64Tuple(
-            (rOld1.getX() == rOld2.getX() && rOld2.getX() == rOld3.getX()) ? rOld1.getX() : basegfx::fround64((rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0)),
-            (rOld1.getY() == rOld2.getY() && rOld2.getY() == rOld3.getY()) ? rOld1.getY() : basegfx::fround64((rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)));
-    }
-
-    inline B2I64Tuple operator+(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        B2I64Tuple aSum(rTupA);
-        aSum += rTupB;
-        return aSum;
-    }
-
-    inline B2I64Tuple operator-(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        B2I64Tuple aSub(rTupA);
-        aSub -= rTupB;
-        return aSub;
-    }
-
-    inline B2I64Tuple operator/(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        B2I64Tuple aDiv(rTupA);
-        aDiv /= rTupB;
-        return aDiv;
-    }
-
-    inline B2I64Tuple operator*(const B2I64Tuple& rTupA, const B2I64Tuple& rTupB)
-    {
-        B2I64Tuple aMul(rTupA);
-        aMul *= rTupB;
-        return aMul;
-    }
-
-    inline B2I64Tuple operator*(const B2I64Tuple& rTup, sal_Int64 t)
-    {
-        B2I64Tuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
-    inline B2I64Tuple operator*(sal_Int64 t, const B2I64Tuple& rTup)
-    {
-        B2I64Tuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
-    inline B2I64Tuple operator/(const B2I64Tuple& rTup, sal_Int64 t)
-    {
-        B2I64Tuple aNew(rTup);
-        aNew /= t;
-        return aNew;
-    }
-
-    inline B2I64Tuple operator/(sal_Int64 t, const B2I64Tuple& rTup)
-    {
-        B2I64Tuple aNew(t, t);
-        B2I64Tuple aTmp(rTup);
-        aNew /= aTmp;
-        return aNew;
-    }
 } // end of namespace basegfx
 
 #endif // INCLUDED_BASEGFX_TUPLE_B2I64TUPLE_HXX
diff --git a/include/basegfx/tuple/b2ituple.hxx b/include/basegfx/tuple/b2ituple.hxx
index d75e41c..e7a4c0f 100644
--- a/include/basegfx/tuple/b2ituple.hxx
+++ b/include/basegfx/tuple/b2ituple.hxx
@@ -212,27 +212,6 @@ namespace basegfx
         return aSub;
     }
 
-    inline B2ITuple operator/(const B2ITuple& rTupA, const B2ITuple& rTupB)
-    {
-        B2ITuple aDiv(rTupA);
-        aDiv /= rTupB;
-        return aDiv;
-    }
-
-    inline B2ITuple operator*(const B2ITuple& rTupA, const B2ITuple& rTupB)
-    {
-        B2ITuple aMul(rTupA);
-        aMul *= rTupB;
-        return aMul;
-    }
-
-    inline B2ITuple operator*(const B2ITuple& rTup, sal_Int32 t)
-    {
-        B2ITuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
     inline B2ITuple operator*(sal_Int32 t, const B2ITuple& rTup)
     {
         B2ITuple aNew(rTup);
@@ -240,21 +219,6 @@ namespace basegfx
         return aNew;
     }
 
-    inline B2ITuple operator/(const B2ITuple& rTup, sal_Int32 t)
-    {
-        B2ITuple aNew(rTup);
-        aNew /= t;
-        return aNew;
-    }
-
-    inline B2ITuple operator/(sal_Int32 t, const B2ITuple& rTup)
-    {
-        B2ITuple aNew(t, t);
-        B2ITuple aTmp(rTup);
-        aNew /= aTmp;
-        return aNew;
-    }
-
 } // end of namespace basegfx
 
 #endif // INCLUDED_BASEGFX_TUPLE_B2ITUPLE_HXX
diff --git a/include/basegfx/tuple/b3dtuple.hxx b/include/basegfx/tuple/b3dtuple.hxx
index 5bd5cc9..a1d4add 100644
--- a/include/basegfx/tuple/b3dtuple.hxx
+++ b/include/basegfx/tuple/b3dtuple.hxx
@@ -282,31 +282,6 @@ namespace basegfx
     // external operators
 
 
-    inline B3DTuple minimum(const B3DTuple& rTupA, const B3DTuple& rTupB)
-    {
-        return B3DTuple(
-            std::min(rTupB.getX(), rTupA.getX()),
-            std::min(rTupB.getY(), rTupA.getY()),
-            std::min(rTupB.getZ(), rTupA.getZ()));
-    }
-
-    inline B3DTuple maximum(const B3DTuple& rTupA, const B3DTuple& rTupB)
-    {
-        return B3DTuple(
-            std::max(rTupB.getX(), rTupA.getX()),
-            std::max(rTupB.getY(), rTupA.getY()),
-            std::max(rTupB.getZ(), rTupA.getZ()));
-    }
-
-    inline B3DTuple absolute(const B3DTuple& rTup)
-    {
-        B3DTuple aAbs(
-            fabs(rTup.getX()),
-            fabs(rTup.getY()),
-            fabs(rTup.getZ()));
-        return aAbs;
-    }
-
     inline B3DTuple interpolate(const B3DTuple& rOld1, const B3DTuple& rOld2, double t)
     {
         if(rOld1 == rOld2)
@@ -338,14 +313,6 @@ namespace basegfx
             rOld1.getZ() == rOld2.getZ() ? rOld1.getZ() : (rOld1.getZ() + rOld2.getZ()) * 0.5);
     }
 
-    inline B3DTuple average(const B3DTuple& rOld1, const B3DTuple& rOld2, const B3DTuple& rOld3)
-    {
-        return B3DTuple(
-            (rOld1.getX() == rOld2.getX() && rOld2.getX() == rOld3.getX()) ? rOld1.getX() : (rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
-            (rOld1.getY() == rOld2.getY() && rOld2.getY() == rOld3.getY()) ? rOld1.getY() : (rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0),
-            (rOld1.getZ() == rOld2.getZ() && rOld2.getZ() == rOld3.getZ()) ? rOld1.getZ() : (rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0));
-    }
-
     inline B3DTuple operator+(const B3DTuple& rTupA, const B3DTuple& rTupB)
     {
         B3DTuple aSum(rTupA);
@@ -360,13 +327,6 @@ namespace basegfx
         return aSub;
     }
 
-    inline B3DTuple operator/(const B3DTuple& rTupA, const B3DTuple& rTupB)
-    {
-        B3DTuple aDiv(rTupA);
-        aDiv /= rTupB;
-        return aDiv;
-    }
-
     inline B3DTuple operator*(const B3DTuple& rTupA, const B3DTuple& rTupB)
     {
         B3DTuple aMul(rTupA);
@@ -381,13 +341,6 @@ namespace basegfx
         return aNew;
     }
 
-    inline B3DTuple operator*(double t, const B3DTuple& rTup)
-    {
-        B3DTuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
     inline B3DTuple operator/(const B3DTuple& rTup, double t)
     {
         B3DTuple aNew(rTup);
@@ -395,13 +348,6 @@ namespace basegfx
         return aNew;
     }
 
-    inline B3DTuple operator/(double t, const B3DTuple& rTup)
-    {
-        B3DTuple aNew(rTup);
-        aNew /= t;
-        return aNew;
-    }
-
     /** Round double to nearest integer for 3D tuple
 
         @return the nearest integer for this tuple
diff --git a/include/basegfx/tuple/b3ituple.hxx b/include/basegfx/tuple/b3ituple.hxx
index 7802101..69a2cca 100644
--- a/include/basegfx/tuple/b3ituple.hxx
+++ b/include/basegfx/tuple/b3ituple.hxx
@@ -98,12 +98,6 @@ namespace basegfx
             return mnY;
         }
 
-        /// get Z-Coordinate of 3D Tuple
-        sal_Int32 getZ() const
-        {
-            return mnZ;
-        }
-
         /// Array-access to 3D Tuple
         const sal_Int32& operator[] (int nPos) const
         {
@@ -197,129 +191,6 @@ namespace basegfx
         }
     };
 
-    // external operators
-
-
-    inline B3ITuple minimum(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        return B3ITuple(
-            std::min(rTupB.getX(), rTupA.getX()),
-            std::min(rTupB.getY(), rTupA.getY()),
-            std::min(rTupB.getZ(), rTupA.getZ()));
-    }
-
-    inline B3ITuple maximum(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        return B3ITuple(
-            std::max(rTupB.getX(), rTupA.getX()),
-            std::max(rTupB.getY(), rTupA.getY()),
-            std::max(rTupB.getZ(), rTupA.getZ()));
-    }
-
-    inline B3ITuple absolute(const B3ITuple& rTup)
-    {
-        B3ITuple aAbs(
-            (0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
-            (0 > rTup.getY()) ? -rTup.getY() : rTup.getY(),
-            (0 > rTup.getZ()) ? -rTup.getZ() : rTup.getZ());
-        return aAbs;
-    }
-
-    inline B3ITuple interpolate(const B3ITuple& rOld1, const B3ITuple& rOld2, double t)
-    {
-        if(rOld1 == rOld2)
-        {
-            return rOld1;
-        }
-        else if(0.0 >= t)
-        {
-            return rOld1;
-        }
-        else if(1.0 <= t)
-        {
-            return rOld2;
-        }
-        else
-        {
-            return B3ITuple(
-                basegfx::fround(((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX()),
-                basegfx::fround(((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()),
-                basegfx::fround(((rOld2.getZ() - rOld1.getZ()) * t) + rOld1.getZ()));
-        }
-    }
-
-    inline B3ITuple average(const B3ITuple& rOld1, const B3ITuple& rOld2)
-    {
-        return B3ITuple(
-            rOld1.getX() == rOld2.getX() ? rOld1.getX() : basegfx::fround((rOld1.getX() + rOld2.getX()) * 0.5),
-            rOld1.getY() == rOld2.getY() ? rOld1.getY() : basegfx::fround((rOld1.getY() + rOld2.getY()) * 0.5),
-            rOld1.getZ() == rOld2.getZ() ? rOld1.getZ() : basegfx::fround((rOld1.getZ() + rOld2.getZ()) * 0.5));
-    }
-
-    inline B3ITuple average(const B3ITuple& rOld1, const B3ITuple& rOld2, const B3ITuple& rOld3)
-    {
-        return B3ITuple(
-            (rOld1.getX() == rOld2.getX() && rOld2.getX() == rOld3.getX()) ? rOld1.getX() : basegfx::fround((rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0)),
-            (rOld1.getY() == rOld2.getY() && rOld2.getY() == rOld3.getY()) ? rOld1.getX() : basegfx::fround((rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)),
-            (rOld1.getZ() == rOld2.getZ() && rOld2.getZ() == rOld3.getZ()) ? rOld1.getX() : basegfx::fround((rOld1.getZ() + rOld2.getZ() + rOld3.getZ()) * (1.0 / 3.0)));
-    }
-
-    inline B3ITuple operator+(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        B3ITuple aSum(rTupA);
-        aSum += rTupB;
-        return aSum;
-    }
-
-    inline B3ITuple operator-(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        B3ITuple aSub(rTupA);
-        aSub -= rTupB;
-        return aSub;
-    }
-
-    inline B3ITuple operator/(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        B3ITuple aDiv(rTupA);
-        aDiv /= rTupB;
-        return aDiv;
-    }
-
-    inline B3ITuple operator*(const B3ITuple& rTupA, const B3ITuple& rTupB)
-    {
-        B3ITuple aMul(rTupA);
-        aMul *= rTupB;
-        return aMul;
-    }
-
-    inline B3ITuple operator*(const B3ITuple& rTup, sal_Int32 t)
-    {
-        B3ITuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
-    inline B3ITuple operator*(sal_Int32 t, const B3ITuple& rTup)
-    {
-        B3ITuple aNew(rTup);
-        aNew *= t;
-        return aNew;
-    }
-
-    inline B3ITuple operator/(const B3ITuple& rTup, sal_Int32 t)
-    {
-        B3ITuple aNew(rTup);
-        aNew /= t;
-        return aNew;
-    }
-
-    inline B3ITuple operator/(sal_Int32 t, const B3ITuple& rTup)
-    {
-        B3ITuple aNew(t, t, t);
-        B3ITuple aTmp(rTup);
-        aNew /= aTmp;
-        return aNew;
-    }
 } // end of namespace basegfx
 
 #endif // INCLUDED_BASEGFX_TUPLE_B3ITUPLE_HXX
diff --git a/include/basegfx/vector/b2ivector.hxx b/include/basegfx/vector/b2ivector.hxx
index e8fac19..3896852 100644
--- a/include/basegfx/vector/b2ivector.hxx
+++ b/include/basegfx/vector/b2ivector.hxx
@@ -132,13 +132,6 @@ namespace basegfx
 
     // external operators
 
-    /** Transform vector by given transformation matrix.
-
-        Since this is a vector, translational components of the
-        matrix are disregarded.
-    */
-    BASEGFX_DLLPUBLIC B2IVector operator*( const B2DHomMatrix& rMat, const B2IVector& rVec );
-
     template< typename charT, typename traits >
     inline std::basic_ostream<charT, traits> & operator <<(
         std::basic_ostream<charT, traits> & stream, const basegfx::B2IVector& vector )
diff --git a/include/basegfx/vector/b3dvector.hxx b/include/basegfx/vector/b3dvector.hxx
index 1e8572e..cf4b1b2 100644
--- a/include/basegfx/vector/b3dvector.hxx
+++ b/include/basegfx/vector/b3dvector.hxx
@@ -227,23 +227,6 @@ namespace basegfx
     // external operators
 
 
-    /** get a 3D Vector which is in 2D (ignoring
-        the Z-Coordinate) perpendicular to a given 3D Vector
-
-        @attention This only works if the given 3D Vector is normalized.
-
-        @param rNormalizedVec
-        A normalized 3D Vector.
-
-        @return
-        A 3D Vector perpendicular to the given one in X,Y (2D).
-    */
-    inline B3DVector getPerpendicular2D( const B3DVector& rNormalizedVec )
-    {
-        B3DVector aPerpendicular(-rNormalizedVec.getY(), rNormalizedVec.getX(), rNormalizedVec.getZ());
-        return aPerpendicular;
-    }
-
     /** Test two vectors which need not to be normalized for parallelism
 
         @param rVecA
diff --git a/vcl/win/source/gdi/gdiimpl.cxx b/vcl/win/source/gdi/gdiimpl.cxx
index 408639c..c6afb9d 100644
--- a/vcl/win/source/gdi/gdiimpl.cxx
+++ b/vcl/win/source/gdi/gdiimpl.cxx
@@ -1051,6 +1051,57 @@ void WinSalGraphicsImpl::ResetClipRegion()
     SelectClipRgn( mrParent.getHDC(), 0 );
 }
 
+static bool containsOnlyHorizontalAndVerticalEdges(const basegfx::B2DPolygon& rCandidate)
+{
+    if(rCandidate.areControlPointsUsed())
+    {
+        return false;
+    }
+
+    const sal_uInt32 nPointCount(rCandidate.count());
+
+    if(nPointCount < 2)
+    {
+        return true;
+    }
+
+    const sal_uInt32 nEdgeCount(rCandidate.isClosed() ? nPointCount + 1 : nPointCount);
+    basegfx::B2DPoint aLast(rCandidate.getB2DPoint(0));
+
+    for(sal_uInt32 a(1); a < nEdgeCount; a++)
+    {
+        const sal_uInt32 nNextIndex(a % nPointCount);
+        const basegfx::B2DPoint aCurrent(rCandidate.getB2DPoint(nNextIndex));
+
+        if(!basegfx::fTools::equal(aLast.getX(), aCurrent.getX()) && !basegfx::fTools::equal(aLast.getY(), aCurrent.getY()))
+        {
+            return false;
+        }
+
+        aLast = aCurrent;
+    }
+
+    return true;
+}
+
+static bool containsOnlyHorizontalAndVerticalEdges(const basegfx::B2DPolyPolygon& rCandidate)
+{
+    if(rCandidate.areControlPointsUsed())
+    {
+        return false;
+    }
+
+    for(sal_uInt32 a(0); a < rCandidate.count(); a++)
+    {
+        if(!containsOnlyHorizontalAndVerticalEdges(rCandidate.getB2DPolygon(a)))
+        {
+            return false;
+        }
+    }
+
+    return true;
+}
+
 bool WinSalGraphicsImpl::setClipRegion( const vcl::Region& i_rClip )
 {
     if ( mrParent.mhRegion )
@@ -1078,7 +1129,7 @@ bool WinSalGraphicsImpl::setClipRegion( const vcl::Region& i_rClip )
 
         if(!aPolyPolygon.areControlPointsUsed())
         {
-            if(basegfx::tools::containsOnlyHorizontalAndVerticalEdges(aPolyPolygon))
+            if(containsOnlyHorizontalAndVerticalEdges(aPolyPolygon))
             {
                 bUsePolygon = false;
             }


More information about the Libreoffice-commits mailing list