1 goog.provide('lime.parser.ZWOPTEX'); 2 3 goog.require('goog.dom.xml'); 4 goog.require('goog.math.Rect'); 5 goog.require('goog.math.Vec2'); 6 goog.require('goog.math.Size'); 7 8 (function(){ 9 10 11 12 function makeDict(element){ 13 var ob = {}; 14 var keys = findNodes(element,'key'); 15 for(var i=0;i<keys.length;i++){ 16 ob[keys[i].firstChild.nodeValue] = goog.dom.getNextElementSibling(keys[i]); 17 } 18 return ob; 19 }; 20 21 function findNodes(element,tag){ 22 var ar = []; 23 for(var i=0;i<element.childNodes.length;i++){ 24 if(element.childNodes[i].nodeName==tag){ 25 ar.push(element.childNodes[i]); 26 } 27 } 28 return ar; 29 } 30 31 32 lime.parser.ZWOPTEX = function(data){ 33 var dict = {}; 34 var doc = goog.dom.xml.loadXml(data); 35 36 var root = findNodes(findNodes(doc,'plist')[1],'dict')[0]; 37 38 var d0 = makeDict(root); 39 var d1 = makeDict(d0['frames']); 40 41 for(var i in d1){ 42 var d2 = makeDict(d1[i]); 43 d2.getValue = function(v){ 44 return parseFloat(d2[v].firstChild.nodeValue); 45 }; 46 var ow = d2.getValue('originalWidth'), oh = d2.getValue('originalHeight'), 47 w = d2.getValue('width'), h = d2.getValue('height'), 48 ox = (ow - w) / 2 + d2.getValue('offsetX'), oy = (oh - h) / 2 + d2.getValue('offsetY'); 49 dict[i] = [new goog.math.Rect(d2.getValue('x'),d2.getValue('y'),w,h), 50 new goog.math.Vec2(ox,oy), 51 new goog.math.Size(ow,oh),false 52 ]; 53 } 54 55 return dict; 56 }; 57 58 })(); 59