GEOS 3.4.2

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

BufferParameters.h
1 /**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2009 Sandro Santilli <strk@keybit.net>
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 *
13 **********************************************************************
14 *
15 * Last port: operation/buffer/BufferParameters.java r378 (JTS-1.12)
16 *
17 **********************************************************************/
18
19 #ifndef GEOS_OP_BUFFER_BUFFERPARAMETERS_H
20 #define GEOS_OP_BUFFER_BUFFERPARAMETERS_H
21
22 #include <geos/export.h>
23
24 //#include <vector>
25
26 //#include <geos/algorithm/LineIntersector.h> // for composition
27 //#include <geos/geom/Coordinate.h> // for composition
28 //#include <geos/geom/LineSegment.h> // for composition
29
30 #ifdef _MSC_VER
31 #pragma warning(push)
32 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
33 #endif
34
35 // Forward declarations
36 namespace geos {
37 namespace geom {
38 class CoordinateSequence;
39 class PrecisionModel;
40 }
41 namespace operation {
42 namespace buffer {
43 class OffsetCurveVertexList;
44 }
45 }
46 }
47
48 namespace geos {
49 namespace operation { // geos.operation
50 namespace buffer { // geos.operation.buffer
51
57 class GEOS_DLL BufferParameters
58 {
59
60 public:
61
63 enum EndCapStyle {
64
66 CAP_ROUND=1,
67
69 CAP_FLAT=2,
70
72 CAP_SQUARE=3
73 };
74
76 enum JoinStyle {
77
79 JOIN_ROUND=1,
80
82 JOIN_MITRE=2,
83
85 JOIN_BEVEL=3
86 };
87
91 //
96 static const int DEFAULT_QUADRANT_SEGMENTS = 8;
97
99 //
102 static const double DEFAULT_MITRE_LIMIT; // 5.0 (in .cpp file)
103
105 BufferParameters();
106
108 //
111 BufferParameters(int quadrantSegments);
112
116 //
120 BufferParameters(int quadrantSegments, EndCapStyle endCapStyle);
121
125 //
131 BufferParameters(int quadrantSegments, EndCapStyle endCapStyle,
132 JoinStyle joinStyle, double mitreLimit);
133
135 //
138 int getQuadrantSegments() const { return quadrantSegments; }
139
143 //
169 void setQuadrantSegments(int quadSegs);
170
174 //
179 static double bufferDistanceError(int quadSegs);
180
182 //
185 EndCapStyle getEndCapStyle() const { return endCapStyle; }
186
188 //
196 void setEndCapStyle(EndCapStyle style)
197 {
198 endCapStyle = style;
199 }
200
202 //
205 JoinStyle getJoinStyle() const { return joinStyle; }
206
210 //
213 //
216 void setJoinStyle(JoinStyle style)
217 {
218 joinStyle = style;
219 }
220
222 //
225 double getMitreLimit() const { return mitreLimit; }
226
228 //
240 void setMitreLimit(double limit)
241 {
242 mitreLimit = limit;
243 }
244
262 void setSingleSided(bool isSingleSided)
263 {
264 _isSingleSided = isSingleSided;
265 }
266
272 bool isSingleSided() const {
273 return _isSingleSided;
274 }
275
276
277 private:
278
280 int quadrantSegments;
281
283 EndCapStyle endCapStyle;
284
286 JoinStyle joinStyle;
287
289 double mitreLimit;
290
291 bool _isSingleSided;
292 };
293
294 } // namespace geos::operation::buffer
295 } // namespace geos::operation
296 } // namespace geos
297
298 #ifdef _MSC_VER
299 #pragma warning(pop)
300 #endif
301
302 #endif // ndef GEOS_OP_BUFFER_BUFFERPARAMETERS_H
303