fix behavior of marker-ignore-placement on lines - closes #1931
This commit is contained in:
parent
36814bcb2e
commit
3ae432ac96
4 changed files with 13 additions and 9 deletions
|
@ -123,7 +123,7 @@ struct raster_markers_rasterizer_dispatch_grid
|
|||
sym_.get_max_error(),
|
||||
sym_.get_allow_overlap());
|
||||
double x, y, angle;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle, sym_.get_ignore_placement()))
|
||||
{
|
||||
agg::trans_affine matrix = marker_trans_;
|
||||
matrix.rotate(angle);
|
||||
|
@ -260,7 +260,7 @@ struct vector_markers_rasterizer_dispatch_grid
|
|||
sym_.get_max_error(),
|
||||
sym_.get_allow_overlap());
|
||||
double x, y, angle;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle, sym_.get_ignore_placement()))
|
||||
{
|
||||
agg::trans_affine matrix = marker_trans_;
|
||||
matrix.rotate(angle);
|
||||
|
|
|
@ -142,7 +142,7 @@ struct vector_markers_rasterizer_dispatch
|
|||
double x = 0;
|
||||
double y = 0;
|
||||
double angle = 0;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle, sym_.get_ignore_placement()))
|
||||
{
|
||||
agg::trans_affine matrix = marker_trans_;
|
||||
matrix.rotate(angle);
|
||||
|
@ -245,7 +245,7 @@ struct raster_markers_rasterizer_dispatch
|
|||
sym_.get_max_error(),
|
||||
sym_.get_allow_overlap());
|
||||
double x, y, angle;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle,sym_.get_ignore_placement()))
|
||||
{
|
||||
agg::trans_affine matrix = marker_trans_;
|
||||
matrix.rotate(angle);
|
||||
|
|
|
@ -107,10 +107,10 @@ public:
|
|||
* \param x Return value for x position
|
||||
* \param y Return value for x position
|
||||
* \param angle Return value for rotation angle
|
||||
* \param add_to_detector Add selected position to detector
|
||||
* \param ignore_placement Whether to add selected position to detector
|
||||
* \return True if a place is found, false if none is found.
|
||||
*/
|
||||
bool get_point(double & x, double & y, double & angle, bool add_to_detector = true)
|
||||
bool get_point(double & x, double & y, double & angle, bool ignore_placement)
|
||||
{
|
||||
if (done_)
|
||||
{
|
||||
|
@ -219,7 +219,11 @@ public:
|
|||
set_spacing_left(spacing_left_ + spacing_ * max_error_ / 10.0); //Only moves forward
|
||||
continue;
|
||||
}
|
||||
if (add_to_detector) detector_.insert(box);
|
||||
if (!ignore_placement)
|
||||
{
|
||||
std::clog << "Adding\n";
|
||||
detector_.insert(box);
|
||||
}
|
||||
last_x = x;
|
||||
last_y = y;
|
||||
return true;
|
||||
|
|
|
@ -1031,7 +1031,7 @@ struct markers_dispatch
|
|||
sym_.get_max_error(),
|
||||
sym_.get_allow_overlap());
|
||||
double x, y, angle;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle, sym_.get_ignore_placement()))
|
||||
{
|
||||
agg::trans_affine matrix = marker_trans_;
|
||||
matrix.rotate(angle);
|
||||
|
@ -1119,7 +1119,7 @@ struct markers_dispatch_2
|
|||
sym_.get_max_error(),
|
||||
sym_.get_allow_overlap());
|
||||
double x, y, angle;
|
||||
while (placement.get_point(x, y, angle))
|
||||
while (placement.get_point(x, y, angle, sym_.get_ignore_placement()))
|
||||
{
|
||||
coord2d center = bbox_.center();
|
||||
agg::trans_affine matrix = agg::trans_affine_translation(-center.x, -center.y);
|
||||
|
|
Loading…
Reference in a new issue