blob: 873f70e5b011a5094411c60327482b270d01c4d0 [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.geom.Rectangle;
/**
* RenderData structures are used by chart elements to store
* all of the relevant values and data needed to fully render the chart.
* Storing these values in a separate structure lets chart elements
* decouple their rendering from their assigned properties
* and data as necessary.
* This ability is used by the chart effects: effects such as
* SeriesInterpolate substitute temporary values calculated from
* previous and future renderData structures. Effects such as SeriesSlide
* and SeriesZoom substitute temporary RenderData structures
* with values calculated to render the effect correctly.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public class RenderData
{
include "../../core/Version.as";
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructor.
*
* @param cache The list of ChartItems representing the items
* in the series's <code>dataProvider</code>.
*
* @param filteredCache The list of ChartItems representing the items
* in the series's <code>dataProvider</code> that remain after filtering.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function RenderData(cache:Array /* of ChartItem */ = null, filteredCache:Array /* of ChartItem */ = null)
{
super();
this.cache = cache;
this.filteredCache = filteredCache;
}
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// bounds
//----------------------------------
[Inspectable(environment="none")]
/**
* The bounds of all of the items a series displays on screen,
* relative to the series's coordinate system.
* This value is used by the various effects during rendering.
* A series fills in this value when the effect
* calls the <code>getElementBounds()</code> method.
* A series does not need to fill in this field
* unless specifically requested.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var bounds:Rectangle;
//----------------------------------
// cache
//----------------------------------
[Inspectable(environment="none")]
/**
* The list of ChartItems representing the items
* in the series's <code>dataProvider</code>.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var cache:Array /* of ChartItem */;
//----------------------------------
// elementBounds
//----------------------------------
[Inspectable(environment="none")]
/**
* An Array of rectangles describing the bounds of the series's
* ChartItems, relative to the series's coordinate system.
* Effects use this Array
* to generate the effect rendering.
* An effect calls the <code>getElementBounds()</code> method, which
* causes the series to fill in this value.
* A series does not need to fill in this field
* unless specifically requested.
* Effects modify this Array to relect current positions
* of the items during the effect duration.
* If this value is filled in on the series's <code>renderData</code>,
* the series renders itself based on these rectangles
* rather than from the series's data.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var elementBounds:Array /* of Rectangle */;
//----------------------------------
// filteredCache
//----------------------------------
[Inspectable(environment="none")]
/**
* The list of ChartItems representing the items
* in the series's <code>dataProvider</code> that remain after filtering.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var filteredCache:Array /* of ChartItem */;
//----------------------------------
// length
//----------------------------------
[Inspectable(environment="none")]
/**
* The number of items represented in this render data.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get length():uint
{
return cache ? cache.length : 0;
}
//----------------------------------
// visibleRegion
//----------------------------------
[Inspectable(environment="none")]
/**
* The rectangle describing the possible coordinate range
* that a series can display on screen.
* This value is used by the various effects during rendering.
* An effect calls the <code>getElementBounds()</code> method
* to fill in this value.
* A series does not need to fill in this field
* unless specifically requested.
* If left <code>null</code>, effects assume the visible region of an element
* is the bounding box of the element itself (0, 0, width, height),
* expressed relative to the element.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var visibleRegion:Rectangle;
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* Creates a copy of the render data. In the new copy, properties that point to other objects continue to
* point to the same objects as the original.
*
* <p>If you subclass this class, you must override this method.</p>
*
* @return The new copy of the RenderData object.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function clone():RenderData
{
return null;
}
}
}