blob: f9a62660164ff9bed38d8a0c0d952de66c3ede8d [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 flashx.textLayout.compose
{
import flash.geom.Rectangle;
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.tlf_internal;
use namespace tlf_internal;
[ExcludeClass]
/** Helper class for implementations of IParcelList
*
* @private
*/
public class Parcel extends Rectangle
{
public static const TOP_OF_COLUMN:int = 1;
public static const BOT_OF_COLUMN:int = 2;
public static const FULL_COLUMN:int = 3;
/** Constructor. */
public function Parcel(x:Number, y:Number, width:Number, height:Number, cont:ContainerController, col:int, colCoverage:int)
{
super(x,y,width,height);
_controller = cont;
_column = col;
_columnCoverage = colCoverage;
_fitAny = false;
_composeToPosition = false;
}
public function initialize(x:Number, y:Number, width:Number, height:Number, cont:ContainerController, col:int, colCoverage:int):Parcel
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
_controller = cont;
_column = col;
_columnCoverage = colCoverage;
_fitAny = false;
_composeToPosition = false;
return this;
}
private var _controller:ContainerController;
private var _columnCoverage:int;
private var _column:int;
private var _fitAny:Boolean;
private var _composeToPosition:Boolean;
/** prevent any leaks. @private */
tlf_internal function releaseAnyReferences():void
{
_controller = null;
}
public function replaceBounds(r:Rectangle):void
{
this.x = r.x;
this.y = r.y;
this.width = r.width;
this.height = r.height;
}
public function get controller():ContainerController
{ return _controller; }
public function get topOfColumn():Boolean
{ return (_columnCoverage&TOP_OF_COLUMN) == TOP_OF_COLUMN; }
/** describes how this parcel covers its source column */
public function get columnCoverage():int
{ return _columnCoverage; }
public function set columnCoverage(val:int):void
{ _columnCoverage = val; }
/** column number in the container */
public function get column():int
{ return _column; }
public function get fitAny():Boolean
{ return _fitAny; }
public function set fitAny(value:Boolean):void
{ _fitAny = value; }
public function get composeToPosition():Boolean
{ return _composeToPosition; }
public function set composeToPosition(value:Boolean):void
{ _composeToPosition = value; }
/** Do explicit line breaking (no wrapping) */
public function get measureWidth():Boolean
{ return controller.measureWidth; }
public function get measureHeight():Boolean
{ return controller.measureHeight; }
}
}