blob: 09d12d7bab8e1bdb68b1863d8bba01fd40ed18c8 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package mx.charts.chartClasses
{
import flash.display.Sprite;
import flash.geom.Rectangle;
import mx.core.IFlexDisplayObject;
/**
* IChartElement defines the base set of properties and methods
* required by a UIComponent to be representable in the data space of a chart.
* Any component assigned to the series, backgroundElements,
* or annotationElements Arrays of a chart must implement this interface.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public interface IChartElement extends IFlexDisplayObject
{
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// chartDataProvider
//----------------------------------
/**
* The data provider assigned to the enclosing chart.
* Element types can choose to inherit the data provider
* from the enclosing chart if necessary, or allow developers
* to assign data providers specifically to the element.
* Not all elements are necessarily driven by a data provider.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function set chartDataProvider(value:Object):void;
//----------------------------------
// dataTransform
//----------------------------------
/**
* The DataTransform object that the element uses
* to map between data and screen coordinates.
* This property is assigned by the enclosing chart.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function set dataTransform(value:DataTransform):void;
//----------------------------------
// labelContainer
//----------------------------------
/**
* The DisplayObject that displays labels rendered by this element.
* In most cases, labels displayed in the data area of a chart
* are rendered on top of all elements
* rather than interleaved with the data.
* If an implementing Element has labels to display,
* it can place them in a Sprite object
* and return it as the value of the <code>labelContainer</code> property.
* Enclosing charts will render labelContainers
* from all enclosed elements and place them
* in the data area above all other elements.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get labelContainer():Sprite;
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* Called by the governing DataTransform to obtain a description
* of the data represented by this IChartElement.
* Implementors fill out and return an Array of
* mx.charts.chartClasses.DataDescription objects
* to guarantee that their data is correctly accounted for
* by any axes that are autogenerating values
* from the displayed data (such as minimum, maximum,
* interval, and unitSize).
* Most element types return an Array
* containing a single DataDescription.
* Aggregate elements, such as BarSet and ColumnSet,
* might return multiple DataDescription instances
* that describe the data displayed by their subelements.
* When called, the implementor describes the data
* along the axis indicated by the <code>dimension</code> argument.
* This function might be called for each axis
* supported by the containing chart.
*
* @param dimension Determines the axis to get data descriptions of.
*
* @param requiredFields A bitfield that indicates which values
* of the DataDescription object the particular axis cares about.
* Implementors can optimize by only calculating the necessary fields.
*
* @return An Array containing the DataDescription instances that describe
* the data that is displayed.
*
* @see mx.charts.chartClasses.DataDescription
* @see mx.charts.chartClasses.DataTransform
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function describeData(dimension:String, requiredFields:uint):Array /* of DataDescription */;
/**
* Returns a HitData object describing the nearest data point
* to the coordinates passed to the method.
* The <code>x</code> and <code>y</code> arguments
* should be values in the Element's coordinate system.
* This method aheres to the limits specified by the
* <code>sensitivity2</code> parameter
* when looking for nearby data points.
*
* @param x The x coordinate relative to the ChartBase object.
*
* @param y The y coordinate relative to the ChartBase object.
*
* @param sensitivity2 The maximum distance from the data point that the
* x/y coordinate location can be.
*
* @return A HitData object describing the nearest data point
* within <code>sensitivity2</code> pixels.
*
* @see mx.charts.HitData
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function findDataPoints(x:Number, y:Number,sensitivity2:Number):Array /* of HitData */;
/**
* Indicates to the element that the data mapping
* of the associated axes has changed.
* Implementors should dispose of cached data
* and re-render appropriately.
* This function is called automatically
* by the associated DataTransform when necessary.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function mappingChanged():void;
/**
* Called by the enclosing chart to indicate that the current state
* of the chart has changed.
* Implementing elements should respond to this method
* in order to synchronize changes to the data displayed by the element.
*
* @param oldState An integer representing the previous state.
*
* @param v An integer representing the new state.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function chartStateChanged(oldState:uint,v:uint):void;
/**
* Called by the enclosing chart to collect any transitions
* a particular element might play when the chart changes state.
* The chart collects transitions from all elements
* and ensures that they play in parallel.
* It waits until all transitions have completed
* before advancing to another state.
* Implementors should append any necessary transitions
* to the transitions Array parameter.
*
* @param chartState The state at which the chart plays
* the new transitions.
*
* @param transitions An Array of transition to add
* to the chart's list of transitions to play.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function collectTransitions(chartState:Number,transitions:Array /* of IEffectInstance */):void;
/**
* Called by the chart to allow associated elements
* to claim style selectors from its chartSeriesStyles Array.
* Each chart has an associated set of selectors that are
* implicitly assigned to contained elements that require them.
* Implementing this function gives an element a chance to 'claim'
* elements out of that set, as necessary.
* An element that requires <i>N</i> style selectors claims the values
* from <code>styles[firstAvailable]</code> to
* <code>styles[firstAvailable + <i>N</i> - 1]</code>.
*
* @param styles An Array of styles to claim.
*
* @param firstAvailable The first style selector in the Array to claim.
*
* @return The new value for <code>firstAvailable</code>
* after claiming any styles (for example,
* <code>firstAvailable</code> + <i>N</i>).
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function claimStyles(styles:Array /* of Object */,firstAvailable:uint):uint;
}
}