Let's suppose we want to render a SVG shape described in a SVG Path. As SVG is basically XML you can grab (read: parse) the figure coordinates from the SVG path description attribute. For this we can use the XML DOM parser, Roassal and pass just the coordinates found in the "d" attribute of the "path" node, to build more complex shapes, like the following country:
| xmlTree view | view := RTView new. xmlTree := (XMLDOMParser onURL: 'https://www.amcharts.com/lib/3/maps/svg/belgiumHigh.svg') parseDocument firstNode. ((xmlTree findElementNamed: 'g') nodesCollect: [ :node | | elem | [ elem := (RTSVGPath new path: (node attributeAt: 'd'); fillColor: Color random; scale: 0.5) element ] on: Error do: [ : ex | elem ifNotNil: [ elem model: (node attributeAt: 'title'). elem @ RTPopup. elem ] ]]) reject: #isNil thenDo: [ : e | view add: e ]. view open
That's basically code extracted from the Territorial library to easily render maps. Have you guessed it yet? Yes, it's Belgium!
0 comentarios:
Publicar un comentario