1#ifndef OSMSCOUT_UTIL_TRANSFORMATION_H
2#define OSMSCOUT_UTIL_TRANSFORMATION_H
70 void Reserve(
size_t size);
139 if (!
nodes.empty()) {
140 Reserve(
nodes.size());
146 for (
size_t i=start; i<=end; i++) {
147 batchTransformer.GeoToPixel(
nodes[i],
165 double& xmax,
double& ymax)
const;
201 TransPolygon::OptimizeMethod optimize,
202 double optimizeErrorTolerance,
203 TransPolygon::OutputConstraint constraint);
209 TransPolygon::OptimizeMethod optimize,
210 double optimizeErrorTolerance,
211 TransPolygon::OutputConstraint constraint);
231 TransPolygon::OptimizeMethod optimize,
232 double optimizeErrorTolerance,
233 TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint)
237 if (nodes.size()<2) {
241 buffer.TransformGeoToPixel(projection,
244 if (optimize!=TransPolygon::none) {
247 optimizeErrorTolerance,
270 TransPolygon::OptimizeMethod optimize,
271 double optimizeErrorTolerance,
272 TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint)
280 buffer.TransformGeoToPixel(projection,
283 if (optimize!=TransPolygon::none) {
286 optimizeErrorTolerance,
310 TransPolygon::OptimizeMethod optimize,
311 double optimizeErrorTolerance,
312 TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint);
315 class CoordBufferRange;
336 size_t bufferSize=131072;
386 CoordBuffer* coordBuffer=&CoordBuffer::emptyCoordBuffer;
387 size_t start=std::numeric_limits<size_t>::max();
388 size_t end=std::numeric_limits<size_t>::max();
389 mutable double length=-1;
396 : coordBuffer(&coordBuffer),
405 this->coordBuffer=other.coordBuffer;
406 this->start=other.start;
419 return coordBuffer->buffer[start];
428 return coordBuffer->buffer[end];
447 return coordBuffer->buffer[index];
478 for (
size_t j = start+1; j <= end; j++) {
480 length += sqrt(pow(currentCoord.GetX() - lastCoord.GetX(), 2) +
481 pow(currentCoord.GetY() - lastCoord.GetY(), 2));
483 lastCoord=currentCoord;
491 return start!=std::numeric_limits<size_t>::max();
496 CoordBuffer& coordBuffer);
519 TransBuffer& transBuffer,
520 CoordBuffer& coordBuffer,
522 TransPolygon::OptimizeMethod optimize,
523 double optimizeErrorTolerance)
529 optimizeErrorTolerance);
531 assert(!transBuffer.IsEmpty());
558 TransBuffer& transBuffer,
559 CoordBuffer& coordBuffer,
561 TransPolygon::OptimizeMethod optimize,
562 double optimizeErrorTolerance)
568 optimizeErrorTolerance);
570 assert(!transBuffer.IsEmpty());
597 CoordBuffer& coordBuffer,
599 TransPolygon::OptimizeMethod optimize,
600 double optimizeErrorTolerance);
#define OSMSCOUT_API
Definition CoreImportExport.h:45
CoordBufferRange()=default
const GeoCoord coord
Definition RouteStateAgent.h:49
std::vector< Point > nodes
List of nodes.
Definition Way.h:57
CoordBuffer(const CoordBuffer &other)=delete
bool Get(Id id, RouteNodeRef &node) const
static CoordBuffer emptyCoordBuffer
Definition Transformation.h:340
CoordBufferRange(CoordBuffer &coordBuffer, size_t start, size_t end)
Definition Transformation.h:395
OptimizeMethod
Definition Transformation.h:184
@ none
Definition Transformation.h:185
@ quality
Definition Transformation.h:187
@ fast
Definition Transformation.h:186
size_t PushCoord(const Vertex2D &coord)
size_t GetSize() const
Definition Transformation.h:463
size_t GetEnd() const
Definition Transformation.h:107
size_t GetLength() const
Definition Transformation.h:89
bool IsValid() const
Definition Transformation.h:490
Vertex2D Get(size_t index) const
Definition Transformation.h:445
Vertex2D GetLast() const
Definition Transformation.h:426
Vertex2D GetFirst() const
Definition Transformation.h:417
CoordBufferRange GenerateParallelWay(const CoordBufferRange &org, double offset)
void TransformGeoToPixel(const Projection &projection, const C &nodes)
Definition Transformation.h:134
CoordBufferRange(const CoordBufferRange &other)=default
double GetLength() const
Definition Transformation.h:472
uint32_t x
Definition Pixel.h:48
CoordBuffer & operator=(const CoordBuffer &other)=delete
uint32_t y
Definition Pixel.h:49
bool IsEmpty() const
Definition Transformation.h:80
CoordBufferRange & operator=(const CoordBufferRange &other)
Definition Transformation.h:402
Vertex2D * buffer
Definition Transformation.h:343
size_t GetStart() const
Definition Transformation.h:98
bool GetBoundingBox(double &xmin, double &ymin, double &xmax, double &ymax) const
OutputConstraint
Definition Transformation.h:191
@ simple
Definition Transformation.h:193
@ noConstraint
Definition Transformation.h:192
Definition Projection.h:46
friend class BatchTransformer
Definition Projection.h:341
OSMSCOUT_API void TransformBoundingBox(const GeoBox &boundingBox, TransBuffer &buffer, const Projection &projection, TransPolygon::OptimizeMethod optimize, double optimizeErrorTolerance, TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint)
OSMSCOUT_API void OptimizeArea(TransBuffer &buffer, TransPolygon::OptimizeMethod optimize, double optimizeErrorTolerance, TransPolygon::OutputConstraint constraint)
void TransformWay(const C &nodes, TransBuffer &buffer, const Projection &projection, TransPolygon::OptimizeMethod optimize, double optimizeErrorTolerance, TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint)
Definition Transformation.h:267
OSMSCOUT_API void OptimizeWay(TransBuffer &buffer, TransPolygon::OptimizeMethod optimize, double optimizeErrorTolerance, TransPolygon::OutputConstraint constraint)
void TransformArea(const C &nodes, TransBuffer &buffer, const Projection &projection, TransPolygon::OptimizeMethod optimize, double optimizeErrorTolerance, TransPolygon::OutputConstraint constraint=TransPolygon::noConstraint)
Definition Transformation.h:228
OSMSCOUT_API CoordBufferRange CopyPolygonToCoordBuffer(const TransBuffer &transBuffer, CoordBuffer &coordBuffer)
Definition Transformation.h:47
bool draw
Definition Transformation.h:48
double x
Definition Transformation.h:49
double y
Definition Transformation.h:50