//////////////////////////////////////////////////////////////////////////////// // // 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; [ExcludeClass] /** @private * The area inside a text container is sub-divided into smaller areas available for * text layout. These smaller areas within the container are called Parcels. The * ParcelList manages the parcels associated with a TextFlow during composition. * * A container will always have at least one parcel, which corresponds to the container's * bounding box. If the container has more than one column, each column appears as * a parcel in the parcel list. If the container has wrap applied, the area around the * wrap that is available for layout is divided into rectangular-shaped parcels. * Lastly, parcels may be created during composition for use by flow elements that require * layout within a specific geometry that may not be the same as the columns: for instance, * a straddle head, a table, or a sidehead. */ public interface IParcelList { /** Initialize the parcel list from the flow composer. The parcel list will * have the bounding box of the controller(s). If the controller has multiple * columns, the parcel list will have a parcel for each column. If the * controller has wraps, the parcel list may have more parcels to work around * the wrap areas. * @param composer composer we're using * @param controllerEndIndex compose through the end of this controller * @param forceComposeToEnd force composition to compose all lines of the last controller, even if it's scrollable (will not compose overset text) */ function beginCompose(composer:IFlowComposer, controllerEndIndex:int, forceComposeToEnd:Boolean):void; /** Callback function to notify clients that we're advancing forward to the next parcel. */ function get notifyOnParcelChange():Function; function set notifyOnParcelChange(val:Function):void /** Return the left side coordinate of the current parcel. */ function get left():Number; /** Return the right side coordinate of the current parcel. */ function get right():Number; /** Return the top edge coordinate of the current parcel. */ function get top():Number; /** Return the bottom edge coordinate of the current parcel. */ function get bottom():Number; /** Return the width of the current parcel. */ function get width():Number; /** Return the height of the current parcel. */ function get height():Number; /** Returns the column number of the current parcel. */ function get columnIndex():int; /** Vertical location within the parcel, as an offset from the top * of the parcel. */ function get totalDepth():Number; function addTotalDepth(value:Number):Number; /** Return the controller associated with the current parcel. */ function get controller():ContainerController; /** Return the current parcel. Null if we're at the end of the parcel list. */ function get currentParcel():Parcel; /** Advance to the next parcel; it will now be the current parcel. * @return Boolean false if there is no next parcel. */ function next():Boolean; /** Returns true if the current parcel is the last. */ function atLast():Boolean; /** Returns true if all parcels have been iterated: current parcel is past the last. */ function atEnd():Boolean; /** True if the current parcel is at the top of the column */ function isColumnStart():Boolean; /** True if we are not wrapping to the composition logical width */ function get explicitLineBreaks():Boolean; /** Create a new parcel within the parcel list, for an item with the * specified geometry. The new parcel is set to the current parcel. * @param parcel geometry of the new parcel * @param blockProgression direction of the text (horizontal or vertical) * @param verticalJump true if next parcel goes below this, false if it goes to the right or left * @return Boolean true if parcel could be create, false if it doesn't fit * @see text.formats.BlockProgression */ function createParcel(parcel:Rectangle, blockProgression:String, verticalJump:Boolean):Boolean; /** Create a new parcel within the parcel list, for an item with the * specified geometry. The new parcel is set to the current parcel. * @param parcel geometry of the new parcel * @param blockProgression direction of the text (horizontal or vertical) * @param verticalJump true if next parcel goes below this, false if it goes to the right or left * @return Boolean true if parcel could be create, false if it doesn't fit * @see text.formats.BlockProgression */ function createParcelExperimental(parcel:Rectangle, wrapType:String):Boolean; /**Return the width for a line that goes at the current vertical location, * and could extend down for at least height pixels. Note that this function * can change the current parcel, and the location within the parcel. * @param height amount of contiguous vertical space that must be available * @param minWidth amount of contiguous horizontal space that must be available * @return amount of contiguous horizontal space actually available */ function getLineSlug(slugRect:Rectangle,height:Number, minWidth:Number = 0):Boolean; function getComposeXCoord(slug:Rectangle):Number; function getComposeYCoord(slug:Rectangle):Number; function getComposeWidth(slug:Rectangle):Number; function getComposeHeight(slug:Rectangle):Number; } //end interface } //end package