Parser du SVG dans une application XUL

Vous vous penchez sur le développement d'applications ou d'extensions pour Mozilla ? C'est alors vers ce forum que se dirigeront naturellement vos requêtes...
Tael_
Arias
Messages : 13
Inscription : 24 sept. 2007, 17:12

Parser du SVG dans une application XUL

Message par Tael_ »

Bonjour,
J'essaie de créer une application avec XULRunner et j'ai besoin d'ouvrir des fichiers SVG dans ma fenêtre XUL.
Voilà mon code :

Code : Tout sélectionner

/*global window Components DOMParser documentElement*/
var messageAccueil=document.getElementById("message-accueil");
var mainbox=document.getElementById("mainbox");
 var drawBox=document.createElement("groupbox");
 drawBox.setAttribute("width", "800");
 drawBox.setAttribute("height", "600");
 
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.appendFilter("Images SVG","*.svg");
fp.init(window, "Choisit un fichier SVG", nsIFilePicker.modeOpen);	
 var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);  
 var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream); 
var openFile=function(){

var res = fp.show();
if (res == nsIFilePicker.returnOK){
  var thefile = fp.file;
  // --- do something with the file here ---
  fstream.init(thefile, -1, 0, 0);  
 cstream.init(fstream, "UTF-8", 0, 0);
  var str = {};  
   cstream.readString(-1, str); // read the whole file and put it in str.value  
 cstream.close(); // this closes fstream
 var svgCode=str.value;
 var xmlobject = (new DOMParser()).parseFromString(svgCode, "application/xml");
 xmlobject.documentElement.setAttribute("xmlns","http://www.w3.org/2000/svg");
   xmlobject.documentElement.setAttribute("width", "800");
  xmlobject.documentElement.setAttribute("height", "600");
   if(messageAccueil.parentNode){
 mainbox.removeChild(messageAccueil);
   }
 mainbox.appendChild(drawBox);
 drawBox.appendChild(xmlobject.documentElement);

}
};

Cela fonctionne avec les images SVG très simples mais avec des images plus complexes j'ai une erreur de parsing "unclosed token" , alors que mes fichiers SVG sont valides d'après le validateur.

Voilà un exemple de SVG qui ne fonctionne pas:

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="parties_parasite_xA0_Image_1_"
	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px" height="50px"
	 viewBox="0 0 50 50" xml:space="preserve">
<path d="M5.523,35.031c-0.264-2.148,0.011-4.456,0.328-6.276c0.244-1.46,0.762-2.762,1.302-3.916
	c0.169-0.349,0.476-0.762,0.571-1.143c0.169-0.688,0.127-1.471,0.328-2.117c0.371-1.249,1.122-2.371,1.874-3.334
	c0.847-1.122,2.021-2.381,3.333-3.175c1.059-0.646,2.233-1.344,3.345-1.725c2.625-0.868,5.779-0.984,8.88-0.73
	c1.683,0.127,3.26,0.72,4.975,0.889c3.101,1.386,5.736,3.238,6.36,7.102c2.139,0.498,3.599,1.852,4.731,3.577
	c0.116,0.18,0.031,0.223,0.158,0.328c0.509,0.487,0.857,1.302,1.229,2.128c0.2,0.465,0.455,0.91,0.646,1.376
	c0.444,1.058,0.561,2.265,0.729,3.344c0.117,0.709,0.529,1.461,0,2.128c-1.799,0.359-2.466-1.302-3.418-2.128
	c-0.847-0.72-1.736-1.175-2.445-1.958c-0.508-0.147-1.016-0.328-1.545-0.476c-0.54-0.17-1.111-0.445-1.63-0.328
	c-0.487,0.116-0.794,0.74-1.144,1.132c-0.381,0.435-0.74,0.783-1.058,1.154c-1.62,1.556-3.694,2.984-6.202,3.831
	c-1.514,0.497-2.911,0.857-4.964,1.059c-1.302,0.116-2.265,0.053-3.503-0.254c-0.91-0.212-1.45-0.308-2.202-0.741
	c-0.381-0.212-1.037-0.752-1.556-0.889c-0.423-0.117-0.889-0.275-1.217-0.487c-0.402-0.254-0.677-0.667-1.058-0.974
	c-0.381-0.307-0.836-0.54-1.143-0.825c-0.519-0.466-0.836-1.102-1.387-1.461c-1.312,0.751-1.556,2.709-2.042,4.636
	c-0.201,0.836-0.392,2.181-0.889,2.529C5.724,38.153,5.629,35.941,5.523,35.031z M6.338,31.443
	c-0.074,0.709-0.117,1.577-0.085,2.275c0.032,0.582,0.233,1.122,0.244,1.63c0.01,0.455-0.244,0.942,0.169,1.059
	c0.254-0.752,0.307-1.662,0.487-2.519c0.127-0.604,0.497-1.439,0.646-1.874c0.222-0.613,0.254-0.963,0.498-1.387
	c0.095-0.18,0.232-0.455,0.317-0.571c0.211-0.285,0.698-0.392,0.656-0.804c-0.053-0.487-0.445-0.741-0.656-1.154
	c-0.413-0.825-0.434-1.788-0.815-2.688C6.984,26.882,6.571,29.168,6.338,31.443z M10.413,18.891
	c-1.228,1.63-1.926,3.101-1.715,5.948C8.836,26.628,9.27,27.432,10,28.597c0.762,1.175,1.365,1.873,2.371,2.762
	c0.381,0.36,0.762,0.815,1.132,1.069c0.116,0.063,0.36,0.063,0.498,0.158c0.138,0.085,0.211,0.265,0.328,0.318
	c0.243,0.138,0.55,0.138,0.804,0.243c1.069,0.466,2.074,1.471,3.429,1.323c0.55,0.635,1.408,0.74,2.286,0.72
	c1.164-0.021,2.572-0.275,3.747-0.477c2.117-0.402,3.652-1.291,5.133-2.201c0.751-0.466,1.439-0.879,2.043-1.387
	c1.27-1.133,2.402-2.318,3.175-3.684c0.72-1.259,1.471-3.947,1.302-5.863c-0.127-1.365-0.519-2.201-1.059-3.175
	c-0.392-0.709-0.783-1.334-1.228-1.799c-0.678-0.72-1.514-1.048-2.444-1.535c-0.52-0.296-1.111-0.646-1.461-0.741
	c-0.36-0.116-0.783-0.042-1.228-0.169c-0.35-0.085-0.709-0.328-1.059-0.402c-0.836-0.19-1.789-0.286-2.604-0.328
	c-1.312-0.084-2.741-0.159-4.001-0.084c-0.392,0.032-0.857,0.201-1.302,0.254c-2.191,0.233-3.726,0.751-5.133,1.545
	C12.868,16.182,11.577,17.346,10.413,18.891z M36.979,21.664c0.053,2.053-0.625,4.371-1.302,6.191
	c1.312,0.328,2.487,0.497,3.429,1.069c0.35,0.201,0.636,0.603,0.974,0.889c0.36,0.307,0.805,0.54,1.144,0.814
	c0.804,0.688,1.291,1.842,2.444,2.128c0.054,0,0.106,0,0.159,0c0-0.096,0-0.17,0-0.243c-0.286-0.763-0.159-1.482-0.328-2.286
	c-0.116-0.604-0.519-1.302-0.815-2.043c-0.265-0.688-0.486-1.407-0.814-2.043c-0.297-0.561-0.762-1.143-1.133-1.714
	c-0.593-0.868-1.143-1.408-1.799-1.874C38.418,22.183,37.762,21.643,36.979,21.664z"/>
<path fill="#E6E6E6" d="M6.253,33.719c-0.032-0.698,0.011-1.566,0.085-2.275c0.232-2.275,0.646-4.562,1.46-6.033
	c0.381,0.9,0.402,1.863,0.815,2.688c0.211,0.413,0.603,0.667,0.656,1.154c0.042,0.412-0.445,0.519-0.656,0.804
	c-0.085,0.116-0.222,0.392-0.317,0.571c-0.244,0.424-0.275,0.773-0.498,1.387c-0.148,0.435-0.519,1.271-0.646,1.874
	c-0.18,0.856-0.233,1.767-0.487,2.519c-0.413-0.116-0.159-0.604-0.169-1.059C6.486,34.841,6.285,34.301,6.253,33.719z"/>
<path fill="#D3A7D4" d="M8.698,24.839c-0.211-2.847,0.487-4.318,1.715-5.948c1.164-1.545,2.455-2.709,4.318-3.747
	c1.408-0.793,2.942-1.312,5.133-1.545c0.444-0.053,0.91-0.222,1.302-0.254c1.26-0.074,2.688,0,4.001,0.084
	c0.814,0.042,1.768,0.138,2.604,0.328c0.35,0.074,0.709,0.317,1.059,0.402c0.444,0.127,0.867,0.053,1.228,0.169
	c0.35,0.095,0.941,0.445,1.461,0.741c0.931,0.487,1.767,0.815,2.444,1.535c0.444,0.465,0.836,1.09,1.228,1.799
	c0.54,0.974,0.932,1.81,1.059,3.175c0.169,1.916-0.582,4.604-1.302,5.863c-0.772,1.365-1.905,2.551-3.175,3.684
	c-0.604,0.508-1.292,0.921-2.043,1.387c-1.481,0.91-3.017,1.799-5.133,2.201c-1.175,0.201-2.583,0.455-3.747,0.477
	c-0.878,0.021-1.736-0.085-2.286-0.72c-1.355,0.147-2.36-0.857-3.429-1.323c-0.254-0.105-0.561-0.105-0.804-0.243
	c-0.117-0.054-0.19-0.233-0.328-0.318c-0.138-0.095-0.381-0.095-0.498-0.158c-0.371-0.254-0.751-0.709-1.132-1.069
	c-1.006-0.889-1.609-1.587-2.371-2.762C9.27,27.432,8.836,26.628,8.698,24.839z"/>
<path fill="#E6E6E6" d="M35.677,27.855c0.677-1.82,1.354-4.138,1.302-6.191c0.783-0.021,1.439,0.519,1.958,0.889
	c0.656,0.466,1.206,1.006,1.799,1.874c0.371,0.572,0.836,1.154,1.133,1.714c0.328,0.636,0.55,1.354,0.814,2.043
	c0.297,0.741,0.699,1.439,0.815,2.043c0.169,0.804,0.042,1.523,0.328,2.286c0,0.073,0,0.147,0,0.243c-0.053,0-0.105,0-0.159,0
	c-1.153-0.286-1.641-1.439-2.444-2.128c-0.339-0.274-0.783-0.508-1.144-0.814c-0.338-0.286-0.624-0.688-0.974-0.889
	C38.164,28.353,36.989,28.184,35.677,27.855z"/>
<path fill="none" stroke="#000000" d="M30.459,13.504c3.101,1.386,5.736,3.238,6.36,7.102c2.139,0.498,3.599,1.852,4.731,3.577
	c0.116,0.18,0.031,0.223,0.158,0.328c0.509,0.487,0.857,1.302,1.229,2.128c0.2,0.465,0.455,0.91,0.646,1.376
	c0.444,1.058,0.561,2.265,0.729,3.344c0.117,0.709,0.529,1.461,0,2.128c-1.799,0.359-2.466-1.302-3.418-2.128
	c-0.847-0.72-1.736-1.175-2.445-1.958c-0.508-0.147-1.016-0.328-1.545-0.476c-0.54-0.17-1.111-0.445-1.63-0.328
	c-0.487,0.116-0.794,0.74-1.144,1.132c-0.381,0.435-0.74,0.783-1.058,1.154c-1.62,1.556-3.694,2.984-6.202,3.831
	c-1.514,0.497-2.911,0.857-4.964,1.059c-1.302,0.116-2.265,0.053-3.503-0.254c-0.91-0.212-1.45-0.308-2.202-0.741
	c-0.381-0.212-1.037-0.752-1.556-0.889c-0.423-0.117-0.889-0.275-1.217-0.487c-0.402-0.254-0.677-0.667-1.058-0.974
	c-0.381-0.307-0.836-0.54-1.143-0.825c-0.519-0.466-0.836-1.102-1.387-1.461c-1.312,0.751-1.556,2.709-2.042,4.636
	c-0.201,0.836-0.392,2.181-0.889,2.529c-1.186,0.847-1.281-1.365-1.387-2.275c-0.264-2.148,0.011-4.456,0.328-6.276
	c0.244-1.46,0.762-2.762,1.302-3.916c0.169-0.349,0.476-0.762,0.571-1.143c0.169-0.688,0.127-1.471,0.328-2.117
	c0.371-1.249,1.122-2.371,1.874-3.334c0.847-1.122,2.021-2.381,3.333-3.175c1.059-0.646,2.233-1.344,3.345-1.725
	c2.625-0.868,5.779-0.984,8.88-0.73C27.167,12.742,28.744,13.334,30.459,13.504z"/>
<path fill="none" stroke="#000000" d="M7.153,33.889c0.127-0.604,0.497-1.439,0.646-1.874c0.222-0.613,0.254-0.963,0.498-1.387
	c0.095-0.18,0.232-0.455,0.317-0.571c0.211-0.285,0.698-0.392,0.656-0.804c-0.053-0.487-0.445-0.741-0.656-1.154
	c-0.413-0.825-0.434-1.788-0.815-2.688c-0.815,1.471-1.228,3.757-1.46,6.033c-0.074,0.709-0.117,1.577-0.085,2.275
	c0.032,0.582,0.233,1.122,0.244,1.63c0.01,0.455-0.244,0.942,0.169,1.059C6.92,35.655,6.973,34.745,7.153,33.889z"/>
<path fill="none" stroke="#000000" d="M20.849,35.19c1.164-0.021,2.572-0.275,3.747-0.477c2.117-0.402,3.652-1.291,5.133-2.201
	c0.751-0.466,1.439-0.879,2.043-1.387c1.27-1.133,2.402-2.318,3.175-3.684c0.72-1.259,1.471-3.947,1.302-5.863
	c-0.127-1.365-0.519-2.201-1.059-3.175c-0.392-0.709-0.783-1.334-1.228-1.799c-0.678-0.72-1.514-1.048-2.444-1.535
	c-0.52-0.296-1.111-0.646-1.461-0.741c-0.36-0.116-0.783-0.042-1.228-0.169c-0.35-0.085-0.709-0.328-1.059-0.402
	c-0.836-0.19-1.789-0.286-2.604-0.328c-1.312-0.084-2.741-0.159-4.001-0.084c-0.392,0.032-0.857,0.201-1.302,0.254
	c-2.191,0.233-3.726,0.751-5.133,1.545c-1.863,1.038-3.154,2.202-4.318,3.747c-1.228,1.63-1.926,3.101-1.715,5.948
	C8.836,26.628,9.27,27.432,10,28.597c0.762,1.175,1.365,1.873,2.371,2.762c0.381,0.36,0.762,0.815,1.132,1.069
	c0.116,0.063,0.36,0.063,0.498,0.158c0.138,0.085,0.211,0.265,0.328,0.318c0.243,0.138,0.55,0.138,0.804,0.243
	c1.069,0.466,2.074,1.471,3.429,1.323C19.113,35.105,19.97,35.211,20.849,35.19z"/>
<path fill="none" stroke="#000000" d="M43.826,32.513c-0.286-0.763-0.159-1.482-0.328-2.286c-0.116-0.604-0.519-1.302-0.815-2.043
	c-0.265-0.688-0.486-1.407-0.814-2.043c-0.297-0.561-0.762-1.143-1.133-1.714c-0.593-0.868-1.143-1.408-1.799-1.874
	c-0.519-0.37-1.175-0.91-1.958-0.889c0.053,2.053-0.625,4.371-1.302,6.191c1.312,0.328,2.487,0.497,3.429,1.069
	c0.35,0.201,0.636,0.603,0.974,0.889c0.36,0.307,0.805,0.54,1.144,0.814c0.804,0.688,1.291,1.842,2.444,2.128
	c0.054,0,0.106,0,0.159,0C43.826,32.66,43.826,32.586,43.826,32.513z"/>
</svg>
(A priori, tous les tags sont fermés...)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités