summaryrefslogtreecommitdiff
path: root/basegfx/inc/basegfx/range/b2drange.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'basegfx/inc/basegfx/range/b2drange.hxx')
-rw-r--r--basegfx/inc/basegfx/range/b2drange.hxx320
1 files changed, 0 insertions, 320 deletions
diff --git a/basegfx/inc/basegfx/range/b2drange.hxx b/basegfx/inc/basegfx/range/b2drange.hxx
deleted file mode 100644
index 1f3884c1c9ce..000000000000
--- a/basegfx/inc/basegfx/range/b2drange.hxx
+++ /dev/null
@@ -1,320 +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 .
- */
-
-#ifndef _BGFX_RANGE_B2DRANGE_HXX
-#define _BGFX_RANGE_B2DRANGE_HXX
-
-#include <basegfx/vector/b2dvector.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/tuple/b2dtuple.hxx>
-#include <basegfx/range/basicrange.hxx>
-#include <vector>
-#include <basegfx/basegfxdllapi.h>
-
-
-namespace basegfx
-{
- // predeclarations
- class B2IRange;
- class B2DHomMatrix;
-
- /** A two-dimensional interval over doubles
-
- This is a set of real numbers, bounded by a lower and an upper
- pair. All inbetween values are included in the set (see also
- http://en.wikipedia.org/wiki/Interval_%28mathematics%29).
-
- The set is closed, i.e. the upper and the lower bound are
- included (if you're used to the notation - we're talking about
- [a,b] here, compared to half-open [a,b) or open intervals
- (a,b)).
-
- That means, isInside(val) will return true also for values of
- val=a or val=b.
-
- @see B1DRange
- */
- class B2DRange
- {
- public:
- typedef double ValueType;
- typedef DoubleTraits TraitsType;
-
- B2DRange() {}
-
- /// Create degenerate interval consisting of a single point
- explicit B2DRange(const B2DTuple& rTuple)
- : maRangeX(rTuple.getX()),
- maRangeY(rTuple.getY())
- {
- }
-
- /// Create proper interval between the two given double pairs
- B2DRange(double x1,
- double y1,
- double x2,
- double y2)
- : maRangeX(x1),
- maRangeY(y1)
- {
- maRangeX.expand(x2);
- maRangeY.expand(y2);
- }
-
- /// Create proper interval between the two given points
- B2DRange(const B2DTuple& rTuple1,
- const B2DTuple& rTuple2)
- : maRangeX(rTuple1.getX()),
- maRangeY(rTuple1.getY())
- {
- expand( rTuple2 );
- }
-
- BASEGFX_DLLPUBLIC explicit B2DRange(const B2IRange& rRange);
-
- /** Check if the interval set is empty
-
- @return false, if no value is in this set - having a
- single point included will already return true.
- */
- bool isEmpty() const
- {
- return (
- maRangeX.isEmpty()
- || maRangeY.isEmpty()
- );
- }
-
- /// reset the object to empty state again, clearing all values
- void reset()
- {
- maRangeX.reset();
- maRangeY.reset();
- }
-
- bool operator==( const B2DRange& rRange ) const
- {
- return (maRangeX == rRange.maRangeX
- && maRangeY == rRange.maRangeY);
- }
-
- bool operator!=( const B2DRange& rRange ) const
- {
- return (maRangeX != rRange.maRangeX
- || maRangeY != rRange.maRangeY);
- }
-
- bool equal(const B2DRange& rRange) const
- {
- return (maRangeX.equal(rRange.maRangeX)
- && maRangeY.equal(rRange.maRangeY));
- }
-
- /// get lower bound of the set. returns arbitrary values for empty sets.
- double getMinX() const
- {
- return maRangeX.getMinimum();
- }
-
- /// get lower bound of the set. returns arbitrary values for empty sets.
- double getMinY() const
- {
- return maRangeY.getMinimum();
- }
-
- /// get upper bound of the set. returns arbitrary values for empty sets.
- double getMaxX() const
- {
- return maRangeX.getMaximum();
- }
-
- /// get upper bound of the set. returns arbitrary values for empty sets.
- double getMaxY() const
- {
- return maRangeY.getMaximum();
- }
-
- /// return difference between upper and lower X value. returns 0 for empty sets.
- double getWidth() const
- {
- return maRangeX.getRange();
- }
-
- /// return difference between upper and lower Y value. returns 0 for empty sets.
- double getHeight() const
- {
- return maRangeY.getRange();
- }
-
- /// get lower bound of the set. returns arbitrary values for empty sets.
- B2DPoint getMinimum() const
- {
- return B2DPoint(
- maRangeX.getMinimum(),
- maRangeY.getMinimum()
- );
- }
-
- /// get upper bound of the set. returns arbitrary values for empty sets.
- B2DPoint getMaximum() const
- {
- return B2DPoint(
- maRangeX.getMaximum(),
- maRangeY.getMaximum()
- );
- }
-
- /// return difference between upper and lower point. returns (0,0) for empty sets.
- B2DVector getRange() const
- {
- return B2DVector(
- maRangeX.getRange(),
- maRangeY.getRange()
- );
- }
-
- /// return center point of set. returns (0,0) for empty sets.
- B2DPoint getCenter() const
- {
- return B2DPoint(
- maRangeX.getCenter(),
- maRangeY.getCenter()
- );
- }
-
- /// return center X value of set. returns 0 for empty sets.
- double getCenterX() const
- {
- return maRangeX.getCenter();
- }
-
- /// return center Y value of set. returns 0 for empty sets.
- double getCenterY() const
- {
- return maRangeY.getCenter();
- }
-
- /// yields true if given point is contained in set
- bool isInside(const B2DTuple& rTuple) const
- {
- return (
- maRangeX.isInside(rTuple.getX())
- && maRangeY.isInside(rTuple.getY())
- );
- }
-
- /// yields true if rRange is inside, or equal to set
- bool isInside(const B2DRange& rRange) const
- {
- return (
- maRangeX.isInside(rRange.maRangeX)
- && maRangeY.isInside(rRange.maRangeY)
- );
- }
-
- /// yields true if rRange at least partly inside set
- bool overlaps(const B2DRange& rRange) const
- {
- return (
- maRangeX.overlaps(rRange.maRangeX)
- && maRangeY.overlaps(rRange.maRangeY)
- );
- }
-
- /// yields true if overlaps(rRange) does, and the overlap is larger than infinitesimal
- bool overlapsMore(const B2DRange& rRange) const
- {
- return (
- maRangeX.overlapsMore(rRange.maRangeX)
- && maRangeY.overlapsMore(rRange.maRangeY)
- );
- }
-
- /// add point to the set, expanding as necessary
- void expand(const B2DTuple& rTuple)
- {
- maRangeX.expand(rTuple.getX());
- maRangeY.expand(rTuple.getY());
- }
-
- /// add rRange to the set, expanding as necessary
- void expand(const B2DRange& rRange)
- {
- maRangeX.expand(rRange.maRangeX);
- maRangeY.expand(rRange.maRangeY);
- }
-
- /// calc set intersection
- void intersect(const B2DRange& rRange)
- {
- maRangeX.intersect(rRange.maRangeX);
- maRangeY.intersect(rRange.maRangeY);
- }
-
- /// grow set by fValue on all sides
- void grow(double fValue)
- {
- maRangeX.grow(fValue);
- maRangeY.grow(fValue);
- }
-
- BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix& rMatrix);
-
- private:
- typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange;
-
- MyBasicRange maRangeX;
- MyBasicRange maRangeY;
- };
-
- /** Round double to nearest integer for 2D range
-
- @return the nearest integer for this range
- */
- BASEGFX_DLLPUBLIC B2IRange fround(const B2DRange& rRange);
-
- /** Compute the set difference of the two given ranges
-
- This method calculates the symmetric difference (aka XOR)
- between the two given ranges, and returning the resulting
- ranges. Thus, the result will contain all areas where one, but
- not both ranges lie.
-
- @param o_rResult
- Result vector. The up to four difference ranges are returned
- within this vector
-
- @param rFirst
- The first range
-
- @param rSecond
- The second range
-
- @return the input vector
- */
- BASEGFX_DLLPUBLIC ::std::vector< B2DRange >& computeSetDifference( ::std::vector< B2DRange >& o_rResult,
- const B2DRange& rFirst,
- const B2DRange& rSecond );
-
-} // end of namespace basegfx
-
-
-#endif /* _BGFX_RANGE_B2DRANGE_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */