Commit graph

3786 commits

Author SHA1 Message Date
Artem Pavlenko
cacea81bce 1. check if plug-ins path is a directory
2. wrap dynamic loading into try/catch to play nicer on win32
2007-04-25 08:59:57 +00:00
Artem Pavlenko
5daa49ff41 forward declare ltdl stuff 2007-03-22 10:55:43 +00:00
Artem Pavlenko
e0d243dcec 1.Added support for building on Darwin (Xcode 2.4.1, gcc4.0.1).
Mainly taming gcc4.0.1 (anonymous enum bug)

2.Input plug-ins now have .input extension on all platforms
2007-03-16 10:11:37 +00:00
Artem Pavlenko
4cc771546d small cleanup 2007-02-25 10:54:36 +00:00
Artem Pavlenko
2d256166b4 Store text attributes as USC-2 encoded std::wstring 2007-02-14 19:54:39 +00:00
Artem Pavlenko
d024c86b1b Restored support for the text displacement (point placement only at moment) 2007-02-09 16:32:44 +00:00
Artem Pavlenko
e016bd61f8 Added transcoder based on iconv. Internally we use UCS-2 at the moment.
* Postgis plug-in determines encoding by querying 'client_encoding' parameter (libpq). 
 * Shapfiles (dbf!) don't store character encoding information. Users can apply 'encoding' parameter at datasource creation stage (defaults to Latin1 (ISO-8859-1))
 * Raster plug-in utf-8
2007-02-06 14:27:21 +00:00
Artem Pavlenko
085f832a77 in query_point method expect (x,y) in Map coordinate system 2007-01-16 15:18:25 +00:00
Artem Pavlenko
199f3f6c12 include Layer instead of forward declaration 2007-01-11 17:19:51 +00:00
Artem Pavlenko
85f4bfc697 added queryable property and visible method to Layer (Python) 2007-01-09 11:23:19 +00:00
Artem Pavlenko
bb035bdc54 don't project query point if host projection is geographic 2006-12-31 11:42:57 +00:00
Artem Pavlenko
4772a16eb6 boost/filesystem.hpp is not in boost 1.33.1
reverted to <boost/filesystem/operations.hpp>
2006-12-30 21:48:15 +00:00
Artem Pavlenko
37ebe481c9 1. is_regular is not supported in boost 1.33.*
2. cleanups
2006-12-21 22:51:53 +00:00
Artem Pavlenko
b5cf9da686 1.added more accessors
2.in tiff_reader check for valid file prior opening.
2006-12-20 00:22:45 +00:00
Artem Pavlenko
77854e7d76 use PNG_MMX_CODE_SUPPORTED instead of PNG_ASSEMBLER_CODE_SUPPORTED (mmx.patch from Dominic Hargreaves) 2006-12-18 10:27:09 +00:00
Artem Pavlenko
31442b6bac Added DESTDIR option which is used as an additional prefix for the purposes of
installing files. It is useful for binary distributions (eg
RPM etc). Thanks to Dominic Hargreaves!
2006-12-17 12:05:47 +00:00
Artem Pavlenko
c7c4659e30 check if featureset is valid before passing to filter_featureset 2006-12-07 15:02:08 +00:00
Artem Pavlenko
05424a5f12 added query_point method that accepts lat,lon coordinates :
>>> for f in m.query_point([ layer.name for layer in m.layers ].index('world'),51,0):
...     print f
...

feature (
  f_code:FA001
  fac_id:193
  id:3147
  na2:UK
  na3:E
  nam:ENGLAND
  tile_id:10
)

>>>
2006-12-06 21:21:17 +00:00
Artem Pavlenko
af44541598 implemented query_map_point method on map object:
fs = m.query_map_point(x,y)  # Map (screen) coordinates
   for feature in fs:
       print feature

TODO: provide interface to feature in Python, at the moment only __str__ implemented which dumps attributes
2006-12-06 20:26:59 +00:00
Artem Pavlenko
dcfe5d3fad oops, fixed 2006-12-05 13:15:43 +00:00
Artem Pavlenko
00fd2a9f00 1. placement_finder.cpp
fixed 'for' loops to work correctly when geom->num_points() < 2
    always use prefix increment even for built-in types (good practice!)
    e.g ++i 

2. agg_renderer.cpp 
    check for number points in geometries when 
    applying text/shield_symbolizer.
2006-12-05 00:16:05 +00:00
Artem Pavlenko
a688c06035 added support for PolygonPatternSymbolizer 2006-12-04 11:36:39 +00:00
Artem Pavlenko
bbab2d90bf fixed png reader bug :
fill alpha channel with 0xff on expansion
2006-12-01 15:23:19 +00:00
Artem Pavlenko
c6ee7ce438 trim strings at data source level 2006-12-01 10:37:15 +00:00
Artem Pavlenko
4d4e9f5d91 Tiling patch from Toby allows for a selected pixel region within an extent
to be rendered. This allows for a large extent (larger than can be
rendered into a single image in memory) to be rendered out as tiles.
Since the full extent is used for the placement calculations text
crossing tile boundaries will be consistent.

This method is a little inefficient when a large number of labels need
placed, an improved method would be to cache these placements between
tiles, but the attached is a start.

c++ users should simple call the render method with a start X and Y
coordinate specified, 

for (int TileX = 0;TileX < 5;++TileX)
{
	for(int TileY = 0;TileY < 5; ++TileY)
	{
		int TileSize=250;
		int StartX = TileX*TileSize;
		int StartY = TileY*TileSize;
		
		Image32 buf(TileSize,TileSize);
		agg_renderer<Image32> ren(m,buf,StartX,StartY);
		
		ren.apply();
		char name[324];
		sprintf(name,"tile_%d_%d.png",TileX,TileY);
		ImageUtils::save_to_file(name,"png",buf);
	}
}

python users should call render_tile_to_file

for y in range(tile_count_y):
	for x in range(tile_count_x):
		if not os.path.exists("tiles/%d/%d/" % (map_scale, y)):
			os.makedirs("tiles/%d/%d/" % (map_scale, y))
		render_tile_to_file(m, x*tile_size, y*tile_size, tile_size, tile_size,
'tiles/%d/%d/%d.png' % (map_scale,y,x), 'png')
2006-12-01 09:37:37 +00:00
Artem Pavlenko
8c374a22a6 Label position tolerance and text spacing patch from David Leaver. Thanks! 2006-11-29 10:44:42 +00:00
Artem Pavlenko
6b88293808 use 2*M_PI for max_char_angle_delta normalizing. 2006-11-28 22:24:24 +00:00
Artem Pavlenko
7ee890bc12 define M_PI if undef 2006-11-28 10:38:56 +00:00
Artem Pavlenko
6fd7d3e488 use libpng native alloc/dealloc
(/valgrind-new-delete2.patch from Jon Burgess)
2006-11-28 00:13:31 +00:00
Artem Pavlenko
f1393cc019 1. hit_test implementation for geometry objects:
bool hit_test(double x, double y, double tol);
       
2. added image_view(unsigned x, unsigned y, unsigned width, unsigned height)
   allowing to select region from image data e.g (in Python):

    im = Image(2048,2048)
    view = im.view(0,0,256,256)
    save_to_file(filename,type, view)
    
3. changed envelope method to return vy value in datasource classes

4. features_at_point impl for shape and postgis plug-ins
2006-11-25 11:02:59 +00:00
vspader
a6994cfc45 Fixed up text placement.
Removed the patch for better cornering from r365,
since it wasn't working properly.
2006-11-22 22:09:11 +00:00
Artem Pavlenko
1c5eeb19af added basic support for unicode string 2006-11-22 22:01:37 +00:00
Artem Pavlenko
ebdd0f6030 disable clog printing in release mode. Pass -DMAPNIK_DEBUG to enable. 2006-11-19 17:13:33 +00:00
Artem Pavlenko
004f720fbd commented out usage of rasterizer_outline_aa for strokes <= 1.0 2006-11-18 16:47:29 +00:00
vspader
d7b94f5d8c Added avoid_edges property to shield and text symbolizers.
If this is enabled, no shield/text symbolizers will be cut off
at the edges of the image.
2006-11-17 14:07:41 +00:00
Artem Pavlenko
81fbe706a6 fixed scale_denomitator 2006-11-17 02:01:21 +00:00
Artem Pavlenko
bf297ec3ca 1.upgrade to latest agg2.4
2.added default PointSymbolizer in load_map.cpp
2006-11-09 23:44:34 +00:00
Artem Pavlenko
e7bab0b8c8 1. fixed vertical alignement (??)
2. initialize overlap_ in ctor
2006-11-08 20:58:40 +00:00
Artem Pavlenko
889ac41694 Patch from Toby: adds a maximum angle delta for text placement (if the
angle changes too much between characters it finds an alternate
placement), this is specified in the max_char_angle_delta property in
radians (feel free to change it to degrees).

It also improves the text placement around corners trying to minimise
the distance between the center of the character and the line on each
side. This is the major portion of the patch.
2006-11-04 10:38:24 +00:00
Artem Pavlenko
e924b597f4 1. patch from Toby that allows repeated labels to be placed on a line
geometry (such as roads)
2. restored text labels for point geometry.
3. process 'spacing' attribute in load_map.cpp
2006-11-01 23:17:05 +00:00
Artem Pavlenko
d7fcefc848 1. applied text-wrap patch from Robert Coup. Thanks!
2. by default use tinyxml as a property_tree parser
3. modified load_map.cpp to allow to test new features
2006-10-27 17:29:39 +00:00
Artem Pavlenko
c091289ffa added extra check to compile on x86_64 Gentoo.
&& defined(PNG_ASSEMBLER_CODE_SUPPORTED)

Thanks to Vincent Schut!
2006-10-26 20:23:12 +00:00
Artem Pavlenko
62a0fb5f89 support for ShieldSymbolizer and LinePatternSymbolizer tags 2006-10-26 20:20:41 +00:00
Artem Pavlenko
a3817cc362 added missing projection transformation for label placement.
TODO: move to geometry class to always return transformed label position
2006-10-21 12:16:19 +00:00
vspader
118e8f0d52 Added face_name parameter to text and shield symbolizers,
which specifies the font face to be used for rendering.
New constructor is: text_symbolizer(name, face_name, size, ...)
2006-10-19 17:11:45 +00:00
Artem Pavlenko
7cae55f73f * trim leading and trailing whitespace from all strings before
rendering them as labels when using the text or shield symbolisers
  (blame my horrible datasets)
* correctly recognise the Postgis "text" data type (it was in
  postgisfs.cpp just not postgis.cpp) - my initial workaround to the
  above was "SELECT trim(from label) AS label ..." which failed
  miserably because it returned a text data type. 

Thanks to Robert Coup for the patch!
2006-10-19 09:24:26 +00:00
Artem Pavlenko
69bde0b206 added scale_denominator calc + great-circle distance
(needs checking with different projections)
2006-10-18 22:44:37 +00:00
Artem Pavlenko
110016fe78 1. refactored proj stuff into separate files
2. added is_geographic property
3. added basic support for text_symbolizer in load_map
2006-10-17 17:26:35 +00:00
vspader
f76079f15b 1) Added line following labels. Use set_label_placement(POINT_PLACEMENT) or set_label_placement(LINE_PLACEMENT) on a text symbolizer.
2) Added placement_finder class so labels try to avoid each other.
3) Added Shield Symbolizer which is essentially a combined image/text symbolizer.
2006-10-17 14:12:53 +00:00
Artem Pavlenko
bb235fa316 1.added projection transformation support based on proj4 (new dependency!!!)
Map and Layer objects both have a new parameter 'srs', initialized to "+proj=latlong +datum=WGS84" by default. 
    
  Basic usage (Python):
    p = Projection("+proj=merc +datum=WGS84")
    point = p.forward(Coord(-2,51))
    ...        
2.reflected arithmetic operators for Envelope/Coord into Python
3.altered return policies for python objects
4.modified build system to require proj4 lib and headers
2006-10-16 13:44:52 +00:00
Artem Pavlenko
1988181bd7 added operators +,-,*,/ 2006-10-16 13:31:52 +00:00
Artem Pavlenko
72e296945f added <ElseFilter/> tag support in map loader. 2006-10-09 20:49:56 +00:00
Artem Pavlenko
9cc2237290 in remove_all clear all styles as well! 2006-10-09 10:29:57 +00:00
Artem Pavlenko
e2d645ad80 simplified coord transformation interface. 2006-10-09 09:52:15 +00:00
Artem Pavlenko
b2ce94166b added remove_all 2006-10-09 09:43:09 +00:00
Artem Pavlenko
c8042c959f removed boost::foreach.hpp 2006-10-04 18:54:27 +00:00
Artem Pavlenko
a71c36ec2e BOOST_FOREACH is not released yet, revert to std::const_iterator 2006-10-04 13:57:08 +00:00
Artem Pavlenko
992af4747d 1. move include to mapnik/include
2. update demos,bibdibgs etc.
2006-10-04 11:22:18 +00:00
Artem Pavlenko
c1cce2742f added missing header 2006-10-03 10:04:28 +00:00
Artem Pavlenko
0c32c2bf4a update build system to include map_{load,save} 2006-10-03 10:03:31 +00:00
Artem Pavlenko
8328424af5 1. datasource is now a property of Layer object.
2. modified python/c++ demos to reflect the above.
3. removed large 'blobby' mapnik.hpp (compilation times!!!)
2006-10-03 08:44:04 +00:00
Artem Pavlenko
88892c196b added save/load functionality based on boost::property_tree (aka ElementTree in c++) 2006-10-03 08:39:43 +00:00
Artem Pavlenko
c0fa1a6004 * create_filter moved to core lib
* modified demo/c++/rundemo.cpp to reflect the above
2006-09-17 19:45:01 +00:00
Artem Pavlenko
2f360a6549 1.removed map width/height from query interface
2.small cleanups
2006-09-12 14:29:22 +00:00
Artem Pavlenko
31d04c3131 added support for building on x86_64 platform e.g. /usr/lib64 etc. 2006-09-06 09:14:41 +00:00
Artem Pavlenko
26a406706e wrap C headers with :
extern "C" 
{
 // 
}
2006-08-31 21:32:07 +00:00
Artem Pavlenko
4ae66cef36 small cleanup 2006-08-23 20:34:24 +00:00
Artem Pavlenko
72fae1daa1 1. removed dependency on boost_serialization ( we don't really need it) at this time.
2. coord and envelope operator<< to use 16 digit precision.
3. added 'inside polygon' method impl.
2006-08-20 18:49:22 +00:00
Artem Pavlenko
0bb121a747 formatting mostly 2006-07-24 20:08:32 +00:00
Artem Pavlenko
1cacabdc2b corrected operator= 2006-05-30 21:59:47 +00:00
Artem Pavlenko
ffe47e4816 1. return shared_ptr from point_symbolizer
2. small cleanup
2006-05-26 13:11:31 +00:00
Artem Pavlenko
10b7debd72 oops..layer.cpp got broken by mistake, reverting back. 2006-05-24 22:15:04 +00:00
Artem Pavlenko
b73ca350fb added const Style iterators to Map 2006-05-23 17:23:20 +00:00
Artem Pavlenko
d0ddc88253 1. move parameters to datasource
2. general cleanup
2006-05-23 16:52:10 +00:00
Jean-Francois Doyon
799d5d9691 - Fix a bug with missing version.
- Add support for layer title and asbtract to c++ and python
- Make WMS server use above changes, edit docs
2006-05-22 17:00:35 +00:00
Artem Pavlenko
ef5931d915 added default point_symbolizer 4x4px black square 2006-05-22 10:30:55 +00:00
Artem Pavlenko
f59a949464 replaced tabs with spaces 2006-05-19 16:09:32 +00:00
Artem Pavlenko
d3a8570a78 added set_name method 2006-05-19 16:07:13 +00:00
Jean-Francois Doyon
4705e9526e Oops, that previous problem was from local modifications, setting everything back to normal.
Sorry!
2006-05-03 23:56:47 +00:00
Jean-Francois Doyon
5775a9be0e Switched from <fstream.h> to <fstream> as per the warning the compiler gave me, and the C++ standard. 2006-05-03 23:46:32 +00:00
Artem Pavlenko
62019e0849 small cleanup 2006-04-22 19:37:59 +00:00
Artem Pavlenko
cdc48edfd6 1. validate image reader
2. open files in binary mode (win32)
2006-04-05 08:27:45 +00:00
Artem Pavlenko
61fd258fd1 changing licence from GPL to LGPL 2006-03-31 10:32:02 +00:00
Artem Pavlenko
ead91700c2 small optimization 2006-03-31 08:55:35 +00:00
Artem Pavlenko
bb606d04f5 added non-const getLayer 2006-03-28 15:39:38 +00:00
Artem Pavlenko
8986108775 added set_datasource method (TODO!!!)
fixed pointz in shapeindex
2006-03-28 08:29:36 +00:00
Artem Pavlenko
fce4076ad5 refactored font engine to export symbols correctly on win32 2006-03-23 11:54:50 +00:00
Artem Pavlenko
ddaa9b5368 removed unused static gamma member 2006-03-22 15:57:12 +00:00
Artem Pavlenko
f69ac02a65 removed unused files 2006-03-22 15:53:38 +00:00
Artem Pavlenko
3848515e6e removed unused files 2006-03-22 15:48:54 +00:00
Artem Pavlenko
e21c3b36f6 removed save and load to text archive functionality to keep x86_64 build happy 2006-03-19 21:59:16 +00:00
Artem Pavlenko
673bd4bc19 replaced cout and cerr with clog (by default redirected to cerr) 2006-03-19 21:53:47 +00:00
Artem Pavlenko
e8d68b615e removed unused text.{hpp,cpp} 2006-03-19 21:51:40 +00:00
Artem Pavlenko
89cad86d8e added anchor and displacement to text_symbolizer 2006-03-10 12:08:55 +00:00
Artem Pavlenko
cba1063346 fixed label bbox calc 2006-03-08 23:03:19 +00:00
Artem Pavlenko
0f3fcc7f34 updated text symboilizer
fixed memory leak in FT_Glyph
2006-03-01 15:16:45 +00:00
Artem Pavlenko
3818da6bc5 added quad_tree implementaion 2006-02-27 21:25:25 +00:00
Jean-Francois Doyon
34dc842d2d Reworked all the svn:ignore properties. They are all set explicitely now, and nothing should be left unacounted for.
Changed SConstruct to use freetype-config.  Updated INSTALL to reflect.

Added a RAM requirement for building in the INSTALL doc.

Fixed some python styling and added some basic docstrings.
2006-02-26 21:47:35 +00:00
Artem Pavlenko
9de253198b 1.python bindings updated to reflect symbolizers changes
2.added label collision detector ( TODO - proper impl!)
2006-02-25 11:03:30 +00:00
Artem Pavlenko
1728bdbc7e added:
1. start/end map/layer handlers 
2. some cleanups
2006-02-21 20:17:08 +00:00
Artem Pavlenko
bd173527a0 added font_engine impl - work in progress:) 2006-02-21 19:55:24 +00:00
Artem Pavlenko
9f8460fb0b changed headers order to keep boost::serialization (1_33_0) happy! (trunk) 2006-02-13 20:28:21 +00:00
Artem Pavlenko
e3c1365043 some line rendering fixes and optimizations 2006-02-11 00:39:50 +00:00
Artem Pavlenko
aed5516197 1. new feature model - based on boost::property_map concept
f = feature(id);
       f["name"] = "what is my name?";
       boost.put(f,"area",123123.4325);
       
2. simplified and corrected value class and operators
3. updated input plug-ins to work with new features
4. add text_symbolizer (getting there:)
5. template version of agg_renderer 
6. attribute_collector how accepts rules 
	(to collect attribute names for text labels)
2006-02-10 17:13:02 +00:00
Artem Pavlenko
6a4070a32a added raster_symbolizer 2006-02-07 16:16:54 +00:00
Artem Pavlenko
af2601eea0 1. new style/feature processor abstraction allowing plugable backends.
(to construct custom 'Output' derive from feature_style_processor (CRTP) e.g
	class MyOutput : public feature_style_processor<MyOutput>
     and implement:
	 process(***_symbolizer const&, Feature const&)
     methods
   At the moment only AGG renderer is implemented
2006-02-07 14:41:41 +00:00
Artem Pavlenko
2a858bcd19 1.removed named_style_cache
2.styles moved to Map object
2006-02-05 09:45:51 +00:00
Artem Pavlenko
d8dc53bcf4 new build system 2006-01-31 23:09:52 +00:00
Artem Pavlenko
c97fb0bf57 added check for num_points in line/polygon symbolizers:
1. don't bother with line_symbolizer unless at least 2 points
2. at least 3 points for polygon_symbolizer
2006-01-31 17:35:18 +00:00
Artem Pavlenko
6b7d874ff3 1.corrected set_rectangle and set_rectangle_alpha to use envelope intersection for proper clipping
2. clean up render.cpp
2006-01-28 16:05:51 +00:00
Artem Pavlenko
0875208c5b some minor changes (+fast line rendering needs fixing clipping) 2006-01-26 16:46:56 +00:00
Artem Pavlenko
db433452b6 switched on optimization in png writing code 2006-01-26 16:44:46 +00:00
Artem Pavlenko
b89195f9e6 added label_position method for geometry objects (todo line_string) 2006-01-26 16:43:10 +00:00
Artem Pavlenko
a6f96ea5c1 changed symbolizer interface to accept 'feature' and CoordTransform, instead of
geometry (feature centric OGC model:).
2006-01-23 22:33:37 +00:00
Artem Pavlenko
245be985e2 1.symbolizers refactored - split into hpp/cpp
(all AGG is private to libmapnik and not exposed to client code) 
2.removed unused files (more todo)
3.added line pattern symbolizer to python bindings
2006-01-23 13:24:41 +00:00
Artem Pavlenko
390b9c4655 1.added line pattern symbolizer
2.added layer envelope check in main rendering loop
2006-01-23 10:33:32 +00:00
Artem Pavlenko
119c352fe7 added alpha blending for image copying 2006-01-01 17:41:55 +00:00
Artem Pavlenko
955ff4c4f5 1. fixed shape datasource bug - attributes were ignored for point/pointz/pointm types
2. use boost::thread for mutex/lock 
3  use boost::noncopyable
4  build agg as a shared lib for now
5. corrected panning code in map.cpp
6. improved coord_transform
2005-12-23 12:31:54 +00:00
Artem Pavlenko
ec9b301364 removed unused headers 2005-12-16 16:08:41 +00:00
Artem Pavlenko
3814396eea removed erroneous break statement (was added to render OS MasterMap) 2005-12-14 20:33:14 +00:00
Artem Pavlenko
6f9528c2e3 1.added serialization support
2.some class names changes
2005-12-14 17:01:09 +00:00
Artem Pavlenko
a6191fade0 1. corrected LIBS in SConsctipt files
2. use boost::shared_ptr instead of ref_ptr
2005-12-12 13:15:33 +00:00
Artem Pavlenko
2d08614042 return object in envelope() 2005-12-01 10:06:40 +00:00
Artem Pavlenko
aaba4d08cf check datasource in envelope method 2005-11-30 00:24:08 +00:00
Artem Pavlenko
7f4df91371 check for valid datasource in the main loop 2005-11-30 00:21:07 +00:00
Artem Pavlenko
01f9df9b43 added feature factory 2005-11-24 15:51:29 +00:00
Artem Pavlenko
70f79a3e19 fixed path portability issue 2005-09-09 09:38:37 +00:00
Artem Pavlenko
e9fff475be try to dlopen any file in datasources dir 2005-09-08 13:52:42 +00:00
Artem Pavlenko
f5dda2f207 1. more pythonic feel:)
2. added CSS color string  parser and  color factory
3. added docs dir
2005-09-08 13:20:37 +00:00
Artem Pavlenko
820b6bb23a return ref_ptr<Feature> from datasource next() method
should play better with python
2005-09-08 13:09:04 +00:00
Artem Pavlenko
03467ac96e removed unused color.cpp 2005-09-08 13:05:39 +00:00
Artem Pavlenko
c946127bba removed unused color.cpp 2005-09-08 13:04:36 +00:00
Artem Pavlenko
b20007b440 gcc4.0.1 doesn't like volatile locals? 2005-08-31 19:30:54 +00:00
Artem Pavlenko
c7f9d1e568 1.polygon_symbolizer + using agg rasterrizer
2.render.cpp - exit rules loop (mastermap styles-?? not sure)
3.pre-allocate space for attributes
2005-06-24 08:39:47 +00:00
Artem Pavlenko
32c76d5a5f 1.added copyright notice to SConstruct/SConscript files
2.fixed include/libs in datasources
3.revived shapeindex utility (+ boost::program_options)
2005-06-17 12:40:51 +00:00
Artem Pavlenko
a8ec856a15 initial import 2005-06-14 15:06:59 +00:00