/src/structuredlight/parseMap2.as

http://github.com/m0ose/ambient-pixel-action-script · ActionScript · 170 lines · 118 code · 36 blank · 16 comment · 33 complexity · a099751e8589a14e09e677cea188eb86 MD5 · raw file

  1. package structuredlight
  2. {
  3. import flash.geom.Point;
  4. public class parseMap2
  5. {
  6. private var i:int//iterator for parseing
  7. private var txt:String
  8. private var width:int;
  9. private var height:int;
  10. public function parseMap2()
  11. {
  12. }
  13. public function camMap2XML( cm:CameraProjecterMap2):String
  14. {
  15. var xm:XML = <cammap> </cammap>;
  16. //xm.appendChild(<scaleX> {cm._scaleX } </scaleX>);
  17. //xm.appendChild(<scaleY> {cm._scaleY } </scaleY>);
  18. xm.appendChild(<width> {cm.width() } </width> );
  19. xm.appendChild(<height> {cm.height() } </height> );
  20. xm.appendChild(<threshold> {cm._threshold} </threshold> );
  21. xm.appendChild(<gray_width> {cm._gray_width} </gray_width> );
  22. xm.appendChild(<gray_height> {cm._gray_height} </gray_height> );
  23. xm.appendChild(<cam_width> {cm._cam_width} </cam_width> );
  24. xm.appendChild(<cam_height> {cm._cam_height} </cam_height> );
  25. xm.appendChild(<screen_width> {cm._screen_width} </screen_width> );
  26. xm.appendChild(<screen_height> {cm._screen_height} </screen_height> );
  27. //var mp:XML = <graymap width={cm.width()} height={cm.height()} > {cm.map} </graymap> ;
  28. var mp:XML = <graymap> {cm.map} </graymap> ;
  29. xm.appendChild(mp);
  30. return xm.toXMLString();
  31. }
  32. /*public function projMap2XML( pm:ProjectorMap):String
  33. {
  34. //TODO
  35. }
  36. */
  37. public function parse(sometext:String):CameraProjecterMap2
  38. {
  39. var xm:XML = XML(sometext);
  40. var cm:CameraProjecterMap2 = new CameraProjecterMap2();
  41. //if( xm.scaleX)
  42. // cm._scaleX = int( xm.scaleX.toString() );
  43. //if( xm.scaleY)
  44. // cm._scaleY = int( xm.scaleY.toString() );
  45. if( xm.threshold )
  46. cm._threshold = int( xm.threshold.toString() );
  47. if( xm.width)
  48. width = int(xm.width.toString() );
  49. if( xm.height)
  50. height = int( xm.height.toString() );
  51. if( xm.gray_width )
  52. cm._gray_width = int( xm.gray_width.toString() );
  53. if( xm.gray_height )
  54. cm._gray_height = int( xm.gray_height.toString() );
  55. if( xm.cam_width)
  56. cm._cam_width = int( xm.cam_width.toString() );
  57. if( xm.cam_height)
  58. cm._cam_height = int( xm.cam_height.toString() );
  59. if( xm.screen_width)
  60. cm._screen_width = int( xm.screen_width.toString() );
  61. if( xm.screen_height)
  62. cm._screen_height = int( xm.screen_height.toString() );
  63. if( xm.graymap )
  64. {
  65. }
  66. else //old style map
  67. {
  68. width = xm.@width;
  69. height = xm.@height;
  70. }
  71. txt = xm.graymap.toString();
  72. i=0
  73. cm.map = doArray();
  74. return cm;
  75. }
  76. public function doArray():Array
  77. {
  78. var xtmp:int;
  79. var ytmp:int;
  80. var newMap:Array = new Array( width);
  81. for(var x:int=0;x< width;x++)
  82. {
  83. newMap[x] = new Array( height)
  84. for( var y:int=0; y< height;y++)
  85. {
  86. //example : (x=341, y=330),(x=341, y=338),(x=333, y=341),(x=341, y=341),(x=342, y=309),(x=423, y=330),(x=150, y=330),(x=42, y=74),
  87. eatUntill('(')
  88. eatUntill('x')
  89. xtmp = int(getWord())
  90. eatUntill('y')
  91. ytmp= int(getWord())
  92. //_output.text += " ("+xtmp+","+ytmp+") "+"{"+x+","+y+"}"
  93. newMap[x][y] = new Point(xtmp, ytmp)
  94. }
  95. }
  96. //_output.text+="\n" + newMap.toString() + newMap.length.toString() +',' + newMap[0].length
  97. return newMap
  98. }
  99. //string thigs
  100. private function eatUntill( char:String):Boolean
  101. {
  102. while( txt.charAt(i) != char && i < txt.length)
  103. {
  104. i++
  105. }
  106. if (txt.charAt(i) == char)
  107. {
  108. i++
  109. return true
  110. }
  111. return false
  112. }
  113. private function eatWhite( ):void
  114. {
  115. while( (txt.charAt(i) == ' ' || txt.charAt(i) == '=' )&& i < txt.length)
  116. {
  117. i++
  118. }
  119. }
  120. private function getWord():String
  121. {
  122. eatWhite()
  123. var res:String=new String()
  124. var ch:String = txt.charAt(i)
  125. while(ch != "=" && ch != "," && ch != ";" && ch !="\n" && ch !=" " && ch !='>' && ch != '<' && ch != ')' && i < txt.length)
  126. {
  127. res += ch
  128. i++
  129. ch = txt.charAt(i)
  130. }
  131. return res.toLowerCase()
  132. }
  133. }
  134. }