Repository: flex-tlf Updated Branches: refs/heads/develop dd7df805d -> b08af46da
FLEX-34756 Split the functionality provided by FlowComposerBase.isDamaged() and StandardFlowComposer.isDamaged() into two separate functions, because 1) they do very different things, and 2) to solve FLEX-34756 I need the former. -Also improved some comments and imports. Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/2b0977d2 Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/2b0977d2 Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/2b0977d2 Branch: refs/heads/develop Commit: 2b0977d25e74c1e987001fb9d523945ad0278e67 Parents: ec066bb Author: Mihai Chira <[email protected]> Authored: Mon Mar 30 13:51:09 2015 +0200 Committer: Mihai Chira <[email protected]> Committed: Mon Mar 30 13:51:09 2015 +0200 ---------------------------------------------------------------------- .../textLayout/compose/FlowComposerBase.as | 27 +++++++-- .../flashx/textLayout/compose/IFlowComposer.as | 18 +++++- .../textLayout/compose/StandardFlowComposer.as | 4 +- .../textLayout/container/ContainerController.as | 58 +++----------------- .../container/TextContainerManager.as | 2 +- .../textLayout/elements/TableCellElement.as | 34 ++++++------ 6 files changed, 66 insertions(+), 77 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/compose/FlowComposerBase.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/compose/FlowComposerBase.as b/textLayout/src/flashx/textLayout/compose/FlowComposerBase.as index b050201..7ed9f23 100644 --- a/textLayout/src/flashx/textLayout/compose/FlowComposerBase.as +++ b/textLayout/src/flashx/textLayout/compose/FlowComposerBase.as @@ -29,7 +29,7 @@ package flashx.textLayout.compose import flashx.textLayout.elements.FlowLeafElement; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.tlf_internal; - + use namespace tlf_internal; [Exclude(name="initializeLines",kind="method")] @@ -310,7 +310,6 @@ package flashx.textLayout.compose startPosition = 0; } - // find the line at damageStart if (_lines.length == 0 || textFlow.textLength == 0) return; @@ -319,10 +318,12 @@ package flashx.textLayout.compose return; CONFIG::debug { assert(startPosition + damageLength <= textFlow.textLength, "Damaging past end of flow!"); } - - // Start damaging one line before the startPosition location in case some of the first "damaged" line will fit on the previous line. - var lineIndex:int = findLineIndexAtPosition(startPosition); - var leaf:FlowLeafElement = textFlow.findLeaf(startPosition); + + // find the line at damageStart + var lineIndex:int = findLineIndexAtPosition(startPosition); + + // Start damaging one line before the startPosition location in case some of the first "damaged" line will fit on the previous line. + var leaf:FlowLeafElement = textFlow.findLeaf(startPosition); if (leaf && lineIndex > 0) lineIndex--; @@ -367,6 +368,20 @@ package flashx.textLayout.compose return _damageAbsoluteStart <= absolutePosition && _damageAbsoluteStart != textFlow.textLength; } + + /** + * @copy IFlowComposer#isPotentiallyDamaged() + * + * @playerversion Flash 10 + * @playerversion AIR 1.5 + * @langversion 3.0 + */ + + public function isPotentiallyDamaged(absolutePosition:int):Boolean + { + return isDamaged(absolutePosition); + } + /** @private */ CONFIG::debug public function checkFirstDamaged():void { http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/compose/IFlowComposer.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/compose/IFlowComposer.as b/textLayout/src/flashx/textLayout/compose/IFlowComposer.as index 2b5a700..fc461de 100644 --- a/textLayout/src/flashx/textLayout/compose/IFlowComposer.as +++ b/textLayout/src/flashx/textLayout/compose/IFlowComposer.as @@ -431,7 +431,23 @@ package flashx.textLayout.compose */ function isDamaged(absolutePosition:int):Boolean; - + + /** + * Indicates whether any TextFlowLine objects between the beginning of the flow and the line containing the content at + * the specified position are marked as damaged OR if there are other clues that the textFlow should be rebuilt. + * + * @param absolutePosition the last position in the area of interest + * @return true if any of the TextFlowLine objects from the start of the flow up to the line containing the content at + * <code>absolutePosition</code> are marked as damaged OR if there are other reasons to believe the textFlow is damaged. + * + * @see flashx.textLayout.compose.IFlowComposer#isDamaged() + * @playerversion Flash 10 + * @playerversion AIR 1.5 + * @langversion 3.0 + */ + + function isPotentiallyDamaged(absolutePosition:int):Boolean; + /** * True, if the flow composer is currently performing a composition operation. http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/compose/StandardFlowComposer.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/compose/StandardFlowComposer.as b/textLayout/src/flashx/textLayout/compose/StandardFlowComposer.as index ca4b66e..9c93e94 100644 --- a/textLayout/src/flashx/textLayout/compose/StandardFlowComposer.as +++ b/textLayout/src/flashx/textLayout/compose/StandardFlowComposer.as @@ -628,10 +628,10 @@ package flashx.textLayout.compose //-------------------------------------------------------------------------- /** @private Override required because we may be damaged if the last container has scrolling */ - public override function isDamaged(absolutePosition:int):Boolean + public override function isPotentiallyDamaged(absolutePosition:int):Boolean { // Returns true if any text from _damageAbsoluteStart through absolutePosition needs to be recomposed - if (!super.isDamaged(absolutePosition)) + if (!super.isPotentiallyDamaged(absolutePosition)) { if (absolutePosition == _textFlow.textLength) { http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/container/ContainerController.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/container/ContainerController.as b/textLayout/src/flashx/textLayout/container/ContainerController.as index a000035..58a93ad 100644 --- a/textLayout/src/flashx/textLayout/container/ContainerController.as +++ b/textLayout/src/flashx/textLayout/container/ContainerController.as @@ -47,6 +47,7 @@ package flashx.textLayout.container import flashx.textLayout.compose.FlowDamageType; import flashx.textLayout.compose.IFlowComposer; import flashx.textLayout.compose.TextFlowLine; + import flashx.textLayout.compose.TextFlowTableBlock; import flashx.textLayout.compose.TextLineRecycler; import flashx.textLayout.debug.Debugging; import flashx.textLayout.debug.assert; @@ -55,6 +56,7 @@ package flashx.textLayout.container import flashx.textLayout.edit.ISelectionManager; import flashx.textLayout.edit.SelectionFormat; import flashx.textLayout.elements.BackgroundManager; + import flashx.textLayout.elements.CellCoordinates; import flashx.textLayout.elements.Configuration; import flashx.textLayout.elements.ContainerFormattedElement; import flashx.textLayout.elements.FlowElement; @@ -63,6 +65,9 @@ package flashx.textLayout.container import flashx.textLayout.elements.InlineGraphicElement; import flashx.textLayout.elements.ParagraphElement; import flashx.textLayout.elements.TCYElement; + import flashx.textLayout.elements.TableBlockContainer; + import flashx.textLayout.elements.TableCellElement; + import flashx.textLayout.elements.TableRowElement; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.events.FlowElementMouseEventManager; import flashx.textLayout.events.ModelChange; @@ -79,55 +84,8 @@ package flashx.textLayout.container import flashx.textLayout.utils.Twips; use namespace tlf_internal; - - import flashx.textLayout.compose.FloatCompositionData; - import flashx.textLayout.compose.FlowComposerBase; - import flashx.textLayout.compose.FlowDamageType; - import flashx.textLayout.compose.IFlowComposer; - import flashx.textLayout.compose.TextFlowLine; - import flashx.textLayout.compose.TextFlowTableBlock; - import flashx.textLayout.compose.TextLineRecycler; - import flashx.textLayout.debug.Debugging; - import flashx.textLayout.debug.assert; - import flashx.textLayout.edit.EditingMode; - import flashx.textLayout.edit.IInteractionEventHandler; - import flashx.textLayout.edit.ISelectionManager; - import flashx.textLayout.edit.SelectionFormat; - import flashx.textLayout.elements.BackgroundManager; - import flashx.textLayout.elements.CellCoordinates; - import flashx.textLayout.elements.CellRange; - import flashx.textLayout.elements.Configuration; - import flashx.textLayout.elements.ContainerFormattedElement; - import flashx.textLayout.elements.FlowElement; - import flashx.textLayout.elements.FlowLeafElement; - import flashx.textLayout.elements.FlowValueHolder; - import flashx.textLayout.elements.InlineGraphicElement; - import flashx.textLayout.elements.LinkElement; - import flashx.textLayout.elements.ParagraphElement; - import flashx.textLayout.elements.TableBlockContainer; - import flashx.textLayout.elements.TableCellElement; - import flashx.textLayout.elements.TableElement; - import flashx.textLayout.elements.TableRowElement; - import flashx.textLayout.elements.TextFlow; - import flashx.textLayout.events.FlowElementMouseEvent; - import flashx.textLayout.events.FlowElementMouseEventManager; - import flashx.textLayout.events.ModelChange; - import flashx.textLayout.events.ScrollEvent; - import flashx.textLayout.events.ScrollEventDirection; - import flashx.textLayout.events.TextLayoutEvent; - import flashx.textLayout.events.UpdateCompleteEvent; - import flashx.textLayout.formats.BlockProgression; - import flashx.textLayout.formats.Float; - import flashx.textLayout.formats.FormatValue; - import flashx.textLayout.formats.ITextLayoutFormat; - import flashx.textLayout.formats.TextLayoutFormat; - import flashx.textLayout.property.Property; - import flashx.textLayout.tlf_internal; - import flashx.textLayout.utils.Twips; - - use namespace tlf_internal; - - /** + + /** * The ContainerController class defines the relationship between a TextFlow object and a container. * A TextFlow may have one or more rectangular areas that can hold text; the text is said to be flowing * through the containers. Each container is a Sprite that is the parent DisplayObject for the TextLines. @@ -722,7 +680,7 @@ package flashx.textLayout.container public function isDamaged():Boolean { - return flowComposer.isDamaged(absoluteStart + _textLength); + return flowComposer.isPotentiallyDamaged(absoluteStart + _textLength); } /** called whenever the container attributes are changed. Mark computed attributes and columnstate as out of date. http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/container/TextContainerManager.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/container/TextContainerManager.as b/textLayout/src/flashx/textLayout/container/TextContainerManager.as index a89566a..99ccce3 100644 --- a/textLayout/src/flashx/textLayout/container/TextContainerManager.as +++ b/textLayout/src/flashx/textLayout/container/TextContainerManager.as @@ -475,7 +475,7 @@ package flashx.textLayout.container * @langversion 3.0 */ public function isDamaged():Boolean - { return _composeState == COMPOSE_FACTORY ? _damaged : _textFlow.flowComposer.isDamaged(_textFlow.textLength); } + { return _composeState == COMPOSE_FACTORY ? _damaged : _textFlow.flowComposer.isPotentiallyDamaged(_textFlow.textLength); } /** Editing mode of this TextContainerManager. Modes are reading only, reading and selection permitted, * and editing (reading, selection, and writing) permitted. Use the constant values of the EditingMode http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/2b0977d2/textLayout/src/flashx/textLayout/elements/TableCellElement.as ---------------------------------------------------------------------- diff --git a/textLayout/src/flashx/textLayout/elements/TableCellElement.as b/textLayout/src/flashx/textLayout/elements/TableCellElement.as index 197d4c9..c734010 100644 --- a/textLayout/src/flashx/textLayout/elements/TableCellElement.as +++ b/textLayout/src/flashx/textLayout/elements/TableCellElement.as @@ -91,7 +91,7 @@ package flashx.textLayout.elements } public function isDamaged():Boolean { - return _damaged || (_textFlow && _textFlow.flowComposer.isDamaged(_textFlow.textLength)); + return _damaged || (_textFlow && _textFlow.flowComposer.isPotentiallyDamaged(_textFlow.textLength)); } private var _savedPaddingTop:Number = 0; @@ -229,12 +229,12 @@ package flashx.textLayout.elements damage(); } - public function get enableIME():Boolean + public function get enableIME():Boolean { return _enableIME; } - public function set enableIME(value:Boolean):void + public function set enableIME(value:Boolean):void { _enableIME = value; } @@ -251,7 +251,7 @@ package flashx.textLayout.elements /** * Gets the width. **/ - public function get width():Number + public function get width():Number { return _width; } @@ -259,7 +259,7 @@ package flashx.textLayout.elements /** * @private **/ - public function set width(value:Number):void + public function set width(value:Number):void { if(_width != value) { _damaged = true; @@ -273,7 +273,7 @@ package flashx.textLayout.elements /** * Returns the height of the cell. **/ - public function get height():Number + public function get height():Number { //return getRowHeight(); not sure if we should always use row height return _height; @@ -282,7 +282,7 @@ package flashx.textLayout.elements /** * @private **/ - public function set height(value:Number):void + public function set height(value:Number):void { if (_height != value) { _damaged = true; @@ -313,23 +313,23 @@ package flashx.textLayout.elements return getRow() ? getRow().composedHeight : NaN; } - public function get rowSpan():uint + public function get rowSpan():uint { return _rowSpan; } - public function set rowSpan(value:uint):void + public function set rowSpan(value:uint):void { if(value >= 1) _rowSpan = value; } - public function get columnSpan():uint + public function get columnSpan():uint { return _columnSpan; } - public function set columnSpan(value:uint):void + public function set columnSpan(value:uint):void { if(value >= 1) _columnSpan = value; @@ -364,22 +364,22 @@ package flashx.textLayout.elements return table ? table.getPreviousCell(this) : null; } - public function get x():Number + public function get x():Number { return container.x; } - public function set x(value:Number):void + public function set x(value:Number):void { container.x = value; } - public function get y():Number + public function get y():Number { return container.y; } - public function set y(value:Number):void + public function set y(value:Number):void { container.y = value; } @@ -446,12 +446,12 @@ package flashx.textLayout.elements return paddingAmount; } - public function get includeDescentInCellBounds():Boolean + public function get includeDescentInCellBounds():Boolean { return _includeDescentInCellBounds; } - public function set includeDescentInCellBounds(value:Boolean):void + public function set includeDescentInCellBounds(value:Boolean):void { _includeDescentInCellBounds = value; }
