Technische Universität Wien
Orientation and Processing of Airborne Laser Scanning data
Department of Geodesy and Geoinformation - Research Groups Photogrammetry and Remote Sensing
distroDM
c++_api
inc
DM
IPolylineFactory.hpp
1
#pragma once
2
3
#include "DM/config.hpp"
4
#include "DM/Handle.hpp"
5
#include "DM/IPolyline.hpp"
6
#include "DM/AutoLink.hpp"
//enable autolink
7
8
DM_NAMESPACE_BEGIN
9
10
11
/// \brief factory interface for creating polyline objects
12
/** Polyline may consists of multiple independent lines. Although line part may be closed, the objects
13
does not represent the enclosed area. The object remains a linear object. For describing areas use
14
polygons.
15
*/
16
class
DM_API
IPolylineFactory
:
public
ObjectBase
17
{
18
public
:
19
20
/// \brief functor class to only add certain parts to the polyline factory
21
class
IPartFunctor
:
public
ObjectBase
{
22
protected
:
23
virtual
~
IPartFunctor
() {}
24
25
public
:
26
virtual
bool
operator()(
const
IPolyline::IPart
&part)
const
= 0;
27
};
28
29
static
IPolylineFactory
* New();
30
31
protected
:
32
virtual
~
IPolylineFactory
() {}
33
34
public
:
35
virtual
void
clear() = 0;
36
virtual
void
reservePoint(
unsigned
size) = 0;
///< reserve memory for points
37
38
virtual
IPolylineFactory
& addPoint(
const
IPoint
&pt) = 0;
39
virtual
IPolylineFactory
& addPoint(
PointHandle
pt) = 0;
40
virtual
IPolylineFactory
& addPoint(
double
x,
double
y) = 0;
41
virtual
IPolylineFactory
& addPoint(
double
x,
double
y,
double
z) = 0;
42
43
virtual
IPolylineFactory
& insertPoint(
unsigned
idx,
const
IPoint
&pt) = 0;
44
virtual
IPolylineFactory
& insertPoint(
unsigned
idx,
PointHandle
pt) = 0;
45
virtual
IPolylineFactory
& insertPoint(
unsigned
idx,
double
x,
double
y) = 0;
46
virtual
IPolylineFactory
& insertPoint(
unsigned
idx,
double
x,
double
y,
double
z) = 0;
47
48
virtual
IPolylineFactory
& addPolyline(
const
IPolyline
&line,
bool
mergeConnectedParts =
false
) = 0;
49
50
///< allows adding only certain parts of an existing polyline object into the factory
51
virtual
IPolylineFactory
& addPolyline(
const
IPolyline
&line,
const
IPartFunctor &partFunc) = 0;
52
///< add a part of another polyline object into the factory
53
virtual
IPolylineFactory
& addPolyline(
const
IPolyline::IPart
&part) = 0;
54
55
virtual
IPolylineFactory
& closePart() = 0;
56
57
virtual
IPolylineFactory
& addPart() = 0;
58
59
virtual
PolylineHandle
getPolyline(
bool
clear =
true
) = 0;
60
};
61
62
typedef
Handle<IPolylineFactory> PolylineFactoryHandle;
63
64
DM_NAMESPACE_END
DM::IPolylineFactory::IPartFunctor
functor class to only add certain parts to the polyline factory
Definition:
IPolylineFactory.hpp:21
DM::IPolyline
Definition:
IPolyline.hpp:14
DM::IPolyline::IPart
Definition:
IPolyline.hpp:21
DM::IPolylineFactory
factory interface for creating polyline objects
Definition:
IPolylineFactory.hpp:16
DM::Handle
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition:
Handle.hpp:75
DM::ObjectBase
Definition:
M/c++_api/inc/DM/ObjectBase.hpp:8
DM::IPoint
3d point object
Definition:
IPoint.hpp:14