Clean up directory structure.

This commit is contained in:
Hermann Kraus 2012-09-16 01:22:34 +02:00
parent fa62234179
commit bbedec3437
49 changed files with 90 additions and 1320 deletions

View file

@ -22,13 +22,13 @@
#include <boost/python.hpp>
#include <boost/python/stl_iterator.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text_placements/simple.hpp>
#include <mapnik/text_placements/list.hpp>
#include <mapnik/formatting/text.hpp>
#include <mapnik/formatting/list.hpp>
#include <mapnik/formatting/format.hpp>
#include <mapnik/formatting/expression_format.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/text/placements/simple.hpp>
#include <mapnik/text/placements/list.hpp>
#include <mapnik/text/formatting/text.hpp>
#include <mapnik/text/formatting/list.hpp>
#include <mapnik/text/formatting/format.hpp>
#include <mapnik/text/formatting/expression_format.hpp>
#include <mapnik/text/layout.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/text_symbolizer.hpp>

View file

@ -4,7 +4,7 @@ from glob import glob
Import('env')
base = './mapnik/'
subdirs = ['','svg','wkt','grid','json','util','text_placements','formatting']
subdirs = ['','svg','wkt','grid','json','util','text','text/placements','text/formatting']
#if env['SVG_RENDERER']:
# subdirs.append('svg/output')

View file

@ -37,9 +37,10 @@ extern "C"
#include FT_STROKER_H
}
//// boost
// boost
#include <boost/shared_ptr.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/optional.hpp>
#ifdef MAPNIK_THREADSAFE
#include <boost/thread/mutex.hpp>
#endif
@ -111,7 +112,7 @@ public:
face_ptr get_face(std::string const& name);
face_set_ptr get_face_set(std::string const& name);
face_set_ptr get_face_set(font_set const& fset);
face_set_ptr get_face_set(std::string const& name, font_set const& fset);
face_set_ptr get_face_set(std::string const& name, boost::optional<font_set> fset);
stroker_ptr get_stroker() { return stroker_; }

View file

@ -1,170 +0,0 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2011 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#ifndef MAPNIK_PLACEMENT_FINDER_HPP
#define MAPNIK_PLACEMENT_FINDER_HPP
// mapnik
#include <mapnik/geometry.hpp>
#include <mapnik/text_properties.hpp>
//#include <mapnik/text_placements/base.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/label_collision_detector.hpp>
#include <mapnik/ctrans.hpp>
// agg
#include "agg_conv_clip_polyline.h"
// stl
#include <queue>
namespace mapnik
{
class text_placement_info;
class string_info;
class text_path;
typedef agg::conv_clip_polyline<geometry_type> clipped_geometry_type;
typedef coord_transform<CoordTransform,clipped_geometry_type> ClippedPathType;
typedef coord_transform<CoordTransform,geometry_type> PathType;
typedef label_collision_detector4 DetectorType;
template <typename DetectorT>
class placement_finder : boost::noncopyable
{
public:
placement_finder(Feature const& feature,
text_placement_info const& placement_info,
string_info const& info,
DetectorT & detector,
box2d<double> const& extent);
/** Try place a single label at the given point. */
void find_point_placement(double pos_x, double pos_y, double angle=0.0);
/** Iterate over the given path, placing point labels with respect to label_spacing. */
template <typename T>
void find_point_placements(T & path);
/** Iterate over the given path, placing line-following labels with respect to label_spacing. */
template <typename T>
void find_line_placements(T & path);
/** Add placements to detector. */
void update_detector();
/** Remove old placements. */
void clear_placements();
inline placements_type const& get_results() { return placements_; }
std::vector<box2d<double> > & additional_boxes() { return additional_boxes_;}
std::vector<box2d<double> > const& additional_boxes() const { return additional_boxes_;}
void set_collect_extents(bool collect) { collect_extents_ = collect; }
bool get_collect_extents() const { return collect_extents_; }
box2d<double> const& get_extents() const { return extents_; }
private:
///Helpers for find_line_placement
///Returns a possible placement on the given line, does not test for collisions
//index: index of the node the current line ends on
//distance: distance along the given index that the placement should start at, this includes the offset,
// as such it may be > or < the length of the current line, so this must be checked for
//orientation: if set to != 0 the placement will be attempted with the given orientation
// otherwise it will autodetect the orientation.
// If >= 50% of the characters end up upside down, it will be retried the other way.
// RETURN: 1/-1 depending which way up the string ends up being.
std::auto_ptr<text_path> get_placement_offset(std::vector<vertex2d> const& path_positions,
std::vector<double> const& path_distances,
int & orientation, unsigned index, double distance);
///Tests whether the given text_path be placed without a collision
// Returns true if it can
// NOTE: This edits p.envelopes so it can be used afterwards (you must clear it otherwise)
bool test_placement(std::auto_ptr<text_path> const& current_placement, int orientation);
///Does a line-circle intersect calculation
// NOTE: Follow the strict pre conditions
// Pre Conditions: x1,y1 is within radius distance of cx,cy. x2,y2 is outside radius distance of cx,cy
// This means there is exactly one intersect point
// Result is returned in ix, iy
void find_line_circle_intersection(
double cx, double cy, double radius,
double x1, double y1, double x2, double y2,
double & ix, double & iy);
void find_line_breaks();
void init_string_size();
void init_alignment();
void adjust_position(text_path *current_placement);
void add_line(double width, double height, bool first_line);
///General Internals
DetectorT & detector_;
box2d<double> const& dimensions_;
string_info const& info_;
text_symbolizer_properties const& p;
text_placement_info const& pi;
/** Length of the longest line after linebreaks.
* Before find_line_breaks() this is the total length of the string.
*/
double string_width_;
/** Height of the string after linebreaks.
* Before find_line_breaks() this is the total length of the string.
*/
double string_height_;
/** Height of the tallest font in the first line not including line spacing.
* Used to determine the correct offset for the first line.
*/
double first_line_space_;
vertical_alignment_e valign_;
horizontal_alignment_e halign_;
justify_alignment_e jalign_;
std::vector<unsigned> line_breaks_;
std::vector<std::pair<double, double> > line_sizes_;
std::queue< box2d<double> > envelopes_;
/** Used to return all placements found. */
placements_type placements_;
/** Bounding box of all texts placed. */
box2d<double> extents_;
/** Collect a bounding box of all texts placed. */
bool collect_extents_;
/** Additional boxes to take into account when finding placement.
* Used for finding line placements where multiple placements are returned.
* Boxes are relative to starting point of current placement.
* Only used for point placements!
*/
std::vector<box2d<double> > additional_boxes_;
};
}
#endif // MAPNIK_PLACEMENT_FINDER_HPP

View file

@ -23,7 +23,7 @@
#ifndef FORMATTING_EXPRESSION_HPP
#define FORMATTING_EXPRESSION_HPP
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/formatting/base.hpp>
#include <mapnik/expression.hpp>
namespace mapnik {

View file

@ -23,8 +23,8 @@
#ifndef FORMATTING_FORMAT_HPP
#define FORMATTING_FORMAT_HPP
#include <mapnik/formatting/base.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/formatting/base.hpp>
#include <mapnik/text/text_properties.hpp>
namespace mapnik {
namespace formatting {

View file

@ -22,7 +22,7 @@
#ifndef FORMATTING_LIST_HPP
#define FORMATTING_LIST_HPP
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/formatting/base.hpp>
namespace mapnik {
namespace formatting {

View file

@ -24,7 +24,7 @@
// mapnik
#include <mapnik/utils.hpp>
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/formatting/base.hpp>
// boost
#include <boost/utility.hpp>

View file

@ -22,7 +22,7 @@
#ifndef FORMATTING_TEXT_HPP
#define FORMATTING_TEXT_HPP
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/formatting/base.hpp>
namespace mapnik {
namespace formatting {

View file

@ -26,7 +26,7 @@
#include <mapnik/box2d.hpp>
#include <mapnik/pixel_position.hpp>
#include <mapnik/text/layout.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
#include <mapnik/text/placements_list.hpp>
#include <mapnik/text/rotation.hpp>

View file

@ -25,8 +25,8 @@
// mapnik
#include <mapnik/config.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/text/formatting/base.hpp>
namespace mapnik
{

View file

@ -24,7 +24,7 @@
// mapnik
#include <mapnik/config.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
// boost
#include <boost/concept_check.hpp>

View file

@ -21,7 +21,7 @@
*****************************************************************************/
#ifndef TEXT_PLACEMENTS_LIST_HPP
#define TEXT_PLACEMENTS_LIST_HPP
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
namespace mapnik {

View file

@ -24,7 +24,7 @@
// mapnik
#include <mapnik/utils.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
// boost
#include <boost/utility.hpp>

View file

@ -24,7 +24,7 @@
#define MAPNIK_TEXT_PLACEMENTS_SIMPLE_HPP
// mapnik
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
namespace mapnik {

View file

@ -28,7 +28,7 @@
#include <mapnik/font_set.hpp>
#include <mapnik/enumeration.hpp>
#include <mapnik/expression.hpp>
#include <mapnik/formatting/base.hpp>
#include <mapnik/text/formatting/base.hpp>
#include <mapnik/pixel_position.hpp>
// stl

View file

@ -27,8 +27,8 @@
#include <mapnik/color.hpp>
#include <mapnik/font_set.hpp>
#include <mapnik/symbolizer.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text_placements/dummy.hpp>
#include <mapnik/text/placements/base.hpp>
#include <mapnik/text/placements/dummy.hpp>
// boost
#include <boost/shared_ptr.hpp>

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/agg_renderer.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/text/renderer.hpp>
namespace mapnik {

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/agg_renderer.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/text/renderer.hpp>
#include <boost/foreach.hpp>

View file

@ -153,7 +153,6 @@ source = Split(
memory_datasource.cpp
stroke.cpp
symbolizer.cpp
symbolizer_helpers.cpp
unicode.cpp
markers_symbolizer.cpp
raster_colorizer.cpp
@ -161,30 +160,24 @@ source = Split(
wkt/wkt_generator.cpp
mapped_memory_cache.cpp
marker_cache.cpp
xml_tree.cpp
config_error.cpp
color_factory.cpp
warp.cpp
svg/svg_parser.cpp
svg/svg_path_parser.cpp
svg/svg_points_parser.cpp
svg/svg_transform_parser.cpp
warp.cpp
json/geometry_grammar.cpp
json/geometry_parser.cpp
json/feature_grammar.cpp
json/feature_collection_parser.cpp
json/geojson_generator.cpp
formatting/base.cpp
formatting/expression.cpp
formatting/list.cpp
formatting/text.cpp
formatting/format.cpp
formatting/registry.cpp
text_placements/registry.cpp
text_placements/base.cpp
text_placements/dummy.cpp
text_placements/list.cpp
text_placements/simple.cpp
text_properties.cpp
xml_tree.cpp
config_error.cpp
text/placements/registry.cpp
text/placements/base.cpp
text/placements/dummy.cpp
text/placements/list.cpp
text/placements/simple.cpp
text/shaping.cpp
text/layout.cpp
text/itemizer.cpp
@ -192,7 +185,14 @@ source = Split(
text/face.cpp
text/placement_finder.cpp
text/renderer.cpp
color_factory.cpp
text/symbolizer_helpers.cpp
text/text_properties.cpp
text/formatting/base.cpp
text/formatting/expression.cpp
text/formatting/list.cpp
text/formatting/text.cpp
text/formatting/format.cpp
text/formatting/registry.cpp
"""
)

View file

@ -36,7 +36,7 @@
#include <mapnik/svg/svg_path_adapter.hpp>
#include <mapnik/svg/svg_path_attributes.hpp>
#include <mapnik/segment.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/expression_evaluator.hpp>
#include <mapnik/warp.hpp>
#include <mapnik/config.hpp>

View file

@ -272,7 +272,7 @@ face_set_ptr face_manager<T>::get_face_set(const font_set &fset)
}
template <typename T>
face_set_ptr face_manager<T>::get_face_set(const std::string &name, const boost::optional<font_set> &fset)
face_set_ptr face_manager<T>::get_face_set(const std::string &name, boost::optional<font_set> fset)
{
if (fset && fset->size() > 0)
{

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/grid/grid_renderer.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/text/renderer.hpp>
// agg

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/grid/grid_renderer.hpp>
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/text/renderer.hpp>
#include <boost/foreach.hpp>

View file

@ -41,8 +41,8 @@
#include <mapnik/parse_transform.hpp>
#include <mapnik/raster_colorizer.hpp>
#include <mapnik/svg/svg_path_parser.hpp>
#include <mapnik/text_placements/registry.hpp>
#include <mapnik/text_placements/dummy.hpp>
#include <mapnik/text/placements/registry.hpp>
#include <mapnik/text/placements/dummy.hpp>
#include <mapnik/symbolizer.hpp>
#include <mapnik/rule.hpp>
#include <mapnik/config_error.hpp>
@ -1134,8 +1134,8 @@ void map_parser::parse_text_symbolizer(rule & rule, xml_node const& sym)
placement_finder = boost::make_shared<text_placements_dummy>();
placement_finder->defaults.from_xml(sym, fontsets_);
}
if (strict_ &&
!placement_finder->defaults.format->fontset.size())
if (strict_ && (!placement_finder->defaults.format->fontset ||
!placement_finder->defaults.format->fontset->size()))
{
ensure_font_face(placement_finder->defaults.format->face_name);
}
@ -1164,7 +1164,8 @@ void map_parser::parse_shield_symbolizer(rule & rule, xml_node const& sym)
}
placement_finder->defaults.from_xml(sym, fontsets_);
if (strict_ &&
!placement_finder->defaults.format->fontset.size())
(!placement_finder->defaults.format->fontset ||
!placement_finder->defaults.format->fontset->size()))
{
ensure_font_face(placement_finder->defaults.format->face_name);
}

View file

@ -24,7 +24,7 @@
#include <mapnik/debug.hpp>
#include <mapnik/metawriter.hpp>
#include <mapnik/metawriter_json.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
// Boost
#include <boost/foreach.hpp>

View file

@ -23,7 +23,7 @@
// Mapnik
#include <mapnik/metawriter.hpp>
#include <mapnik/metawriter_inmem.hpp>
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
// Boost
#include <boost/foreach.hpp>

File diff suppressed because it is too large Load diff

View file

@ -29,9 +29,9 @@
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/raster_colorizer.hpp>
#include <mapnik/text_placements/simple.hpp>
#include <mapnik/text_placements/list.hpp>
#include <mapnik/text_placements/dummy.hpp>
#include <mapnik/text/placements/simple.hpp>
#include <mapnik/text/placements/list.hpp>
#include <mapnik/text/placements/dummy.hpp>
#include <mapnik/image_compositing.hpp>
#include <mapnik/image_scaling.hpp>
#include <mapnik/image_filter_types.hpp>

View file

@ -22,9 +22,9 @@
// mapnik
#include <mapnik/debug.hpp>
#include <mapnik/formatting/base.hpp>
#include <mapnik/formatting/list.hpp>
#include <mapnik/formatting/registry.hpp>
#include <mapnik/text/formatting/base.hpp>
#include <mapnik/text/formatting/list.hpp>
#include <mapnik/text/formatting/registry.hpp>
#include <mapnik/xml_node.hpp>
// boost

View file

@ -22,11 +22,11 @@
// mapnik
#include <mapnik/debug.hpp>
#include <mapnik/formatting/expression_format.hpp>
#include <mapnik/text/formatting/expression_format.hpp>
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/expression_evaluator.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/feature.hpp>
#include <mapnik/xml_node.hpp>

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/debug.hpp>
#include <mapnik/formatting/format.hpp>
#include <mapnik/text/formatting/format.hpp>
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/xml_node.hpp>

View file

@ -21,7 +21,7 @@
*****************************************************************************/
// mapnik
#include <mapnik/formatting/list.hpp>
#include <mapnik/text/formatting/list.hpp>
// boost
#include <boost/foreach.hpp>

View file

@ -20,10 +20,10 @@
*
*****************************************************************************/
// mapnik
#include <mapnik/formatting/registry.hpp>
#include <mapnik/formatting/text.hpp>
#include <mapnik/formatting/format.hpp>
#include <mapnik/formatting/expression_format.hpp>
#include <mapnik/text/formatting/registry.hpp>
#include <mapnik/text/formatting/text.hpp>
#include <mapnik/text/formatting/format.hpp>
#include <mapnik/text/formatting/expression_format.hpp>
#include <mapnik/xml_node.hpp>
#include <mapnik/config_error.hpp>

View file

@ -20,11 +20,11 @@
*
*****************************************************************************/
// mapnik
#include <mapnik/formatting/text.hpp>
#include <mapnik/text/formatting/text.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/expression_evaluator.hpp>
#include <mapnik/feature.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/xml_node.hpp>
#include <mapnik/text/layout.hpp>

View file

@ -21,7 +21,7 @@
*****************************************************************************/
#include <mapnik/text/layout.hpp>
#include <mapnik/text/shaping.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
//stl
#include <iostream>

View file

@ -22,7 +22,7 @@
//mapnik
#include <mapnik/text/placement_finder.hpp>
#include <mapnik/text/layout.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/text/placements_list.hpp>
#include <mapnik/debug.hpp>
#include <mapnik/label_collision_detector.hpp>

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/text_placements/base.hpp>
#include <mapnik/text/placements/base.hpp>
namespace mapnik {
text_placements::text_placements() : defaults()

View file

@ -20,7 +20,7 @@
*
*****************************************************************************/
#include <mapnik/text_placements/dummy.hpp>
#include <mapnik/text/placements/dummy.hpp>
#include <boost/make_shared.hpp>
namespace mapnik

View file

@ -21,7 +21,7 @@
*****************************************************************************/
//mapnik
#include <mapnik/text_placements/list.hpp>
#include <mapnik/text/placements/list.hpp>
#include <mapnik/xml_node.hpp>
//boost

View file

@ -20,10 +20,10 @@
*
*****************************************************************************/
// mapnik
#include <mapnik/text_placements/registry.hpp>
#include <mapnik/text_placements/simple.hpp>
#include <mapnik/text_placements/list.hpp>
#include <mapnik/text_placements/dummy.hpp>
#include <mapnik/text/placements/registry.hpp>
#include <mapnik/text/placements/simple.hpp>
#include <mapnik/text/placements/list.hpp>
#include <mapnik/text/placements/dummy.hpp>
#include <mapnik/config_error.hpp>
namespace mapnik

View file

@ -22,7 +22,7 @@
// mapnik
#include <mapnik/debug.hpp>
#include <mapnik/text_placements/simple.hpp>
#include <mapnik/text/placements/simple.hpp>
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/xml_node.hpp>

View file

@ -1,7 +1,7 @@
#include <mapnik/text/renderer.hpp>
#include <mapnik/graphics.hpp>
#include <mapnik/grid/grid.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/font_engine_freetype.hpp>
namespace mapnik

View file

@ -21,7 +21,7 @@
*****************************************************************************/
// mapnik
#include <mapnik/symbolizer_helpers.hpp>
#include <mapnik/text/symbolizer_helpers.hpp>
#include <mapnik/label_collision_detector.hpp>
#include <mapnik/font_engine_freetype.hpp>
#include <mapnik/text/layout.hpp>

View file

@ -20,11 +20,11 @@
*
*****************************************************************************/
// mapnik
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/text/layout.hpp>
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/formatting/text.hpp>
#include <mapnik/text/formatting/text.hpp>
#include <mapnik/xml_node.hpp>
#include <mapnik/config_error.hpp>

View file

@ -24,7 +24,7 @@
#include <mapnik/debug.hpp>
#include <mapnik/text_symbolizer.hpp>
#include <mapnik/enumeration.hpp>
#include <mapnik/formatting/text.hpp>
#include <mapnik/text/formatting/text.hpp>
// boost

View file

@ -28,7 +28,7 @@
#include <mapnik/gamma_method.hpp>
#include <mapnik/line_symbolizer.hpp>
#include <mapnik/feature_type_style.hpp>
#include <mapnik/text_properties.hpp>
#include <mapnik/text/text_properties.hpp>
#include <mapnik/config_error.hpp>
//boost