You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openoffice.apache.org by Armin Le Grand <Ar...@me.com> on 2011/12/19 19:07:48 UTC

Ip Clearance: 1st version of Svg replacement available

	Hi *,

as mentioned in [1] I have now finished and reintegrated the first 
version of the Svg replacement from the branch [2] to trunk after 
uptating and building Mac and Win versions. It is stable and works well 
and is also pretty complete from an Svg point of view. Main 
features/differences to the version which was in OOo3.4beta are:

- IP clearance: This change allowed to remove six Gpl/Lgpl libs, namely 
librsvg, libcroco, libgsf, gdk-pixbuf, glib, and pango gettext. These 
were used as an external renderer. The new Svg uses an internal 
interpreter in a new library and some services.

- File Format: In Odf, Svg is now embedded to the Pictures folder as one 
would expect and can be easily extracted. There is also a Png file 
written there as replacement image. The draw:frame is now multi-image 
capable (as the spec allows). In the case of a Svg it writes a good 
quality Png and the original Svg as draw:image elements. Since older 
(and other) office versions are only capable of loading a single (and 
thus the first) image, the Png is written first. This allows file 
exchange with other and older offices. At load time, multi-image support 
will choose the best quality graphic available for further work, e.g. 
preferring vector format over pixel format, pixel format with 
transparency over non-transparent and loss less formats over those with 
losing info (you get the idea). Other Odf implementations (e.g. a 
viewer) may just use the pixel graphic available. Multi-image support is 
independent from Svg in principle and will work with all image file 
formats. This is implemented for the Drawinglayer graphic object (used 
in Draw/Impress/Calc) and the Writer graphic object (used in Writer).

- Interpretation: Svg is no longer interpreted each time it needs to be 
rendered (as by an extrenal renderer), but only once transformed to a 
sequence of primitives. That sequence is then used for all outputs, 
transformed to the graphic object form and viewport (resolution). The 
sequence itself is completely view-independent. Internally, it is reused 
and thus it makes no difference if you have your Svg graphic added once 
or multiple times to your document. The same is true for the replacement 
Png image used. Both, the sequence of primitives and the replacement 
image are created using new Uno Api services. One is capable of 
converting an io::XInputStream to a sequence of primitives, the other is 
able to convert every sequence of primitives to a rendering::XBitmap 
with given Dpi and discrete sizes (pixels, with automatic resolution 
reduction to a given maximum square pixel count). This will be useful 
for other purposes, too, since it creates a fully alpha-capable 
representation of anything in primitive format to use as e.g. sprite.

- Quality: For all graphic processing the created vector graphic in form 
of sequence of primitives is used. This means that You will get best 
quality in all zoom situations and all resolutions. This is also true 
for all exports, e.g. printing or Pdf export which also use the vector 
format. With an external renderer, it is unavoidable to use bitmaps with 
discrete solution here, not only looking bad in high resolutions, but 
also needing more space in most cases. There is one caveat since not all 
paths here already use primitives; some will use the internal MetaFile 
format in-between (One more reason for more reworks to primitive usages 
in the future).

- Completeness: I implemented most Svg features from Svg1.1, but not yet 
using animations or interactions (but possible in the future due to an 
own interpreter, impossible with an extern Svg renderer). It supports 
all geometric Svg forms. It supports Gradients (using a new primitive 
for this which can be reused when we want to add Svg gradients to 
SdrObjects one day), these have a resolution-dependent low-level format 
to not waste runtime on low resolutions. It supports Masks, clipPath, 
Markers, linked content, embedded graphics and Svg (intern, extern, 
base64), Use nodes, Text, Text on curve and patterns. It does not yet 
support filters, color profiles, embedded scripts, interactions and 
linking. These can be added when needed, most of them will need to 
implement new basic primitives (e.g. filtering) which would be useful 
anyways.

- Side effects: I had to fix cropping (unified with new primitive) which 
works now also for mirrored graphics (vecer worked) and quite some other 
stuff. We are prepared for Svg gradients as possible future feature (we 
can already render them now). You can work with an added Svg as with an 
graphic object; crop it, Break it (To SdrObjects, limited to the 
transfer over the old MetaFile format, though). You can convert an 
inserted Tux to 3D, You can bend the Svg in vector quality in Draw. It 
is possible to directly export the original Svg again by selecting the 
object and using 'Save as Picture...'. You can add Text, Border, fill 
style, pretty much the same as most other graphic objects. You can add 
shadow which casts shadow as expected (also never possible with an 
external renderer).

- Caveats: This is a bigger change, but most stuff is isolated in the 
two mentioned services. There will be errors (I'm too long a programmer 
to deny that :-)), but I tried to be as careful as possible. To find 
them, Your help will be needed. Please feel free to play around with any 
Svg You can find and report problems early.

[1] 
http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/201112.mbox/%3Cjcamku$fep$1@dough.gmane.org%3E
[2] 
https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement

Sincerely,
	Armin
--
ALG


RE: Ip Clearance: 1st version of Svg replacement available

Posted by "Dennis E. Hamilton" <de...@acm.org>.
Amazing work!  Thanks for the comprehensive account.

It will be wonderful to see it show up in the nightlies.  

 - Dennis

-----Original Message-----
From: Armin Le Grand [mailto:Armin.Le.Grand@me.com] 
Sent: Monday, December 19, 2011 10:08
To: ooo-dev@incubator.apache.org
Subject: Ip Clearance: 1st version of Svg replacement available

	Hi *,

as mentioned in [1] I have now finished and reintegrated the first 
version of the Svg replacement from the branch [2] to trunk after 
uptating and building Mac and Win versions. It is stable and works well 
and is also pretty complete from an Svg point of view. Main 
features/differences to the version which was in OOo3.4beta are:

- IP clearance: This change allowed to remove six Gpl/Lgpl libs, namely 
librsvg, libcroco, libgsf, gdk-pixbuf, glib, and pango gettext. These 
were used as an external renderer. The new Svg uses an internal 
interpreter in a new library and some services.

- File Format: [ ... ]

- Interpretation: Svg is no longer interpreted each time it needs to be 
rendered (as by an extrenal renderer), [ ... ]

- Quality: [ ... ]

- Completeness: I implemented most Svg features from Svg1.1, but not yet 
using animations or interactions (but possible in the future due to an 
own interpreter, impossible with an extern Svg renderer). [ ... ]

- Side effects: I had to fix cropping (unified with new primitive) which 
works now also for mirrored graphics (vecer worked) and quite some other 
stuff. [ ... ]

- Caveats: This is a bigger change, but most stuff is isolated in the 
two mentioned services. There will be errors (I'm too long a programmer 
to deny that :-)), but I tried to be as careful as possible. To find 
them, Your help will be needed. Please feel free to play around with any 
Svg You can find and report problems early.

[1] 
http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/201112.mbox/%3Cjcamku$fep$1@dough.gmane.org%3E
[2] 
https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement

Sincerely,
	Armin
--
ALG


Re: Ip Clearance: 1st version of Svg replacement available

Posted by Rob Weir <ro...@apache.org>.
On Mon, Dec 19, 2011 at 1:07 PM, Armin Le Grand <Ar...@me.com> wrote:
>        Hi *,
>
> as mentioned in [1] I have now finished and reintegrated the first version
> of the Svg replacement from the branch [2] to trunk after uptating and
> building Mac and Win versions. It is stable and works well and is also
> pretty complete from an Svg point of view. Main features/differences to the
> version which was in OOo3.4beta are:
>

Good work, Armin.  I'm sure we all appreciate this early Christmas present.

-Rob

Re: Ip Clearance: 1st version of Svg replacement available

Posted by Armin Le Grand <Ar...@me.com>.
	Hi Andrea,

On 26.12.2011 19:29, Andrea Pescetti wrote:
> On 19/12/2011 Armin Le Grand wrote:
>> as mentioned in [1] I have now finished and reintegrated the first
>> version of the Svg replacement from the branch
>
> Very good stuff, really. I can only blame you for not turning this into
> a blog post!

You are right and I'm planning to do exactly that (that was the reason 
for the long message a little bit :-)). Let me do that next Year, I need 
some days off right now...

> Really, all it would take is a copy and paste of the message you wrote,
> with a couple of screenshots and BugZilla links from Eric's nice post
> http://eric.bachard.org/news/index.php?post/2011/12/03/In-progress-%3A-native-support-of-the-SVG-graphic-format-in-Apache-OpenOffice.org
>
> and, if you wish to ask volunteers to test, a link to a development
> build with this feature enabled and some public repositories of SVG
> files for testing.
>
> So far there is nothing on https://blogs.apache.org/OOo/ explaining
> users what to expect for Apache OpenOffice 3.4. If developers don't post
> interesting information like this announcement there, most users will
> never get (directly or indirectly) information about it.

Absolutely right. I'll take some time next Year to blog about 
enhancements already done. I've already got the blog rights, to be able 
to do so.

> Regards,
> Andrea.
>

Sincerely,
	Armin
--
ALG


Re: Ip Clearance: 1st version of Svg replacement available

Posted by Andrea Pescetti <pe...@openoffice.org>.
On 19/12/2011 Armin Le Grand wrote:
> as mentioned in [1] I have now finished and reintegrated the first
> version of the Svg replacement from the branch

Very good stuff, really. I can only blame you for not turning this into 
a blog post!

Really, all it would take is a copy and paste of the message you wrote, 
with a couple of screenshots and BugZilla links from Eric's nice post
http://eric.bachard.org/news/index.php?post/2011/12/03/In-progress-%3A-native-support-of-the-SVG-graphic-format-in-Apache-OpenOffice.org
and, if you wish to ask volunteers to test, a link to a development 
build with this feature enabled and some public repositories of SVG 
files for testing.

So far there is nothing on https://blogs.apache.org/OOo/ explaining 
users what to expect for Apache OpenOffice 3.4. If developers don't post 
interesting information like this announcement there, most users will 
never get (directly or indirectly) information about it.

Regards,
   Andrea.

Re: Ip Clearance: 1st version of Svg replacement available

Posted by Pedro Giffuni <pf...@apache.org>.
+1

Big kudos to Armin ...

I hadn't said it before so let me say this is really,
REALLY cool!!

Pedro.

--- Lun 19/12/11, Jürgen Schmidt <jo...@googlemail.com> ha scritto:
...
> On 12/19/11 7:07 PM, Armin Le Grand
> wrote:
> > Hi *,
> >
> > as mentioned in [1] I have now finished and
> reintegrated the first
> > version of the Svg replacement from the branch [2] to
> trunk after
> > uptating and building Mac and Win versions. It is
> stable and works well
> > and is also pretty complete from an Svg point of view.
> Main
> > features/differences to the version which was in
> OOo3.4beta are:
> >
> > - IP clearance: This change allowed to remove six
> Gpl/Lgpl libs, namely
> > librsvg, libcroco, libgsf, gdk-pixbuf, glib, and pango
> gettext. These
> > were used as an external renderer. The new Svg uses an
> internal
> > interpreter in a new library and some services.
> >
> > - File Format: In Odf, Svg is now embedded to the
> Pictures folder as one
> > would expect and can be easily extracted. There is
> also a Png file
> > written there as replacement image. The draw:frame is
> now multi-image
> > capable (as the spec allows). In the case of a Svg it
> writes a good
> > quality Png and the original Svg as draw:image
> elements. Since older
> > (and other) office versions are only capable of
> loading a single (and
> > thus the first) image, the Png is written first. This
> allows file
> > exchange with other and older offices. At load time,
> multi-image support
> > will choose the best quality graphic available for
> further work, e.g.
> > preferring vector format over pixel format, pixel
> format with
> > transparency over non-transparent and loss less
> formats over those with
> > losing info (you get the idea). Other Odf
> implementations (e.g. a
> > viewer) may just use the pixel graphic available.
> Multi-image support is
> > independent from Svg in principle and will work with
> all image file
> > formats. This is implemented for the Drawinglayer
> graphic object (used
> > in Draw/Impress/Calc) and the Writer graphic object
> (used in Writer).
> >
> > - Interpretation: Svg is no longer interpreted each
> time it needs to be
> > rendered (as by an extrenal renderer), but only once
> transformed to a
> > sequence of primitives. That sequence is then used for
> all outputs,
> > transformed to the graphic object form and viewport
> (resolution). The
> > sequence itself is completely view-independent.
> Internally, it is reused
> > and thus it makes no difference if you have your Svg
> graphic added once
> > or multiple times to your document. The same is true
> for the replacement
> > Png image used. Both, the sequence of primitives and
> the replacement
> > image are created using new Uno Api services. One is
> capable of
> > converting an io::XInputStream to a sequence of
> primitives, the other is
> > able to convert every sequence of primitives to a
> rendering::XBitmap
> > with given Dpi and discrete sizes (pixels, with
> automatic resolution
> > reduction to a given maximum square pixel count). This
> will be useful
> > for other purposes, too, since it creates a fully
> alpha-capable
> > representation of anything in primitive format to use
> as e.g. sprite.
> >
> > - Quality: For all graphic processing the created
> vector graphic in form
> > of sequence of primitives is used. This means that You
> will get best
> > quality in all zoom situations and all resolutions.
> This is also true
> > for all exports, e.g. printing or Pdf export which
> also use the vector
> > format. With an external renderer, it is unavoidable
> to use bitmaps with
> > discrete solution here, not only looking bad in high
> resolutions, but
> > also needing more space in most cases. There is one
> caveat since not all
> > paths here already use primitives; some will use the
> internal MetaFile
> > format in-between (One more reason for more reworks to
> primitive usages
> > in the future).
> >
> > - Completeness: I implemented most Svg features from
> Svg1.1, but not yet
> > using animations or interactions (but possible in the
> future due to an
> > own interpreter, impossible with an extern Svg
> renderer). It supports
> > all geometric Svg forms. It supports Gradients (using
> a new primitive
> > for this which can be reused when we want to add Svg
> gradients to
> > SdrObjects one day), these have a resolution-dependent
> low-level format
> > to not waste runtime on low resolutions. It supports
> Masks, clipPath,
> > Markers, linked content, embedded graphics and Svg
> (intern, extern,
> > base64), Use nodes, Text, Text on curve and patterns.
> It does not yet
> > support filters, color profiles, embedded scripts,
> interactions and
> > linking. These can be added when needed, most of them
> will need to
> > implement new basic primitives (e.g. filtering) which
> would be useful
> > anyways.
> >
> > - Side effects: I had to fix cropping (unified with
> new primitive) which
> > works now also for mirrored graphics (vecer worked)
> and quite some other
> > stuff. We are prepared for Svg gradients as possible
> future feature (we
> > can already render them now). You can work with an
> added Svg as with an
> > graphic object; crop it, Break it (To SdrObjects,
> limited to the
> > transfer over the old MetaFile format, though). You
> can convert an
> > inserted Tux to 3D, You can bend the Svg in vector
> quality in Draw. It
> > is possible to directly export the original Svg again
> by selecting the
> > object and using 'Save as Picture...'. You can add
> Text, Border, fill
> > style, pretty much the same as most other graphic
> objects. You can add
> > shadow which casts shadow as expected (also never
> possible with an
> > external renderer).
> >
> > - Caveats: This is a bigger change, but most stuff is
> isolated in the
> > two mentioned services. There will be errors (I'm too
> long a programmer
> > to deny that :-)), but I tried to be as careful as
> possible. To find
> > them, Your help will be needed. Please feel free to
> play around with any
> > Svg You can find and report problems early.
> >
> > [1]
> > http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/201112.mbox/%3Cjcamku$fep$1@dough.gmane.org%3E
> >
> > [2]
> > https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement
> 
> big applause Armin because i know how concentrated you have
> worked on 
> this. And it allows us to implement further improvements in
> this area in 
> the future.
> 
> Especially how you have addressed the interoperability
> issue from the 
> beginning shows how important this is for us and for the
> overall ODF story.
> 
> I bet that we will see this great improvement in
> LibreOffice 3.6 ;-) And 
> yes it would be good because in the end ODF and our users
> would benefit 
> from it.
> 
> Great work, well done
> 
> Juergen
> 
> 
> >
> > Sincerely,
> > Armin
> > --
> > ALG
> >
> 
> 

Re: Ip Clearance: 1st version of Svg replacement available

Posted by Jürgen Schmidt <jo...@googlemail.com>.
On 12/19/11 7:07 PM, Armin Le Grand wrote:
> Hi *,
>
> as mentioned in [1] I have now finished and reintegrated the first
> version of the Svg replacement from the branch [2] to trunk after
> uptating and building Mac and Win versions. It is stable and works well
> and is also pretty complete from an Svg point of view. Main
> features/differences to the version which was in OOo3.4beta are:
>
> - IP clearance: This change allowed to remove six Gpl/Lgpl libs, namely
> librsvg, libcroco, libgsf, gdk-pixbuf, glib, and pango gettext. These
> were used as an external renderer. The new Svg uses an internal
> interpreter in a new library and some services.
>
> - File Format: In Odf, Svg is now embedded to the Pictures folder as one
> would expect and can be easily extracted. There is also a Png file
> written there as replacement image. The draw:frame is now multi-image
> capable (as the spec allows). In the case of a Svg it writes a good
> quality Png and the original Svg as draw:image elements. Since older
> (and other) office versions are only capable of loading a single (and
> thus the first) image, the Png is written first. This allows file
> exchange with other and older offices. At load time, multi-image support
> will choose the best quality graphic available for further work, e.g.
> preferring vector format over pixel format, pixel format with
> transparency over non-transparent and loss less formats over those with
> losing info (you get the idea). Other Odf implementations (e.g. a
> viewer) may just use the pixel graphic available. Multi-image support is
> independent from Svg in principle and will work with all image file
> formats. This is implemented for the Drawinglayer graphic object (used
> in Draw/Impress/Calc) and the Writer graphic object (used in Writer).
>
> - Interpretation: Svg is no longer interpreted each time it needs to be
> rendered (as by an extrenal renderer), but only once transformed to a
> sequence of primitives. That sequence is then used for all outputs,
> transformed to the graphic object form and viewport (resolution). The
> sequence itself is completely view-independent. Internally, it is reused
> and thus it makes no difference if you have your Svg graphic added once
> or multiple times to your document. The same is true for the replacement
> Png image used. Both, the sequence of primitives and the replacement
> image are created using new Uno Api services. One is capable of
> converting an io::XInputStream to a sequence of primitives, the other is
> able to convert every sequence of primitives to a rendering::XBitmap
> with given Dpi and discrete sizes (pixels, with automatic resolution
> reduction to a given maximum square pixel count). This will be useful
> for other purposes, too, since it creates a fully alpha-capable
> representation of anything in primitive format to use as e.g. sprite.
>
> - Quality: For all graphic processing the created vector graphic in form
> of sequence of primitives is used. This means that You will get best
> quality in all zoom situations and all resolutions. This is also true
> for all exports, e.g. printing or Pdf export which also use the vector
> format. With an external renderer, it is unavoidable to use bitmaps with
> discrete solution here, not only looking bad in high resolutions, but
> also needing more space in most cases. There is one caveat since not all
> paths here already use primitives; some will use the internal MetaFile
> format in-between (One more reason for more reworks to primitive usages
> in the future).
>
> - Completeness: I implemented most Svg features from Svg1.1, but not yet
> using animations or interactions (but possible in the future due to an
> own interpreter, impossible with an extern Svg renderer). It supports
> all geometric Svg forms. It supports Gradients (using a new primitive
> for this which can be reused when we want to add Svg gradients to
> SdrObjects one day), these have a resolution-dependent low-level format
> to not waste runtime on low resolutions. It supports Masks, clipPath,
> Markers, linked content, embedded graphics and Svg (intern, extern,
> base64), Use nodes, Text, Text on curve and patterns. It does not yet
> support filters, color profiles, embedded scripts, interactions and
> linking. These can be added when needed, most of them will need to
> implement new basic primitives (e.g. filtering) which would be useful
> anyways.
>
> - Side effects: I had to fix cropping (unified with new primitive) which
> works now also for mirrored graphics (vecer worked) and quite some other
> stuff. We are prepared for Svg gradients as possible future feature (we
> can already render them now). You can work with an added Svg as with an
> graphic object; crop it, Break it (To SdrObjects, limited to the
> transfer over the old MetaFile format, though). You can convert an
> inserted Tux to 3D, You can bend the Svg in vector quality in Draw. It
> is possible to directly export the original Svg again by selecting the
> object and using 'Save as Picture...'. You can add Text, Border, fill
> style, pretty much the same as most other graphic objects. You can add
> shadow which casts shadow as expected (also never possible with an
> external renderer).
>
> - Caveats: This is a bigger change, but most stuff is isolated in the
> two mentioned services. There will be errors (I'm too long a programmer
> to deny that :-)), but I tried to be as careful as possible. To find
> them, Your help will be needed. Please feel free to play around with any
> Svg You can find and report problems early.
>
> [1]
> http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/201112.mbox/%3Cjcamku$fep$1@dough.gmane.org%3E
>
> [2]
> https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement

big applause Armin because i know how concentrated you have worked on 
this. And it allows us to implement further improvements in this area in 
the future.

Especially how you have addressed the interoperability issue from the 
beginning shows how important this is for us and for the overall ODF story.

I bet that we will see this great improvement in LibreOffice 3.6 ;-) And 
yes it would be good because in the end ODF and our users would benefit 
from it.

Great work, well done

Juergen


>
> Sincerely,
> Armin
> --
> ALG
>


Re: Ip Clearance: 1st version of Svg replacement available

Posted by Donald Harbison <dp...@gmail.com>.
Well done! Thank Armin, this is really great stuff.

On Mon, Dec 19, 2011 at 1:07 PM, Armin Le Grand <Ar...@me.com>wrote:

>        Hi *,
>
> as mentioned in [1] I have now finished and reintegrated the first version
> of the Svg replacement from the branch [2] to trunk after uptating and
> building Mac and Win versions. It is stable and works well and is also
> pretty complete from an Svg point of view. Main features/differences to the
> version which was in OOo3.4beta are:
>
> - IP clearance: This change allowed to remove six Gpl/Lgpl libs, namely
> librsvg, libcroco, libgsf, gdk-pixbuf, glib, and pango gettext. These were
> used as an external renderer. The new Svg uses an internal interpreter in a
> new library and some services.
>
> - File Format: In Odf, Svg is now embedded to the Pictures folder as one
> would expect and can be easily extracted. There is also a Png file written
> there as replacement image. The draw:frame is now multi-image capable (as
> the spec allows). In the case of a Svg it writes a good quality Png and the
> original Svg as draw:image elements. Since older (and other) office
> versions are only capable of loading a single (and thus the first) image,
> the Png is written first. This allows file exchange with other and older
> offices. At load time, multi-image support will choose the best quality
> graphic available for further work, e.g. preferring vector format over
> pixel format, pixel format with transparency over non-transparent and loss
> less formats over those with losing info (you get the idea). Other Odf
> implementations (e.g. a viewer) may just use the pixel graphic available.
> Multi-image support is independent from Svg in principle and will work with
> all image file formats. This is implemented for the Drawinglayer graphic
> object (used in Draw/Impress/Calc) and the Writer graphic object (used in
> Writer).
>
> - Interpretation: Svg is no longer interpreted each time it needs to be
> rendered (as by an extrenal renderer), but only once transformed to a
> sequence of primitives. That sequence is then used for all outputs,
> transformed to the graphic object form and viewport (resolution). The
> sequence itself is completely view-independent. Internally, it is reused
> and thus it makes no difference if you have your Svg graphic added once or
> multiple times to your document. The same is true for the replacement Png
> image used. Both, the sequence of primitives and the replacement image are
> created using new Uno Api services. One is capable of converting an
> io::XInputStream to a sequence of primitives, the other is able to convert
> every sequence of primitives to a rendering::XBitmap with given Dpi and
> discrete sizes (pixels, with automatic resolution reduction to a given
> maximum square pixel count). This will be useful for other purposes, too,
> since it creates a fully alpha-capable representation of anything in
> primitive format to use as e.g. sprite.
>
> - Quality: For all graphic processing the created vector graphic in form
> of sequence of primitives is used. This means that You will get best
> quality in all zoom situations and all resolutions. This is also true for
> all exports, e.g. printing or Pdf export which also use the vector format.
> With an external renderer, it is unavoidable to use bitmaps with discrete
> solution here, not only looking bad in high resolutions, but also needing
> more space in most cases. There is one caveat since not all paths here
> already use primitives; some will use the internal MetaFile format
> in-between (One more reason for more reworks to primitive usages in the
> future).
>
> - Completeness: I implemented most Svg features from Svg1.1, but not yet
> using animations or interactions (but possible in the future due to an own
> interpreter, impossible with an extern Svg renderer). It supports all
> geometric Svg forms. It supports Gradients (using a new primitive for this
> which can be reused when we want to add Svg gradients to SdrObjects one
> day), these have a resolution-dependent low-level format to not waste
> runtime on low resolutions. It supports Masks, clipPath, Markers, linked
> content, embedded graphics and Svg (intern, extern, base64), Use nodes,
> Text, Text on curve and patterns. It does not yet support filters, color
> profiles, embedded scripts, interactions and linking. These can be added
> when needed, most of them will need to implement new basic primitives (e.g.
> filtering) which would be useful anyways.
>
> - Side effects: I had to fix cropping (unified with new primitive) which
> works now also for mirrored graphics (vecer worked) and quite some other
> stuff. We are prepared for Svg gradients as possible future feature (we can
> already render them now). You can work with an added Svg as with an graphic
> object; crop it, Break it (To SdrObjects, limited to the transfer over the
> old MetaFile format, though). You can convert an inserted Tux to 3D, You
> can bend the Svg in vector quality in Draw. It is possible to directly
> export the original Svg again by selecting the object and using 'Save as
> Picture...'. You can add Text, Border, fill style, pretty much the same as
> most other graphic objects. You can add shadow which casts shadow as
> expected (also never possible with an external renderer).
>
> - Caveats: This is a bigger change, but most stuff is isolated in the two
> mentioned services. There will be errors (I'm too long a programmer to deny
> that :-)), but I tried to be as careful as possible. To find them, Your
> help will be needed. Please feel free to play around with any Svg You can
> find and report problems early.
>
> [1] http://mail-archives.apache.**org/mod_mbox/incubator-ooo-**
> dev/201112.mbox/%3Cjcamku$fep$**1@dough.gmane.org%3E<http://mail-archives.apache.org/mod_mbox/incubator-ooo-dev/201112.mbox/%3Cjcamku$fep$1@dough.gmane.org%3E>
> [2] https://svn.apache.org/repos/**asf/incubator/ooo/branches/**
> alg/svgreplacement<https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement>
>
> Sincerely,
>        Armin
> --
> ALG
>
>