home *** CD-ROM | disk | FTP | other *** search
- package com.livebrush.styles
- {
- import com.livebrush.data.Settings;
- import com.livebrush.data.Storable;
- import com.livebrush.utils.ColorObj;
- import flash.events.EventDispatcher;
-
- public class Style extends EventDispatcher implements Storable
- {
- public static var idList:Array = [];
-
- public var decoStyle:DecoStyle;
-
- public var name:String;
-
- public var lineStyle:LineStyle;
-
- public var strokeStyle:StrokeStyle;
-
- public var id:int;
-
- public var styleManager:StyleManager;
-
- public function Style(styleManager:StyleManager)
- {
- super();
- this.id = getNewID();
- this.name = "Style_" + this.id;
- this.styleManager = styleManager;
- this.decoStyle = new DecoStyle(this);
- this.lineStyle = new LineStyle(this);
- this.strokeStyle = new StrokeStyle(this);
- }
-
- public static function propEnabledListToXML(list:Array, valuePropName:String = "value", enabledPropName:String = "enabled", propName:String = "Properties", groupSuffix:String = "List") : XML
- {
- var propXML:XML = new XML(new XML("<" + (propName + groupSuffix) + "/>"));
- for(var i:int = 0; i < list.length; i++)
- {
- propXML.appendChild(<{propName} {valuePropName}={list[i][valuePropName]} {enabledPropName}={list[i][enabledPropName]}/>);
- }
- return propXML;
- }
-
- public static function propEnabledXMLToList(xml:XMLList) : Array
- {
- var element:XML = null;
- var list:Array = [];
- for each(element in xml)
- {
- list.push({
- "value":String(element.@value),
- "enabled":(element.@enabled == "true" ? true : false)
- });
- }
- return list;
- }
-
- public static function getNewID() : int
- {
- var newID:int = 0;
- var highestID:int = 0;
- for(var i:int = 0; i < idList.length; i++)
- {
- if(idList[i] >= highestID)
- {
- highestID = int(idList[i]);
- }
- }
- newID = highestID + 1;
- idList.push(newID);
- return newID;
- }
-
- public static function objToColorObj(o:Object) : ColorObj
- {
- return new ColorObj(o.value,o.enabled);
- }
-
- public static function objListToColorObjList(list:Array) : Array
- {
- var colorList:Array = [];
- for(var i:int = 0; i < list.length; i++)
- {
- colorList.push(objToColorObj(list[i]));
- }
- return colorList;
- }
-
- public function die() : void
- {
- this.lineStyle.die();
- this.strokeStyle.die();
- this.decoStyle.die();
- }
-
- public function getXML() : XML
- {
- var styleXML:XML = new XML(<style name={this.name} type="style"/>);
- styleXML.appendChild(this.lineStyle.getXML());
- styleXML.appendChild(this.strokeStyle.getXML());
- styleXML.appendChild(this.decoStyle.getXML());
- return styleXML;
- }
-
- public function get settings() : Settings
- {
- var settings:Settings = new Settings();
- settings.line = this.lineStyle.settings;
- settings.stroke = this.strokeStyle.settings;
- settings.deco = this.decoStyle.settings;
- return settings;
- }
-
- public function set settings(settings:Settings) : void
- {
- this.lineStyle.settings = settings.line;
- this.strokeStyle.settings = settings.stroke;
- this.decoStyle.settings = settings.deco;
- }
-
- public function setXML(xml:String) : void
- {
- var styleXML:XML = new XML(xml);
- this.name = styleXML.name;
- this.decoStyle.setXML(styleXML.deco);
- this.lineStyle.setXML(styleXML.line);
- this.strokeStyle.setXML(styleXML.stroke);
- }
-
- public function clone() : Style
- {
- var style:Style = new Style(this.styleManager);
- style.lineStyle = this.lineStyle.clone(style);
- style.strokeStyle = this.strokeStyle.clone(style);
- style.decoStyle = this.decoStyle.clone(style);
- return style;
- }
- }
- }
-
-