blob: a6246ed439cf0cc68db006d6f06df7df429d3ffc [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.text.engine.TextBlock;
import flash.text.engine.TextLine;
/**
* ITextLineCreator defines an interface for creating TextLine objects for an IFlowComposer instance.
*
* <p>The ITextLineCreator interface wraps the FTE line creation methods.
* There are basically two reasons why an application might want to use
* this interface to control the line creation. First,
* if the application has a SWF that contains a font, and you want to
* use that font from a different SWF, you can reuse the
* font if the TextLine was created from the same SWF that has the font.
* Second, you can get a faster recompose time by reusing
* existing TextLines. TLF does that internally, and when it is reusing
* it will call recreateTextLine instead of createTextLine.
* Your application may have additional TextLines that it knows can be reused.
* If so, in your implementation of createTextLine,
* you may call TextBlock.recreateTextLine with the line to be reused instead
* of TextBlock.createTextLine.</p>
*
* @see flast.text.engine.TextLine
* @see flashx.textLayout.compose.IFlowComposer
* @see flashx.textLayout.elements.TextFlow TextFlow
*
* @includeExample examples\ITextLineCreator_ClassExample.as -noswf
*
* @playerversion Flash 10
* @playerversion AIR 1.5
* @langversion 3.0
*/
public interface ITextLineCreator
{
/**
* Creates a TextLine object for a flow composer.
*
* <p>Called by a flow composer when a text line must be created.</p>
*
* @param textBlock The TextBlock object for which the line is to be created.
* @param previousLine The previous line created for the TextBlock, if any.
* @param width The maximum width of the line.
* @param lineOffset An optional offset value.
* @param fitSomething If <code>true</code>, at least one character or inline graphic must be fit on the line
* even if that element causes the line to exceed the value in the <code>width</code> parameter.
*
* @return TextLine the created TextLine object
*
* @playerversion Flash 10
* @playerversion AIR 1.5
* @langversion 3.0
*/
function createTextLine(textBlock:TextBlock, previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine
/**
* Recreates a TextLine object for a flow composer.
*
* <p>Called by a flow composer when a text line must be recreated.</p>
*
* <p><b>Note:</b> The TextBlock <code>recreateTextLine()</code> method is available starting in
* Flash Player 10.1 and AIR 2.0. To implement this method so that it is compatible with
* earlier runtimes, test for the existence of the <code>recreateTextLine()</code> method
* on the TextBlock object before calling it.</p>
*
* @param textBlock The TextBlock object for which the line is to be created.
* @param previousLine The previous line created for the TextBlock, if any.
* @param width The maximum width of the line.
* @param lineOffset An optional offset value.
* @param fitSomething If <code>true</code>, at least one character or inline graphic must be fit on the line
* even if that element causes the line to exceed the value in the <code>width</code> parameter.
*
* @return TextLine the recreated TextLine object
*
* @includeExample examples\ITextLineCreator_recreateTextLine.as -noswf
*
* @playerversion Flash 10
* @playerversion AIR 1.5
* @langversion 3.0
*/
function recreateTextLine(textBlock:TextBlock, textLine:TextLine, previousLine:TextLine = null, width:Number = 1000000, lineOffset:Number = 0.0, fitSomething:Boolean = false):TextLine
}
}