Ambroise Maupate | SaViGnac | Exporter en SVG avec Java
Mise à jour et avancement - 9 janvier 2010
AM SaViGnac est un projet initié suite à la rencontre du problème de l'exportation d'images depuis des programmes JAVA. Ayant proposé plusieurs projets où l'ordinateur crée une image en fonction de mes contraintes, le système d'exportation d'images matricielles fourni par l'API Java ne me suffisait plus. Je me suis tourné vers une approche vectorielle qui s'accorderait mieux à la visée graphique de mes expérimentations ; ainsi j'ai choisi de me lancer dans l'élaboration d'une API de dessin vectoriel qui reprend les standards du format SVG dictés par le W3C.
Cette API que j'ai nommé SaViGnac, devra pouvoir être utilisée de manière transparente à la place des objets "Graphics" fournis par JAVA avec l'API AWT pour ensuite exporter un fichier .svg réutilisable dans n'importe quel logiciel de dessin vectoriel. Les avantages de ce choix pour le vectoriel sont de libérer l'ordinateur de calculs importants losqu'il s'agit de créer une image matricielle (faite de pixels) et d'obtenir une image agrandissable à l'infini sans perte de qualité (c'est à dire, tous les avantages d'une image vectorielle par rapport à une image pixellisée).
L'API SaViGnac est en développement, mais je travaille déjà à son implémentation dans CataType pour permettre d'exporter une composition vectorielle qui pourra être remaniée dans Illustrator.
Qu'est-ce qu'une API ? Définition sur Wikipedia
Une API (Application Programming Interface) est une bibliothèque de fonctions qui a pour but d'étendre les capacités d'un programme. Une API n'est pas un programme à part entière, elle ne fait que complèter les fonctions d'un programme existant, ainsi, AM SaViGnac pourra permettre à AM CataType d'exporter en SVG. Et dans une optique plus large, elle pourra être réutilisée par d'autres programmeurs à des fins de dessin vectoriel.
Exemple de code - 9 janvier 2010
import amsavignac.graphics.SVGGraphics;
import amsavignac.parsers.SVGParser;
import amsavignac.graphics.Units;
import java.awt.Color;
import amsavignac.graphics.primitives.SVGText;/**
*
* @author ambroisemaupate
*/
public class Main {
public static void main(String[] args)
{SVGGraphics g = new SVGGraphics(800,600,Units.PIXELS);
g.setColor(new Color(255,0,0,128));
g.fillOval(50, 50, 200, 300);
g.fillOval(100, 50, 200, 300);
g.fillOval(150, 50, 200, 300);g.setColor(new Color(255,0,255,200));
g.fillRect(50, 50, 500, 300);
g.drawRect(100, 50, 200, 300);g.setColor(new Color(0,0,0,105));
g.drawLine(100, 50, 200, 300);
g.drawLine(200, 50, 600, 300, 2.0f);
g.drawLine(200, 400, 600, 400, 2.0f, 0.5f);g.drawPolyline(new int[]{45,173,54,35}, new int[]{56,22,446,332}, 4, 2.0f);
g.setColor(Color.BLUE);
g.drawString("Salut les éléphan&ç!\"à\'(èts&& Wor,ld", 200, 100);SVGText textSample = new SVGText("Sample", g.getFont(), 50.0f, 50.0f);
textSample.setRotation(5.0f);
g.addSVGObject(textSample);
SVGParser parser = new SVGParser(g, "essai.svg");
parser.exportSVGFile();}
}