1 package net.systemeD.halcyon.styleparser {
3 /** A StyleList object is the full list of all styles applied to
4 a drawn entity (i.e. node/way). <p>
6 Each array element applies to that sublayer (z-index). If there
7 is no element, nothing is drawn on that sublayer. </p><p>
9 StyleLists are created by StyleChooser.getStyles. </p>
11 @see net.systemeD.halcyon.styleparser.StyleChooser
14 public class StyleList {
16 public var shapeStyles:Object={};
17 public var textStyles:Object={};
18 public var pointStyles:Object={};
19 public var shieldStyles:Object={};
20 public var maxwidth:Number=0;
22 /** List of subparts used in this StyleList. */
23 public var subparts:Array=[];
25 /** Zoom level this StyleList is valid at. If -1, valid at all styles (i.e. doesn't need to be recomputed
26 on zoom in/out); otherwise, specifies a single zoom level. */
27 public var validAt:int=-1;
29 /** Does this StyleList contain any styles? */
30 public function hasStyles():Boolean {
31 return ( hasShapeStyles() || hasTextStyles() || hasPointStyles() || hasShieldStyles() );
34 /** Does this StyleList contain any styles with a fill? */
35 public function hasFills():Boolean {
36 for each (var ss:ShapeStyle in shapeStyles) {
37 if (!isNaN(ss.fill_color) || ss.fill_image) return true;
42 /** Does this StyleList manually force an OSM layer? */
43 public function layerOverride():Number {
44 for each (var ss:ShapeStyle in shapeStyles) {
45 if (ss['layer']) return ss['layer'];
50 /** Record that a subpart is used in this StyleList. */
51 public function addSubpart(s:String):void {
52 if (subparts.indexOf(s)==-1) { subparts.push(s); }
55 /** Summarise StyleList as String - for debugging. */
56 public function toString():String {
59 for (k in shapeStyles) { str+="- SS "+k+"="+shapeStyles[k]+"\n"; }
60 for (k in textStyles) { str+="- TS "+k+"="+textStyles[k]+"\n"; }
61 for (k in pointStyles) { str+="- PS "+k+"="+pointStyles[k]+"\n"; }
62 for (k in shieldStyles) { str+="- sS "+k+"="+shieldStyles[k]+"\n"; }
66 /** Is this StyleList valid at a given zoom? */
67 public function isValidAt(zoom:uint):Boolean {
68 return (validAt==-1 || validAt==zoom);
71 private function hasShapeStyles():Boolean { for (var a:String in shapeStyles ) { return true; }; return false; }
72 private function hasTextStyles():Boolean { for (var a:String in textStyles ) { return true; }; return false; }
73 private function hasPointStyles():Boolean { for (var a:String in pointStyles ) { return true; }; return false; }
74 private function hasShieldStyles():Boolean { for (var a:String in shieldStyles) { return true; }; return false; }