Hi David, Great, thanks very much for contributing to Mapnik! I applied your patch against latest trunk ( r1340 ) and everything builds/runs fine. I'm yet to try new parameters, though. I might apply your changes to the trunk so we can have a play.
Regards, Artem PS. Please, consider subscribing to mapnik mailing lists 2009/10/18 David Eastcott <[email protected]>: > I have attached some changes that I thought would enhance mapnik. I've > generated the diff set against trunk version 1331 and are attached. I did > not attempt to modify the other interface or subsystems (python or cario) to > support the new/changed parameters. If you have any questions, please do > not hesitate to contact me. > > Best regards, > Dave > > Change log: > > 1. Modified Text Symbolizer > > a) corrected line fragment centering (for 2nd and subsequent lines, when > line breaks occur). > > b) adjusted vertical alignment calculation so that: > i) middle -> has the center of the text line(s) at the point > origin > ii) bottom -> has the text line(s) below the point origin > iii) top -> has the text line(s) above the point origin > > c) added new text_symbolizer attribute: 'wrap_before', value range: > true/false, default == false > > allows line breaks at first wrap_char before wrap_width as an > alternative to the original > which was to create the line break at the first wrap_char after > wrap_width > > d) added new text_symbolizer attribute: 'horizontal_alignment', value > range: left/middle/right, default == middle > i) left -> has all text line(s) to left of the point origin > ii) middle -> has all text line(s) centered on the the point > origin > iii) right -> has all text line(s) to the right of the point origin > > NOTE: dx, dy position adjustments are applied after alignments and > before Justify. > > e) added new text_symbolizer attribute: 'justify_alignment', value range: > left/middle/right, default == middle > i) left -> after alignments, has all text line(s) are left > justified (left to right reading) > ii) middle -> after alignments, has all text line(s) center > justified > iii) right -> after alignments, has all text line(s) right > justified (right to left reading) > > f) added new text_symbolizer attribute: 'opacity', value range: 0.0 thru > 1.0; 1.0 == fully opaque > > g) modified positioning to compensate for both line_spacing and > character_spacing, to ensure proper > centering of the text envelope. Also ensure that centering occurs > correctly even if no wrapping > occurs. Line spacing is uniform and consistent and compensates for > errors between text_size and > the actual size (ci.height is inconsistent, depending on case and > character); fixes issue with > multi-line text where some lines have a slight gap and others are > compressed together. > > > 2. Modified shield_symbolizer > > a) added the attributes: > i) allow_overlap > ii) vertical_alignment > iii) horizontal_alignment > iv) justify_alignment > v) wrap_width > vi) wrap_character > vii) wrap_before > viii) text_convert > ix) line_spacing > x) character_spacing > xi) opacity > > b) added new shield_symbolizer attribute: 'unlock_image', value range: > true/false, default == false > i) false == image and text placement behaviour same as before > ii) true == image placement independant of text, image is always > centered at geometry point, text placed per attributes, > dx/dy only affect text. > > Allows user to create point markers with text, but both the text and > image rendering collision detection are done > as a pair (they come and go together - solves problem if using > point_symbolizer and text_symbolizers where one or the > other are omitted due to overlaps, but not both) > > c) extended choices for the attribute 'placement' to include vertex; > effect is limited to the shield_symbolizer > > Allows an attempted placement at every vertex available, gives > additional shield placement volume when using line geometry > > d) ensured that the text placement was not updating the detector unless a > shield image was actually placed. > > e) added new shield_symbolizer attribute: 'no_text', value range: > true/false, default = false > > When set true, the text for the feature is ignored ('space' > subsituted) so that pure graphic symbols can be used > and no text is rendered over top of them. > > > _______________________________________________ > Mapnik-devel mailing list > [email protected] > https://lists.berlios.de/mailman/listinfo/mapnik-devel > > _______________________________________________ Mapnik-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/mapnik-devel
