{ "type": "interface",
  "qname": "org.apache.royale.textLayout.compose.IFlowComposer",
    "description": "IFlowComposer defines the interface for managing the layout and display of a text flow.  <p>Text flows displayed with a flow composer implementation can be dynamic and interactive. A flow composer manages one or more display controller. Each controller is associated with a display object container (such as a Sprite) through which the lines created for the text flow are ultimately displayed. The following diagram illustrates the relationship between TextFlow, IFlowComposer, ContainerController, and DisplayObjectContainer objects:</p>  <p><img src=&quot;../../../images/textLayout_singleController.gif&quot; alt=&quot;IFlowComposer&quot;></img></p>  <p>A flow composer calculates which portion of a text flow fits in each container and adds the appropriate text lines to the container's display object. The IFlowComposer interface defines separate methods for layout calculations and for updating the display. IFlowComposer also defines methods for incrementally composing and updating a text flow. These methods can be used to avoid blocking the user interface when updating long text flows.</p>  <p>In addition to managing text composition and display, a flow composer controls which container has focus, manages the display of the selection highlight (which can cross container boundaries), and provides direct access to all the TextLine objects in the flow.</p>  <p>To use an IFlowComposer implementation, assign an instance of that implementation to the <code>flowComposer</code> property of a TextFlow object. Call the <code>updateAllControllers()</code> method to lay out and display the text in the containers attached to the flow composer.</p>  <p><b>Note:</b> For simple, static text flows, you can also use the one of the text line factory classes. These factory classes will typically create lines with less overhead than a flow composer, but do not support editing, dynamic changes, or user interaction.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["org.apache.royale.textLayout.container.ContainerController ContainerController", "FlowComposerBase", "StandardFlowComposer", "org.apache.royale.textLayout.elements.TextFlow TextFlow", "org.apache.royale.textLayout.factory.StringTextLineFactory StringTextLineFactory", "org.apache.royale.textLayout.factory.TextFlowTextLineFactory TextFlowTextLineFactory"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 1.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "accessor",
    "access": "read-only",
    "return": "org.apache.royale.textLayout.elements.IContainerFormattedElement",
    "qname": "rootElement",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The root element associated with this IFlowComposer instance.  <p>Only a TextFlow object can be a root element.</p>",
    "tags": [
    {  "tagName": "see",
           "values": ["org.apache.royale.textLayout.elements.IContainerFormattedElement IContainerFormattedElement"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "setRootElement",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "return": "void",
      "params": [{ "name": "newRootElement", "type": "org.apache.royale.textLayout.elements.IContainerFormattedElement"}]}
  ,
  { "type": "accessor",
    "access": "read-only",
    "return": "int",
    "qname": "damageAbsoluteStart",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The first invalid position in the root element, as an absolute position from the start of the flow.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "updateAllControllers",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Composes the content of the root element and updates the display.  <p>Text layout is typically conducted in two phases: composition and display. In the composition phase, the flow composer calculates how many lines are necesary to display the content as well as the position of these lines in the flow's display containers. In the display phase, the flow composer updates the display object children of its containers. The <code>updateAllControllers()</code> method is expected to carry out both phases. An efficient implementation will keep track of changes to content so that a full cycle of composition and display is only performed when necessary.</p>  <p>This method updates all the text lines and the display list immediately and synchronously.</p>  <p>If the contents of any container is changed, the method must return <code>true</code>.</p>",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if anything changed."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": []}
  ,
  { "type": "method",
    "qname": "updateToController",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Composes and updates the display up to and including the container at the specified index.  <p>The <code>updateToController()</code> method is expected to both compose the content and update the display so that all containers up to and including the container at the specified index are current. For example, if you have a chain of twenty containers and specify an index of 10, <code>updateToController()</code> must ensures that the first through the tenth (indexes 0-9) containers are composed and displayed. Composition can stop at that point. If <code>controllerIndex</code> is -1 (or not specified), then all containers should be updated.</p>  <p>This method updates all the text lines and the display list immediately and synchronously.</p>  <p>If the contents of any container is changed, the method must return <code>true</code>.</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["controllerIndex index of the last container to update, by default will update all containers"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if anything changed."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "index", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "setFocus",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Sets the focus to the container that contains the location specified by the <code>absolutePosition</code> parameter.  <p>It is the responsibility of the implementation to define what setting the focus means. For example, an implementation could use the built-in <code>focus</code> property of the Stage object (as long as the containers were InteractiveObjects) or the implementation could manage the focus some other way.</p>  the previous container.",
    "tags": [
    {  "tagName": "see",
           "values": ["flash.display.Stage#focus"]},
        {  "tagName": "param",
           "values": ["absolutePosition Specifies the position in the text flow of the container to receive focus.", "preferPrevious If true and the position is the before the first character in a container, sets focus to the end of"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "absolutePosition", "type": "int"},
    { "name": "preferPrevious", "type": "Boolean"}]}
  ,
  { "type": "method",
    "qname": "compose",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Calculates how many lines are necessary to display the content in the root element of the flow and the positions of these lines in the flow's display containers.  <p>Implementations of this method should not update the display, but should save the results so that subsequent calls to <code>compose()</code> or <code>updateAllControllers()</code> do not perform an additional recomposition if the flow content has not changed.</p>  <p>If the contents of any container have changed, the method must return <code>true</code>.</p>",
    "tags": [
    {  "tagName": "see",
           "values": ["#updateAllControllers()", "#updateToController()"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if anything changed."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": []}
  ,
  { "type": "method",
    "qname": "composeToPosition",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Composes the content of the root element up to the specified position.  <p>If the contents of any container up to and including the container holding the content at the specified position has changed, the method returns <code>true</code>. If <code>absolutePosition</code> is greater than the length of the TextFlow (or not specified), then the entire flow is composed.</p>",
    "tags": [
    {  "tagName": "see",
           "values": ["#updateAllControllers()", "#updateToController()"]},
        {  "tagName": "param",
           "values": ["absolutePosition compose at least up to this position in the TextFlow. By default or if absolutePosition is past the end of the flow compose to the end of the flow."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if anything changed."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "absolutePosition", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "composeToController",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Composes the content of the root element up to and including the container at the specified index.  <p>If the contents of any container up to and including the container at the specified index has changed, the method returns <code>true</code>. If <code>index</code> is greater than the number of controllers (or not specified), then all containers are composed.</p>",
    "tags": [
    {  "tagName": "see",
           "values": ["#updateAllControllers()", "#updateToController()"]},
        {  "tagName": "param",
           "values": ["controllerIndex compose at least up to this container in the TextFlow. If controllerIndex is greater than the number of controllers, compose to the end of the last container."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if anything changed."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "index", "type": "int"}]}
  ,
  { "type": "accessor",
    "access": "read-only",
    "return": "int",
    "qname": "numControllers",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The number of containers assigned to this IFlowComposer instance.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "addController",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Adds a controller to this IFlowComposer instance.  <p>The container is added to the end of the container list.</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["controller The ContainerController object to add."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "controller", "type": "org.apache.royale.textLayout.container.IContainerController"}]}
  ,
  { "type": "method",
    "qname": "addControllerAt",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Adds a controller to this IFlowComposer instance at the specified index.  <p>The list of controllers is 0-based (the first controller has an index of 0).</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["controller The ContainerController object to add.", "index A numeric index that specifies the position in the controller list at which to insert the ContainerController object."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "controller", "type": "org.apache.royale.textLayout.container.IContainerController"},
    { "name": "index", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "removeController",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Removes a controller from this IFlowComposer instance.",
    "tags": [
    {  "tagName": "param",
           "values": ["controller The ContainerController instance to remove."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "controller", "type": "org.apache.royale.textLayout.container.IContainerController"}]}
  ,
  { "type": "method",
    "qname": "removeControllerAt",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Removes the controller at the specified index from this IFlowComposer instance.",
    "tags": [
    {  "tagName": "param",
           "values": ["index The index of the ContainerController object to remove."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "index", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "removeAllControllers",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Removes all controllers from this IFlowComposer instance.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": []}
  ,
  { "type": "method",
    "qname": "getControllerAt",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the ContainerController object at the specified index.",
    "tags": [
    {  "tagName": "param",
           "values": ["index The index of the ContainerController object to return."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the ContainerController object at the specified position."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "org.apache.royale.textLayout.container.IContainerController",
      "params": [{ "name": "index", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "getControllerIndex",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the index of the specified ContainerController object.",
    "tags": [
    {  "tagName": "param",
           "values": ["controller A reference to the ContainerController object to find."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the index of the specified ContainerController object or -1 if the controller is not attached to this flow composer."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "int",
      "params": [{ "name": "controller", "type": "org.apache.royale.textLayout.container.IContainerController"}]}
  ,
  { "type": "method",
    "qname": "findControllerIndexAtPosition",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the index of the controller containing the content at the specified position.  <p>A position can be considered to be the division between two characters or other elements of a text flow. If the value in <code>absolutePosition</code> is a position between the last character of one container and the first character of the next, then the preceding container is returned if the <code>preferPrevious</code> parameter is set to <code>true</code> and the later container is returned if the <code>preferPrevious</code> parameter is set to <code>false</code>.</p>  <p>The method must return -1 if the content at the specified position is not in any container or is outside the range of positions in the text flow.</p>  one container and the first element in the next.",
    "tags": [
    {  "tagName": "param",
           "values": ["absolutePosition The position of the content for which the container index is sought.", "preferPrevious Specifies which container index to return when the position is between the last element in"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the index of the container controller or -1 if not found."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "int",
      "params": [{ "name": "absolutePosition", "type": "int"},
    { "name": "preferPrevious", "type": "Boolean"}]}
  ,
  { "type": "method",
    "qname": "findLineIndexAtPosition",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the sequential line number of the ITextFlowLine object that contains the content at the specified position.  <p>The number of the first line is 0 and the number of the last line is equal to the number of lines minus one. If the position specified in <code>absolutePosition</code> is past the end of the text flow, this method must return the number that will be assigned to the next new line added to the text flow (which is equal to the number of current lines).</p>  <p>A position can be considered to be the division between two characters or other elements of a text flow. If the value in <code>absolutePosition</code> is a position between the last line of one container and the first line of the next, then the preceding container is returned if the <code>preferPrevious</code> parameter is set to <code>true</code> and the later container is returned if the <code>preferPrevious</code> parameter is set to <code>false</code>.</p>  one container and the first line in the next.  number of lines.",
    "tags": [
    {  "tagName": "param",
           "values": ["absolutePosition The position of the content for which you want the text line.", "preferPrevious Specifies which container index to return when the position is between the last line in"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the index of the text line at the specified position. If not found, treats as past the end and returns the"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "int",
      "params": [{ "name": "absolutePosition", "type": "int"},
    { "name": "preferPrevious", "type": "Boolean"}]}
  ,
  { "type": "method",
    "qname": "findLineAtPosition",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the ITextFlowLine object containing the content at the specified position.  <p>A position can be considered to be the division between two characters or other elements of a text flow. If the value in <code>absolutePosition</code> is a position between the last element of one line and the first element of the next, then the preceding line is returned if the <code>preferPrevious</code> parameter is set to <code>true</code> and the later line is returned if the <code>preferPrevious</code> parameter is set to <code>false</code>.</p>  one line and the first element of the next.",
    "tags": [
    {  "tagName": "param",
           "values": ["absolutePosition The position of the content for which you want the ITextFlowLine object.", "preferPrevious  Specifies which line to return when the position is between the last element of"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the ITextFlowLine containing the content at the specified position, or null if not found."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "org.apache.royale.textLayout.compose.ITextFlowLine",
      "params": [{ "name": "absolutePosition", "type": "int"},
    { "name": "preferPrevious", "type": "Boolean"}]}
  ,
  { "type": "method",
    "qname": "getLineAt",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Returns the line with the specified line number.  <p>The list of lines is numbered from zero to the number of lines minus one. If the value in <code>index</code> is outside the bounds of the list of lines, then this function returns <code>null</code>.</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["index  The line number of the ITextFlowLine object to return."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["the ITextFlowLine with the specified line number, or <code>null</code>, if not found."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "org.apache.royale.textLayout.compose.ITextFlowLine",
      "params": [{ "name": "index", "type": "int"}]}
  ,
  { "type": "accessor",
    "access": "read-only",
    "return": "int",
    "qname": "numLines",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The total number of lines composed in the flow.  By default TLF does not compose the entire flow and this value may be innacruate. Use composeToPosition to get all lines composed.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "isDamaged",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Indicates whether any ITextFlowLine objects between the beginning of the flow and the line containing the content at the specified position are marked as damaged.  <code>absolutePosition</code> are marked as damaged.",
    "tags": [
    {  "tagName": "param",
           "values": ["absolutePosition the last position in the area of interest"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if any of the ITextFlowLine objects from the start of the flow up to the line containing the content at"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "absolutePosition", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "isPotentiallyDamaged",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Indicates whether any ITextFlowLine 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.  <code>absolutePosition</code> are marked as damaged OR if there are other reasons to believe the textFlow is damaged.",
    "tags": [
    {  "tagName": "see",
           "values": ["org.apache.royale.textLayout.compose.IFlowComposer#isDamaged()"]},
        {  "tagName": "param",
           "values": ["absolutePosition the last position in the area of interest"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["true if any of the ITextFlowLine objects from the start of the flow up to the line containing the content at"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "Boolean",
      "params": [{ "name": "absolutePosition", "type": "int"}]}
  ,
  { "type": "accessor",
    "access": "read-only",
    "return": "Boolean",
    "qname": "composing",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "True, if the flow composer is currently performing a composition operation.",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "accessor",
    "access": "read-write",
    "return": "org.apache.royale.textLayout.compose.ISWFContext",
    "qname": "swfContext",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The ISWFContext instance to be used for calls that must be made in a specific SWF context  <p>Implementations of IFlowComposer should allow this property to be set so that users of the interface can create lines in a different SWF context than the one containing the implementation.  A default implementation of ISWFContext should also be supplied.</p>",
    "tags": [
    {  "tagName": "see",
           "values": ["flashx.elements.ISWFContext ISWFContext"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "interactionManagerChanged",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Called by the TextFlow when the interaction manager changes.  <p>Implementations of IFlowComposer should update event listeners and properties that reference the interaction manager.</p>",
    "tags": [
    {  "tagName": "param",
           "values": ["newInteractionManager The new ISelectionManager instance."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "newInteractionManager", "type": "org.apache.royale.textLayout.edit.ISelectionManager"}]}
  ,
  { "type": "method",
    "qname": "updateLengths",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Update the lengths in the lines to maintain mapping to the TextFlow.",
    "tags": [
    {  "tagName": "param",
           "values": ["startPosition beginning of change in length", "deltaLength change in number of characters."]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "startPosition", "type": "int"},
    { "name": "deltaLength", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "damage",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Mark lines as damaged and needing a recompose.",
    "tags": [
    {  "tagName": "see",
           "values": ["org.apache.royale.textLayout.compose.FlowDamageType"]},
        {  "tagName": "param",
           "values": ["damageStart beginning of range to damage", "damageLength number of characters to damage", "damageType type of damage.  One of org.apache.royale.textLayout.compose.FlowDamageType"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "startPosition", "type": "int"},
    { "name": "damageLength", "type": "int"},
    { "name": "damageType", "type": "String"}]}
  ,
  { "type": "method",
    "qname": "createBackgroundManager",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "return": "org.apache.royale.textLayout.elements.IBackgroundManager",
      "params": []}
  ,
  { "type": "accessor",
    "access": "read-only",
    "return": "Array",
    "qname": "lines",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {}},
  { "type": "method",
    "qname": "addLine",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "return": "void",
      "params": [{ "name": "newLine", "type": "org.apache.royale.textLayout.compose.ITextFlowLine"},
    { "name": "workIndex", "type": "int"}]}
  ,
  { "type": "method",
    "qname": "createNumberLine",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "return": "org.apache.royale.text.engine.ITextLine",
      "params": [{ "name": "listItemElement", "type": "org.apache.royale.textLayout.elements.IListItemElement"},
    { "name": "curParaElement", "type": "org.apache.royale.textLayout.elements.IParagraphElement"},
    { "name": "swfContext", "type": "org.apache.royale.textLayout.compose.ISWFContext"},
    { "name": "totalStartIndent", "type": "Number"}]}
  ]
  }
