Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# tag <use> SVG et XBL

Envoyé par : jcs

Date : 18/12/2006 19:15

J'écris actuellement un composant XBL utilisant SVG et j'ai rencontré un comportement que je ne m'explique pas. J'ai donc écrit le testcase suivant (dispo aussi à http://sirot.nerim.net/xbl/bug.xhtml)

bug.xml :

<?xml version="1.0" encoding="utf-8"?>
<bindings xmlns="http://www.mozilla.org/xbl"
	  xmlns:xbl="http://www.mozilla.org/xbl"
	  xmlns:xlink="http://www.w3.org/1999/xlink"
	  xmlns:svg="http://www.w3.org/2000/svg">
	<binding id="bug">
		<content>
			<svg:svg xmlns="http://www.w3.org/2000/svg"
					 xbl:inherits="width,height"
					 viewBox="0 0 100 100">
				<defs>
					<rect id="my_rect" width="50" height="50" fill="#ff0000"/>
				</defs>
				<use xlink:href="#my_rect" x="25" y="25" />
			</svg:svg>
		</content>
		<implementation/>
	</binding>
</bindings>

bug.css :

bug {
   -moz-binding: url("bug.xml#bug");
}

bug.xhtml :

<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<link rel="stylesheet" type="text/css" href="bug.css" />
	</head>
	<body>
		<bug width="100" height="100"/>
	</body>
</html>

Normalement on devrait voir un carré rouge. À la place... rien. Quelqu'un comprend-il ce qui se passe ? C'est un bug dans l'implémentation de XBL ? Ou plus probablement, je suis passé à côté de quelque-chose ?

Merci d'avance.

# Re: tag <use> SVG et XBL

Envoyé par : Paul Rouget

Date : 18/12/2006 20:14

remplaces tes balises "defs" par "symbol".

# Re: tag <use> SVG et XBL

Envoyé par : jcs

Date : 19/12/2006 10:15

Merci Paul pour ta réponse rapide. Mais si j'utilise des balises "defs" c'est pour que ce qui est définit à l'intérieur des balises ne soit pas rendu. En fait mon objectif est "d'instancier" des éléments SVG programatiquement dans des méthodes du XBL. Un peu comme ça :

var use = document.createElementNS(SVG_NS, "use");
use.setAttributeNS(XLINK_NS, "href", my_ref);
use.setAttribute("x", x_coord);
use.setAttribute("y", y_coord);
this.svgRoot.appendChild(use);

Or il semble que les balises "use" ne fonctionnent pas. Enfin, si je n'arrive pas à faire marcher ça je pourrai toujours créer directement les éléments sans les utiliser des éléments référencés mais je trouve ça moins élégant.

# Re: tag <use> SVG et XBL

Envoyé par : Paul Rouget

Date : 19/12/2006 11:53

Mais si j'utilise des balises "defs" c'est pour que ce qui est définit à l'intérieur des balises ne soit pas rendu.

Tout comme la balise <symbol/> :) Je crois que <defs> n'existe que pour des histoires de sémantique.

Sinon, c'est en effet un bug que ton <defs> ne fonctionne pas dans un xbl.

# Re: tag <use> SVG et XBL

Envoyé par : papy

Date : 19/12/2006 12:55

Question peut être stupide, mais il ne faut pas mettre le namespace devant tout les tags ?

Au niveau de mon code XUL/XBL, je le fais systématiquement, je crois que ca ne marche pas sans.

<?xml version="1.0" encoding="utf-8"?>
<bindings xmlns="http://www.mozilla.org/xbl"
  xmlns:xbl="http://www.mozilla.org/xbl"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:svg="http://www.w3.org/2000/svg">
	<binding id="bug">
               <content>
			<svg:svg xmlns="http://www.w3.org/2000/svg"
				 xbl:inherits="width,height"
				 viewBox="0 0 100 100">
				<svg:defs>
					<svg:rect id="my_rect" width="50" height="50" fill="#ff0000"/>
				</svg:defs>
				<svg:use xlink:href="#my_rect" x="25" y="25" />
			</svg:svg>
                </content>
                <implementation/>
        </binding>
</bindings>

# Re: tag <use> SVG et XBL

Envoyé par : jcs

Date : 19/12/2006 16:45

Paul :

J'ai essayé de remplacer les "defs" par des "symbol" j'obtiens ce résultat un peu étrange : ce qui est définit entre les balises "symbol" est rendu à l'affichage ; la balise "use" semble complètement ignorée. J'ai regardé un peu le bugzilla de mozilla mais je n'est pas trouvé de bug ressemblant à celui-là.

Papy :

Non ce n'est pas la peine de préfixer, puisqu'on définit le namespace implicite dans la balise "<svg>" comme étant "http://www.w3.org/2000/svg". En fait même le "<svg:svg>" est inutile et pourrait simplement être remplacé par "<svg>".

# Re: tag <use> SVG et XBL

Envoyé par : papy

Date : 19/12/2006 16:51

Merci pour cette réponse, je vais enfin pouvoir virer tout ces prefixes ;)

# Re: tag <use> SVG et XBL

Envoyé par : Fabrice

Date : 19/12/2006 17:36

Salut jcs,

je te propose de regarder le code de ma pendule sur mon site. J'utilise defs dans le svg. Peut-être que ça poura t'aider...

Fabrice

# Re: tag <use> SVG et XBL

Envoyé par : jcs

Date : 20/12/2006 18:48

Merci Fabrice. J'avais déjà regardé le code de ta pendule. J'ai donc copié le fichier chez moi et voilà ce que j'obtiens :

http://sirot.nerim.net/xbl/screenshot.pn(..)

Comme si les tags "use" étaient complètement ignorés. Je trouve cela vraiment étrange. Pourrais-tu poster le code html qui te donne le rendu correct s'il te plait.

# Re: tag <use> SVG et XBL

Envoyé par : jcs

Date : 20/12/2006 18:54

Je viens de me rendre compte de quelque-chose : si j'utilise la pendule de Fabrice dans un document XUL le rendu est impécable (gradients...) par contre dans un document xHTML le rendu est celui de la capture d'écran dans mon post précédent.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.