QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
Region.h
Go to the documentation of this file.
1/******************************************************************************
2 * Project: libspatialindex - A C++ library for spatial indexing
3 * Author: Marios Hadjieleftheriou, [email protected]
4 ******************************************************************************
5 * Copyright (c) 2004, Marios Hadjieleftheriou
6 *
7 * All rights reserved.
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 * DEALINGS IN THE SOFTWARE.
26******************************************************************************/
27
28#pragma once
29
30namespace SpatialIndex
31{
32 class SIDX_DLL Region : public Tools::IObject, public virtual IShape
33 {
34 public:
36 Region(const double* pLow, const double* pHigh, uint32_t dimension);
37 Region(const Point& low, const Point& high);
38 Region(const Region& in);
39 virtual ~Region();
40
41 virtual Region& operator=(const Region& r);
42 virtual bool operator==(const Region&) const;
43
44 //
45 // IObject interface
46 //
47 virtual Region* clone();
48
49 //
50 // ISerializable interface
51 //
52 virtual uint32_t getByteArraySize();
53 virtual void loadFromByteArray(const byte* data);
54 virtual void storeToByteArray(byte** data, uint32_t& length);
55
56 //
57 // IShape interface
58 //
59 virtual bool intersectsShape(const IShape& in) const;
60 virtual bool containsShape(const IShape& in) const;
61 virtual bool touchesShape(const IShape& in) const;
62 virtual void getCenter(Point& out) const;
63 virtual uint32_t getDimension() const;
64 virtual void getMBR(Region& out) const;
65 virtual double getArea() const;
66 virtual double getMinimumDistance(const IShape& in) const;
67
68 virtual bool intersectsRegion(const Region& in) const;
69 virtual bool containsRegion(const Region& in) const;
70 virtual bool touchesRegion(const Region& in) const;
71 virtual double getMinimumDistance(const Region& in) const;
72
73 virtual bool intersectsLineSegment(const LineSegment& in) const;
74
75 virtual bool containsPoint(const Point& in) const;
76 virtual bool touchesPoint(const Point& in) const;
77 virtual double getMinimumDistance(const Point& in) const;
78
79 virtual Region getIntersectingRegion(const Region& r) const;
80 virtual double getIntersectingArea(const Region& in) const;
81 virtual double getMargin() const;
82
83 virtual void combineRegion(const Region& in);
84 virtual void combinePoint(const Point& in);
85 virtual void getCombinedRegion(Region& out, const Region& in) const;
86
87 virtual double getLow(uint32_t index) const;
88 virtual double getHigh(uint32_t index) const;
89
90 virtual void makeInfinite(uint32_t dimension);
91 virtual void makeDimension(uint32_t dimension);
92
93 private:
94 void initialize(const double* pLow, const double* pHigh, uint32_t dimension);
95
96 public:
97 uint32_t m_dimension;
98 double* m_pLow;
99 double* m_pHigh;
100
101 friend SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r);
102 }; // Region
103
105 SIDX_DLL std::ostream& operator<<(std::ostream& os, const Region& r);
106}
Definition SpatialIndex.h:68
Definition LineSegment.h:33
Definition Point.h:35
Definition Region.h:33
Region(const Point &low, const Point &high)
double * m_pHigh
Definition Region.h:99
virtual double getMargin() const
virtual void combinePoint(const Point &in)
virtual bool containsShape(const IShape &in) const
virtual double getArea() const
friend SIDX_DLL std::ostream & operator<<(std::ostream &os, const Region &r)
virtual void getCenter(Point &out) const
virtual void makeInfinite(uint32_t dimension)
virtual Region * clone()
virtual void loadFromByteArray(const byte *data)
virtual bool touchesShape(const IShape &in) const
virtual uint32_t getDimension() const
void initialize(const double *pLow, const double *pHigh, uint32_t dimension)
Region(const Region &in)
uint32_t m_dimension
Definition Region.h:97
virtual bool operator==(const Region &) const
virtual void getMBR(Region &out) const
virtual bool touchesPoint(const Point &in) const
virtual double getMinimumDistance(const IShape &in) const
virtual double getMinimumDistance(const Point &in) const
virtual bool touchesRegion(const Region &in) const
virtual void combineRegion(const Region &in)
virtual double getMinimumDistance(const Region &in) const
double * m_pLow
Definition Region.h:98
virtual double getHigh(uint32_t index) const
virtual bool intersectsShape(const IShape &in) const
virtual void makeDimension(uint32_t dimension)
virtual void getCombinedRegion(Region &out, const Region &in) const
virtual void storeToByteArray(byte **data, uint32_t &length)
virtual bool intersectsLineSegment(const LineSegment &in) const
virtual Region getIntersectingRegion(const Region &r) const
virtual Region & operator=(const Region &r)
virtual double getIntersectingArea(const Region &in) const
virtual bool containsRegion(const Region &in) const
virtual bool containsPoint(const Point &in) const
virtual bool intersectsRegion(const Region &in) const
virtual uint32_t getByteArraySize()
Region(const double *pLow, const double *pHigh, uint32_t dimension)
virtual double getLow(uint32_t index) const
Definition Tools.h:215
Definition PoolPointer.h:37
Definition CustomStorage.h:34
SIDX_DLL std::ostream & operator<<(std::ostream &os, const LineSegment &pt)
Tools::PoolPointer< Region > RegionPtr
Definition Region.h:104
#define SIDX_DLL
Definition sidx_export.h:41