Merge remote-tracking branch 'origin/master'
Conflicts: include/mapnik/geom_util.hpp
This commit is contained in:
commit
9fe15c9d3e
59 changed files with 798 additions and 541 deletions
|
@ -30,6 +30,8 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/datasource_cache.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
|
|
@ -72,6 +72,7 @@ void export_logger();
|
|||
|
||||
#include <mapnik/version.hpp>
|
||||
#include <mapnik/value_error.hpp>
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/agg_renderer.hpp>
|
||||
#ifdef HAVE_CAIRO
|
||||
|
|
|
@ -21,6 +21,13 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/* The functions in this file produce deprecation warnings.
|
||||
* But as shield symbolizer doesn't fully support more than one
|
||||
* placement from python yet these functions are actually the
|
||||
* correct ones.
|
||||
*/
|
||||
#define NO_DEPRECATION_WARNINGS
|
||||
|
||||
// boost
|
||||
#include <boost/python.hpp>
|
||||
|
||||
|
@ -53,12 +60,13 @@ tuple get_shield_displacement(const shield_symbolizer& s)
|
|||
|
||||
void set_shield_displacement(shield_symbolizer & s, boost::python::tuple arg)
|
||||
{
|
||||
s.set_shield_displacement(extract<double>(arg[0]),extract<double>(arg[1]));
|
||||
s.get_placement_options()->defaults.displacement.first = extract<double>(arg[0]);
|
||||
s.get_placement_options()->defaults.displacement.second = extract<double>(arg[1]);
|
||||
}
|
||||
|
||||
tuple get_text_displacement(const shield_symbolizer& t)
|
||||
{
|
||||
position const& pos = t.get_displacement();
|
||||
position const& pos = t.get_placement_options()->defaults.displacement;
|
||||
return boost::python::make_tuple(pos.first, pos.second);
|
||||
}
|
||||
|
||||
|
@ -79,46 +87,6 @@ void set_filename(shield_symbolizer & t, std::string const& file_expr)
|
|||
|
||||
}
|
||||
|
||||
struct shield_symbolizer_pickle_suite : boost::python::pickle_suite
|
||||
{
|
||||
static boost::python::tuple
|
||||
getinitargs(const shield_symbolizer& s)
|
||||
{
|
||||
std::string filename = path_processor_type::to_string(*s.get_filename());
|
||||
//(name, font name, font size, font color, image file, image type, width, height)
|
||||
return boost::python::make_tuple( "TODO",//s.get_name(),
|
||||
s.get_face_name(),s.get_text_size(),s.get_fill(),filename,guess_type(filename));
|
||||
|
||||
}
|
||||
|
||||
static boost::python::tuple
|
||||
getstate(const shield_symbolizer& s)
|
||||
{
|
||||
return boost::python::make_tuple(s.get_halo_fill(),s.get_halo_radius());
|
||||
}
|
||||
|
||||
// TODO add lots more...
|
||||
static void
|
||||
setstate (shield_symbolizer& s, boost::python::tuple state)
|
||||
{
|
||||
using namespace boost::python;
|
||||
/*if (len(state) != 1)
|
||||
{
|
||||
PyErr_SetObject(PyExc_ValueError,
|
||||
("expected 1-item tuple in call to __setstate__; got %s"
|
||||
% state).ptr()
|
||||
);
|
||||
throw_error_already_set();
|
||||
}*/
|
||||
|
||||
s.set_halo_fill(extract<color>(state[0]));
|
||||
s.set_halo_radius(extract<float>(state[1]));
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
void export_shield_symbolizer()
|
||||
{
|
||||
using namespace boost::python;
|
||||
|
@ -126,7 +94,7 @@ void export_shield_symbolizer()
|
|||
init<expression_ptr,
|
||||
std::string const&,
|
||||
unsigned, mapnik::color const&,
|
||||
path_expression_ptr>("TODO")
|
||||
path_expression_ptr>()
|
||||
)
|
||||
//.def_pickle(shield_symbolizer_pickle_suite())
|
||||
.add_property("allow_overlap",
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
#include <boost/foreach.hpp>
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/grid/grid_renderer.hpp>
|
||||
#include <mapnik/grid/grid.hpp>
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/rule.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/graphics.hpp>
|
||||
#include <mapnik/datasource_cache.hpp>
|
||||
#include <mapnik/font_engine_freetype.hpp>
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <mapnik/label_collision_detector.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/rule.hpp> // for all symbolizers
|
||||
|
||||
// boost
|
||||
#include <boost/utility.hpp>
|
||||
|
@ -47,6 +48,7 @@ struct trans_affine;
|
|||
namespace mapnik {
|
||||
|
||||
class marker;
|
||||
|
||||
struct rasterizer;
|
||||
|
||||
template <typename T>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <mapnik/label_collision_detector.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
//#include <mapnik/marker.hpp>
|
||||
#include <mapnik/rule.hpp> // for all symbolizers
|
||||
|
||||
// cairo
|
||||
#include <cairomm/context.h>
|
||||
|
|
|
@ -63,162 +63,10 @@ typedef boost::spirit::ascii::space_type ascii_space_type;
|
|||
|
||||
struct named_colors_ : qi::symbols<char,color>
|
||||
{
|
||||
named_colors_()
|
||||
{
|
||||
add
|
||||
("aliceblue", color(240, 248, 255))
|
||||
("antiquewhite", color(250, 235, 215))
|
||||
("aqua", color(0, 255, 255))
|
||||
("aquamarine", color(127, 255, 212))
|
||||
("azure", color(240, 255, 255))
|
||||
("beige", color(245, 245, 220))
|
||||
("bisque", color(255, 228, 196))
|
||||
("black", color(0, 0, 0))
|
||||
("blanchedalmond", color(255,235,205))
|
||||
("blue", color(0, 0, 255))
|
||||
("blueviolet", color(138, 43, 226))
|
||||
("brown", color(165, 42, 42))
|
||||
("burlywood", color(222, 184, 135))
|
||||
("cadetblue", color(95, 158, 160))
|
||||
("chartreuse", color(127, 255, 0))
|
||||
("chocolate", color(210, 105, 30))
|
||||
("coral", color(255, 127, 80))
|
||||
("cornflowerblue", color(100, 149, 237))
|
||||
("cornsilk", color(255, 248, 220))
|
||||
("crimson", color(220, 20, 60))
|
||||
("cyan", color(0, 255, 255))
|
||||
("darkblue", color(0, 0, 139))
|
||||
("darkcyan", color(0, 139, 139))
|
||||
("darkgoldenrod", color(184, 134, 11))
|
||||
("darkgray", color(169, 169, 169))
|
||||
("darkgreen", color(0, 100, 0))
|
||||
("darkgrey", color(169, 169, 169))
|
||||
("darkkhaki", color(189, 183, 107))
|
||||
("darkmagenta", color(139, 0, 139))
|
||||
("darkolivegreen", color(85, 107, 47))
|
||||
("darkorange", color(255, 140, 0))
|
||||
("darkorchid", color(153, 50, 204))
|
||||
("darkred", color(139, 0, 0))
|
||||
("darksalmon", color(233, 150, 122))
|
||||
("darkseagreen", color(143, 188, 143))
|
||||
("darkslateblue", color(72, 61, 139))
|
||||
("darkslategrey", color(47, 79, 79))
|
||||
("darkturquoise", color(0, 206, 209))
|
||||
("darkviolet", color(148, 0, 211))
|
||||
("deeppink", color(255, 20, 147))
|
||||
("deepskyblue", color(0, 191, 255))
|
||||
("dimgray", color(105, 105, 105))
|
||||
("dimgrey", color(105, 105, 105))
|
||||
("dodgerblue", color(30, 144, 255))
|
||||
("firebrick", color(178, 34, 34))
|
||||
("floralwhite", color(255, 250, 240))
|
||||
("forestgreen", color(34, 139, 34))
|
||||
("fuchsia", color(255, 0, 255))
|
||||
("gainsboro", color(220, 220, 220))
|
||||
("ghostwhite", color(248, 248, 255))
|
||||
("gold", color(255, 215, 0))
|
||||
("goldenrod", color(218, 165, 32))
|
||||
("gray", color(128, 128, 128))
|
||||
("grey", color(128, 128, 128))
|
||||
("green", color(0, 128, 0))
|
||||
("greenyellow", color(173, 255, 47))
|
||||
("honeydew", color(240, 255, 240))
|
||||
("hotpink", color(255, 105, 180))
|
||||
("indianred", color(205, 92, 92))
|
||||
("indigo", color(75, 0, 130))
|
||||
("ivory", color(255, 255, 240))
|
||||
("khaki", color(240, 230, 140))
|
||||
("lavender", color(230, 230, 250))
|
||||
("lavenderblush", color(255, 240, 245))
|
||||
("lawngreen", color(124, 252, 0))
|
||||
("lemonchiffon", color(255, 250, 205))
|
||||
("lightblue", color(173, 216, 230))
|
||||
("lightcoral", color(240, 128, 128))
|
||||
("lightcyan", color(224, 255, 255))
|
||||
("lightgoldenrodyellow", color(250, 250, 210))
|
||||
("lightgray", color(211, 211, 211))
|
||||
("lightgreen", color(144, 238, 144))
|
||||
("lightgrey", color(211, 211, 211))
|
||||
("lightpink", color(255, 182, 193))
|
||||
("lightsalmon", color(255, 160, 122))
|
||||
("lightseagreen", color(32, 178, 170))
|
||||
("lightskyblue", color(135, 206, 250))
|
||||
("lightslategray", color(119, 136, 153))
|
||||
("lightslategrey", color(119, 136, 153))
|
||||
("lightsteelblue", color(176, 196, 222))
|
||||
("lightyellow", color(255, 255, 224))
|
||||
("lime", color(0, 255, 0))
|
||||
("limegreen", color(50, 205, 50))
|
||||
("linen", color(250, 240, 230))
|
||||
("magenta", color(255, 0, 255))
|
||||
("maroon", color(128, 0, 0))
|
||||
("mediumaquamarine", color(102, 205, 170))
|
||||
("mediumblue", color(0, 0, 205))
|
||||
("mediumorchid", color(186, 85, 211))
|
||||
("mediumpurple", color(147, 112, 219))
|
||||
("mediumseagreen", color(60, 179, 113))
|
||||
("mediumslateblue", color(123, 104, 238))
|
||||
("mediumspringgreen", color(0, 250, 154))
|
||||
("mediumturquoise", color(72, 209, 204))
|
||||
("mediumvioletred", color(199, 21, 133))
|
||||
("midnightblue", color(25, 25, 112))
|
||||
("mintcream", color(245, 255, 250))
|
||||
("mistyrose", color(255, 228, 225))
|
||||
("moccasin", color(255, 228, 181))
|
||||
("navajowhite", color(255, 222, 173))
|
||||
("navy", color(0, 0, 128))
|
||||
("oldlace", color(253, 245, 230))
|
||||
("olive", color(128, 128, 0))
|
||||
("olivedrab", color(107, 142, 35))
|
||||
("orange", color(255, 165, 0))
|
||||
("orangered", color(255, 69, 0))
|
||||
("orchid", color(218, 112, 214))
|
||||
("palegoldenrod", color(238, 232, 170))
|
||||
("palegreen", color(152, 251, 152))
|
||||
("paleturquoise", color(175, 238, 238))
|
||||
("palevioletred", color(219, 112, 147))
|
||||
("papayawhip", color(255, 239, 213))
|
||||
("peachpuff", color(255, 218, 185))
|
||||
("peru", color(205, 133, 63))
|
||||
("pink", color(255, 192, 203))
|
||||
("plum", color(221, 160, 221))
|
||||
("powderblue", color(176, 224, 230))
|
||||
("purple", color(128, 0, 128))
|
||||
("red", color(255, 0, 0))
|
||||
("rosybrown", color(188, 143, 143))
|
||||
("royalblue", color(65, 105, 225))
|
||||
("saddlebrown", color(139, 69, 19))
|
||||
("salmon", color(250, 128, 114))
|
||||
("sandybrown", color(244, 164, 96))
|
||||
("seagreen", color(46, 139, 87))
|
||||
("seashell", color(255, 245, 238))
|
||||
("sienna", color(160, 82, 45))
|
||||
("silver", color(192, 192, 192))
|
||||
("skyblue", color(135, 206, 235))
|
||||
("slateblue", color(106, 90, 205))
|
||||
("slategray", color(112, 128, 144))
|
||||
("slategrey", color(112, 128, 144))
|
||||
("snow", color(255, 250, 250))
|
||||
("springgreen", color(0, 255, 127))
|
||||
("steelblue", color(70, 130, 180))
|
||||
("tan", color(210, 180, 140))
|
||||
("teal", color(0, 128, 128))
|
||||
("thistle", color(216, 191, 216))
|
||||
("tomato", color(255, 99, 71))
|
||||
("turquoise", color(64, 224, 208))
|
||||
("violet", color(238, 130, 238))
|
||||
("wheat", color(245, 222, 179))
|
||||
("white", color(255, 255, 255))
|
||||
("whitesmoke", color(245, 245, 245))
|
||||
("yellow", color(255, 255, 0))
|
||||
("yellowgreen", color(154, 205, 50))
|
||||
("transparent", color(0, 0, 0, 0))
|
||||
;
|
||||
}
|
||||
named_colors_();
|
||||
} ;
|
||||
|
||||
// clipper helper
|
||||
|
||||
template <int MIN,int MAX>
|
||||
inline int clip_int(int val)
|
||||
{
|
||||
|
@ -256,19 +104,7 @@ struct alpha_conv_impl
|
|||
};
|
||||
|
||||
// http://www.w3.org/TR/css3-color/#hsl-color
|
||||
inline double hue_to_rgb( double m1, double m2, double h)
|
||||
{
|
||||
if (h < 0.0) h = h + 1.0;
|
||||
else if (h > 1) h = h - 1.0;
|
||||
|
||||
if (h * 6 < 1.0)
|
||||
return m1 + (m2 - m1) * h * 6.0;
|
||||
if (h * 2 < 1.0)
|
||||
return m2;
|
||||
if (h * 3 < 2.0)
|
||||
return m1 + (m2 - m1)* (2.0/3.0 - h) * 6.0;
|
||||
return m1;
|
||||
}
|
||||
inline double hue_to_rgb( double m1, double m2, double h);
|
||||
|
||||
struct hsl_conv_impl
|
||||
{
|
||||
|
@ -307,70 +143,7 @@ struct hsl_conv_impl
|
|||
template <typename Iterator>
|
||||
struct css_color_grammar : qi::grammar<Iterator, color(), ascii_space_type>
|
||||
{
|
||||
|
||||
css_color_grammar()
|
||||
: css_color_grammar::base_type(css_color)
|
||||
|
||||
{
|
||||
using qi::lit;
|
||||
using qi::_val;
|
||||
using qi::double_;
|
||||
using qi::_1;
|
||||
using qi::_a;
|
||||
using qi::_b;
|
||||
using qi::_c;
|
||||
using ascii::no_case;
|
||||
using phoenix::at_c;
|
||||
|
||||
css_color %= rgba_color
|
||||
| rgba_percent_color
|
||||
| hsl_percent_color
|
||||
| hex_color
|
||||
| hex_color_small
|
||||
| no_case[named];
|
||||
|
||||
hex_color = lit('#')
|
||||
>> hex2 [ at_c<0>(_val) = _1 ]
|
||||
>> hex2 [ at_c<1>(_val) = _1 ]
|
||||
>> hex2 [ at_c<2>(_val) = _1 ]
|
||||
>>-hex2 [ at_c<3>(_val) = _1 ]
|
||||
;
|
||||
|
||||
hex_color_small = lit('#')
|
||||
>> hex1 [ at_c<0>(_val) = _1 | _1 << 4 ]
|
||||
>> hex1 [ at_c<1>(_val) = _1 | _1 << 4 ]
|
||||
>> hex1 [ at_c<2>(_val) = _1 | _1 << 4 ]
|
||||
>>-hex1 [ at_c<3>(_val) = _1 | _1 << 4 ]
|
||||
;
|
||||
|
||||
rgba_color = lit("rgb") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> dec3 [at_c<0>(_val) = _1] >> ','
|
||||
>> dec3 [at_c<1>(_val) = _1] >> ','
|
||||
>> dec3 [at_c<2>(_val) = _1]
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)])
|
||||
>> lit(')')
|
||||
;
|
||||
|
||||
rgba_percent_color = lit("rgb") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> double_ [at_c<0>(_val) = percent_converter(_1)] >> '%' >> ','
|
||||
>> double_ [at_c<1>(_val) = percent_converter(_1)] >> '%' >> ','
|
||||
>> double_ [at_c<2>(_val) = percent_converter(_1)] >> '%'
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)])
|
||||
>> lit(')')
|
||||
;
|
||||
|
||||
hsl_percent_color = lit("hsl") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> double_ [ _a = _1] >> ',' // hue 0..360
|
||||
>> double_ [ _b = _1] >> '%' >> ',' // saturation 0..100%
|
||||
>> double_ [ _c = _1] >> '%' // lightness 0..100%
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)]) // opacity 0...1
|
||||
>> lit (')') [ hsl_converter(_val,_a,_b,_c)]
|
||||
;
|
||||
}
|
||||
|
||||
css_color_grammar();
|
||||
qi::uint_parser< unsigned, 16, 2, 2 > hex2 ;
|
||||
qi::uint_parser< unsigned, 16, 1, 1 > hex1 ;
|
||||
qi::uint_parser< unsigned, 10, 1, 3 > dec3 ;
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace mapnik
|
|||
template <typename T>
|
||||
bool clip_test(T p,T q,double& tmin,double& tmax)
|
||||
{
|
||||
double r(0);
|
||||
double r = 0;
|
||||
bool result=true;
|
||||
if (p<0.0)
|
||||
{
|
||||
|
@ -96,8 +96,8 @@ inline bool point_inside_path(double x,double y,Iter start,Iter end)
|
|||
double x0=boost::get<0>(*start);
|
||||
double y0=boost::get<1>(*start);
|
||||
|
||||
double x1(0);
|
||||
double y1(0);
|
||||
double x1 = 0;
|
||||
double y1 = 0;
|
||||
while (++start!=end)
|
||||
{
|
||||
if ( boost::get<2>(*start) == SEG_MOVETO)
|
||||
|
@ -174,8 +174,8 @@ inline bool point_on_path(double x,double y,Iter start,Iter end, double tol)
|
|||
{
|
||||
double x0=boost::get<0>(*start);
|
||||
double y0=boost::get<1>(*start);
|
||||
double x1(0);
|
||||
double y1(0);
|
||||
double x1 = 0;
|
||||
double y1 = 0;
|
||||
while (++start != end)
|
||||
{
|
||||
if ( boost::get<2>(*start) == SEG_MOVETO)
|
||||
|
@ -224,10 +224,10 @@ struct filter_at_point
|
|||
template <typename PathType>
|
||||
double path_length(PathType & path)
|
||||
{
|
||||
double x0(0);
|
||||
double y0(0);
|
||||
double x1(0);
|
||||
double y1(0);
|
||||
double x0 = 0;
|
||||
double y0 = 0;
|
||||
double x1 = 0;
|
||||
double y1 = 0;
|
||||
path.rewind(0);
|
||||
unsigned command = path.vertex(&x0,&y0);
|
||||
if (command == SEG_END) return 0;
|
||||
|
@ -244,10 +244,10 @@ double path_length(PathType & path)
|
|||
template <typename PathType>
|
||||
bool middle_point(PathType & path, double & x, double & y)
|
||||
{
|
||||
double x0(0);
|
||||
double y0(0);
|
||||
double x1(0);
|
||||
double y1(0);
|
||||
double x0 = 0;
|
||||
double y0 = 0;
|
||||
double x1 = 0;
|
||||
double y1 = 0;
|
||||
double mid_length = 0.5 * path_length(path);
|
||||
path.rewind(0);
|
||||
unsigned command = path.vertex(&x0,&y0);
|
||||
|
@ -334,7 +334,7 @@ template <typename PathType>
|
|||
bool hit_test(PathType & path, double x, double y, double tol)
|
||||
{
|
||||
bool inside=false;
|
||||
double x0 = 0 ;
|
||||
double x0 = 0;
|
||||
double y0 = 0;
|
||||
double x1 = 0;
|
||||
double y1 = 0;
|
||||
|
|
|
@ -88,8 +88,8 @@ public:
|
|||
box2d<double> envelope() const
|
||||
{
|
||||
box2d<double> result;
|
||||
double x(0);
|
||||
double y(0);
|
||||
double x = 0;
|
||||
double y = 0;
|
||||
rewind(0);
|
||||
for (unsigned i=0;i<size();++i)
|
||||
{
|
||||
|
|
|
@ -97,7 +97,7 @@ public:
|
|||
return id_name_;
|
||||
}
|
||||
|
||||
inline void add_feature(mapnik::feature_impl & feature);
|
||||
void add_feature(mapnik::feature_impl & feature);
|
||||
|
||||
inline void add_property_name(std::string const& name)
|
||||
{
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <mapnik/label_collision_detector.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
//#include <mapnik/marker.hpp>
|
||||
#include <mapnik/rule.hpp> // for all symbolizers
|
||||
#include <mapnik/grid/grid.hpp>
|
||||
|
||||
// boost
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
// mapnik
|
||||
#include <mapnik/grid/grid.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/concept_check.hpp>
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
/*
|
||||
|
@ -45,15 +48,20 @@ static inline void scale_grid(mapnik::grid::data_type & target,
|
|||
|
||||
if (source_width<1 || source_height<1 ||
|
||||
target_width<1 || target_height<1) return;
|
||||
int x=0,y=0,xs=0,ys=0;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int xs = 0;
|
||||
int ys = 0;
|
||||
int tw2 = target_width/2;
|
||||
int th2 = target_height/2;
|
||||
int offs_x = rint((source_width-target_width-x_off_f*2*source_width)/2);
|
||||
int offs_y = rint((source_height-target_height-y_off_f*2*source_height)/2);
|
||||
unsigned yprt(0);
|
||||
unsigned yprt1(0);
|
||||
unsigned xprt(0);
|
||||
unsigned xprt1(0);
|
||||
unsigned yprt = 0;
|
||||
unsigned yprt1 = 0;
|
||||
unsigned xprt = 0;
|
||||
unsigned xprt1 = 0;
|
||||
boost::ignore_unused_variable_warning(yprt1);
|
||||
boost::ignore_unused_variable_warning(xprt1);
|
||||
|
||||
//no scaling or subpixel offset
|
||||
if (target_height == source_height && target_width == source_width && offs_x == 0 && offs_y == 0){
|
||||
|
|
|
@ -24,29 +24,15 @@
|
|||
#define MAPNIK_PATH_EXPRESSIONS_GRAMMAR_HPP
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/unicode.hpp>
|
||||
#include <mapnik/expression_node.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/attribute.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/variant.hpp>
|
||||
#include <boost/concept_check.hpp>
|
||||
|
||||
// spirit2
|
||||
#include <boost/spirit/include/qi.hpp>
|
||||
#include <boost/spirit/include/qi_action.hpp>
|
||||
|
||||
// fusion
|
||||
#include <boost/fusion/include/adapt_struct.hpp>
|
||||
|
||||
// phoenix
|
||||
#include <boost/spirit/include/phoenix_core.hpp>
|
||||
#include <boost/spirit/include/phoenix_object.hpp>
|
||||
#include <boost/spirit/include/phoenix_operator.hpp>
|
||||
#include <boost/spirit/include/phoenix_function.hpp>
|
||||
#include <boost/spirit/include/phoenix_stl.hpp>
|
||||
#include <boost/spirit/home/phoenix/object/construct.hpp>
|
||||
|
||||
// stl
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -65,29 +51,7 @@ typedef boost::variant<std::string, attribute> path_component;
|
|||
template <typename Iterator>
|
||||
struct path_expression_grammar : qi::grammar<Iterator, std::vector<path_component>(), space_type>
|
||||
{
|
||||
path_expression_grammar()
|
||||
: path_expression_grammar::base_type(expr)
|
||||
{
|
||||
using boost::phoenix::construct;
|
||||
using standard_wide::char_;
|
||||
using qi::_1;
|
||||
using qi::_val;
|
||||
using qi::lit;
|
||||
using qi::lexeme;
|
||||
using phoenix::push_back;
|
||||
|
||||
expr =
|
||||
* (
|
||||
str [ push_back(_val, _1)]
|
||||
|
|
||||
( '[' >> attr [ push_back(_val, construct<mapnik::attribute>( _1 )) ] >> ']')
|
||||
)
|
||||
;
|
||||
|
||||
attr %= +(char_ - ']');
|
||||
str %= lexeme[+(char_ -'[')];
|
||||
}
|
||||
|
||||
path_expression_grammar();
|
||||
qi::rule<Iterator, std::vector<path_component>() , space_type> expr;
|
||||
qi::rule<Iterator, std::string() , space_type> attr;
|
||||
qi::rule<Iterator, std::string() > str;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#ifndef MAPNIK_RULE_HPP
|
||||
#define MAPNIK_RULE_HPP
|
||||
|
||||
// mapni
|
||||
// mapnik
|
||||
#include <mapnik/building_symbolizer.hpp>
|
||||
#include <mapnik/line_symbolizer.hpp>
|
||||
#include <mapnik/line_pattern_symbolizer.hpp>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
// stl
|
||||
#include <string>
|
||||
|
||||
#if (1 && __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
||||
#if (!defined(NO_DEPRECATION_WARNINGS) && __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
||||
#define func_deprecated __attribute__ ((deprecated))
|
||||
#else
|
||||
#define func_deprecated
|
||||
|
|
|
@ -26,8 +26,6 @@
|
|||
// mapnik
|
||||
#include <mapnik/global.hpp>
|
||||
#include <mapnik/geometry.hpp>
|
||||
#include <mapnik/util/vertex_iterator.hpp>
|
||||
#include <mapnik/util/container_adapter.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
@ -55,161 +53,88 @@ struct is_container<mapnik::geometry_container>
|
|||
|
||||
namespace mapnik { namespace util {
|
||||
|
||||
namespace karma = boost::spirit::karma;
|
||||
namespace phoenix = boost::phoenix;
|
||||
|
||||
namespace {
|
||||
|
||||
struct get_type
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef int type; };
|
||||
|
||||
int operator() (geometry_type const& geom) const
|
||||
{
|
||||
return static_cast<int>(geom.type());
|
||||
}
|
||||
};
|
||||
|
||||
struct get_first
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef geometry_type::value_type const type; };
|
||||
|
||||
geometry_type::value_type const operator() (geometry_type const& geom) const
|
||||
{
|
||||
geometry_type::value_type coord;
|
||||
boost::get<0>(coord) = geom.vertex(0,&boost::get<1>(coord),&boost::get<2>(coord));
|
||||
return coord;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
struct multi_geometry_
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef bool type; };
|
||||
|
||||
bool operator() (geometry_container const& geom) const
|
||||
{
|
||||
return geom.size() > 1 ? true : false;
|
||||
}
|
||||
};
|
||||
|
||||
struct multi_geometry_type
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef boost::tuple<unsigned,bool> type; };
|
||||
|
||||
boost::tuple<unsigned,bool> operator() (geometry_container const& geom) const
|
||||
{
|
||||
unsigned type = 0u;
|
||||
bool collection = false;
|
||||
|
||||
geometry_container::const_iterator itr = geom.begin();
|
||||
geometry_container::const_iterator end = geom.end();
|
||||
|
||||
for ( ; itr != end; ++itr)
|
||||
{
|
||||
if (type != 0 && itr->type() != type)
|
||||
{
|
||||
collection = true;
|
||||
break;
|
||||
}
|
||||
type = itr->type();
|
||||
}
|
||||
return boost::tuple<unsigned,bool>(type, collection);
|
||||
}
|
||||
};
|
||||
namespace karma = boost::spirit::karma;
|
||||
namespace phoenix = boost::phoenix;
|
||||
|
||||
namespace {
|
||||
|
||||
struct get_type
|
||||
{
|
||||
template <typename T>
|
||||
struct wkt_coordinate_policy : karma::real_policies<T>
|
||||
{
|
||||
typedef boost::spirit::karma::real_policies<T> base_type;
|
||||
static int floatfield(T n) { return base_type::fmtflags::fixed; }
|
||||
static unsigned precision(T n) { return 6 ;}
|
||||
};
|
||||
struct result { typedef int type; };
|
||||
|
||||
int operator() (geometry_type const& geom) const
|
||||
{
|
||||
return static_cast<int>(geom.type());
|
||||
}
|
||||
};
|
||||
|
||||
template <typename OutputIterator>
|
||||
struct wkt_generator :
|
||||
karma::grammar<OutputIterator, geometry_type const& ()>
|
||||
struct get_first
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef geometry_type::value_type const type; };
|
||||
|
||||
geometry_type::value_type const operator() (geometry_type const& geom) const
|
||||
{
|
||||
geometry_type::value_type coord;
|
||||
boost::get<0>(coord) = geom.vertex(0,&boost::get<1>(coord),&boost::get<2>(coord));
|
||||
return coord;
|
||||
}
|
||||
};
|
||||
|
||||
wkt_generator(bool single = false)
|
||||
: wkt_generator::base_type(wkt)
|
||||
{
|
||||
using boost::spirit::karma::uint_;
|
||||
using boost::spirit::karma::_val;
|
||||
using boost::spirit::karma::_1;
|
||||
using boost::spirit::karma::lit;
|
||||
using boost::spirit::karma::_a;
|
||||
using boost::spirit::karma::_r1;
|
||||
using boost::spirit::karma::eps;
|
||||
using boost::spirit::karma::string;
|
||||
|
||||
wkt = point | linestring | polygon
|
||||
;
|
||||
struct multi_geometry_
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef bool type; };
|
||||
|
||||
point = &uint_(mapnik::Point)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "Point("]
|
||||
.else_[_1 = "("]]
|
||||
<< point_coord [_1 = _first(_val)] << lit(')')
|
||||
;
|
||||
bool operator() (geometry_container const& geom) const
|
||||
{
|
||||
return geom.size() > 1 ? true : false;
|
||||
}
|
||||
};
|
||||
|
||||
linestring = &uint_(mapnik::LineString)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "LineString("]
|
||||
.else_[_1 = "("]]
|
||||
<< coords
|
||||
<< lit(')')
|
||||
;
|
||||
struct multi_geometry_type
|
||||
{
|
||||
template <typename T>
|
||||
struct result { typedef boost::tuple<unsigned,bool> type; };
|
||||
|
||||
polygon = &uint_(mapnik::Polygon)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "Polygon("]
|
||||
.else_[_1 = "("]]
|
||||
<< coords2
|
||||
<< lit("))")
|
||||
;
|
||||
boost::tuple<unsigned,bool> operator() (geometry_container const& geom) const;
|
||||
};
|
||||
|
||||
point_coord = &uint_ << coord_type << lit(' ') << coord_type
|
||||
;
|
||||
|
||||
polygon_coord %= ( &uint_(mapnik::SEG_MOVETO) << eps[_r1 += 1]
|
||||
<< string[ if_ (_r1 > 1) [_1 = "),("]
|
||||
.else_[_1 = "("] ] | &uint_ << ",")
|
||||
<< coord_type
|
||||
<< lit(' ')
|
||||
<< coord_type
|
||||
;
|
||||
template <typename T>
|
||||
struct wkt_coordinate_policy : karma::real_policies<T>
|
||||
{
|
||||
typedef boost::spirit::karma::real_policies<T> base_type;
|
||||
static int floatfield(T n) { return base_type::fmtflags::fixed; }
|
||||
static unsigned precision(T n) { return 6 ;}
|
||||
};
|
||||
|
||||
coords2 %= *polygon_coord(_a)
|
||||
;
|
||||
}
|
||||
|
||||
coords = point_coord % lit(',')
|
||||
;
|
||||
template <typename OutputIterator>
|
||||
struct wkt_generator :
|
||||
karma::grammar<OutputIterator, geometry_type const& ()>
|
||||
{
|
||||
wkt_generator(bool single = false);
|
||||
// rules
|
||||
karma::rule<OutputIterator, geometry_type const& ()> wkt;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> point;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> linestring;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> polygon;
|
||||
|
||||
}
|
||||
// rules
|
||||
karma::rule<OutputIterator, geometry_type const& ()> wkt;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> point;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> linestring;
|
||||
karma::rule<OutputIterator, geometry_type const& ()> polygon;
|
||||
|
||||
karma::rule<OutputIterator, geometry_type const& ()> coords;
|
||||
karma::rule<OutputIterator, karma::locals<unsigned>, geometry_type const& ()> coords2;
|
||||
karma::rule<OutputIterator, geometry_type::value_type ()> point_coord;
|
||||
karma::rule<OutputIterator, geometry_type::value_type (unsigned& )> polygon_coord;
|
||||
|
||||
// phoenix functions
|
||||
phoenix::function<get_type > _type;
|
||||
phoenix::function<get_first> _first;
|
||||
//
|
||||
karma::real_generator<double, wkt_coordinate_policy<double> > coord_type;
|
||||
|
||||
};
|
||||
karma::rule<OutputIterator, geometry_type const& ()> coords;
|
||||
karma::rule<OutputIterator, karma::locals<unsigned>, geometry_type const& ()> coords2;
|
||||
karma::rule<OutputIterator, geometry_type::value_type ()> point_coord;
|
||||
karma::rule<OutputIterator, geometry_type::value_type (unsigned& )> polygon_coord;
|
||||
|
||||
// phoenix functions
|
||||
phoenix::function<get_type > _type;
|
||||
phoenix::function<get_first> _first;
|
||||
//
|
||||
karma::real_generator<double, wkt_coordinate_policy<double> > coord_type;
|
||||
};
|
||||
|
||||
|
||||
template <typename OutputIterator>
|
||||
|
@ -217,38 +142,7 @@ struct wkt_multi_generator :
|
|||
karma::grammar<OutputIterator, karma::locals< boost::tuple<unsigned,bool> >, geometry_container const& ()>
|
||||
{
|
||||
|
||||
wkt_multi_generator()
|
||||
: wkt_multi_generator::base_type(wkt)
|
||||
{
|
||||
using boost::spirit::karma::lit;
|
||||
using boost::spirit::karma::eps;
|
||||
using boost::spirit::karma::_val;
|
||||
using boost::spirit::karma::_1;
|
||||
using boost::spirit::karma::_a;
|
||||
|
||||
geometry_types.add
|
||||
(mapnik::Point,"Point")
|
||||
(mapnik::LineString,"LineString")
|
||||
(mapnik::Polygon,"Polygon")
|
||||
;
|
||||
|
||||
wkt = eps(phoenix::at_c<1>(_a))[_a = _multi_type(_val)]
|
||||
<< lit("GeometryCollection(") << geometry << lit(")")
|
||||
| eps(is_multi(_val)) << lit("Multi") << geometry_types[_1 = phoenix::at_c<0>(_a)]
|
||||
<< "(" << multi_geometry << ")"
|
||||
| geometry
|
||||
;
|
||||
|
||||
geometry = -(single_geometry % lit(','))
|
||||
;
|
||||
|
||||
single_geometry = geometry_types[_1 = _type(_val)] << path
|
||||
;
|
||||
|
||||
multi_geometry = -(path % lit(','))
|
||||
;
|
||||
|
||||
}
|
||||
wkt_multi_generator();
|
||||
// rules
|
||||
karma::rule<OutputIterator, karma::locals<boost::tuple<unsigned,bool> >, geometry_container const& ()> wkt;
|
||||
karma::rule<OutputIterator, geometry_container const& ()> geometry;
|
||||
|
|
|
@ -25,9 +25,19 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
class csv_datasource : public mapnik::datasource
|
||||
{
|
||||
|
|
|
@ -25,9 +25,19 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// gdal
|
||||
#include <gdal_priv.h>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
// mapnik
|
||||
#include <mapnik/global.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/ctrans.hpp>
|
||||
#include <mapnik/feature_factory.hpp>
|
||||
|
||||
// boost
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
#include <boost/variant.hpp>
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
#include "gdal_datasource.hpp"
|
||||
|
||||
class GDALDataset;
|
||||
class GDALRasterBand;
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
||||
// mapnik
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/proj_transform.hpp>
|
||||
#include <mapnik/projection.hpp>
|
||||
#include <mapnik/json/feature_collection_parser.hpp>
|
||||
|
|
|
@ -25,7 +25,16 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/geometry/geometries/box.hpp>
|
||||
#include <boost/geometry/geometries/point_xy.hpp>
|
||||
#include <boost/geometry/algorithms/area.hpp>
|
||||
|
@ -33,6 +42,12 @@
|
|||
#include <boost/geometry/geometries/geometries.hpp>
|
||||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <deque>
|
||||
|
||||
class geojson_datasource : public mapnik::datasource
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -25,12 +25,21 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "geos_feature_ptr.hpp"
|
||||
|
||||
class geos_datasource : public mapnik::datasource
|
||||
|
|
|
@ -23,21 +23,25 @@
|
|||
#ifndef KISMET_DATASOURCE_HPP
|
||||
#define KISMET_DATASOURCE_HPP
|
||||
|
||||
// stl
|
||||
#include <list>
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
#include <mapnik/wkb.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
|
||||
// sqlite
|
||||
// stl
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "kismet_types.hpp"
|
||||
|
||||
class kismet_datasource : public mapnik::datasource
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
|
|
@ -25,13 +25,21 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// oci
|
||||
#include "occi_types.hpp"
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
|
||||
// ogr
|
||||
#include <ogrsf_frmts.h>
|
||||
|
|
|
@ -25,15 +25,23 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// ogr
|
||||
#include <ogrsf_frmts.h>
|
||||
|
||||
#include "ogr_layer_ptr.hpp"
|
||||
|
||||
class ogr_datasource : public mapnik::datasource
|
||||
|
|
|
@ -25,7 +25,20 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "osm.h"
|
||||
|
||||
|
|
|
@ -25,12 +25,22 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "connection_manager.hpp"
|
||||
#include "resultset.hpp"
|
||||
#include "cursorresultset.hpp"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/ctrans.hpp>
|
||||
#include <mapnik/image_reader.hpp>
|
||||
#include <mapnik/boolean.hpp>
|
||||
|
||||
|
|
|
@ -24,9 +24,22 @@
|
|||
#define RASTER_DATASOURCE_HPP
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
|
||||
class raster_datasource : public mapnik::datasource
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/ctrans.hpp>
|
||||
#include <mapnik/image_reader.hpp>
|
||||
#include <mapnik/image_util.hpp>
|
||||
#include <mapnik/feature_factory.hpp>
|
||||
|
|
|
@ -25,10 +25,21 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "rasterlite_include.hpp"
|
||||
|
||||
class rasterlite_datasource : public mapnik::datasource
|
||||
|
|
|
@ -25,11 +25,21 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "shape_io.hpp"
|
||||
|
||||
using mapnik::datasource;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include "shape_utils.hpp"
|
||||
|
||||
// boost
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/sql_utils.hpp>
|
||||
#include <mapnik/timer.hpp>
|
||||
|
||||
|
|
|
@ -25,18 +25,26 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
#include <mapnik/wkb.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// sqlite
|
||||
#include "sqlite_connection.hpp"
|
||||
|
||||
|
||||
class sqlite_datasource : public mapnik::datasource
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
|
||||
// boost
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
|
||||
// stl
|
||||
#include <string.h>
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/geometry.hpp>
|
||||
#include <mapnik/sql_utils.hpp>
|
||||
|
||||
|
|
|
@ -3,6 +3,19 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/params.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/coord.hpp>
|
||||
#include <mapnik/feature_layer_desc.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
// stl
|
||||
#include <string>
|
||||
|
||||
class hello_datasource : public mapnik::datasource
|
||||
{
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
*****************************************************************************/
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/graphics.hpp>
|
||||
#include <mapnik/agg_renderer.hpp>
|
||||
#include <mapnik/agg_rasterizer.hpp>
|
||||
|
@ -239,7 +241,7 @@ void agg_renderer<T>::end_style_processing(feature_type_style const& st)
|
|||
{
|
||||
blend_from = true;
|
||||
mapnik::filter::filter_visitor<image_32> visitor(*current_buffer_);
|
||||
BOOST_FOREACH(mapnik::filter::filter_type filter_tag, st.image_filters())
|
||||
BOOST_FOREACH(mapnik::filter::filter_type const& filter_tag, st.image_filters())
|
||||
{
|
||||
boost::apply_visitor(visitor, filter_tag);
|
||||
}
|
||||
|
@ -256,7 +258,7 @@ void agg_renderer<T>::end_style_processing(feature_type_style const& st)
|
|||
|
||||
// apply any 'direct' image filters
|
||||
mapnik::filter::filter_visitor<image_32> visitor(pixmap_);
|
||||
BOOST_FOREACH(mapnik::filter::filter_type filter_tag, st.direct_image_filters())
|
||||
BOOST_FOREACH(mapnik::filter::filter_type const& filter_tag, st.direct_image_filters())
|
||||
{
|
||||
boost::apply_visitor(visitor, filter_tag);
|
||||
}
|
||||
|
|
|
@ -25,11 +25,15 @@ import sys
|
|||
import glob
|
||||
from copy import copy
|
||||
from subprocess import Popen, PIPE
|
||||
from colorizer import colorizer
|
||||
col = colorizer()
|
||||
|
||||
Import('env')
|
||||
|
||||
lib_env = env.Clone()
|
||||
|
||||
col.colorize(lib_env)
|
||||
|
||||
def call(cmd, silent=True):
|
||||
stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate()
|
||||
if not stderr:
|
||||
|
@ -101,6 +105,7 @@ else: # unix, non-macos
|
|||
source = Split(
|
||||
"""
|
||||
color.cpp
|
||||
css_color_grammar.cpp
|
||||
conversions.cpp
|
||||
image_compositing.cpp
|
||||
image_scaling.cpp
|
||||
|
@ -133,6 +138,7 @@ source = Split(
|
|||
parse_path.cpp
|
||||
parse_transform.cpp
|
||||
palette.cpp
|
||||
path_expression_grammar.cpp
|
||||
placement_finder.cpp
|
||||
plugin.cpp
|
||||
png_reader.cpp
|
||||
|
@ -144,6 +150,7 @@ source = Split(
|
|||
text_symbolizer.cpp
|
||||
tiff_reader.cpp
|
||||
wkb.cpp
|
||||
wkb_generator.cpp
|
||||
projection.cpp
|
||||
proj_transform.cpp
|
||||
distance.cpp
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#if defined(HAVE_CAIRO)
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/cairo_renderer.hpp>
|
||||
#include <mapnik/image_util.hpp>
|
||||
|
@ -52,7 +54,6 @@
|
|||
#include <boost/make_shared.hpp>
|
||||
|
||||
// agg
|
||||
|
||||
#include "agg_conv_clip_polyline.h"
|
||||
#include "agg_conv_clip_polygon.h"
|
||||
#include "agg_conv_smooth_poly1.h"
|
||||
|
|
262
src/css_color_grammar.cpp
Normal file
262
src/css_color_grammar.cpp
Normal file
|
@ -0,0 +1,262 @@
|
|||
/*****************************************************************************
|
||||
*
|
||||
* 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
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#include <mapnik/css_color_grammar.hpp>
|
||||
|
||||
namespace mapnik
|
||||
{
|
||||
|
||||
named_colors_::named_colors_()
|
||||
{
|
||||
add
|
||||
("aliceblue", color(240, 248, 255))
|
||||
("antiquewhite", color(250, 235, 215))
|
||||
("aqua", color(0, 255, 255))
|
||||
("aquamarine", color(127, 255, 212))
|
||||
("azure", color(240, 255, 255))
|
||||
("beige", color(245, 245, 220))
|
||||
("bisque", color(255, 228, 196))
|
||||
("black", color(0, 0, 0))
|
||||
("blanchedalmond", color(255,235,205))
|
||||
("blue", color(0, 0, 255))
|
||||
("blueviolet", color(138, 43, 226))
|
||||
("brown", color(165, 42, 42))
|
||||
("burlywood", color(222, 184, 135))
|
||||
("cadetblue", color(95, 158, 160))
|
||||
("chartreuse", color(127, 255, 0))
|
||||
("chocolate", color(210, 105, 30))
|
||||
("coral", color(255, 127, 80))
|
||||
("cornflowerblue", color(100, 149, 237))
|
||||
("cornsilk", color(255, 248, 220))
|
||||
("crimson", color(220, 20, 60))
|
||||
("cyan", color(0, 255, 255))
|
||||
("darkblue", color(0, 0, 139))
|
||||
("darkcyan", color(0, 139, 139))
|
||||
("darkgoldenrod", color(184, 134, 11))
|
||||
("darkgray", color(169, 169, 169))
|
||||
("darkgreen", color(0, 100, 0))
|
||||
("darkgrey", color(169, 169, 169))
|
||||
("darkkhaki", color(189, 183, 107))
|
||||
("darkmagenta", color(139, 0, 139))
|
||||
("darkolivegreen", color(85, 107, 47))
|
||||
("darkorange", color(255, 140, 0))
|
||||
("darkorchid", color(153, 50, 204))
|
||||
("darkred", color(139, 0, 0))
|
||||
("darksalmon", color(233, 150, 122))
|
||||
("darkseagreen", color(143, 188, 143))
|
||||
("darkslateblue", color(72, 61, 139))
|
||||
("darkslategrey", color(47, 79, 79))
|
||||
("darkturquoise", color(0, 206, 209))
|
||||
("darkviolet", color(148, 0, 211))
|
||||
("deeppink", color(255, 20, 147))
|
||||
("deepskyblue", color(0, 191, 255))
|
||||
("dimgray", color(105, 105, 105))
|
||||
("dimgrey", color(105, 105, 105))
|
||||
("dodgerblue", color(30, 144, 255))
|
||||
("firebrick", color(178, 34, 34))
|
||||
("floralwhite", color(255, 250, 240))
|
||||
("forestgreen", color(34, 139, 34))
|
||||
("fuchsia", color(255, 0, 255))
|
||||
("gainsboro", color(220, 220, 220))
|
||||
("ghostwhite", color(248, 248, 255))
|
||||
("gold", color(255, 215, 0))
|
||||
("goldenrod", color(218, 165, 32))
|
||||
("gray", color(128, 128, 128))
|
||||
("grey", color(128, 128, 128))
|
||||
("green", color(0, 128, 0))
|
||||
("greenyellow", color(173, 255, 47))
|
||||
("honeydew", color(240, 255, 240))
|
||||
("hotpink", color(255, 105, 180))
|
||||
("indianred", color(205, 92, 92))
|
||||
("indigo", color(75, 0, 130))
|
||||
("ivory", color(255, 255, 240))
|
||||
("khaki", color(240, 230, 140))
|
||||
("lavender", color(230, 230, 250))
|
||||
("lavenderblush", color(255, 240, 245))
|
||||
("lawngreen", color(124, 252, 0))
|
||||
("lemonchiffon", color(255, 250, 205))
|
||||
("lightblue", color(173, 216, 230))
|
||||
("lightcoral", color(240, 128, 128))
|
||||
("lightcyan", color(224, 255, 255))
|
||||
("lightgoldenrodyellow", color(250, 250, 210))
|
||||
("lightgray", color(211, 211, 211))
|
||||
("lightgreen", color(144, 238, 144))
|
||||
("lightgrey", color(211, 211, 211))
|
||||
("lightpink", color(255, 182, 193))
|
||||
("lightsalmon", color(255, 160, 122))
|
||||
("lightseagreen", color(32, 178, 170))
|
||||
("lightskyblue", color(135, 206, 250))
|
||||
("lightslategray", color(119, 136, 153))
|
||||
("lightslategrey", color(119, 136, 153))
|
||||
("lightsteelblue", color(176, 196, 222))
|
||||
("lightyellow", color(255, 255, 224))
|
||||
("lime", color(0, 255, 0))
|
||||
("limegreen", color(50, 205, 50))
|
||||
("linen", color(250, 240, 230))
|
||||
("magenta", color(255, 0, 255))
|
||||
("maroon", color(128, 0, 0))
|
||||
("mediumaquamarine", color(102, 205, 170))
|
||||
("mediumblue", color(0, 0, 205))
|
||||
("mediumorchid", color(186, 85, 211))
|
||||
("mediumpurple", color(147, 112, 219))
|
||||
("mediumseagreen", color(60, 179, 113))
|
||||
("mediumslateblue", color(123, 104, 238))
|
||||
("mediumspringgreen", color(0, 250, 154))
|
||||
("mediumturquoise", color(72, 209, 204))
|
||||
("mediumvioletred", color(199, 21, 133))
|
||||
("midnightblue", color(25, 25, 112))
|
||||
("mintcream", color(245, 255, 250))
|
||||
("mistyrose", color(255, 228, 225))
|
||||
("moccasin", color(255, 228, 181))
|
||||
("navajowhite", color(255, 222, 173))
|
||||
("navy", color(0, 0, 128))
|
||||
("oldlace", color(253, 245, 230))
|
||||
("olive", color(128, 128, 0))
|
||||
("olivedrab", color(107, 142, 35))
|
||||
("orange", color(255, 165, 0))
|
||||
("orangered", color(255, 69, 0))
|
||||
("orchid", color(218, 112, 214))
|
||||
("palegoldenrod", color(238, 232, 170))
|
||||
("palegreen", color(152, 251, 152))
|
||||
("paleturquoise", color(175, 238, 238))
|
||||
("palevioletred", color(219, 112, 147))
|
||||
("papayawhip", color(255, 239, 213))
|
||||
("peachpuff", color(255, 218, 185))
|
||||
("peru", color(205, 133, 63))
|
||||
("pink", color(255, 192, 203))
|
||||
("plum", color(221, 160, 221))
|
||||
("powderblue", color(176, 224, 230))
|
||||
("purple", color(128, 0, 128))
|
||||
("red", color(255, 0, 0))
|
||||
("rosybrown", color(188, 143, 143))
|
||||
("royalblue", color(65, 105, 225))
|
||||
("saddlebrown", color(139, 69, 19))
|
||||
("salmon", color(250, 128, 114))
|
||||
("sandybrown", color(244, 164, 96))
|
||||
("seagreen", color(46, 139, 87))
|
||||
("seashell", color(255, 245, 238))
|
||||
("sienna", color(160, 82, 45))
|
||||
("silver", color(192, 192, 192))
|
||||
("skyblue", color(135, 206, 235))
|
||||
("slateblue", color(106, 90, 205))
|
||||
("slategray", color(112, 128, 144))
|
||||
("slategrey", color(112, 128, 144))
|
||||
("snow", color(255, 250, 250))
|
||||
("springgreen", color(0, 255, 127))
|
||||
("steelblue", color(70, 130, 180))
|
||||
("tan", color(210, 180, 140))
|
||||
("teal", color(0, 128, 128))
|
||||
("thistle", color(216, 191, 216))
|
||||
("tomato", color(255, 99, 71))
|
||||
("turquoise", color(64, 224, 208))
|
||||
("violet", color(238, 130, 238))
|
||||
("wheat", color(245, 222, 179))
|
||||
("white", color(255, 255, 255))
|
||||
("whitesmoke", color(245, 245, 245))
|
||||
("yellow", color(255, 255, 0))
|
||||
("yellowgreen", color(154, 205, 50))
|
||||
("transparent", color(0, 0, 0, 0))
|
||||
;
|
||||
}
|
||||
|
||||
double hue_to_rgb( double m1, double m2, double h)
|
||||
{
|
||||
if (h < 0.0) h = h + 1.0;
|
||||
else if (h > 1) h = h - 1.0;
|
||||
|
||||
if (h * 6 < 1.0)
|
||||
return m1 + (m2 - m1) * h * 6.0;
|
||||
if (h * 2 < 1.0)
|
||||
return m2;
|
||||
if (h * 3 < 2.0)
|
||||
return m1 + (m2 - m1)* (2.0/3.0 - h) * 6.0;
|
||||
return m1;
|
||||
}
|
||||
|
||||
template <typename Iterator>
|
||||
css_color_grammar<Iterator>::css_color_grammar()
|
||||
: css_color_grammar::base_type(css_color)
|
||||
|
||||
{
|
||||
using qi::lit;
|
||||
using qi::_val;
|
||||
using qi::double_;
|
||||
using qi::_1;
|
||||
using qi::_a;
|
||||
using qi::_b;
|
||||
using qi::_c;
|
||||
using ascii::no_case;
|
||||
using phoenix::at_c;
|
||||
|
||||
css_color %= rgba_color
|
||||
| rgba_percent_color
|
||||
| hsl_percent_color
|
||||
| hex_color
|
||||
| hex_color_small
|
||||
| no_case[named];
|
||||
|
||||
hex_color = lit('#')
|
||||
>> hex2 [ at_c<0>(_val) = _1 ]
|
||||
>> hex2 [ at_c<1>(_val) = _1 ]
|
||||
>> hex2 [ at_c<2>(_val) = _1 ]
|
||||
>>-hex2 [ at_c<3>(_val) = _1 ]
|
||||
;
|
||||
|
||||
hex_color_small = lit('#')
|
||||
>> hex1 [ at_c<0>(_val) = _1 | _1 << 4 ]
|
||||
>> hex1 [ at_c<1>(_val) = _1 | _1 << 4 ]
|
||||
>> hex1 [ at_c<2>(_val) = _1 | _1 << 4 ]
|
||||
>>-hex1 [ at_c<3>(_val) = _1 | _1 << 4 ]
|
||||
;
|
||||
|
||||
rgba_color = lit("rgb") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> dec3 [at_c<0>(_val) = _1] >> ','
|
||||
>> dec3 [at_c<1>(_val) = _1] >> ','
|
||||
>> dec3 [at_c<2>(_val) = _1]
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)])
|
||||
>> lit(')')
|
||||
;
|
||||
|
||||
rgba_percent_color = lit("rgb") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> double_ [at_c<0>(_val) = percent_converter(_1)] >> '%' >> ','
|
||||
>> double_ [at_c<1>(_val) = percent_converter(_1)] >> '%' >> ','
|
||||
>> double_ [at_c<2>(_val) = percent_converter(_1)] >> '%'
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)])
|
||||
>> lit(')')
|
||||
;
|
||||
|
||||
hsl_percent_color = lit("hsl") >> -lit('a')
|
||||
>> lit('(')
|
||||
>> double_ [ _a = _1] >> ',' // hue 0..360
|
||||
>> double_ [ _b = _1] >> '%' >> ',' // saturation 0..100%
|
||||
>> double_ [ _c = _1] >> '%' // lightness 0..100%
|
||||
>> -(','>> -double_ [at_c<3>(_val) = alpha_converter(_1)]) // opacity 0...1
|
||||
>> lit (')') [ hsl_converter(_val,_a,_b,_c)]
|
||||
;
|
||||
}
|
||||
|
||||
template struct mapnik::css_color_grammar<std::string::const_iterator>;
|
||||
|
||||
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/layer.hpp>
|
||||
|
|
|
@ -37,7 +37,6 @@ regex_replace_node::regex_replace_node (expr_node const& a, UnicodeString const&
|
|||
format(f) {}
|
||||
|
||||
#else
|
||||
regex_match_node::pattern boost::regex;
|
||||
|
||||
regex_match_node::regex_match_node (expr_node const& a, std::string const& str)
|
||||
: expr(a),
|
||||
|
|
|
@ -20,8 +20,10 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//mapnik
|
||||
// mapnik
|
||||
#include <mapnik/feature_style_processor.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/datasource.hpp>
|
||||
#include <mapnik/memory_datasource.hpp>
|
||||
|
@ -36,7 +38,8 @@
|
|||
// boost
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/concept_check.hpp>
|
||||
//stl
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
|
||||
#if defined(HAVE_CAIRO)
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
*****************************************************************************/
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/grid/grid_rasterizer.hpp>
|
||||
#include <mapnik/grid/grid_renderer.hpp>
|
||||
|
|
|
@ -22,9 +22,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/debug.hpp>
|
||||
|
||||
#include <mapnik/load_map.hpp>
|
||||
|
||||
#include <mapnik/xml_tree.hpp>
|
||||
#include <mapnik/version.hpp>
|
||||
#include <mapnik/image_compositing.hpp>
|
||||
|
@ -39,16 +37,12 @@
|
|||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <mapnik/font_set.hpp>
|
||||
#include <mapnik/xml_loader.hpp>
|
||||
|
||||
#include <mapnik/expression.hpp>
|
||||
#include <mapnik/parse_path.hpp>
|
||||
#include <mapnik/parse_transform.hpp>
|
||||
#include <mapnik/raster_colorizer.hpp>
|
||||
|
||||
#include <mapnik/svg/svg_path_parser.hpp>
|
||||
|
||||
#include <mapnik/metawriter_factory.hpp>
|
||||
|
||||
#include <mapnik/text_placements/registry.hpp>
|
||||
#include <mapnik/text_placements/dummy.hpp>
|
||||
#include <mapnik/symbolizer.hpp>
|
||||
|
@ -1064,7 +1058,7 @@ void map_parser::parse_markers_symbolizer(rule & rule, xml_node const& node)
|
|||
if (parse_stroke(strk,node))
|
||||
sym.set_stroke(strk);
|
||||
|
||||
marker_placement_e placement = node.get_attr<marker_placement_e>("placement", MARKER_LINE_PLACEMENT);
|
||||
marker_placement_e placement = node.get_attr<marker_placement_e>("placement", MARKER_POINT_PLACEMENT);
|
||||
sym.set_marker_placement(placement);
|
||||
parse_symbolizer_base(sym, node);
|
||||
rule.append(sym);
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
//mapnik
|
||||
// mapnik
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
#include <mapnik/datasource.hpp>
|
||||
|
|
|
@ -45,7 +45,10 @@ markers_symbolizer::markers_symbolizer()
|
|||
allow_overlap_(false),
|
||||
spacing_(100.0),
|
||||
max_error_(0.2),
|
||||
marker_p_(MARKER_POINT_PLACEMENT) {}
|
||||
marker_p_(MARKER_POINT_PLACEMENT) {
|
||||
// override the default for clipping in symbolizer base
|
||||
this->set_clip(false);
|
||||
}
|
||||
|
||||
markers_symbolizer::markers_symbolizer(path_expression_ptr const& filename)
|
||||
: symbolizer_with_image(filename),
|
||||
|
@ -56,7 +59,10 @@ markers_symbolizer::markers_symbolizer(path_expression_ptr const& filename)
|
|||
allow_overlap_(false),
|
||||
spacing_(100.0),
|
||||
max_error_(0.2),
|
||||
marker_p_(MARKER_POINT_PLACEMENT) {}
|
||||
marker_p_(MARKER_POINT_PLACEMENT) {
|
||||
// override the default for clipping in symbolizer base
|
||||
this->set_clip(false);
|
||||
}
|
||||
|
||||
markers_symbolizer::markers_symbolizer(markers_symbolizer const& rhs)
|
||||
: symbolizer_with_image(rhs),
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/query.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
#include <mapnik/memory_datasource.hpp>
|
||||
#include <mapnik/memory_featureset.hpp>
|
||||
#include <mapnik/feature_factory.hpp>
|
||||
|
|
62
src/path_expression_grammar.cpp
Normal file
62
src/path_expression_grammar.cpp
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*****************************************************************************
|
||||
*
|
||||
* 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
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/path_expression_grammar.hpp>
|
||||
#include <mapnik/attribute.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/spirit/home/phoenix/object/construct.hpp>
|
||||
#include <boost/spirit/include/phoenix_core.hpp>
|
||||
#include <boost/spirit/include/phoenix_object.hpp>
|
||||
#include <boost/spirit/include/phoenix_stl.hpp>
|
||||
|
||||
namespace mapnik
|
||||
{
|
||||
|
||||
template <typename Iterator>
|
||||
path_expression_grammar<Iterator>::path_expression_grammar()
|
||||
: path_expression_grammar::base_type(expr)
|
||||
{
|
||||
using boost::phoenix::construct;
|
||||
using standard_wide::char_;
|
||||
using qi::_1;
|
||||
using qi::_val;
|
||||
using qi::lit;
|
||||
using qi::lexeme;
|
||||
using phoenix::push_back;
|
||||
|
||||
expr =
|
||||
* (
|
||||
str [ push_back(_val, _1)]
|
||||
|
|
||||
( '[' >> attr [ push_back(_val, construct<mapnik::attribute>( _1 )) ] >> ']')
|
||||
)
|
||||
;
|
||||
|
||||
attr %= +(char_ - ']');
|
||||
str %= lexeme[+(char_ -'[')];
|
||||
}
|
||||
|
||||
template struct mapnik::path_expression_grammar<std::string::const_iterator>;
|
||||
|
||||
}
|
|
@ -21,6 +21,8 @@
|
|||
*****************************************************************************/
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/layer.hpp>
|
||||
#include <mapnik/feature_type_style.hpp>
|
||||
#include <mapnik/debug.hpp>
|
||||
#include <mapnik/save_map.hpp>
|
||||
#include <mapnik/map.hpp>
|
||||
|
@ -201,9 +203,11 @@ public:
|
|||
{
|
||||
set_attr(sym_node, "unlock-image", sym.get_unlock_image());
|
||||
}
|
||||
if (sym.get_text_opacity() != dfl.get_text_opacity() || explicit_defaults_)
|
||||
|
||||
if (sym.get_placement_options()->defaults.format.text_opacity !=
|
||||
dfl.get_placement_options()->defaults.format.text_opacity || explicit_defaults_)
|
||||
{
|
||||
set_attr(sym_node, "text-opacity", sym.get_text_opacity());
|
||||
set_attr(sym_node, "text-opacity", sym.get_placement_options()->defaults.format.text_opacity);
|
||||
}
|
||||
position displacement = sym.get_shield_displacement();
|
||||
if (displacement.first != dfl.get_shield_displacement().first || explicit_defaults_)
|
||||
|
|
141
src/wkb_generator.cpp
Normal file
141
src/wkb_generator.cpp
Normal file
|
@ -0,0 +1,141 @@
|
|||
/*****************************************************************************
|
||||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2012 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
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#include <mapnik/util/geometry_wkt_generator.hpp>
|
||||
#include <mapnik/util/vertex_iterator.hpp>
|
||||
#include <mapnik/util/container_adapter.hpp>
|
||||
|
||||
namespace mapnik { namespace util {
|
||||
|
||||
boost::tuple<unsigned,bool> multi_geometry_type::operator() (geometry_container const& geom) const
|
||||
{
|
||||
unsigned type = 0u;
|
||||
bool collection = false;
|
||||
|
||||
geometry_container::const_iterator itr = geom.begin();
|
||||
geometry_container::const_iterator end = geom.end();
|
||||
|
||||
for ( ; itr != end; ++itr)
|
||||
{
|
||||
if (type != 0 && itr->type() != type)
|
||||
{
|
||||
collection = true;
|
||||
break;
|
||||
}
|
||||
type = itr->type();
|
||||
}
|
||||
return boost::tuple<unsigned,bool>(type, collection);
|
||||
}
|
||||
|
||||
template <typename OutputIterator>
|
||||
wkt_generator<OutputIterator>::wkt_generator(bool single)
|
||||
: wkt_generator::base_type(wkt)
|
||||
{
|
||||
using boost::spirit::karma::uint_;
|
||||
using boost::spirit::karma::_val;
|
||||
using boost::spirit::karma::_1;
|
||||
using boost::spirit::karma::lit;
|
||||
using boost::spirit::karma::_a;
|
||||
using boost::spirit::karma::_r1;
|
||||
using boost::spirit::karma::eps;
|
||||
using boost::spirit::karma::string;
|
||||
|
||||
wkt = point | linestring | polygon
|
||||
;
|
||||
|
||||
point = &uint_(mapnik::Point)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "Point("]
|
||||
.else_[_1 = "("]]
|
||||
<< point_coord [_1 = _first(_val)] << lit(')')
|
||||
;
|
||||
|
||||
linestring = &uint_(mapnik::LineString)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "LineString("]
|
||||
.else_[_1 = "("]]
|
||||
<< coords
|
||||
<< lit(')')
|
||||
;
|
||||
|
||||
polygon = &uint_(mapnik::Polygon)[_1 = _type(_val)]
|
||||
<< string[ phoenix::if_ (single) [_1 = "Polygon("]
|
||||
.else_[_1 = "("]]
|
||||
<< coords2
|
||||
<< lit("))")
|
||||
;
|
||||
|
||||
point_coord = &uint_ << coord_type << lit(' ') << coord_type
|
||||
;
|
||||
|
||||
polygon_coord %= ( &uint_(mapnik::SEG_MOVETO) << eps[_r1 += 1]
|
||||
<< string[ if_ (_r1 > 1) [_1 = "),("]
|
||||
.else_[_1 = "("] ] | &uint_ << ",")
|
||||
<< coord_type
|
||||
<< lit(' ')
|
||||
<< coord_type
|
||||
;
|
||||
|
||||
coords2 %= *polygon_coord(_a)
|
||||
;
|
||||
|
||||
coords = point_coord % lit(',')
|
||||
;
|
||||
}
|
||||
|
||||
template <typename OutputIterator>
|
||||
wkt_multi_generator<OutputIterator>::wkt_multi_generator()
|
||||
: wkt_multi_generator::base_type(wkt)
|
||||
{
|
||||
using boost::spirit::karma::lit;
|
||||
using boost::spirit::karma::eps;
|
||||
using boost::spirit::karma::_val;
|
||||
using boost::spirit::karma::_1;
|
||||
using boost::spirit::karma::_a;
|
||||
|
||||
geometry_types.add
|
||||
(mapnik::Point,"Point")
|
||||
(mapnik::LineString,"LineString")
|
||||
(mapnik::Polygon,"Polygon")
|
||||
;
|
||||
|
||||
wkt = eps(phoenix::at_c<1>(_a))[_a = _multi_type(_val)]
|
||||
<< lit("GeometryCollection(") << geometry << lit(")")
|
||||
| eps(is_multi(_val)) << lit("Multi") << geometry_types[_1 = phoenix::at_c<0>(_a)]
|
||||
<< "(" << multi_geometry << ")"
|
||||
| geometry
|
||||
;
|
||||
|
||||
geometry = -(single_geometry % lit(','))
|
||||
;
|
||||
|
||||
single_geometry = geometry_types[_1 = _type(_val)] << path
|
||||
;
|
||||
|
||||
multi_geometry = -(path % lit(','))
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
template struct mapnik::util::wkt_generator<std::back_insert_iterator<std::string> >;
|
||||
template struct mapnik::util::wkt_multi_generator<std::back_insert_iterator<std::string> >;
|
||||
|
||||
|
||||
}}
|
|
@ -149,7 +149,6 @@ int main (int argc,char** argv)
|
|||
agg::scanline_u8 sl;
|
||||
|
||||
double opacity = 1;
|
||||
double scale_factor_ = .95;
|
||||
int w = marker.width();
|
||||
int h = marker.height();
|
||||
if (verbose)
|
||||
|
@ -165,8 +164,6 @@ int main (int argc,char** argv)
|
|||
mapnik::coord<double,2> c = bbox.center();
|
||||
// center the svg marker on '0,0'
|
||||
agg::trans_affine mtx = agg::trans_affine_translation(-c.x,-c.y);
|
||||
// apply symbol transformation to get to map space
|
||||
mtx *= agg::trans_affine_scaling(scale_factor_);
|
||||
// render the marker at the center of the marker box
|
||||
mtx.translate(0.5 * w, 0.5 * h);
|
||||
|
||||
|
|
Loading…
Reference in a new issue