Respect dx value.

This commit is contained in:
Hermann Kraus 2012-08-10 02:21:46 +02:00
parent 2252e128bd
commit 2a1925c3ff
2 changed files with 15 additions and 0 deletions

View file

@ -72,6 +72,7 @@ private:
pixel_position alignment_offset() const; pixel_position alignment_offset() const;
bool single_line_placement(vertex_cache &pp, text_upright_e orientation); bool single_line_placement(vertex_cache &pp, text_upright_e orientation);
void path_move_dx(vertex_cache &pp);
static double normalize_angle(double angle); static double normalize_angle(double angle);
Feature const& feature_; Feature const& feature_;
DetectorType &detector_; DetectorType &detector_;

View file

@ -265,8 +265,11 @@ bool placement_finder_ng::find_point_on_line_placements(T & path)
if (num_labels <= 0) if (num_labels <= 0)
num_labels = 1; num_labels = 1;
double spacing = pp.length() / num_labels; double spacing = pp.length() / num_labels;
double dx = info_->properties.displacement.x;
pp.forward(spacing/2.); // first label should be placed at half the spacing pp.forward(spacing/2.); // first label should be placed at half the spacing
path_move_dx(pp);
do do
{ {
@ -300,6 +303,7 @@ bool placement_finder_ng::find_line_placements(T & path)
double spacing = pp.length() / num_labels; double spacing = pp.length() / num_labels;
// first label should be placed at half the spacing // first label should be placed at half the spacing
pp.forward(spacing/2.-layout_.width()/2.); pp.forward(spacing/2.-layout_.width()/2.);
path_move_dx(pp);
do do
{ {
success = single_line_placement(pp, info_->properties.upright) || success; success = single_line_placement(pp, info_->properties.upright) || success;
@ -385,6 +389,16 @@ bool placement_finder_ng::single_line_placement(vertex_cache &pp, text_upright_e
return true; return true;
} }
void placement_finder_ng::path_move_dx(vertex_cache &pp)
{
double dx = info_->properties.displacement.x;
if (dx != 0.0)
{
vertex_cache::state state = pp.save_state();
if (!pp.move(dx)) pp.restore_state(state);
}
}
double placement_finder_ng::normalize_angle(double angle) double placement_finder_ng::normalize_angle(double angle)
{ {
while (angle >= M_PI) while (angle >= M_PI)