zakariachowdhury / androidsvg

Automatically exported from code.google.com/p/androidsvg
0 stars 0 forks source link

Image references missing SVG support. #49

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Load an SVG with an image element referencing an external SVG.
2. Register external resolver using SimpleAssetResolver
3. Attempt to render SVG.

What is the expected output? What do you see instead?

I expect the image to render properly of course, but instead the external SVGs 
are missing. Logcat shows "Could not locate image 'foo.svg'". External PNGs 
work fine.

What version of the product are you using? On what operating system?

This is with hg e645ba264575 Tue Aug 19 06:47:41 2014 +1200.

Please provide any additional information below.

It appears that androidsvg is using BitmapFactory.decodeStream() to attempt to 
parse the external image. That works fine for PNG, but of course fails for SVG.

SVG is required to be supported by the standard.
http://www.w3.org/TR/SVG/struct.html#ImageElement

I'd be inclined to change the SVGExternalFileResolver API, as it currently 
returns a Bitmap, which is only appropriate for raster images.

Original issue reported on code.google.com by ivan.the...@gmail.com on 12 Jan 2015 at 6:37

GoogleCodeExporter commented 9 years ago
Hi. Thanks for your report.

Loading of SVGs via the <image> element is not currently supported.  This is 
documented on the Implementation Details page 
(https://code.google.com/p/androidsvg/wiki/SVGImplementationDetails).

At the moment it is not high on the to-do list, but that can be influenced by 
how man people have starred this issue.

Original comment by paul.leb...@gmail.com on 12 Jan 2015 at 6:57

GoogleCodeExporter commented 9 years ago
Fair enough, although in the mean time the contradictory documentation should 
probably be updated at https://code.google.com/p/androidsvg/ . (It currently 
claims <image> is fully supported.)

Also, would you take patches? And if so, how do you think SVG support should be 
added? 

Original comment by ivan.the...@gmail.com on 12 Jan 2015 at 11:00

GoogleCodeExporter commented 9 years ago
Yes I would accept high quality patches.  I haven't seen this as a high 
priority feature because I assumed that most people would be using SVG for 
simpler things like icons, diagrams, game art etc.

As for implementing this feature.  The API would need to extended 
(SVGExternalFileResolver.resolveSVG()) which would rely on the app calling 
SVG.getFromXX() and returning an SVG.  Then the render(SVG.Image) method would 
need to be modified to do the right thing with that SVG.  It's probably not 
horrendously complicated.  Although I may be missing something.

I'll put it on my todo list for the next release, unless you get there first.

Original comment by paul.leb...@gmail.com on 14 Jan 2015 at 8:45