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