⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 colorencoder.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.vis.operator.encoder
{
	import flare.animate.Transitioner;
	import flare.scale.ScaleType;
	import flare.util.palette.ColorPalette;
	import flare.util.palette.Palette;
	import flare.vis.data.Data;
	
	/**
	 * Encodes a data field into color values, using a scale transform and
	 * color palette.
	 */
	public class ColorEncoder extends Encoder
	{
		private var _palette:ColorPalette;
		private var _setPalette:Boolean = true;
		private var _ordinal:Boolean = false;
		
		/** @inheritDoc */
		public override function get palette():Palette { return _palette; }
		public override function set palette(p:Palette):void {
			_palette = p as ColorPalette;
			_setPalette = (_palette == null);
		}
		/** The palette as a ColorPalette instance. */
		public function get colors():ColorPalette { return _palette; }
		
		// --------------------------------------------------------------------
		
		/**
		 * Creates a new ColorEncoder.
		 * @param source the source property
		 * @param group the data group to encode ("nodes" by default)
		 * @param target the target property ("lineColor" by default)
		 * @param scaleType the type of scale to use. If null, the scale type
		 *  will be determined by the underlying <code>ScaleBinding</code>
		 *  instance, based on the type of data.
		 * @param palette the color palette to use. If null, a default color
		 *  palette will be determined based on the scale type.
		 */
		public function ColorEncoder(source:String=null,
			group:String=Data.NODES, target:String="lineColor",
			scaleType:String=null, palette:ColorPalette=null)
		{
			super(source, target, group);
			_binding.scaleType = scaleType;
			this.palette = palette;
		}
		
		/** @inheritDoc */
		public override function setup():void
		{
			if (visualization==null) return;
			super.setup();
		}
		
		/** @inheritDoc */
		public override function operate(t:Transitioner=null):void
		{
			_binding.updateBinding();
			_ordinal = ScaleType.isOrdinal(_binding.scaleType);			
			
			// create a default color palette if none explicitly set
			if (_setPalette) _palette = getDefaultPalette();
			super.operate(t); // run encoder
		}
		
		/** @inheritDoc */
		protected override function encode(val:Object):*
		{
			if (_ordinal) {
				return _palette.getColorByIndex(_binding.index(val));
			} else {
				return _palette.getColor(_binding.interpolate(val));
			}
		}
		
		/**
		 * Returns a default color palette based on the input scale.
		 * @param scale the scale of values to map to colors
		 * @return a default color palette for the input scale
		 */
		protected function getDefaultPalette():ColorPalette
		{
			/// TODO: more intelligent color palette selection?
			if (ScaleType.isOrdinal(_binding.scaleType))
			{
				return ColorPalette.category(_binding.length);
			}
			else if (ScaleType.isQuantitative(_binding.scaleType))
			{
				var min:Number = Number(_binding.min);
				var max:Number = Number(_binding.max);
				if (min < 0 && max > 0)
					return ColorPalette.diverging();
			}
			return ColorPalette.ramp();
		}
		
	} // end of class ColorEncoder
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -