En développement : support natif du format graphique SVG (vectoriel) dans Apache OpenOffice.org

Apache OpenOffice.org se remet progressivement de son transfert à la Fondation Apache. En attendant la sortie de la première version, de nouvelles fonctionnalités apparaissent. En voici une : la prise en charge native des fichiers graphiques de type .svg

L’annonce est pourtant passée quasi inaperçue quand Armin Le Grand (ex Oracle, auteur original d’Impress), à expliqué qu’il travaillait sur l’implémentation de l’import du SVG natif dans Apache OpenOffice.org. Cette fonctionnalité était une des plus demandées (voir Issue 2497), et il l’a fait !!

Wow 🙂 Mais de quoi s’agit-il en fait ?

Tout simplement, pouvoir utiliser, sans se prendre la tête à installer un truc ou un machin, des fichiers graphiques au format svg dans Apache OpenOffice.org. Cette fonctionnalité était attendue depuis des années dans OpenOffice.org (on se demande pourquoi cela n’a jamais été fait avant ?).

J’ai donc proposé à Armin de tester son code, et de l’aider dans la mesure de mes possibilités. Après avoir rapidement compilé les sources, voilà ce que cela donne :

Liens des fichiers utilisés pour la copie d’écran :
* Tectonique des plaques (Wikipedia)
* Pingouin (réalisé avec Inkscape)

Techniquement, cette implémentation native a permis de supprimer plusieurs dépendances, dont les bibliothèques librsvg, libcroco, libgsf, gdk-pixbuf, glib, gettext et pango, entraînant une grosse simplification, pour ne pas dire la suppression d’un gros noeud dans le code.

Cette implémentation évite de devoir inclure le fichier SVG dans un métafichier, en tant que binaire mais plutôt en tant qu’image, dans un sous répertoire, conformément à ce que demande l’ODF. Toujours en conformité avec ce que permet la spécification ODF, un support pour les Cadres MultiImage a été aussi implémenté.

À suivre: je suis en train de déchiffrer le code pour essayer de comprendre ce qui est affiché, mais il semble que le SVG soit interprété et transformé en .png. Ce .png sera l’image réellement affichée. Ceci jusqu’à une éventuelle modification, ce qui créera alors un nouveau .png ..etc

Dans la suite, je vais (essayer d’) analyser complètement le code écrit, et j’espère ainsi mieux comprendre le travail impressionnant qui a été réalisé.

Très succintement, le patch a demandé des modifications dans 19 modules, et a demandé la réécriture du moteur svg, comprenant le parseur, et l’import (l’export ne semble pas encore fonctionner correctement). À celà, il faut ajouter la suppression de la prise en charge de l’ancien rendu (principalement dans vcl). On note une utilisation importante de basegfx (déjà utilisé dans le nouveau drawinglayer, lui aussi écrit par Armin).

Les sources sont disponibles dans la branche svgreplacement, et pour l’instant, la compilation ne peut pas se terminer si on ne connaît pas bien le code d’OpenOffice.org (voir http://incubator.apache.org/openofficeorg/source.html ). Les problèmes, surtout dûs au nettoyage du code qui n’est pas compatible avec la licence Apache, devraient toutefois être résolus prochainement.

Améliorations possibles: intégrer OpenCLipart dans Apache OpenOffice.org (et dans OOo4Kids et OOoLight bien sûr !).

À suivre 😉

Liens:
* L’annonce d’Armin sur la liste ooo-dev
* Comment télécharger les sources d’Apache OpenOffice.org

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*