GEOS
3.3.3
Main Page
Related Pages
Namespaces
Classes
Files
File List
include
geos
geom
PrecisionModel.h
1
/**********************************************************************
2
* $Id: PrecisionModel.h 3292 2011-04-22 13:04:20Z strk $
3
*
4
* GEOS - Geometry Engine Open Source
5
* http://geos.refractions.net
6
*
7
* Copyright (C) 2011 Sandro Santilli <strk@keybit.net>
8
* Copyright (C) 2006 Refractions Research Inc.
9
*
10
* This is free software; you can redistribute and/or modify it under
11
* the terms of the GNU Lesser General Public Licence as published
12
* by the Free Software Foundation.
13
* See the COPYING file for more information.
14
*
15
**********************************************************************
16
*
17
* Last port: geom/PrecisionModel.java r378 (JTS-1.12)
18
*
19
**********************************************************************/
20
21
#ifndef GEOS_GEOM_PRECISIONMODEL_H
22
#define GEOS_GEOM_PRECISIONMODEL_H
23
24
#include <geos/export.h>
25
#include <geos/inline.h>
26
27
28
#include <string>
29
30
// Forward declarations
31
namespace
geos {
32
namespace
io {
33
class
Unload;
34
}
35
namespace
geom {
36
class
Coordinate;
37
}
38
}
39
40
namespace
geos {
41
namespace
geom {
// geos::geom
42
88
class
GEOS_DLL
PrecisionModel
{
89
friend
class
io::Unload;
90
91
public
:
92
94
typedef
enum
{
95
102
FIXED
,
103
109
FLOATING
,
110
116
FLOATING_SINGLE
117
118
} Type;
119
121
PrecisionModel
(
void
);
122
124
//
129
PrecisionModel
(Type nModelType);
130
147
PrecisionModel
(
double
newScale,
double
newOffsetX,
double
newOffsetY);
148
160
PrecisionModel
(
double
newScale);
161
162
// copy constructor
163
PrecisionModel
(
const
PrecisionModel
&pm);
164
166
~
PrecisionModel
(
void
);
167
168
170
//
175
static
const
double
maximumPreciseValue
;
176
187
double
makePrecise(
double
val)
const
;
188
190
void
makePrecise(
Coordinate
& coord)
const
;
191
192
void
makePrecise(
Coordinate
* coord)
const
;
193
195
//
199
bool
isFloating()
const
;
200
204
//
211
int
getMaximumSignificantDigits()
const
;
212
214
//
217
Type
getType()
const
;
218
220
double
getScale()
const
;
221
223
//
228
double
getOffsetX()
const
;
229
231
//
236
double
getOffsetY()
const
;
237
247
//void toInternal(const Coordinate& external, Coordinate* internal) const;
248
249
/*
250
* Returns the precise representation of <code>external</code>.
251
*
252
*@param external the original coordinate
253
*@return
254
* the coordinate whose values will be changed to the precise
255
* representation of <code>external</code>
256
* @deprecated use makePrecise instead
257
*/
258
//Coordinate* toInternal(const Coordinate& external) const;
259
260
/*
261
* Returns the external representation of <code>internal</code>.
262
*
263
*@param internal the original coordinate
264
*@return the coordinate whose values will be changed to the
265
* external representation of <code>internal</code>
266
* @deprecated no longer needed, since internal representation is same as external representation
267
*/
268
//Coordinate* toExternal(const Coordinate& internal) const;
269
270
/*
271
* Sets <code>external</code> to the external representation of
272
* <code>internal</code>.
273
*
274
* @param internal the original coordinate
275
* @param external
276
* the coordinate whose values will be changed to the
277
* external representation of <code>internal</code>
278
* @deprecated no longer needed, since internal representation is same as external representation
279
*/
280
//void toExternal(const Coordinate& internal, Coordinate* external) const;
281
282
std::string toString()
const
;
283
287
//
303
int
compareTo(
const
PrecisionModel
* other)
const
;
304
305
private
:
306
314
void
setScale(
double
newScale);
315
// throw IllegalArgumentException
316
317
Type
modelType;
318
319
double
scale;
320
321
};
322
323
// Equality operator for PrecisionModel, deprecate it ?
324
//inline bool operator==(const PrecisionModel& a, const PrecisionModel& b);
325
326
}
// namespace geos::geom
327
}
// namespace geos
328
329
#ifdef GEOS_INLINE
330
# include "geos/geom/PrecisionModel.inl"
331
#endif
332
333
#endif // ndef GEOS_GEOM_PRECISIONMODEL_H
334
335
/**********************************************************************
336
* $Log$
337
* Revision 1.6 2006/04/06 12:34:07 strk
338
* Port info, more debugging lines, doxygen comments
339
*
340
* Revision 1.5 2006/04/03 14:07:32 strk
341
* Commented out obsoleted toInternal() method
342
*
343
* Revision 1.4 2006/03/28 08:57:37 strk
344
* Comments cleanup, system headers included after project headers
345
*
346
* Revision 1.3 2006/03/24 09:52:41 strk
347
* USE_INLINE => GEOS_INLINE
348
*
349
* Revision 1.2 2006/03/22 16:58:35 strk
350
* Removed (almost) all inclusions of geom.h.
351
* Removed obsoleted .cpp files.
352
* Fixed a bug in WKTReader not using the provided CoordinateSequence
353
* implementation, optimized out some memory allocations.
354
*
355
* Revision 1.1 2006/03/09 16:46:49 strk
356
* geos::geom namespace definition, first pass at headers split
357
*
358
**********************************************************************/
Generated on Thu Mar 13 2014 09:55:44 for GEOS by
1.8.1.2