Issue 118466

Summary: Replace SVG rendering
Product: Draw Reporter: Armin Le Grand <Armin.Le.Grand>
Component: viewingAssignee: Armin Le Grand <Armin.Le.Grand>
Status: CLOSED FIXED QA Contact:
Severity: Normal    
Priority: P5 (lowest) CC: arielch, eric.bachard, issues, oooforum, rbircher, thb
Version: version58   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---
Attachments:
Description Flags
first step patch to remove IP clearance libs none

Description Armin Le Grand 2011-09-27 08:14:47 UTC
ALG: Due to Apache licensing we will not be able to use cairo and librsvg which are currently used to allow embedding of SVG graphics to AOO3.4. Thus, these need to be replaced to not lose that functionality. Looking for a solution...
Comment 1 Armin Le Grand 2011-09-27 08:15:26 UTC
ALG: Investigating possibilities...
Comment 2 Raphael Bircher 2011-09-27 08:28:44 UTC
CCing me
Comment 3 Armin Le Grand 2011-11-08 18:04:31 UTC
ALG: Preparing rough removal of current SVG functionality to get to a clean IP state. No worries, stuff to replace this is on the way..

Step 1: Librsvg

Used from vcl, dynamically loaded/called at runtime (not linked against). Need to remove d7a242ca43e33e1b63d3073f9d46a6a8-librsvg-2.32.1.tar.gz from ooo.lst and usages in vcl. It's also fetched from ext_sources to project librsvg and built, dependent on SYSTEM_LIBRSVG buildflag. Also need to remove configure.in logic to use librsvg from system/to build.
Comment 4 Armin Le Grand 2011-11-09 10:48:04 UTC
ALG: Also removed libcroco and libgsf, have to do complete testbuild.
ALG: due to changes in configure.in there are additional candidates:
- SYSTEM_GDKPIXBUF
- SYSTEM_GLIB
- SYSTEM_GETTEXT
- SYSTEM_PANGO
Checking if these are used outside rsvg stuff, waiting for build...
Comment 5 Armin Le Grand 2011-11-09 12:02:12 UTC
ALG: Checked gdkpixbuf, used in:
- avmedia for MultiMedia replay (avmedia\source\gstreamer\gstframegrabber.cxx)
- cairo canvas (canvas\source\cairo\cairo_canvasbitmap.cxx, canvas\source\directx\dx_canvasbitmap.cxx)
- fpicker (fpicker\source\unx\gnome\SalGtkFilePicker.cxx)
- sfx2 (sfx2\source\appl\shutdowniconunx.cxx)
- vcl (vcl\unx\gtk\window\gtkframe.cxx)
- xpdf
Thus no removal candidate. License is LGPL and MPL.
Comment 6 Armin Le Grand 2011-11-09 12:41:28 UTC
ALG: libcroro, libgsf and librsvg removed, build works. I'll check in these changes.
Comment 7 Armin Le Grand 2011-11-10 10:46:21 UTC
ALG: dependent from ENABLE_LIBRSVG the following libs get checked:
- librsvg
- gdk-pixbuf
- glib
- gettext
- libcroco
- pango
- libgsf

librsvg: Removed already

gdk-pixbuf: Looks as if this was only built on win and mac, but only for the cases where librsvg was used. Thus it can be removed after librsvg removal. Trying this.

glib, gettext, pango: Seems like it was only added for librsvg on windows. Trying removal...

libcroco, libgsf: Already gone.

Making testbuild...
Comment 8 Ariel Constenla-Haile 2011-11-10 11:01:30 UTC
(In reply to comment #7)
> gdk-pixbuf: Looks as if this was only built on win and mac, but only for the
> cases where librsvg was used. Thus it can be removed after librsvg removal.
> Trying this.

it is also used in Linux for the GStreamer AVMedia plug-in (for the "frame grabber" - grabs a frame from the video stream) avmedia/source/gstreamer/gstframegrabber.hxx

But building that plug-in already requires system libraries on Linux, so you can safely remove this for this platform too.
Comment 9 Armin Le Grand 2011-11-10 12:37:36 UTC
@Ariel: On Linux it's no problem, it's used in various places, but as system lib. Background here is why it's part of our repository and may be built, that was (as it looks now) only because of SVG. I already documented the locations of use in https://issues.apache.org/ooo/show_bug.cgi?id=118466#c5.
Comment 10 Armin Le Grand 2011-11-10 13:20:34 UTC
ALG: Now test-removed: librsvg, libcroco, libgsf, gdk-pixbuf, glib, gettext, pango. Already removed: libcroco, libgsf
Comment 11 Armin Le Grand 2011-11-11 09:54:10 UTC
ALG: Test build (debug and non-debug) worked well, smoketest working. Preparing patch.
Comment 12 Armin Le Grand 2011-11-11 15:54:56 UTC
Created attachment 76999 [details]
first step patch to remove IP clearance libs
Comment 13 Armin Le Grand 2011-11-11 15:55:50 UTC
ALG: Patch comitted, added as attachment for documentation
Comment 14 Armin Le Grand 2011-11-18 14:49:20 UTC
ALG: Removing as blocker since IP clearance basics are done and comitted
Comment 15 Armin Le Grand 2011-11-23 16:12:01 UTC
ALG: Created https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement for further development.
Comment 16 Armin Le Grand 2011-11-30 16:32:16 UTC
ALG: First version with complete roundrtip in all apps ready, preparing patch to apply to created branch. Things to do:

- In Sw, make graphic frames to paint using primitives if available to support vector graphic where possible
- Implement break in Draw/Impress
- Check actions (Attributes, transformations)
- Check exports, etc.
Comment 17 eric.bachard 2011-12-03 15:27:03 UTC
I tested on Mac OS X :

truc:~/Desktop/apache_ooo/alg/svgreplacement/main ericb$ svn info
Path: .
URL: https://svn.apache.org/repos/asf/incubator/ooo/branches/alg/svgreplacement/main
Repository Root: https://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 1209438
Node Kind: directory
Schedule: normal
Last Changed Author: alg
Last Changed Rev: 1209389
Last Changed Date: 2011-12-02 11:39:30 +0100 (Fri, 02 Dec 2011)

 

Import seems to work well

Export seems to not work : produces an empty page

Suggested : add a test case for export.
Comment 18 Armin Le Grand 2011-12-06 13:37:06 UTC
ALG: In Sw graphic frames with Svg now use primitives for paint to support
vector graphic where possible. Added support for mirroring and cropping. Added support for unified cropping for all graphics, fixed functionality for mirrored and cropped graphics (never worked).
Comment 19 Armin Le Grand 2011-12-22 20:45:11 UTC
ALG: Done, 1st version recomitted to trunk.