1 goog.provide('lime.parser.ZWOPTEX2');
  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 goog.require('goog.json');
  8 
  9 (function(){
 10 
 11 
 12 
 13 function makeDict(element){
 14     var ob = {};
 15     var keys = findNodes(element,'key');
 16     for(var i=0;i<keys.length;i++){
 17         ob[keys[i].firstChild.nodeValue] = goog.dom.getNextElementSibling(keys[i]);
 18     }
 19     return ob;
 20 };
 21 
 22 function findNodes(element,tag){
 23     var ar = [];
 24     for(var i=0;i<element.childNodes.length;i++){
 25         if(element.childNodes[i].nodeName==tag){
 26             ar.push(element.childNodes[i]);
 27         }
 28     }
 29     return ar;
 30 }
 31 
 32 
 33 lime.parser.ZWOPTEX2 = function(data){
 34     var dict = {};
 35     var doc = goog.dom.xml.loadXml(data);
 36     
 37     var root = findNodes(findNodes(doc,'plist')[1],'dict')[0];
 38     
 39     var d0 = makeDict(root);
 40     var d1 = makeDict(d0['frames']);
 41     var parse = function(v){
 42         return goog.json.parse(this[v].firstChild.nodeValue.replace(/\{/g,'[').replace(/\}/g,']'));
 43     }
 44     
 45     for(var i in d1){
 46         var d2 = makeDict(d1[i]);
 47         d2.getValue = parse;
 48         
 49         var frame_ = d2['textureRect'] ? 'textureRect' : 'frame',
 50             sourceSize_ = d2['spriteSourceSize'] ? 'spriteSourceSize' : 'sourceSize',
 51             sourceColorRect_ = d2['spriteColorRect'] ? 'spriteColorRect' : 'sourceColorRect',
 52             rotated_ = d2['textureRotated'] ? 'textureRotated' : 'rotated';
 53         
 54         var tr = d2.getValue(frame_), ss = d2.getValue(sourceSize_),
 55             scr = d2.getValue(sourceColorRect_);
 56              
 57         var rotated = d2[rotated_].tagName.toLowerCase()=='true';
 58                 
 59         if(rotated && rotated_=='rotated'){
 60             var c = tr[1][0];
 61             tr[1][0] = tr[1][1];
 62             tr[1][1] = c;
 63         }
 64         dict[i] = [new  goog.math.Rect(tr[0][0],tr[0][1],tr[1][0],tr[1][1]),
 65                 new goog.math.Vec2(scr[0][0],scr[0][1]),
 66                 new goog.math.Size(ss[0],ss[1]),rotated
 67                 ];
 68     }
 69     
 70     return dict;
 71 };
 72 
 73 })();