1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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>
37 typedef ::basegfx::BasicRange
< double, DoubleTraits
> MyBasicRange
;
39 MyBasicRange maRangeX
;
40 MyBasicRange maRangeY
;
41 MyBasicRange maRangeZ
;
46 explicit B3DRange(const B3DTuple
& rTuple
)
47 : maRangeX(rTuple
.getX()),
48 maRangeY(rTuple
.getY()),
49 maRangeZ(rTuple
.getZ())
68 B3DRange(const B3DTuple
& rTuple1
,
69 const B3DTuple
& rTuple2
)
70 : maRangeX(rTuple1
.getX()),
71 maRangeY(rTuple1
.getY()),
72 maRangeZ(rTuple1
.getZ())
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
162 maRangeX
.getMinimum(),
163 maRangeY
.getMinimum(),
164 maRangeZ
.getMinimum()
168 B3DPoint
getMaximum() const
171 maRangeX
.getMaximum(),
172 maRangeY
.getMaximum(),
173 maRangeZ
.getMaximum()
177 B3DVector
getRange() const
186 B3DPoint
getCenter() const
189 maRangeX
.getCenter(),
190 maRangeY
.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
213 maRangeX
.isInside(rTuple
.getX())
214 && maRangeY
.isInside(rTuple
.getY())
215 && maRangeZ
.isInside(rTuple
.getZ())
219 bool isInside(const B3DRange
& rRange
) const
222 maRangeX
.isInside(rRange
.maRangeX
)
223 && maRangeY
.isInside(rRange
.maRangeY
)
224 && maRangeZ
.isInside(rRange
.maRangeZ
)
228 bool overlaps(const B3DRange
& rRange
) const
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: */