Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut [pyCairo] Donner des identifiants aux éléments exportés en SVG

    Bonjour,

    Je développe un programme qui permet de générer un graphique à l'écran et de l'exporter au format SVG. Pour cela, j'utilise pyCairo.
    Je souhaiterais utiliser ce code SVG dans un site web (je l'intègre dans du code HTML5 - jusque là tout va bien), mais pour plus de convivialité, j'aimerai enrichir ce SVG avec des popups qui apparaitraient au passage de la souris.
    Pour cela, j'ai besoin d'accéder aux différents <path> du SVG (pour rajouter des "onmouseover" par exemple).
    Malheureusement, tels qu'il est exporté par pyCairo, le SVG a des <path> sans "id". Impossible de les distinguer les un des autres !

    S'il vous plait : dites moi qu'il y a une solution facile !!

  2. #2
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 884
    Points : 2 896
    Points
    2 896

    Par défaut

    Salut,

    Et ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?

    J'utilise Inkscape où les paths ont effectivement une 'id'.
    Vincent
    Oqapy . Qarte . PaQager

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut

    ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?
    Non, ce doit être fait automatiquement par mon logiciel, lors de la création du graphique...

    Mais merci quand même pour la réponse.

  4. #4
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 884
    Points : 2 896
    Points
    2 896

    Par défaut

    Ce n'est pour autant pas impossible, dans le cas d'Inkscape justement.

    On peut l'utiliser en ligne de commande et donc via subprocess().

    Voir le man d'inkscape.
    Vincent
    Oqapy . Qarte . PaQager

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut

    Il aura fallu du temps pour que ça murisse, mais je vais enfin pouvoir classer cette discussion dans la catégorie [résolu].

    Voici comment j'ai procédé, ça peut paraitre tordu, mais ça fonctionne comme je le souhaitais.

    1) Au moment de dessiner les objets à rendre "interactifs" (surbrillance, lien, popup), je relève un point caractéristique du rectangle qui constitue l'objet, ou bien je crée un rectangle "transparent".

    Les coordonnées de point caractéristique apparaissent "en clair" dans le fichier .svg. Il suffit alors :
    2) de parser le document :
    Code :
    1
    2
    from xml.dom.minidom import parse
            doc = parse(fichier.svg)
    3) de rechercher parmi tous les éléments svg de type ceux qui commencent par les coordonnées des points caractéristiques des objets à rendre "interactifs".

    4) et en manipulant ces éléments SVG on peut faire plein de choses :
    rajouter des filtres, des attributs du type "onmouseover", des liens hypertexte .......

    5) et bien sûr, il faut sauvegarder tout çà avec un petit Résultat : si on fait ça au moment de sauvegarder le fichier .svg, c'est complètement transparent pour l'utilisateur.



    Je pense que le "langage" SVG mériterait une rubrique à part entière chez Developpez.com.

    A la prochaine.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •