Commit graph

76 commits

Author SHA1 Message Date
artemp
be731f17ce use vec.resize() ref #2846 (this fixes -fsanitize=address error on OS X) 2015-06-02 14:24:19 +01:00
Dane Springmeyer
84e4d8bf22 Start calling geometry::correct everywhere possible - refs #2834 2015-05-20 14:00:30 -07:00
Dane Springmeyer
124362d2d4 stop correcting geometries at decode time
- the original motivation for this was to avoid needing to
   mutate a copy later on (for operations needing correct winding order)
 - but mutating a copy is looking feasible, so removing this now.
2015-04-22 14:27:43 +02:00
artemp
2768aa6a4a Merge branch 'mapnik-geometry' into mapnik-geometry-template 2015-04-22 12:13:29 +02:00
Dane Springmeyer
748fe3d228 fix polygon winding order for shapefiles + add test enforcing it 2015-04-14 15:35:32 +02:00
Blake Thompson
87fb41907a Added template to geometries 2015-04-09 15:22:51 -05:00
artemp
390fff5bb4 ensure we're returning the same object from multiple return paths
from_wkb now returns geometry::geometry_empty instead of throwing
update cpp_tests
2015-04-01 15:04:05 +02:00
artemp
3c2430150d add 'is_clockwise' as generic function
shape_io -- rely on RVO optimisation (remove an extra std::move)
2015-03-31 13:43:37 +02:00
artemp
4389c80d84 and finaly, rename 'new_geometry' namespace to 'geometry' 2015-03-24 14:21:28 +01:00
artemp
ac1ffa2bfb move geometry.hpp into path.hpp and update code base to reflect this change 2015-03-24 12:42:09 +01:00
artemp
0885dfb15a rename polygon3 -> polygon 2015-02-24 14:13:00 +01:00
artemp
9fed6fd571 shape.input - fix multi-polygon handling 2015-02-19 14:32:45 +01:00
artemp
33d45db318 c++ style - better syntax 2015-02-19 10:20:17 +01:00
artemp
b49b8042c1 shape.input/agg - add polygon3 support 2015-02-18 18:12:47 +01:00
artemp
133f7d04ef agg_renderer - support multi_line_strings 2015-02-18 14:26:11 +01:00
artemp
604d7b08af use reserve to pre-allocate line_strings + cleanups 2015-02-18 13:48:05 +01:00
artemp
2e4e1f71b8 adapt to use mapnik::new_geometry::geometry (shape.input only) 2015-02-18 13:21:16 +01:00
artemp
34d96f3ef2 shape.input - avoid expensive hit_test and instead use relatively cheap orientation test to distinguish
between inner and outter rings (Polygon/NultiPolygon) -- ref #2151  https://github.com/mapbox/unpacker/issues/324

```txt
A polygon consists of one or more rings. A ring is a connected sequence of four or more
points that form a closed, non-self-intersecting loop. A polygon may contain multiple
outer rings. The order of vertices or orientation for a ring indicates which side of the ring
is the interior of the polygon. The neighborhood to the right of an observer walking along
the ring in vertex order is the neighborhood inside the polygon. Vertices of rings defining
holes in polygons are in a counterclockwise direction. Vertices for a single, ringed
polygon are, therefore, always in clockwise order. The rings of a polygon are referred to
as its parts.
```
2014-12-18 11:28:28 +01:00
artemp
333965b588 update copyright year 2014-11-20 15:25:50 +01:00
Dane Springmeyer
18183aed2a fix a few -Wunused-parameter warnings 2014-10-20 22:28:40 -07:00
artemp
3ded23fbab move make_unique out of std namespace and allow building with c++14 compilers
( -std=c++1y )
2014-06-12 15:14:05 +01:00
artemp
22aa3f4aef create shape_io object per featureset to allow datasource sharing 2014-05-30 15:37:44 +01:00
artemp
ecc5acbdb9 attempt to handle multi-polygons in shape.input 2014-02-24 15:20:06 +00:00
artemp
7adee4ab36 c++11 : remove boost::make_shared includes 2013-10-17 15:09:56 +01:00
artemp
b315eb2167 + use std::shared_ptr and std::make_shared 2013-09-20 14:01:27 +01:00
artemp
d4b9a48cb1 + geometry::types Exterior/Interior polygon loops 2013-09-03 12:15:31 +01:00
artemp
4f4e2b001e Merge branch 'master' into c++11
Conflicts:
	SConstruct
	benchmark/run.cpp
	bindings/python/mapnik_datasource.cpp
	bindings/python/mapnik_feature.cpp
	bindings/python/python_optional.hpp
	include/mapnik/css_color_grammar.hpp
	include/mapnik/expression_grammar.hpp
	include/mapnik/feature.hpp
	include/mapnik/feature_style_processor_impl.hpp
	include/mapnik/image_filter_types.hpp
	include/mapnik/image_util.hpp
	include/mapnik/json/geometry_generator_grammar.hpp
	include/mapnik/json/geometry_grammar.hpp
	include/mapnik/processed_text.hpp
	include/mapnik/tiff_io.hpp
	include/mapnik/util/geometry_svg_generator.hpp
	include/mapnik/util/geometry_wkt_generator.hpp
	include/mapnik/utils.hpp
	include/mapnik/webp_io.hpp
	include/mapnik/wkt/wkt_grammar.hpp
	plugins/input/shape/shape_datasource.cpp
	plugins/input/shape/shapefile.hpp
	src/expression_grammar.cpp
	src/expression_string.cpp
	src/image_util.cpp
	src/json/feature_collection_parser.cpp
	src/json/feature_parser.cpp
	src/miniz.c
	src/symbolizer_helpers.cpp
	src/tiff_reader.cpp
	src/webp_reader.cpp
	tests/cpp_tests/geometry_converters_test.cpp
	tests/cpp_tests/image_io_test.cpp
	tests/cpp_tests/map_request_test.cpp
	tests/python_tests/image_test.py
	tests/visual_tests/test.py
2013-08-30 09:46:09 +01:00
Dane Springmeyer
0365d3e081 start centralizing filesystem operations in mapnik::util::fs - refs #1177 2013-06-02 19:28:24 -07:00
artemp
c73e48fa58 + use std::unique_ptr instead of std::auto_ptr (deprecated!) 2013-04-19 09:50:50 +01:00
Dane Springmeyer
5b3cca9d44 remove used variables 2013-03-11 12:59:11 -07:00
artemp
e9f03a565f + explicit polygon path closing 2013-03-01 11:08:58 -05:00
artemp
274fbf8f7a + ensure 'close path' handled correcly
(currenlty SEG_CLOSE command must have valid x,y)
+ implement real_policies in wkt and geojson generators
2012-12-18 11:44:35 +00:00
artemp
02bb955b59 + simplify and refactor shape featuresets to be more resilient to various
quirky shapefiles.
+ fix io navigation functions to use std::streampos
2012-12-11 09:37:53 +00:00
Dane Springmeyer
a12b8f1d2f c++ style 2012-09-03 10:27:48 -07:00
artemp
618bc1ba0f + close polygon 2012-07-26 15:20:23 +01:00
artemp
4ddddba254 + use pre-increment op 2012-07-26 11:58:48 +01:00
artemp
690b56a511 + use std::auto_ptr 2012-07-26 11:57:41 +01:00
kunitoki
74342e3083 - no need to #ifdef all the time: the compiler should optimize out the log calls when no MAPNIK_LOG is defined
- initially got rid of those ifdefs in plugins only
2012-04-09 12:05:49 +02:00
kunitoki
8c58a9aa73 - improved again the logging facilities
- aligned the plugins to using the new methods with severity
- implemented per object severity, with fallback to global (with global functions to set them programmatically)
- initial check in of logger python bindings (todo)
2012-04-09 03:00:51 +02:00
kunitoki
1f351e0e09 implement new debug system 2012-04-08 02:20:56 +02:00
Dane Springmeyer
b36739fd88 apply mapnik_format.el formatting 2012-03-13 07:59:22 -07:00
Dane Springmeyer
5bdaf44a7a Revert "shape: check if multiple parts are interior rings or separate"
This reverts commit faaa4f6e3f.
2012-02-26 22:11:22 -08:00
Dane Springmeyer
820b9a2b25 merge master with feature_impl 2012-01-17 17:47:27 -05:00
Dane Springmeyer
6a2a847c3b remove unused shx code 2012-01-17 10:06:59 -05:00
Dane Springmeyer
b0d0d06564 finish refactor, moving to separate method off datasources to get_geometry_type and using enums all around 2012-01-17 01:09:46 -05:00
Artem Pavlenko
faaa4f6e3f shape: check if multiple parts are interior rings or separate
polygons. Currently only test if first coordinate inside exterior
ring and assume first ring is exterior.

If this approach is not robust enough we can calculate ring orientations
instead. Shape file convention is: CW - exterior, CCW - interior.

very simple
2012-01-05 16:24:38 +00:00
Artem Pavlenko
02dce6a756 make shape_io work with geometry_container concept 2011-12-09 12:25:13 +00:00
Dane Springmeyer
ce9e44b5f2 plugin code formatting based on emacs format in utils/format_source_files 2011-11-13 19:37:50 -08:00
kunitoki
a7b67566b2 - modified coding style in shape plugin 2011-10-22 15:27:28 +02:00
Artem Pavlenko
7a00511a56 + cleanup 2011-08-12 16:43:21 +00:00