blob: b49b007ae36607b8910dd11fe8bacd1f86fb7bc6 [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.events.IEventDispatcher;
import mx.charts.AxisLabel;
/**
* The IAxis class is an abstract interface for defining label,
* tick mark, and data positioning properties for a chart axis.
*
* <p>Classes implement this interface to provide
* range definition functionality.</p>
*
* @see mx.charts.CategoryAxis
* @see mx.charts.LinearAxis
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public interface IAxis extends IEventDispatcher
{
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// baseline
//----------------------------------
/**
* The baseline position for the axis.
* Some series, such as ColumnSeries or AreaSeries, use this value to
* define the base of a filled region when no minimum value is specified.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get baseline():Number;
//----------------------------------
// chartDataProvider
//----------------------------------
/**
* The data provider assigned to the enclosing chart.
* Axis types that are data provider-based can choose to inherit
* the data provider associated with the enclosing chart.
* If an axis is shared among multiple charts,
* the value of this property is <code>undefined</code>
* (most likely it will be the last data provider assigned
* to one of the associated charts).
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function set chartDataProvider(value:Object):void;
//----------------------------------
// name
//----------------------------------
/**
* The name of the axis.
* If set, Flex uses this name to format DataTip controls.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get displayName():String;
//----------------------------------
// title
//----------------------------------
/**
* The text for the title displayed along the axis.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get title():String;
//----------------------------------
// unitSize
//----------------------------------
/**
* The size of one unit of data as represented by this axis.
* This value is used by various series types to help in rendering.
* The ColumnSeries class, for example, uses this value
* to determine how wide columns should be rendered.
* Different axis types return different values,
* sometimes dependent on the data being represented.
* The DateTimeAxis class, for example, might return the number
* of milliseconds in a day, or a year, depending on the data
* that is rendered in the chart.
* Because this value is dependant on collecting the represented data,
* custom series cannot assume this value is accurate in their
* <code>updateData()</code> or <code>updateMapping()</code> methods.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get unitSize():Number
//--------------------------------------------------------------------------
//
// Methods: Data conversion
//
//--------------------------------------------------------------------------
/**
* Converts a set of values of arbitrary type
* to a set of numbers that can be transformed into screen coordinates.
*
* @param cache An Array of objects where converted values
* are read from and stored.
*
* @param field The field of the objects in the cache Array
* containing the pre-converted values.
*
* @param convertedField The field of the objects in the cache Array
* where converted values should be stored.
*
* @param indexValues This parameter is <code>true</code> if the values being mapped
* are index values, and <code>false</code> if they are natural data values.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function mapCache(cache:Array /* of Object */, field:String, convertedField:String,
indexValues:Boolean = false):void
/**
* Filters a set of values of arbitrary type
* to a set of numbers that can be mapped.
*
* @param cache An Array of objects where converted values
* are read from and stored.
*
* @param field The field of the objects in the cache Array
* containing the pre-filtered values.
*
* @param convertedField The field of the objects in the cache Array
* where filtered values should be stored.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function filterCache(cache:Array /* of Object */, field:String,
filteredString:String):void;
/**
* Maps a set of values from data space to screen space.
*
* @param cache An Array of objects where mapped values
* are read from and stored.
*
* @param field The field of the objects in the cache Array
* containing the pre-mapped values.
*
* @param convertedField The field of the objects in the cache Array
* where mapped values should be stored.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function transformCache(cache:Array /* of Object */, field:String,
convertedField:String):void;
//--------------------------------------------------------------------------
//
// Methods: Data inversion
//
//--------------------------------------------------------------------------
/**
* Maps a position along the axis back to a numeric data value.
*
* @param value The bound of the axis.
* This parameter should be between 0 and 1,
* with 0 representing the minimum bound of the axis, and 1 the maximum.
*
* @return An object containing the transformed value.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function invertTransform(value:Number):Object;
/**
* Formats values for display in DataTips.
* Returns a user-readable string.
*
* @param value The value to convert to a String.
*
* @return The text of the DataTip.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function formatForScreen(value:Object):String
//--------------------------------------------------------------------------
//
// Methods: Label management
//
//--------------------------------------------------------------------------
/**
* Determines the range to estimate what the axis labels should be.
* The axis almost immediately calls the <code>getLabels()</code> method
* to get the real values.
* The axis uses the estimated values to adjust chart margins,
* so any difference between the estimated labels and actual labels
* (returned from the <code>getLabels()</code> method) results in scaling
* the labels to fit.
*
* <p>An axis need only return the minimum and maximum labels
* when returning an estimate.
* If the label set is fairly static, without depending on the size
* of the axis being rendered on screen, an axis can return the entire
* label set from this function, and mark the estimate as accurate.</p>
*
* @return An Array of AxisLabel objects.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function getLabelEstimate():AxisLabelSet;
/**
* Determines how the axis handles overlapping labels.
* Typically, numeric ranges return <code>true</code>,
* while discrete value-based ranges do not.
* You can can override this property by setting it directly on the axis.
*
* @return <code>true</code> if labels can be dropped without loss of data;
* otherwise, <code>false</code>.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function preferDropLabels():Boolean;
/**
* Gets the labels text that is rendered.
* When Flex calls this method,
* the axis has already determined the minimum length of the label.
*
* @param minimumAxisLength The minimum length of the axis, in pixels.
* The axis can be longer than this value, but not shorter.
*
* @return An array of AxisLabel objects.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function getLabels(minimumAxisLength:Number):AxisLabelSet;
/**
* Invoked when an AxisRenderer is unable to cleanly render
* the labels without overlap, and would like the Axis object
* to reduce the set of labels.
* The method is passed the two labels that are overlapping.
*
* @param intervalStart The start of the interval where labels overlap.
*
* @param intervalEnd The end of the interval where labels overlap.
*
* @return A new label set that resolves the overlap by reducing
* the number of labels.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function reduceLabels(intervalStart:AxisLabel,
intervalEnd:AxisLabel):AxisLabelSet;
//--------------------------------------------------------------------------
//
// Methods: Notification
//
//--------------------------------------------------------------------------
/**
* Each DataTransform that makes use of an axis
* registers itself with that axis.
* The axis is responsible for informing the transform
* when its relevant values have changed.
* It should also request values from the transform
* when it wants to autogenerate minimum and maximum values.
*
* @param transform The DataTransform to register.
*
* @param dimensionName The name of the dimension.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function registerDataTransform(transform:DataTransform,
dimensionName:String):void;
/**
* Each DataTransform that makes use of an axis
* registers itself with that axis.
* The axis is responsible for informing the transform
* when its relevant values have changed.
* It should also request values from the transform
* when it wants to autogenerate minimum and maximum values.
*
* @param transform The DataTransform to unregister.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function unregisterDataTransform(transform:DataTransform):void;
/**
* Triggers events that inform the range object
* when the chart data has changed.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function dataChanged():void;
/**
* Updates the chart.
* This can be called multiple times per frame.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function update():void;
}
}