Css.as 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package string {
  2. public class Css {
  3. public var text_align:String;
  4. public var font_size:Number;
  5. private var text_decoration:String;
  6. private var margin:String;
  7. public var margin_top:Number;
  8. public var margin_bottom:Number;
  9. public var margin_left:Number;
  10. public var margin_right:Number;
  11. private var padding:String;
  12. public var padding_top:Number=0;
  13. public var padding_bottom:Number=0;
  14. public var padding_left:Number=0;
  15. public var padding_right:Number=0;
  16. public var font_weight:String;
  17. public var font_style:String;
  18. public var font_family:String;
  19. public var color:Number;
  20. private var stop_process:Number; // Flag for disable checking
  21. public var background_colour:Number;
  22. public var background_colour_set:Boolean;
  23. private var display:String;
  24. public function Css( txt:String ) {
  25. // To lower case
  26. txt.toLowerCase();
  27. // monk.e.boy: remove the { and }
  28. txt = txt.replace( '{', '' );
  29. txt = txt.replace( '}', '' );
  30. // monk.e.boy: setup some default values.
  31. // does this confilct with 'clear()'?
  32. this.margin_top = 0;
  33. this.margin_bottom = 0;
  34. this.margin_left = 0;
  35. this.margin_right = 0;
  36. this.padding_top = 0;
  37. this.padding_bottom = 0;
  38. this.padding_left = 0;
  39. this.padding_right = 0;
  40. this.color = 0;
  41. this.background_colour_set = false;
  42. this.font_size = 9;
  43. // Splitting by the ;
  44. var arr:Array = txt.split(";");
  45. // Checking all the types of css params we accept and writing to internal variables of the object class
  46. for( var i:Number = 0; i < arr.length; i++)
  47. {
  48. getAttribute(arr[i]);
  49. }
  50. }
  51. private function trim( txt:String ):String {
  52. var l:Number = 0;
  53. var r:Number = txt.length - 1;
  54. while(txt.charAt(l) == ' ' || txt.charAt(l) == "\t" ) l++;
  55. while(txt.charAt(r) == ' ' || txt.charAt(r) == "\t" ) r--;
  56. return txt.substring( l, r+1 );
  57. }
  58. private function removeDoubleSpaces( txt:String ):String {
  59. var aux:String;
  60. var auxPrev:String;
  61. aux = txt;
  62. do {
  63. auxPrev = aux;
  64. aux.replace(' ',' ');
  65. } while ( auxPrev.length != aux.length );
  66. return aux;
  67. }
  68. private function ToNumber(cad:String):Number {
  69. cad = cad.replace( 'px', '' );
  70. if ( isNaN( Number(cad) ) ) {
  71. return 0;
  72. } else {
  73. return Number(cad);
  74. }
  75. }
  76. private function getAttribute( txt:String ):void {
  77. var arr:Array = txt.split(":");
  78. if( arr.length==2 )
  79. {
  80. this.stop_process = 1;
  81. this.set( arr[0], trim(arr[1]) );
  82. }
  83. }
  84. /*
  85. public function get( cad:String ):Number {
  86. switch (cad) {
  87. case "text-align" : return this.text_align;
  88. case "font-size" : return ToNumber(this.font_size);
  89. case "text-decoration" : return this.text_decoration;
  90. case "margin-top" : return this.margin_top;
  91. case "margin-bottom" : return this.margin_bottom;
  92. case "margin-left" : return this.margin_left;
  93. case "margin-right" : return this.margin_right;
  94. case "padding-top" : return this.padding_top;
  95. case "padding-bottom" : return this.padding_bottom;
  96. case "padding-left" : return this.padding_left;
  97. case "padding-right" : return this.padding_right;
  98. case "font-weight" : return ToNumber(this.font_weight);
  99. case "font-style" : return this.font_style;
  100. case "font-family" : return this.font_family;
  101. case "color" : return this.color;
  102. case "background-color" : return this.bg_colour;
  103. case "display" : return this.display;
  104. default : return 0;
  105. }
  106. }
  107. */
  108. // FUCKING!! Flash without By reference String parameters on functions
  109. public function set( cad:String, val:String ):void {
  110. cad = trim( cad );
  111. switch( cad )
  112. {
  113. case "text-align" : this.text_align = val; break;
  114. case "font-size" : this.set_font_size(val); break;
  115. case "text-decoration" : this.text_decoration = val; break;
  116. case "margin" : this.setMargin(val); break;
  117. case "margin-top" : this.margin_top = ToNumber(val); break;
  118. case "margin-bottom" : this.margin_bottom = ToNumber(val); break;
  119. case "margin-left" : this.margin_left = ToNumber(val); break;
  120. case "margin-right" : this.margin_right = ToNumber(val); break;
  121. case 'padding' : this.setPadding(val); break;
  122. case "padding-top" : this.padding_top = ToNumber(val); break;
  123. case "padding-bottom" : this.padding_bottom = ToNumber(val); break;
  124. case "padding-left" : this.padding_left = ToNumber(val); break;
  125. case "padding-right" : this.padding_right = ToNumber(val); break;
  126. case "font-weight" : this.font_weight = val; break;
  127. case "font-style" : this.font_style = val; break;
  128. case "font-family" : this.font_family = val; break;
  129. case "color" : this.set_color(val); break;
  130. case "background-color":
  131. this.background_colour = Utils.get_colour(val);
  132. this.background_colour_set = true;
  133. break;
  134. case "display" : this.display = val; break;
  135. }
  136. }
  137. public function set_color( val:String ):void {
  138. this.color = Utils.get_colour( val );
  139. }
  140. public function set_font_size( val:String ):void {
  141. this.font_size = ToNumber(val);
  142. }
  143. private function setPadding( val:String ):void {
  144. val = trim( val );
  145. var arr:Array = val.split(' ');
  146. switch( arr.length )
  147. {
  148. // margin: 30px;
  149. case 1:
  150. this.padding_top = ToNumber(arr[0]);
  151. this.padding_right = ToNumber(arr[0]);
  152. this.padding_bottom = ToNumber(arr[0]);
  153. this.padding_left = ToNumber(arr[0]);
  154. break;
  155. // margin: 15px 5px;
  156. case 2:
  157. this.padding_top = ToNumber(arr[0]);
  158. this.padding_right = ToNumber(arr[1]);
  159. this.padding_bottom = ToNumber(arr[0]);
  160. this.padding_left = ToNumber(arr[1]);
  161. break;
  162. // margin: 15px 5px 10px;
  163. case 3:
  164. this.padding_top = ToNumber(arr[0]);
  165. this.padding_right = ToNumber(arr[1]);
  166. this.padding_bottom = ToNumber(arr[2]);
  167. this.padding_left = ToNumber(arr[1]);
  168. break;
  169. // margin: 1px 2px 3px 4px;
  170. default:
  171. this.padding_top = ToNumber(arr[0]);
  172. this.padding_right = ToNumber(arr[1]);
  173. this.padding_bottom = ToNumber(arr[2]);
  174. this.padding_left = ToNumber(arr[3]);
  175. }
  176. }
  177. private function setMargin( val:String ):void {
  178. val = trim( val );
  179. var arr:Array = val.split(' ');
  180. switch( arr.length )
  181. {
  182. // margin: 30px;
  183. case 1:
  184. this.margin_top = ToNumber(arr[0]);
  185. this.margin_right = ToNumber(arr[0]);
  186. this.margin_bottom = ToNumber(arr[0]);
  187. this.margin_left = ToNumber(arr[0]);
  188. break;
  189. // margin: 15px 5px;
  190. case 2:
  191. this.margin_top = ToNumber(arr[0]);
  192. this.margin_right = ToNumber(arr[1]);
  193. this.margin_bottom = ToNumber(arr[0]);
  194. this.margin_left = ToNumber(arr[1]);
  195. break;
  196. // margin: 15px 5px 10px;
  197. case 3:
  198. this.margin_top = ToNumber(arr[0]);
  199. this.margin_right = ToNumber(arr[1]);
  200. this.margin_bottom = ToNumber(arr[2]);
  201. this.margin_left = ToNumber(arr[1]);
  202. break;
  203. // margin: 1px 2px 3px 4px;
  204. default:
  205. this.margin_top = ToNumber(arr[0]);
  206. this.margin_right = ToNumber(arr[1]);
  207. this.margin_bottom = ToNumber(arr[2]);
  208. this.margin_left = ToNumber(arr[3]);
  209. }
  210. }
  211. public function clear():void {
  212. this.text_align = undefined;
  213. this.font_size = undefined;
  214. this.text_decoration = undefined;
  215. this.margin_top = undefined;
  216. this.margin_bottom = undefined;
  217. this.margin_left = undefined;
  218. this.margin_right = undefined;
  219. this.font_weight = undefined;
  220. this.font_style = undefined;
  221. this.font_family = undefined;
  222. this.color = undefined;
  223. this.display = undefined;
  224. }
  225. }
  226. }