Hi Carlos, (inline)
2010/3/31 Carlos Enrique López Garcés <[email protected]>: > > Good evening Mr. Pavlenko > > Here's what I understand about your ideas: > > There are currently two main renderers, one based on Cairo and the other on > AGG. The idea is to develop a third one that would not use this kind of > graphics libraries, but rather use SVG as output. Correct. Two main concerns drive > this initiative: Performance and scalability. The main goal would be to output optimised SVG with a finer control. This can't be achieved with cairo backend. Some important features would be - layers, embedded/external symbols/fonts. While cairo_renderer can output SVGs they are is not very useful for post-editing in Adobe Illustrator, Inkscape etc. So I see main concerns in this order : 1) Optimised/User friendly SVG 2) Improved performance (more below) > Concern #1: Performance. In your first reply to this thread, you mention > that the Cairo-based renderer is kind of slow, so an SVG output generator > using Boost.Spirit.Karma would be considerably faster. I read that both > Cairo and AGG are able to do it, but Spirit would increase performance, > right? Yes, using boost::spirit::karma should result in better performance. > Concern #2: Scalability. Since the main virtue of SVG is that of making the > image scalable, this feature would be relatively straightforward to > implement. Furthermore, SVG is a common format, widely used by many > applications (Inkscape and Adobe Illustrator, for instance). Yes, SVG is by definition scalable. > About the implementation, I understand that agg_renderer and cairo_renderer > are subclasses of feature_style_processor. This class does the basic > processing of the map, iterating over its defined layers and rules. The > subclasses (cairo_renderer and agg_renderer) are responsible of defining the > way each symbolizer is rendered, using each a different API (Cairo and AGG, > respectively). The svg_renderer would be based on Spirit to produce the > image in XML format. Correct. > > I haven't read about how an SVG image can be embedded in a PDF file. My > question is, would this require the implementation of a separate PDF > renderer for SVG, just as Robert Coup says about a Cairo-based one? > OK, SVG->PDF needs some r&d, it should be easy, though. re:Cairo - it hasn't fine control required to implement features we're discussing, Robert could verify this please? > Thanks, > > Carlos Enrique López Garcés > Regards, Artem > 2010/3/29 Artem Pavlenko <[email protected]> >> >> Hi Carlos, >> >> Thanks for your research! >> (replying inline re: svg_renderer) >> >> .... >> >> Ticket #320 (SVG-Based Symbolizers): I don't have enough information to >> >> comment here, but Mr. Pavlenko said he is interested in an SVG >> >> renderer. >> >> >> > >> > Yes, this one is hard and my feeling is that it is not within the scope >> > of >> > GSOC, but I'd be happy to be wrong. The main functionality here is >> > already >> > implemented, but the Mapnik developers need to discuss further about the >> > approach. I think that Artem is interested in using the more basic >> > support >> > inside AGG for reading/rendering SVG instead/in addition to RSVG, but we >> > should hear more from him. >> > >> > Also, I think his idea for an SVG renderer is different. #320 is about >> > being >> > able to read/render SVG symbols and I think what an 'svg_renderer.cpp' >> > would >> > be about is writing a new output renderer that would be very good at >> > authoring SVG (better than Cairo). This could be very very useful for >> > Nicholas and others than desire optimal SVG output for post-processing. >> > I >> > think Nicholas used the PDF output in the past over SVG because Cairo's >> > PDF >> > output is slightly better supported than SVG, though SVG may be more >> > desirable/flexibly for post-processing in general. >> > >> >> Dane, you're right I was thinking about svg_renderer which would >> extend feature_style_processor e.g >> >> struct svg_renderer : feature_style_processor<svg_renderer> {} >> >> and would render to SVG file. There are some nice features we can add >> like - simplifications, smoothing etc. Perhaps different policies to >> control how SVG elements constructed, layering, embedded >> fonts/symbols. >> Also, it would be possible to load and edit such SVG in popular apps >> like Illustrator, Inkscape. Implementation can be based on existing >> agg and cairo renderers. >> >> Thinking more about SVG based symbols, I reckon it would be feasible >> to implement this over summer. I can certainly provide guidance and >> help on this one. I just now modified svg_test which comes with agg2.4 >> ( adding css color parsing from mapnik) and I was able to display >> demo.svg (generated with rundemo.py). Most building blocks are already >> there. For I/O we can re-use existing XML parsing framework (mapnik) >> and add fast spirit based parser for <path .../> elements for example. >> Sounds like fun to me;). >> >> Thoughts? >> >> Regards, >> Artem > > _______________________________________________ Mapnik-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/mapnik-users

