IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Modeling Discussion :

Export diagramme GEF en image, SVG?


Sujet :

Eclipse Modeling

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut Export diagramme GEF en image, SVG?
    Bonjour,

    J'ai développe un plugin de gestion de workflow XML à l'aide de GEF. J'aurais voulu savoir s'il était possible d'exporter le graphique GEF en image ou mieux encore dans un format comme SVG ?

    En recherchant sur Google, j'ai trouve ca. Je vais regarder donc du cote de GMF, mais je voulais savoir si quelqu'un avait déjà eu cette problématique ?

    Merci de votre aide.

    Angelo

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonsoir,

    Ca y est j'ai réussi à exporter mon diagramme GEF en SVG!
    J'en ai bien bavé, donc je vous donne en fin de mon mail le code de ma classe.

    La première chose à savoir c'est qu'il n'existe pas d'exporteur SVG pour Draw2d (couche graphique utilisé par GEF). Par contre il existe dans le projet GMF, la possibilité d'exporter en SVG à l'aide de la classe org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.export.GraphicsSVG.

    Comme vous pouvez le remarquer il y a du AWT dans le nom du package, car de ce que j'ai compris, c'est qu'il transforme le Graphics Draw2d en Graphics AWT, puis il utilise l'exporteur SVG du projet BATIK...

    Donc pour résumer, j'ai fait dépendre mon plugin des plugins suivants :

    * org.apache.batik.svggen,
    * org.eclipse.gmf.runtime.draw2d.ui.render.awt,
    * org.apache.batik.ext.awt

    Si vous ne voulez pas vous embêter à télécharger les plugins requis, je vous conseille de télécharger Eclipse Modeling Tools (includes Incubating components) (313 MB) qui est tout bien packagé (il y a GMF + Batik).

    Puis j'ai créé une classe SVGImageExporter qui attend le GraphicalViewer de l'editor GEF et un outputstream qui sera rempli par le contenu SVG calculé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package org.sidoc.eclipse.ui.docflow.util;
     
    import java.io.BufferedWriter;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
     
    import org.apache.batik.svggen.SVGGraphics2DIOException;
    import org.eclipse.draw2d.IFigure;
    import org.eclipse.draw2d.geometry.Rectangle;
    import org.eclipse.gef.GraphicalViewer;
    import org.eclipse.gef.LayerConstants;
    import org.eclipse.gef.editparts.LayerManager;
    import org.eclipse.gef.editparts.SimpleRootEditPart;
    import org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.export.GraphicsSVG;
     
    /**
     * SVG exporter.
     */
    public class SVGImageExporter {
     
        public static void export(GraphicalViewer viewer, OutputStream outputStream) {
            /*
             * 1. First get the figure whose visuals we want to save as image. So we
             * would like to save the rooteditpart which actually hosts all the
             * printable layers.
             * 
             * NOTE: ScalableRootEditPart manages layers and is registered
             * graphicalviewer's editpartregistry with the key LayerManager.ID ...
             * well that is because ScalableRootEditPart manages all layers that are
             * hosted on a FigureCanvas. Many layers exist for doing different
             * things
             */
            SimpleRootEditPart rootEditPart = (SimpleRootEditPart) viewer
                    .getEditPartRegistry().get(LayerManager.ID);
            IFigure rootFigure = ((LayerManager) rootEditPart)
                    .getLayer(LayerConstants.PRINTABLE_LAYERS);// rootEditPart.
            // getFigure();
            Rectangle bounds = rootFigure.getBounds();
            GraphicsSVG graphics = GraphicsSVG.getInstance(bounds
                    .getTranslated(bounds.getLocation().negate()));
            graphics.translate(bounds.getLocation().negate());
            rootFigure.paint(graphics);
            try {
                graphics.getSVGGraphics2D().stream(
                        new BufferedWriter(new OutputStreamWriter(outputStream)));
            } catch (SVGGraphics2DIOException e) {
                throw new RuntimeException("Error while saving image", e);
            }
        }
    }
    Je me suis inspiré de plusieurs code trouvé sur le net notamment du plugin Image Export Plug In qui propose de pouvoir exporter un diagramme GEF en SVG, PDF...

    Le seul souci c'est que je n'ai pas réussi à l'utiliser (je n'arrive pas à ouvrir le wizard comme indiqué sur la doc).

    J’espèreque mon post pourra aider quelqu'un.

    Angelo

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Bonjour,

    Je viens juste de me mettre au GEF, et j'essaye d'utiliser ta méthode pour exporter mes diagrammes en SVG.

    Or, première erreur, il m'est impossible d'utiliser la classe:
    org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.export.GraphicsSVG
    J'ai le warning dans Eclipse:
    Discouraged access: The type GraphicsSVG is not accessible due to restriction on required library C:\Program Files\eclipse\plugins\org.eclipse.gmf.runtime.draw2d.ui.render.awt_1.4.2.v20101111-1500.jar
    En fait, je n'ai pas réussi à trouver le plugin "Eclipse Modeling Tools (includes Incubating components)", depuis l'interface install software d'Eclipse. Il y a un plugin EMF mais il n'inclut pas la partie org.eclipse.gmf.runtime.draw2d , qui m’intéresse. Du coup j'ai du télécharger le .jar depuis le site GMF, et je l'ai mis direct dans Eclipse... Et au final j'ai donc cette erreur...

    Est ce que tu sais si c'est une erreur d'accès parce que le plugin à une partie pro payante ? ou alors c'est un probleme d'accès sur mon disque dur ? (on sait jamais) ou alors je suis juste un boulet ?

    Et en fait, peut-être que tu es au courant de nouvelles fonctionnalités GEF/Draw2D qui inclut l'export SVG en interne ? (j'ai pas trouvé sur le net)

    Merci de ton aide.
    Christophe

  4. #4
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour Christophe,

    Ca fait tres longtemps que je n'ai plus mis les mains dans le sujet de ce post.

    Pour la distribution Eclipse Modeling, essaie de la télécharger sur http://www.eclipse.org/modeling/downloads/

    Ton erreur "Discouraged access:" est normal car le bundle n'exporte pas le package org.eclipse.gmf.runtime.draw2d.ui.render.awt.internal.svg.export (par convention les classes dans internal ne sont pas accessibles), mais est ce vraiment bloquant, tu as un probleme de compilation?

    Bon courage.

    Angelo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Export d'un diagramme en format image
    Par CinePhil dans le forum BOUML
    Réponses: 2
    Dernier message: 05/07/2010, 13h31
  2. Réponses: 1
    Dernier message: 19/06/2006, 19h47
  3. problème convertion image jpg en image svg avec batik
    Par linkB2 dans le forum Multimédia
    Réponses: 1
    Dernier message: 27/04/2006, 00h16
  4. integration d'une image SVG a un programme JAVA
    Par Mardagg dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 14/04/2006, 16h42
  5. Exporter diagramme de classe vers image
    Par Koko22 dans le forum Rational
    Réponses: 3
    Dernier message: 18/08/2004, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo