Permalink
Browse files

Use middle_point placement for marker POINT placement on lines

REFS #1604, #1350, #1607 and #1625
  • Loading branch information...
Dane Springmeyer Sandro Santilli
Dane Springmeyer authored and Sandro Santilli committed Nov 29, 2012
1 parent 93f58b1 commit 3e938cbfaa7fe0e7551577b446943d7874562b0f
@@ -29,6 +29,7 @@ namespace agg
void rewind(unsigned) {}
unsigned vertex(double*, double*) { return path_cmd_stop; }
+ unsigned type() const { return 0; }
};
@@ -64,6 +65,7 @@ namespace agg
}
unsigned vertex(double* x, double* y);
+ unsigned type() const { return m_source->type(); }
private:
// Prohibit copying
@@ -33,6 +33,7 @@ namespace agg
void rewind(unsigned path_id);
unsigned vertex(double* x, double* y);
+ unsigned type() const { return m_source->type(); }
private:
conv_adaptor_vpgen(const conv_adaptor_vpgen<VertexSource, VPGen>&);
@@ -51,6 +51,7 @@ namespace agg
double y1() const { return base_type::vpgen().y1(); }
double x2() const { return base_type::vpgen().x2(); }
double y2() const { return base_type::vpgen().y2(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_clip_polygon(const conv_clip_polygon<VertexSource>&);
@@ -51,6 +51,7 @@ namespace agg
double y1() const { return base_type::vpgen().y1(); }
double x2() const { return base_type::vpgen().x2(); }
double y2() const { return base_type::vpgen().y2(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_clip_polyline(const conv_clip_polyline<VertexSource>&);
@@ -42,6 +42,7 @@ namespace agg
void smooth_value(double v) { base_type::generator().smooth_value(v); }
double smooth_value() const { return base_type::generator().smooth_value(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_smooth_poly1(const conv_smooth_poly1<VertexSource>&);
@@ -64,6 +65,7 @@ namespace agg
void smooth_value(double v) { m_smooth.generator().smooth_value(v); }
double smooth_value() const { return m_smooth.generator().smooth_value(); }
+ unsigned type() const { return m_smooth.type(); }
private:
conv_smooth_poly1_curve(const conv_smooth_poly1_curve<VertexSource>&);
@@ -81,6 +81,11 @@ struct MAPNIK_DECL coord_transform
geom_.rewind(pos);
}
+ unsigned type() const
+ {
+ return static_cast<unsigned>(geom_.type());
+ }
+
Geometry const& geom() const
{
return geom_;
@@ -91,7 +91,12 @@ struct vector_markers_rasterizer_dispatch
{
double x = 0;
double y = 0;
- if (placement_method == MARKER_INTERIOR_PLACEMENT)
+ if (path.type() == LineString)
+ {
+ if (!label::middle_point(path, x, y))
+ return;
+ }
+ else if (placement_method == MARKER_INTERIOR_PLACEMENT)
{
if (!label::interior_position(path, x, y))
return;
@@ -187,7 +192,12 @@ struct raster_markers_rasterizer_dispatch
{
double x = 0;
double y = 0;
- if (placement_method == MARKER_INTERIOR_PLACEMENT)
+ if (path.type() == LineString)
+ {
+ if (!label::middle_point(path, x, y))
+ return;
+ }
+ else if (placement_method == MARKER_INTERIOR_PLACEMENT)
{
if (!label::interior_position(path, x, y))
return;

0 comments on commit 3e938cb

Please sign in to comment.