expose both a clipped and unclipped labeling path type
This commit is contained in:
parent
61c38d0ec7
commit
d23a4b63b9
2 changed files with 20 additions and 11 deletions
|
@ -23,13 +23,20 @@
|
||||||
#ifndef MAPNIK_PLACEMENT_FINDER_HPP
|
#ifndef MAPNIK_PLACEMENT_FINDER_HPP
|
||||||
#define MAPNIK_PLACEMENT_FINDER_HPP
|
#define MAPNIK_PLACEMENT_FINDER_HPP
|
||||||
|
|
||||||
//mapnik
|
// mapnik
|
||||||
#include <mapnik/geometry.hpp>
|
#include <mapnik/geometry.hpp>
|
||||||
#include <mapnik/text_properties.hpp>
|
#include <mapnik/text_properties.hpp>
|
||||||
#include <mapnik/text_placements/base.hpp>
|
#include <mapnik/text_placements/base.hpp>
|
||||||
#include <mapnik/symbolizer_helpers.hpp>
|
#include <mapnik/symbolizer_helpers.hpp>
|
||||||
|
#include <mapnik/label_collision_detector.hpp>
|
||||||
|
#include <mapnik/ctrans.hpp>
|
||||||
|
|
||||||
//stl
|
|
||||||
|
// agg
|
||||||
|
#include "agg_conv_clip_polyline.h"
|
||||||
|
|
||||||
|
|
||||||
|
// stl
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
|
@ -39,6 +46,12 @@ class text_placement_info;
|
||||||
class string_info;
|
class string_info;
|
||||||
class text_path;
|
class text_path;
|
||||||
|
|
||||||
|
typedef agg::conv_clip_polyline<geometry_type> clipped_geometry_type;
|
||||||
|
typedef coord_transform2<CoordTransform,clipped_geometry_type> ClippedPathType;
|
||||||
|
typedef coord_transform2<CoordTransform,geometry_type> PathType;
|
||||||
|
|
||||||
|
typedef label_collision_detector4 DetectorType;
|
||||||
|
|
||||||
|
|
||||||
template <typename DetectorT>
|
template <typename DetectorT>
|
||||||
class placement_finder : boost::noncopyable
|
class placement_finder : boost::noncopyable
|
||||||
|
|
|
@ -26,14 +26,12 @@
|
||||||
#include <mapnik/placement_finder.hpp>
|
#include <mapnik/placement_finder.hpp>
|
||||||
#include <mapnik/geometry.hpp>
|
#include <mapnik/geometry.hpp>
|
||||||
#include <mapnik/text_path.hpp>
|
#include <mapnik/text_path.hpp>
|
||||||
#include <mapnik/label_collision_detector.hpp>
|
|
||||||
#include <mapnik/fastmath.hpp>
|
#include <mapnik/fastmath.hpp>
|
||||||
#include <mapnik/text_placements/base.hpp>
|
#include <mapnik/text_placements/base.hpp>
|
||||||
#include <mapnik/ctrans.hpp>
|
|
||||||
|
|
||||||
// agg
|
// agg
|
||||||
#include "agg_path_length.h"
|
#include "agg_path_length.h"
|
||||||
#include "agg_conv_clip_polyline.h"
|
|
||||||
// boost
|
// boost
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
|
@ -674,9 +672,9 @@ void placement_finder<DetectorT>::find_line_placements(PathT & shape_path)
|
||||||
for (unsigned i = 0; i < current_placement->nodes_.size(); i++)
|
for (unsigned i = 0; i < current_placement->nodes_.size(); i++)
|
||||||
{
|
{
|
||||||
current_placement->nodes_[i].pos.x -=
|
current_placement->nodes_[i].pos.x -=
|
||||||
pi.get_scale_factor() * displacement * sina;
|
pi.get_scale_factor() * displacement * sina;
|
||||||
current_placement->nodes_[i].pos.y +=
|
current_placement->nodes_[i].pos.y +=
|
||||||
pi.get_scale_factor() * displacement * cosa;
|
pi.get_scale_factor() * displacement * cosa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,11 +1056,9 @@ void placement_finder<DetectorT>::clear_placements()
|
||||||
while (!envelopes_.empty()) envelopes_.pop();
|
while (!envelopes_.empty()) envelopes_.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef agg::conv_clip_polyline<geometry_type> clipped_geometry_type;
|
|
||||||
typedef coord_transform2<CoordTransform,clipped_geometry_type> PathType;
|
|
||||||
typedef label_collision_detector4 DetectorType;
|
|
||||||
|
|
||||||
template class placement_finder<DetectorType>;
|
template class placement_finder<DetectorType>;
|
||||||
|
template void placement_finder<DetectorType>::find_point_placements<ClippedPathType>(ClippedPathType &);
|
||||||
|
template void placement_finder<DetectorType>::find_line_placements<ClippedPathType>(ClippedPathType &);
|
||||||
template void placement_finder<DetectorType>::find_point_placements<PathType>(PathType &);
|
template void placement_finder<DetectorType>::find_point_placements<PathType>(PathType &);
|
||||||
template void placement_finder<DetectorType>::find_line_placements<PathType>(PathType &);
|
template void placement_finder<DetectorType>::find_line_placements<PathType>(PathType &);
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
Loading…
Reference in a new issue