{ "type": "class",
  "qname": "mx.styles.StyleManagerImpl",
  "baseClassname": "org.apache.royale.events.EventDispatcher"
  ,
    "description": "",
  "tags": [
  {  "tagName": "private",
         "values": []}  ],
  "members": [
  { "type": "method",
        "qname": "generateCSSStyleDeclarations",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "return": "void",
          "params": [{ "name": "styleManager", "type": "mx.styles.StyleManagerImpl"},
        { "name": "factoryFunctions", "type": "Object"},
        { "name": "data", "type": "Array"},
        { "name": "newSelectors", "type": "Array"},
        { "name": "overrideMap", "type": "Object"}]}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "mx.styles.IStyleManager2",
        "qname": "parent",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The style manager that is the parent of this StyleManager.",
        "tags": [
        {  "tagName": "private",
               "values": []},
            {  "tagName": "return",
               "values": ["the parent StyleManager or null if this is the top-level StyleManager."]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "qualifiedTypeSelectors",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "stylesRoot",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "inheritingStyles",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "typeHierarchyCache",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "typeSelectorCache",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Array",
        "qname": "selectors",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns an array of strings of all CSS selectors registered with the StyleManager. Pass items in this array to the getStyleDeclaration function to get the corresponding CSSStyleDeclaration. Note that class selectors are prepended with a period.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["An array of all of the selectors"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "hasAdvancedSelectors",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Determines whether any of the selectors registered with the style manager have been advanced selectors (descendant selector, id selector, non-global class selector, pseudo selector).",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": []}
      ,
      { "type": "method",
        "qname": "getStyleDeclarations",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Retrieve all style declarations applicable to this subject. The subject is the right most simple type selector in a selector chain. Returns a map of selectors with four properties: class for class selectors, id for id selectors, pseudo for pseudo selectors and unconditional for selectors without conditions",
        "tags": [
        {  "tagName": "param",
               "values": ["subject The subject of the style declaration's selector."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Object",
          "params": [{ "name": "subject", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "getStyleDeclaration",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Gets the CSSStyleDeclaration object that stores the rules for the specified CSS selector.  <p>If the <code>selector</code> parameter starts with a period (.), the returned CSSStyleDeclaration is a class selector and applies only to those instances whose <code>styleName</code> property specifies that selector (not including the period). For example, the class selector <code>&quot;.bigMargins&quot;</code> applies to any UIComponent whose <code>styleName</code> is <code>&quot;bigMargins&quot;</code>.</p>  <p>If the <code>selector</code> parameter does not start with a period, the returned CSSStyleDeclaration is a type selector and applies to all instances of that type. For example, the type selector <code>&quot;Button&quot;</code> applies to all instances of Button and its subclasses.</p>  <p>The <code>global</code> selector is similar to a type selector and does not start with a period.</p>",
        "tags": [
        {  "tagName": "param",
               "values": ["selector The name of the CSS selector."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["The style declaration whose name matches the <code>selector</code> property."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "mx.styles.CSSStyleDeclaration",
          "params": [{ "name": "selector", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "getMergedStyleDeclaration",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Gets a CSSStyleDeclaration object that stores the rules for the specified CSS selector. The CSSStyleDeclaration object is the created by merging the properties of the specified CSS selector of this style manager with all of the parent style managers.  <p> If this style manager contains a style declaration for the given selector, its style properties will be updated with properties from the parent style manager's merged style declaration. If this style manager does not have a style declaration for a given selector, the parent's merged style declaration will be set into this style manager depending on the value of the <code> setSelector</code> parameter. </p>  <p>If the <code>selector</code> parameter starts with a period (.), the returned CSSStyleDeclaration is a class selector and applies only to those instances whose <code>styleName</code> property specifies that selector (not including the period). For example, the class selector <code>&quot;.bigMargins&quot;</code> applies to any UIComponent whose <code>styleName</code> is <code>&quot;bigMargins&quot;</code>.</p>  <p>If the <code>selector</code> parameter does not start with a period, the returned CSSStyleDeclaration is a type selector and applies to all instances of that type. For example, the type selector <code>&quot;Button&quot;</code> applies to all instances of Button and its subclasses.</p>  <p>The <code>global</code> selector is similar to a type selector and does not start with a period.</p>  the properties of this and any parent style managers or if the style declaration is only from this style manager.",
        "tags": [
        {  "tagName": "param",
               "values": ["selector The name of the CSS selector.", "localOnly Controls whether the returned style declaration is the result of merging"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "return",
               "values": ["The style declaration whose name matches the <code>selector</code> property."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "mx.styles.CSSStyleDeclaration",
          "params": [{ "name": "selector", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "setStyleDeclaration",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Sets the CSSStyleDeclaration object that stores the rules for the specified CSS selector.  <p>If the <code>selector</code> parameter starts with a period (.), the specified selector is a class selector and applies only to those instances whose <code>styleName</code> property specifies that selector (not including the period). For example, the class selector <code>&quot;.bigMargins&quot;</code> applies to any UIComponent whose <code>styleName</code> is <code>&quot;bigMargins&quot;</code>.</p>  <p>If the <code>selector</code> parameter does not start with a period, the specified selector is a &quot;type selector&quot; and applies to all instances of that type. For example, the type selector <code>&quot;Button&quot;</code> applies to all instances of Button and its subclasses.</p>  <p>The <code>global</code> selector is similar to a type selector and does not start with a period.</p>  <p>Note that the provided selector will update the selector and subject of the styleDeclaration to keep them in sync.</p>  Set to <code>false</code> to avoid an immediate update of the styles in the application. The styles will be updated the next time this method or the <code>clearStyleDeclaration()</code> method is called with the <code>update</code> property set to <code>true</code>.",
        "tags": [
        {  "tagName": "param",
               "values": ["selector The name of the CSS selector.", "styleDeclaration The new style declaration.", "update Set to <code>true</code> to force an immediate update of the styles."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "selector", "type": "String"},
        { "name": "styleDeclaration", "type": "mx.styles.CSSStyleDeclaration"},
        { "name": "update", "type": "Boolean"}]}
      ,
      { "type": "method",
        "qname": "clearStyleDeclaration",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Clears the CSSStyleDeclaration object that stores the rules for the specified CSS selector.  <p>If the specified selector is a class selector (for example, &quot;.bigMargins&quot; or &quot;.myStyle&quot;), you must be sure to start the <code>selector</code> property with a period (.).</p>  <p>If the specified selector is a type selector (for example, &quot;Button&quot;), do not start the <code>selector</code> property with a period.</p>  <p>The <code>global</code> selector is similar to a type selector and does not start with a period.</p>  Set to <code>false</code> to avoid an immediate update of the styles in the application. The styles will be updated the next time this method or the <code>setStyleDeclaration()</code> method is called with the <code>update</code> property set to <code>true</code>.",
        "tags": [
        {  "tagName": "param",
               "values": ["selector The name of the CSS selector to clear.", "update Set to <code>true</code> to force an immediate update of the styles."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "selector", "type": "String"},
        { "name": "update", "type": "Boolean"}]}
      ,
      { "type": "method",
        "qname": "registerInheritingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Adds to the list of styles that can inherit values from their parents.  <p><b>Note:</b> Ensure that you avoid using duplicate style names, as name collisions can result in decreased performance if a style that is already used becomes inheriting.</p>",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style that is added to the list of styles that can inherit values."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isInheritingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Tests to see if a style is inheriting.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style that you test to see if it is inheriting."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if the specified style is inheriting."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isInheritingTextFormatStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Test to see if a TextFormat style is inheriting.   is inheriting.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style that you test to see if it is inheriting."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if the specified TextFormat style"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "registerSizeInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Adds to the list of styles which may affect the measured size of the component. When one of these styles is set with <code>setStyle()</code>, the <code>invalidateSize()</code> method is automatically called on the component to make its measured size get recalculated later.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style that you add to the list."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isSizeInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Tests to see if a style changes the size of a component.  <p>When one of these styles is set with the <code>setStyle()</code> method, the <code>invalidateSize()</code> method is automatically called on the component to make its measured size get recalculated later.</p>   which may affect the measured size of the component.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if the specified style is one"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "registerParentSizeInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Adds to the list of styles which may affect the measured size of the component's parent container. <p>When one of these styles is set with <code>setStyle()</code>, the <code>invalidateSize()</code> method is automatically called on the component's parent container to make its measured size get recalculated later.</p>",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style to register."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isParentSizeInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Tests to see if the style changes the size of the component's parent container.  <p>When one of these styles is set with <code>setStyle()</code>, the <code>invalidateSize()</code> method is automatically called on the component's parent container to make its measured size get recalculated later.</p>   which may affect the measured size of the component's parent container.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if the specified style is one"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "registerParentDisplayListInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Adds to the list of styles which may affect the appearance or layout of the component's parent container. When one of these styles is set with <code>setStyle()</code>, the <code>invalidateDisplayList()</code> method is auomatically called on the component's parent container to make it redraw and/or relayout its children.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style to register."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isParentDisplayListInvalidatingStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Tests to see if this style affects the component's parent container in such a way as to require that the parent container redraws itself when this style changes.  <p>When one of these styles is set with <code>setStyle()</code>, the <code>invalidateDisplayList()</code> method is auomatically called on the component's parent container to make it redraw and/or relayout its children.</p>   which may affect the appearance or layout of the component's parent container.",
        "tags": [
        {  "tagName": "param",
               "values": ["styleName The name of the style to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if the specified style is one"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "styleName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "registerColorName",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Adds a color name to the list of aliases for colors.  If you later access this color name, the value is not case-sensitive.",
        "tags": [
        {  "tagName": "param",
               "values": ["colorName The name of the color to add to the list; for example, "blue".", "colorValue Color value, for example, 0x0000FF."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "colorName", "type": "String"},
        { "name": "colorValue", "type": "uint"}]}
      ,
      { "type": "method",
        "qname": "isColorName",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Tests to see if the given String is an alias for a color value. For example, by default, the String &quot;blue&quot; is an alias for 0x0000FF.   for a color.",
        "tags": [
        {  "tagName": "param",
               "values": ["colorName The color name to test. This parameter is not case-sensitive."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns <code>true</code> if <code>colorName</code> is an alias"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "colorName", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "getColorName",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns the numeric RGB color value that corresponds to the specified color string. The color string can be either a case-insensitive color name such as <code>&quot;red&quot;</code>, <code>&quot;Blue&quot;</code>, or <code>&quot;haloGreen&quot;</code>, a hexadecimal value such as 0xFF0000, or a #-hexadecimal String such as <code>&quot;#FF0000&quot;</code>.  <p>This method returns a uint, such as 4521830, that represents a color. You can convert this uint to a hexadecimal value by passing the numeric base (in this case, 16), to the uint class's <code>toString()</code> method, as the following example shows:</p> <pre>\\n import mx.styles.StyleManager;\\n private function getNewColorName():void {\\n StyleManager.registerColorName(&quot;soylentGreen&quot;,0x44FF66);\\n trace(StyleManager.getColorName(&quot;soylentGreen&quot;).toString(16));\\n }\\n </pre>   if the value of the <code>colorName</code> property is not an alias for a color.",
        "tags": [
        {  "tagName": "param",
               "values": ["colorName The color name."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["Returns a uint that represents the color value or <code>NOT_A_COLOR</code>"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "uint",
          "params": [{ "name": "colorName", "type": "Object"}]}
      ,
      { "type": "method",
        "qname": "getColorNames",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Converts each element of the colors Array from a color name to a numeric RGB color value. Each color String can be either a case-insensitive color name such as <code>&quot;red&quot;</code>, <code>&quot;Blue&quot;</code>, or <code>&quot;haloGreen&quot;</code>, a hexadecimal value such as 0xFF0000, or a #-hexadecimal String such as <code>&quot;#FF0000&quot;</code>..",
        "tags": [
        {  "tagName": "param",
               "values": ["colors An Array of color names."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "colors", "type": "Array"}]}
      ,
      { "type": "method",
        "qname": "isValidStyleValue",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Determines if a specified parameter is a valid style property. For example:  <pre>\\n trace(StyleManager.isValidStyleValue(myButton.getStyle(&quot;color&quot;)).toString());\\n </pre>  <p>This can be useful because some styles can be set to values such as 0, <code>NaN</code>, the empty String (<code>&quot;&quot;</code>), or <code>null</code>, which can cause an <code>if (value)</code> test to fail.</p>   to this method, it returns <code>true</code> if the style was set and <code>false</code> if it was not set.",
        "tags": [
        {  "tagName": "param",
               "values": ["value The style property to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["If you pass the value returned by a <code>getStyle()</code> method call"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "value", "type": "*"}]}
      ]
  }












