update credits
[LibreOffice.git] / include / basegfx / range / b3drange.hxx
blob7b17f04e4964b0934ae7bf92f29c5a2387b8bc73
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef _BGFX_RANGE_B3DRANGE_HXX
21 #define _BGFX_RANGE_B3DRANGE_HXX
23 #include <basegfx/vector/b3dvector.hxx>
24 #include <basegfx/point/b3dpoint.hxx>
25 #include <basegfx/tuple/b3dtuple.hxx>
26 #include <basegfx/range/basicrange.hxx>
27 #include <basegfx/basegfxdllapi.h>
29 namespace basegfx
31 // predeclarations
32 class B3IRange;
33 class B3DHomMatrix;
35 class B3DRange
37 typedef ::basegfx::BasicRange< double, DoubleTraits > MyBasicRange;
39 MyBasicRange maRangeX;
40 MyBasicRange maRangeY;
41 MyBasicRange maRangeZ;
43 public:
44 B3DRange() {}
46 explicit B3DRange(const B3DTuple& rTuple)
47 : maRangeX(rTuple.getX()),
48 maRangeY(rTuple.getY()),
49 maRangeZ(rTuple.getZ())
53 B3DRange(double x1,
54 double y1,
55 double z1,
56 double x2,
57 double y2,
58 double z2)
59 : maRangeX(x1),
60 maRangeY(y1),
61 maRangeZ(z1)
63 maRangeX.expand(x2);
64 maRangeY.expand(y2);
65 maRangeZ.expand(z2);
68 B3DRange(const B3DTuple& rTuple1,
69 const B3DTuple& rTuple2)
70 : maRangeX(rTuple1.getX()),
71 maRangeY(rTuple1.getY()),
72 maRangeZ(rTuple1.getZ())
74 expand(rTuple2);
77 bool isEmpty() const
79 return (
80 maRangeX.isEmpty()
81 || maRangeY.isEmpty()
82 || maRangeZ.isEmpty()
86 void reset()
88 maRangeX.reset();
89 maRangeY.reset();
90 maRangeZ.reset();
93 bool operator==( const B3DRange& rRange ) const
95 return (maRangeX == rRange.maRangeX
96 && maRangeY == rRange.maRangeY
97 && maRangeZ == rRange.maRangeZ);
100 bool operator!=( const B3DRange& rRange ) const
102 return (maRangeX != rRange.maRangeX
103 || maRangeY != rRange.maRangeY
104 || maRangeZ != rRange.maRangeZ);
107 bool equal(const B3DRange& rRange) const
109 return (maRangeX.equal(rRange.maRangeX)
110 && maRangeY.equal(rRange.maRangeY)
111 && maRangeZ.equal(rRange.maRangeZ));
114 double getMinX() const
116 return maRangeX.getMinimum();
119 double getMinY() const
121 return maRangeY.getMinimum();
124 double getMinZ() const
126 return maRangeZ.getMinimum();
129 double getMaxX() const
131 return maRangeX.getMaximum();
134 double getMaxY() const
136 return maRangeY.getMaximum();
139 double getMaxZ() const
141 return maRangeZ.getMaximum();
144 double getWidth() const
146 return maRangeX.getRange();
149 double getHeight() const
151 return maRangeY.getRange();
154 double getDepth() const
156 return maRangeZ.getRange();
159 B3DPoint getMinimum() const
161 return B3DPoint(
162 maRangeX.getMinimum(),
163 maRangeY.getMinimum(),
164 maRangeZ.getMinimum()
168 B3DPoint getMaximum() const
170 return B3DPoint(
171 maRangeX.getMaximum(),
172 maRangeY.getMaximum(),
173 maRangeZ.getMaximum()
177 B3DVector getRange() const
179 return B3DVector(
180 maRangeX.getRange(),
181 maRangeY.getRange(),
182 maRangeZ.getRange()
186 B3DPoint getCenter() const
188 return B3DPoint(
189 maRangeX.getCenter(),
190 maRangeY.getCenter(),
191 maRangeZ.getCenter()
195 double getCenterX() const
197 return maRangeX.getCenter();
200 double getCenterY() const
202 return maRangeY.getCenter();
205 double getCenterZ() const
207 return maRangeZ.getCenter();
210 bool isInside(const B3DTuple& rTuple) const
212 return (
213 maRangeX.isInside(rTuple.getX())
214 && maRangeY.isInside(rTuple.getY())
215 && maRangeZ.isInside(rTuple.getZ())
219 bool isInside(const B3DRange& rRange) const
221 return (
222 maRangeX.isInside(rRange.maRangeX)
223 && maRangeY.isInside(rRange.maRangeY)
224 && maRangeZ.isInside(rRange.maRangeZ)
228 bool overlaps(const B3DRange& rRange) const
230 return (
231 maRangeX.overlaps(rRange.maRangeX)
232 && maRangeY.overlaps(rRange.maRangeY)
233 && maRangeZ.overlaps(rRange.maRangeZ)
237 void expand(const B3DTuple& rTuple)
239 maRangeX.expand(rTuple.getX());
240 maRangeY.expand(rTuple.getY());
241 maRangeZ.expand(rTuple.getZ());
244 void expand(const B3DRange& rRange)
246 maRangeX.expand(rRange.maRangeX);
247 maRangeY.expand(rRange.maRangeY);
248 maRangeZ.expand(rRange.maRangeZ);
251 void intersect(const B3DRange& rRange)
253 maRangeX.intersect(rRange.maRangeX);
254 maRangeY.intersect(rRange.maRangeY);
255 maRangeZ.intersect(rRange.maRangeZ);
258 void grow(double fValue)
260 maRangeX.grow(fValue);
261 maRangeY.grow(fValue);
262 maRangeZ.grow(fValue);
265 BASEGFX_DLLPUBLIC void transform(const B3DHomMatrix& rMatrix);
268 } // end of namespace basegfx
271 #endif /* _BGFX_RANGE_B3DRANGE_HXX */
273 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */