package flare.vis.operator.encoder { import flare.scale.ScaleType; import flare.util.palette.Palette; import flare.util.palette.ShapePalette; import flare.vis.data.Data; /** * Encodes a data field into shape values, using an ordinal scale. * Shape values are integer indices that map into a shape palette, which * provides drawing routines for shapes. See the * flare.palette.ShapePalette and * flare.data.render.ShapeRenderer classes for more. */ public class ShapeEncoder extends Encoder { private var _palette:ShapePalette; /** @inheritDoc */ public override function get palette():Palette { return _palette; } public override function set palette(p:Palette):void { _palette = p as ShapePalette; } /** The palette as a ShapePalette instance. */ public function get shapes():ShapePalette { return _palette; } public function set shapes(p:ShapePalette):void { _palette = p; } // -------------------------------------------------------------------- /** * Creates a new ShapeEncoder. * @param source the source property * @param group the data group to process * @param palette the shape palette for assigning shapes */ public function ShapeEncoder(field:String=null, group:String=Data.NODES, palette:ShapePalette=null) { super(field, "shape", group); _binding.scaleType = ScaleType.CATEGORIES; _palette = palette ? palette : ShapePalette.defaultPalette(); } /** @inheritDoc */ protected override function encode(val:Object):* { return _palette.getShape(_binding.index(val)); } } // end of class ShapeEncoder }