Changes between Version 1 and Version 2 of GSoC_SVG_Symbols_report_20090816


Ignore:
Timestamp:
Aug 16, 2009, 5:00:52 AM (15 years ago)
Author:
kiranvarma
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GSoC_SVG_Symbols_report_20090816

    v1 v2  
    1 '''Work Done'''
    2 =========
     1== Work Done ==
    321. Brushing of C++
     3
    442. Compiled the MapServer code on Linux and Windows from source.
     5
    563. Explored the MapServer functionality and codebase through the documentation.
     7
    684. Read up about SVG syntax, parsing and rendering.
     9
    7105. Researched on various non-intrusive open source graphics libraries that support SVG (Libsvg-cairo, cairo, Librsvg and AGG(Anti-Grain Geometry)). The research involved finding the dependencies, functionalities, integratability and ease of use of each library. AGG was decided for in the end as it had already been integrated into the MapServer codebase in the past. Libsvg-cairo, cairo and Librsvg were pushed aside due to their large number of dependencies and for the added task of having to integrate them into the MapServer codebase unlike AGG.
    8 6. Understood, modified and added the SVG parser example from the AGG codebase into the MapServer codebase. The modifications included changing the namespaces from agg:: to mapserver::. The research included finding the subset of the SVG specification that was supported by the AGG SVG Parser example. It also included understanding the various functionaities provided by the parser and renderer.
    9 7. Wrote an RFC on the entire process of adding SVG symbol support to MapServer. The SVG details the various design decisions that were taken. The RFC can be accessed at ___.
     11
     126. Understood, modified and added the SVG parser example from the AGG codebase into the MapServer codebase. The modifications included changing the namespaces from agg:: to mapserver::. The research included finding the subset of the SVG specification that was supported by the AGG SVG Parser example. It also included understanding the various functionaities provided by the parser and renderer. The modified code is stored at a project specific sandbox that can be viewed [http://svn.osgeo.org/mapserver/sandbox/svgsymbols/ here]
     13
     147. Wrote an RFC on the entire process of adding SVG symbol support to MapServer. The SVG details the various design decisions that were taken. The RFC can be accessed [http://trac.osgeo.org/mapserver/wiki/GSoC_SVG_Symbols_SECOND_DRAFT_OF_THE_MS_RFC here].
     15
    10168. Started working on getting SVG rendering support into MapServer. This was done through the following steps:
    11         a) Modified the MapServer lexical analyzer (in maplexer.l) and added the required new keywords ('SVG' for the new type and 'SVGPATH' for the path to the SVG image).
    12         b) Modified the MapServer mapfile parser (in mapsymbol.c and mapsymbol.h) and added parsing support for identifying and getting information about the SVG type.
    13         c) Created a new bridge file (mapsymbolsvg.cpp and mapsymbolsvg.h) to integrate the SVG parser and the MapServer C code. Began the function createBrushFromSVG's implementation in the new file. This function returns a gdImagePtr (for now, we concentrate on rendering with the GD renderer) from the specified SVG file by first rendering it to an AGG pixmap and then converting it to a GD pixmap.
    14         d) Modified the various rendering functions in mapgd.c to use the new createBrushFromSVG function when a SVG symbol is found in the symbolset. Currently createBrushFromSVG is still not fully implemented and tested.
    1517
    16 '''Future Work'''
    17 ===========
     18        * Modified the MapServer lexical analyzer (in maplexer.l) and added the required new keywords ('SVG' for the new type and 'SVGPATH' for the path to the SVG image).
     19
     20        * Modified the MapServer mapfile parser (in mapsymbol.c and mapsymbol.h) and added parsing support for identifying and getting information about the SVG type.
     21
     22        * Created a new bridge file (mapsymbolsvg.cpp and mapsymbolsvg.h) to integrate the SVG parser and the MapServer C code. Began the function createBrushFromSVG's implementation in the new file. This function returns a gdImagePtr (for now, we concentrate on rendering with the GD renderer) from the specified SVG file by first rendering it to an AGG pixmap and then converting it to a GD pixmap.
     23
     24        * Modified the various rendering functions in mapgd.c to use the new createBrushFromSVG function when a SVG symbol is found in the symbolset. Currently createBrushFromSVG is still not fully implemented and tested.
     25
     26== Future Work ==
     27
    18281. I will be working on completely implementing and testing the createBrushFromSVG function and any remaining glue code.
     29
    19302. Currently all the work involves getting SVG symbols to render with the GD renderer. Once that is completed, I will move onto getting it to render with the AGG renderer.
     31
    20323. Any currently unforseen changes to the RFC will be made and some of the remaining documentation will be prepared (eg. the subset of the SVG specification supported by MapServer).