refactor node stateClasses and stylelist calculation
[potlatch2.git] / net / systemeD / halcyon / styleparser / StyleList.as
1 package net.systemeD.halcyon.styleparser {
2
3         public class StyleList {
4
5                 /*
6                         A StyleList object is the full list of all styles applied to 
7                         a drawn entity (i.e. node/way).
8                         
9                         Each array element applies to that sublayer (z-index). If there
10                         is no element, nothing is drawn on that sublayer.
11
12                 */
13
14                 public var shapeStyles:Object={};
15                 public var textStyles:Object={};
16                 public var pointStyles:Object={};
17                 public var shieldStyles:Object={};
18                 public var maxwidth:Number=0;
19                 public var sublayers:Array=[];
20                 public var validAt:int=-1;                              // zoom level at which this StyleList is valid, or -1 for all
21
22                 public function hasStyles():Boolean {
23                         return ( hasShapeStyles() || hasTextStyles() || hasPointStyles() || hasShieldStyles() );
24                 }
25                 
26                 public function addSublayer(s:Number):void {
27                         if (sublayers.indexOf(s)==-1) { sublayers.push(s); }
28                 }
29
30                 public function toString():String {
31                         var str:String='';
32                         var k:String;
33                         for (k in shapeStyles) { str+="- SS "+k+"="+shapeStyles[k]+"\n"; }
34                         for (k in textStyles) { str+="- TS "+k+"="+textStyles[k]+"\n"; }
35                         for (k in pointStyles) { str+="- PS "+k+"="+pointStyles[k]+"\n"; }
36                         for (k in shieldStyles) { str+="- sS "+k+"="+shieldStyles[k]+"\n"; }
37                         return str;
38                 }
39
40                 public function isValidAt(zoom:uint):Boolean {
41                         return (validAt==-1 || validAt==zoom);
42                 }
43
44                 private function hasShapeStyles():Boolean  { for (var a:String in shapeStyles ) { return true; }; return false; }
45                 private function hasTextStyles():Boolean   { for (var a:String in textStyles  ) { return true; }; return false; }
46                 private function hasPointStyles():Boolean  { for (var a:String in pointStyles ) { return true; }; return false; }
47                 private function hasShieldStyles():Boolean { for (var a:String in shieldStyles) { return true; }; return false; }
48         }
49 }