We have an existing application written in C++ that displays bitmaps (pixmaps, actually) on an embedded USB device. They chose C++ because they tell me C++ is better for communicating with devices than C# or Java (so they tell me -- I did not make this decision).
I am presently prototyping with SVG on Firefox.
They wanted to use Microsoft's XAML to render our diagrams for our application. But now we learn that there might be serious performance problems with rendering WPF/XAML to a bit map becauase it uses DirectX.
My team leader tells me to start investigating reinventing SVG by means of an XSLT that will generate C++ gdiplus code from SVG code.
Well, to be honest, I only have to reinvent a tiny subset for the diagram I'm using.
So here is an example of some SVG code which is which is causing me distress:
Fortunately, XAML and SVG are nearly identical with this path syntax.
The "M" means move to the absolute coordinates. "l" means lineto the next relative coordinates, "c" means to make a simple bezier curve with relative coordinates, etc... We have miles of this stuff we were going to render with XAML and now I have to render with C++.
At first sight, it looks like you don't understand quite well the project requirements. I don't see why you would reinvent Batik SVG renderer at all.
A quick google search showed me that there are many SVG Libraries for C++. The only one I was aware of is librsvg which seems to be available for Windows too. I believed that you had a look at this project : http://www.antigrain.com/svg/index.html.
XSL is poor when you are using it to accomplish lots of business logic. When the logic is complex, "in most cases", it's better to use an XML parser in the language you use and deal with XML elements/attributes "programmaticaly".
Thanks! I'll take a look. The reason we have to reinvent a renderer (SVG to C++ translator actually) is licensing reasons. My client will not even consider shipping any source code (as would be required by GPL for example) and they strongly discourage me from even looking at any open source software. Part of this are legal concerns, part of this is concern about being dependent on external code that cannot be controlled.