diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2020-03-29 23:15:34 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2020-03-30 00:50:55 +0200 |
commit | 4501a0ba623ad61c5a4e0b807da2e96f0e4ce82c (patch) | |
tree | f9265c99686e615780064d372afb5e2dd3de2646 /include/basegfx/matrix | |
parent | c20fa884cf20959dbd65814274e450e1f49cf45e (diff) |
remove Matrix class from basegfx, convert B2DHomMatrix tests
The common test cases of MAtrix and B2DHomMatrix are just converted
into additional test cases for B2DHomMatrix.
Change-Id: I8ed2f6d25263797b21a844e209e910a8a3f2a347
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91342
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'include/basegfx/matrix')
-rw-r--r-- | include/basegfx/matrix/Matrix.hxx | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/include/basegfx/matrix/Matrix.hxx b/include/basegfx/matrix/Matrix.hxx deleted file mode 100644 index e690216a3824..000000000000 --- a/include/basegfx/matrix/Matrix.hxx +++ /dev/null @@ -1,178 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 regarding copyright - * ownership. The ASF licenses this file 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 . - */ - -#pragma once - -class Matrix -{ -public: - Matrix() - : Matrix(1, 0, 0, 1, 0, 0) - { - } - - Matrix(const Matrix& other) - : Matrix(other.ma, other.mb, other.mc, other.md, other.me, other.mf) - { - } - - Matrix(double da, double db, double dc, double dd, double de, double df) - : ma(da) - , mb(db) - , mc(dc) - , md(dd) - , me(de) - , mf(df) - { - } - - const Matrix& operator=(const Matrix& other) - { - ma = other.ma; - mb = other.mb; - mc = other.mc; - md = other.md; - me = other.me; - mf = other.mf; - return *this; - } - - double get(sal_uInt16 nRow, sal_uInt16 nColumn) const - { - if (nRow == 0) - { - if (nColumn == 0) - return v00; - else if (nColumn == 1) - return v01; - else if (nColumn == 2) - return v02; - } - else if (nRow == 1) - { - if (nColumn == 0) - return v10; - else if (nColumn == 1) - return v11; - else if (nColumn == 2) - return v12; - } - return 0.0; - } - - double a() const { return ma; } - double b() const { return mb; } - double c() const { return mc; } - double d() const { return md; } - double e() const { return me; } - double f() const { return mf; } - - /// Multiply this * other. - void Concatinate(const Matrix& other) - { - double newA = ma * other.ma + mb * other.mc; - double newB = ma * other.mb + mb * other.md; - double newC = mc * other.ma + md * other.mc; - double newD = mc * other.mb + md * other.md; - double newE = me * other.ma + mf * other.mc + other.me; - double newF = me * other.mb + mf * other.md + other.mf; - - ma = newA; - mb = newB; - mc = newC; - md = newD; - me = newE; - mf = newF; - } - - /// Transform the point (x, y) by this Matrix. - template <typename T> void Transform(T& x, T& y) - { - T newX = v00 * x + v01 * y + v02; - T newY = v10 * x + v11 * y + v12; - x = newX; - y = newY; - } - - /// Transform the rectangle (left, right, top, bottom) by this Matrix. - template <typename T> void Transform(T& left, T& right, T& top, T& bottom) - { - T leftTopX = left; - T leftTopY = top; - Transform(leftTopX, leftTopY); - - T leftBottomX = left; - T leftBottomY = bottom; - Transform(leftBottomX, leftBottomY); - - T rightTopX = right; - T rightTopY = top; - Transform(rightTopX, rightTopY); - - T rightBottomX = right; - T rightBottomY = bottom; - Transform(rightBottomX, rightBottomY); - - left = std::min(leftTopX, leftBottomX); - right = std::max(rightTopX, rightBottomX); - - if (top > bottom) - top = std::max(leftTopY, rightTopY); - else - top = std::min(leftTopY, rightTopY); - - if (top > bottom) - bottom = std::max(leftBottomY, rightBottomY); - else - bottom = std::min(leftBottomY, rightBottomY); - } - - std::string toString() const - { - std::ostringstream oss; - oss << '(' << ma << ", " << mb << ", " << mc << ", " << md << ", " << me << ", " << mf - << ')'; - return oss.str(); - } - -private: - union { - struct - { - double ma; - double mb; - double mc; - double md; - double me; - double mf; - }; - - struct - { - double v00; - double v10; - double v01; - double v11; - double v02; - double v12; - }; - }; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |