You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ha...@apache.org on 2017/03/16 13:37:28 UTC

[08/42] flex-asjs git commit: And here’s TLF…

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LeadingModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LeadingModel.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LeadingModel.as
new file mode 100644
index 0000000..ea6e883
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LeadingModel.as
@@ -0,0 +1,152 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for setting the <code>leadingModel</code> property
+	 *  of the <code>TextLayoutFormat</code> class, composed of valid combinations of leading basis and leading direction.
+	 *  Leading basis describes which baselines determine the leading (or <code>lineHeight</code>) of lines in a paragraph.
+	 *  Leading direction specifies whether the <code>lineHeight</code> property refers to the distance of a line's 
+	 *  baseline from that of the line before it or the line after it. 
+	 *  <p>
+	 *  <img src="../../../images/textLayout_baselines.jpg" alt="baselines" border="0"/>
+	 *  <img src="../../../images/textLayout_LD1.jpg" alt="leadingDirection_1" border="0"/>
+	 *  <img src="../../../images/textLayout_LD2.jpg" alt="leadingDirection_2" border="0"/>
+	 *  <img src="../../../images/textLayout_LD3.jpg" alt="leadingDirection_3" border="0"/>
+	 *  </p>
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @langversion 3.0 
+	 * 
+	 *  @see TextLayoutFormat#leadingModel
+	 *  @see TextLayoutFormat#lineHeight
+	 *  @see flash.text.TextField
+	 *  @see org.apache.flex.text.engine.TextLine 
+	 */
+	 
+	public final class LeadingModel
+	{
+		/** Specifies that leading basis is ROMAN and leading direction is UP. 
+		 * In other words, <code>lineHeight</code> refers to the distance of a line's Roman baseline from the 
+		 * previous line's Roman baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	  	 * @langversion 3.0 
+	 	 */
+	 	 
+		public static const ROMAN_UP:String = "romanUp";
+		
+		/** Specifies that leading basis is IDEOGRAPHIC_TOP and leading direction is UP. 
+		 *  In other words, <code>lineHeight</code> refers to the distance of a line's ideographic top 
+		 *  baseline from the previous line's ideographic top baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	 	 * @langversion 3.0 
+	 	 */
+	 	 
+		public static const IDEOGRAPHIC_TOP_UP:String = "ideographicTopUp";
+		
+		/** Specifies that leading basis is IDEOGRAPHIC_CENTER and leading direction is UP. 
+		 * In other words, <code>lineHeight</code> refers to the distance of a line's ideographic center 
+		 * baseline from the previous line's ideographic center baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const IDEOGRAPHIC_CENTER_UP:String = "ideographicCenterUp";
+		
+		/** Specifies that leading basis is IDEOGRAPHIC_TOP and leading direction is DOWN.
+		 * In other words, <code>lineHeight</code> refers to the distance of a line's ideographic top baseline 
+		 * from the next line's ideographic top baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	 	 * @langversion 3.0 
+	 	 */
+	 	 
+		public static const IDEOGRAPHIC_TOP_DOWN:String = "ideographicTopDown";
+		
+		/** Specifies that leading basis is IDEOGRAPHIC_CENTER and leading direction is down.
+		 *  In other words, <code>lineHeight</code> refers to the distance of a line's ideographic center 
+		 *  baseline from the next line's ideographic center baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	 	 * @langversion 3.0 
+	 	 */
+	 	 
+		public static const IDEOGRAPHIC_CENTER_DOWN:String = "ideographicCenterDown";
+		
+		/** Specifies that leading basis is ASCENT/DESCENT and leading direction is UP. 
+		 *  In other words, <code>lineHeight</code> refers to the distance of a line's ascent baseline from the 
+		 *  previous line's descent baseline.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	  	 * @langversion 3.0 
+	 	 */
+	 	 
+		public static const ASCENT_DESCENT_UP:String = "ascentDescentUp";
+		
+		/** Specifies that leading model is chosen automatically based on the paragraph's <code>locale</code> property.  
+		 * For Japanese and Chinese, it is IDEOGRAPHIC_TOP_DOWN and for all others it is ROMAN_UP.
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	 	 * @langversion 3.0 
+	 	 * 
+	 	 * #IDEOGRAPHIC_TOP_DOWN
+	 	 * #ROMAN_UP
+	 	 */
+	 	 
+		public static const AUTO:String = "auto";
+		
+		/** Specifies a leading model that approximates the line spacing behavior of <code>TextField</code>.
+		 * It is similar to <code>ASCENT_DESCENT_UP</code> in that <code>lineHeight</code> refers to the 
+		 * distance of a line's ascent baseline from the previous line's descent baseline. However, baseline 
+		 * positions approximate those determined by <code>TextField</code>, rather than using metrics 
+		 * offered by <code>TextLine</code>.  
+		 *
+		 * @playerversion Flash 10
+	 	 * @playerversion AIR 1.5
+	 	 * @langversion 3.0 
+		 */
+		public static const APPROXIMATE_TEXT_FIELD:String = "approximateTextField";
+		
+		/**  Specifies a leading model based on the CSS inline formatting model, which involves stacking <i>line boxes</i> contiguously.
+		 * A <i>line box</i> is defined as the bounding box around <i>inline boxes</i> for all leaf elements on the text line, after they have been aligned
+		 * using <code>baselineShift</code>, <code>dominantBaseline</code>, <code>alignmentBaseline</code> etc. For a span, the <i>inline box</i> 
+		 * is obtained by applying leading equally above and below the text content such that its height equals <code>lineHeight</code>.
+		 * For an inline graphic, <code>lineHeight</code> is ignored; the <i>inline box</i> is derived from its specified dimensions and padding values.
+		 * Also, <code>firstBaselineOffset</code> is ignored with this leading model.
+		 * 
+         * <p>For more information, see <a href='http://blogs.adobe.com/tlf/2010/11/box-leading-model.html'>Box leading model</a>.</p>
+         * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const BOX:String = "box";
+		
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LineBreak.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LineBreak.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LineBreak.as
new file mode 100644
index 0000000..240a22b
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/LineBreak.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/** Defines values for setting the <code>lineBreak</code> property of <code>TextLayoutFormat</code> to
+	 *  specify how lines are broken within wrapping text.
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 * @see TextLayoutFormat#linebreak
+	 */
+	public final class LineBreak
+	{
+		/** Specifies that lines wrap to fit the container width. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+	  	 * @langversion 3.0 
+		 */
+		 
+		public static const TO_FIT:String = "toFit";
+		
+		/** Specifies that lines break only at explicit return or line feed characters. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const EXPLICIT:String = "explicit";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListMarkerFormat.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListMarkerFormat.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListMarkerFormat.as
new file mode 100644
index 0000000..acf203c
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListMarkerFormat.as
@@ -0,0 +1,370 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	import org.apache.flex.textLayout.property.CounterContentHandler;
+	import org.apache.flex.textLayout.property.CounterPropHandler;
+	import org.apache.flex.textLayout.property.EnumPropertyHandler;
+	import org.apache.flex.textLayout.property.Property;
+	import org.apache.flex.textLayout.property.PropertyFactory;
+	import org.apache.flex.textLayout.property.PropertyUtil;
+
+	
+
+	
+	/** Defines the marker format in a ListItemElement.
+	 *  
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @langversion 3.0 
+	 * 
+	 *  @see org.apache.flex.textLayout.elements.ListItemElement
+	 */
+	public class ListMarkerFormat extends TextLayoutFormat implements IListMarkerFormat
+	{
+		/** @private */
+		public static function createCounterResetProperty(nameValue:String, defaultValue:String, inherited:Boolean, categories:Vector.<String>):Property
+		{
+			var rslt:Property = new Property(nameValue, defaultValue, inherited, categories);
+			rslt.addHandlers(PropertyFactory.sharedUndefinedHandler, new EnumPropertyHandler([ FormatValue.NONE ]),new CounterPropHandler(0));
+			return rslt;			
+		}
+		
+		/** @private */
+		public static function createCounterIncrementProperty(nameValue:String, defaultValue:String, inherited:Boolean, categories:Vector.<String>):Property
+		{
+			var rslt:Property = new Property(nameValue, defaultValue, inherited, categories);
+			rslt.addHandlers(PropertyFactory.sharedUndefinedHandler, new EnumPropertyHandler([ FormatValue.NONE ]),new CounterPropHandler(1));
+			return rslt;			
+		}
+		
+		/** @private */
+		public static function createCounterContentProperty(nameValue:String, defaultValue:String, inherited:Boolean, categories:Vector.<String>):Property
+		{
+			var rslt:Property = new Property(nameValue, defaultValue, inherited, categories);
+			rslt.addHandlers(PropertyFactory.sharedUndefinedHandler, new EnumPropertyHandler([ FormatValue.NONE ]),new CounterContentHandler());
+			return rslt;			
+		}
+
+		/** @private */
+		static public const counterResetProperty:Property = createCounterResetProperty("counterReset", FormatValue.NONE, false, Vector.<String>([Category.LIST]));
+		/** @private */
+		static public const counterIncrementProperty:Property = createCounterResetProperty("counterIncrement", "ordered 1", false, Vector.<String>([Category.LIST]));
+		/** @private */
+		static public const beforeContentProperty:Property = PropertyFactory.string("beforeContent", null, false, Vector.<String>([Category.LIST]));
+		/** @private */
+		static public const contentProperty:Property = createCounterContentProperty("content", "counter(ordered)", false, Vector.<String>([Category.LIST]));
+		/** @private */
+		static public const afterContentProperty:Property  = PropertyFactory.string("afterContent", null, false, Vector.<String>([Category.LIST]));
+		/** @private */
+		static public const suffixProperty:Property = PropertyFactory.enumString("suffix", Suffix.AUTO, false, Vector.<String>([Category.LIST]), Suffix.AUTO, Suffix.NONE);
+		
+		static private var _lmfDescription:Object = {
+			counterReset:counterResetProperty,
+			counterIncrement:counterIncrementProperty,
+			beforeContent:beforeContentProperty,
+			content:contentProperty,
+			afterContent:afterContentProperty,
+			suffix:suffixProperty
+		};
+		
+		// at this point we know that both TextLayoutFormat and ListMarkerFormat are initialized so can setup the Property objects
+		PropertyFactory.sharedTextLayoutFormatHandler.converter = TextLayoutFormat.createTextLayoutFormat;
+		PropertyFactory.sharedListMarkerFormatHandler.converter = ListMarkerFormat.createListMarkerFormat;
+
+		
+		/** Create a ListMarkerFormat that holds all the properties possible for a list marker.  
+		 * 
+		 *  @param initialValues An optional instance from which to copy initial values.
+		 * 
+		 *  @playerversion Flash 10
+		 *  @playerversion AIR 1.5
+		 *  @langversion 3.0 
+	 	 */
+		public function ListMarkerFormat(initialValues:IListMarkerFormat = null)
+		{
+			super(initialValues);
+		}
+		
+		/** @private */
+		private function setLMFStyle(styleProp:Property,newValue:*):void
+		{
+			var name:String = styleProp.name;
+			newValue = styleProp.setHelper(getStyle(name),newValue);
+			super.setStyleByName(name,newValue);
+		}
+		
+		/** @private */
+		public override function setStyle(styleProp:String,newValue:*):void
+		{
+			var lmfStyle:Property = _lmfDescription[styleProp];
+			if (lmfStyle)
+				setLMFStyle(lmfStyle,newValue);
+			else
+				super.setStyle(styleProp,newValue);
+		}
+		
+		/**
+		 * Controls resetting the value of the counter.  
+		 * <p>Legal values for this property are:
+		 *  <ul>
+		 * 	  <li><code>none</code> - No reset.</li>
+		 * 	  <li><code>ordered</code> - Reset the counter to zero.</li>
+		 * 	  <li><code>ordered <i>integer</i></code> - Reset the counter to <code><i>integer</i></code>.</li>
+		 *  </ul>
+		 * </p>
+		 * <p>If <code>undefined</code>, the default value of this property is "none".</p>
+		 * <p>Note: The <code>counterReset</code> property is applied before the <code>counterIncrement</code> property.</p>
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function get counterReset():*
+		{ return getStyle(counterResetProperty.name); }
+		public function set counterReset(value:*):void
+		{ setLMFStyle(counterResetProperty,value); }
+		
+		/**
+		 * Controls incrementing the value of the counter.  
+		 * <p>Legal values for this string are:
+		 *  <ul>
+		 * 		<li><code>none</code> - No increment.</li>
+		 * 		<li><code>ordered</code> - Increment the counter by one.</li>
+		 * 		<li><code>ordered <i>integer</i></code> - Increment the counter by <code><i>integer</i></code>.</li>
+		 *  </ul>
+		 * </p>
+		 * <p>If undefined, the default vaule of this property is <code>"ordered 1"</code>.</p>
+		 * <p>Note: The <code>counterIncrement</code> property is applied before the <code>counterReset</code> property.</p>
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function get counterIncrement():*
+		{ return getStyle(counterIncrementProperty.name); }
+		public function set counterIncrement(value:*):void
+		{ setLMFStyle(counterIncrementProperty,value); }
+		
+		/**
+		 * Controls the content of the marker. 
+		 * <p>Legal values for this string are:
+		 * <ul>
+		 * 	<li><code>none</code> - No marker.</li>
+		 * 	<li><code>counter(ordered)</code> - Display the marker.</li>
+		 * 	<li><code>counter(ordered,ListStyleType)</code> - Display the marker but change the listStyleType to the specified value.</li>
+		 * 	<li><code>counters(ordered)</code> - Starting from the top-most parent ListElement creating a string of values of the ordered counter in each counters specified listStyleType separated by the suffix for each.  This is used for outline number - for example I.1., I.2. etc.</li>
+		 * 	<li><code>counters(ordered,"&lt;string&gt;")</code> - Similar to the previous value, except the suffix for each ordered counter is replaced by &lt;string&gt;.</li>
+		 * 	<li><code>counters(ordered,"&lt;string&gt;",ListStyleType)</code> - Similar to the previous value, except each counter's <code>listStyleType</code> is replaced with the specified value.</li>
+		 * </ul>
+		 * </p>
+		 * <p>If undefined, the default vaule of this property is <code>"counter(ordered)"</code>.</p>
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */		
+		public function get content():*
+		{ return getStyle(contentProperty.name); }
+		public function set content(value:*):void
+		{ setLMFStyle(contentProperty,value); }
+		
+		/** Specifies a string that goes before the marker. Default is the empty string. 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0	
+		 */
+		public function get beforeContent():*
+		{ return getStyle(beforeContentProperty.name); }
+		public function set beforeContent(value:*):void
+		{ setLMFStyle(beforeContentProperty,value); }
+		
+		/** Specifies a string that goes after the marker. Default is the empty string. 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0	
+		 */
+		public function get afterContent():*
+		{ return getStyle(afterContentProperty.name); }
+		public function set afterContent(value:*):void
+		{ setLMFStyle(afterContentProperty,value); }
+		
+		/**
+		 * Controls the application of the suffix in the generated text in the ListItemElement.
+		 * <p>Legal values are:
+		 * <ul>
+		 *   <li><code>org.apache.flex.textLayout.formats.Suffix.NONE</code> - No suffix.</li>		 
+		 *   <li><code>org.apache.flex.textLayout.formats.Suffix.AUTO</code> - Follow CSS rules for adding a suffix.</li>
+		 * </ul> 
+		 * </p>
+		 * <p>Default value is <code>Suffix.AUTO</code>.</p>
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 * @see org.apache.flex.textLayout.formats.Suffix
+		 */
+		public function get suffix():*
+		{ return getStyle(suffixProperty.name); }
+		public function set suffix(value:*):void
+		{ setLMFStyle(suffixProperty,value); }
+		
+		static private var _description:Object;
+		
+		/** Property descriptions accessible by name. @private */
+		static public function get description():Object
+		{ 
+			if (!_description)
+			{
+				// use prototype chaining
+				_description = PropertyUtil.createObjectWithPrototype(TextLayoutFormat.description);
+				for (var key:String in _lmfDescription)
+					_description[key] = _lmfDescription[key];
+			}
+			return _description; 
+		}
+		
+		/** @private */
+		public override function copy(incoming:ITextLayoutFormat):void
+		{
+			super.copy(incoming);
+			
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for (var key:String in _lmfDescription)
+					this[key] = lmf[key];
+			}
+		}
+		
+		/** @private */
+		public override function concat(incoming:ITextLayoutFormat):void
+		{
+			super.concat(incoming);
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for each (var prop:Property in _lmfDescription)
+				{
+					var name:String = prop.name;
+					setLMFStyle(prop,prop.concatHelper(this[name],lmf[name]));
+				}
+			}
+		}
+		
+		/** @private */
+		public override function concatInheritOnly(incoming:ITextLayoutFormat):void
+		{
+			super.concatInheritOnly(incoming);
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for each (var prop:Property in _lmfDescription)
+				{
+					var name:String = prop.name;
+					setLMFStyle(prop,prop.concatInheritOnlyHelper(this[name],lmf[name]));
+				}
+			}
+		}
+		
+		/** @private */
+		public override function apply(incoming:ITextLayoutFormat):void
+		{
+			super.apply(incoming);
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for each (var prop:Property in _lmfDescription)
+				{
+					var name:String = prop.name;
+					var val:* = lmf[name];
+					if (val !== undefined)
+						this[name] = val;
+				}
+			}
+		}
+		
+		/** @private */
+		public override function removeMatching(incoming:ITextLayoutFormat):void
+		{
+			super.removeMatching(incoming);
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for each (var prop:Property in _lmfDescription)
+				{
+					var name:String = prop.name;
+					if (prop.equalHelper(this[name],lmf[name]))
+						this[name] = undefined;
+				}
+			}
+
+		}
+		
+		/** @private */
+		public override function removeClashing(incoming:ITextLayoutFormat):void
+		{
+			super.removeClashing(incoming);
+			var lmf:IListMarkerFormat = incoming as IListMarkerFormat;
+			if (lmf)
+			{
+				for each (var prop:Property in _lmfDescription)
+				{
+					var name:String = prop.name;
+					if (!prop.equalHelper(this[name],lmf[name]))
+						this[name] = undefined;
+				}
+			}
+		}
+		
+		/**
+		 * Creates a new ListMarkerFormat object. All settings are empty or, optionally, are initialized from the
+		 * supplied <code>initialValues</code> object.
+		 * 
+		 * @param initialValues Optional instance from which to copy initial values. If the object is of type IListMarkerFormat or ITextLayoutFormat, the values are copied.  
+		 * Otherwise the <code>initialValues</code> parameter is treated like a ObjectMap or Object and iterated over.
+		 * 
+		 * @return The new ListMarkerFormat object.
+		 * 
+		 * @see #defaultFormat
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public static function createListMarkerFormat(initialValues:Object):ListMarkerFormat
+		{
+			var lmf:IListMarkerFormat = initialValues as IListMarkerFormat;
+			var rslt:ListMarkerFormat = new ListMarkerFormat(lmf);
+			if (lmf == null && initialValues)
+			{
+				for (var key:String in initialValues)
+					rslt.setStyle(key,initialValues[key]);
+			}
+			return rslt;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStylePosition.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStylePosition.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStylePosition.as
new file mode 100644
index 0000000..63cf916
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStylePosition.as
@@ -0,0 +1,50 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 * Defines values for setting the <code>listStylePosition</code> property. These values control the placement
+	 * of a list item marker relative to the list item.
+	 *
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @langversion 3.0 
+	 * 
+	 *  @see TextLayoutFormat#listStylePosition
+	 */
+	 
+	public final class ListStylePosition
+	{
+		/** Marker will appear inline with the list item. This style position lets you include trailing spaces.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const INSIDE:String = "inside";
+
+		/** Marker will appear in the margin of the list. This style position does not recognize trailing spaces.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const OUTSIDE:String = "outside";
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStyleType.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStyleType.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStyleType.as
new file mode 100644
index 0000000..a98e55d
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/ListStyleType.as
@@ -0,0 +1,314 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 * Defines values for setting the <code>listStyleType</code> property of a TextLayoutFormat object. These values are used for controlling
+	 * the appearance of items in a list.
+	 *
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 1.5
+	 *  @langversion 3.0 
+	 * 
+	 *  @see TextLayoutFormat#listStyleType
+	 */
+	 
+	public final class ListStyleType
+	{
+		/** Upper-case alphabetic "numbering": A-Z, AA-ZZ, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const UPPER_ALPHA:String = "upperAlpha";
+
+		/** Lower-case alphabetic "numbering": a-z, aa-zz, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const LOWER_ALPHA:String = "lowerAlpha";
+
+		/** Upper-case Roman numbering: I, II, III, IV, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const UPPER_ROMAN:String = "upperRoman";
+
+		/** Lower-case Roman numbering: i, ii, iii, iv, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const LOWER_ROMAN:String = "lowerRoman";
+
+		/** No content is generated for the marker.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const NONE:String = "none";
+
+		/** A bullet character marker (filled circle).
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const DISC:String = "disc";
+
+		/** A circle character marker that is not filled.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const CIRCLE:String = "circle";
+
+		/** A filled square marker.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const SQUARE:String = "square";
+
+		/** A square marker that is not filled.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const BOX:String = "box";
+
+		/** A check mark.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const CHECK:String = "check";
+
+		/** A filled diamond marker.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const DIAMOND:String = "diamond";
+
+		/** A dash mark.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const HYPHEN:String = "hyphen";
+
+		/** Numbering using Arabic script.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const ARABIC_INDIC:String = "arabicIndic";
+
+		/** Numbering using Bengali script.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const BENGALI:String = "bengali";
+
+		/** Numbering using decimals: 1, 2, 3, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const DECIMAL:String = "decimal";
+
+		/** Numbering using decimal with a leading zero: 01, 02, 03, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const DECIMAL_LEADING_ZERO:String = "decimalLeadingZero";
+
+		/** Numbering using Devangari.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const DEVANAGARI:String = "devanagari";
+
+		/** Numbering using Gujarati.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const GUJARATI:String = "gujarati";
+
+		/** Numbering using Gurmukhi.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const GURMUKHI:String = "gurmukhi";
+
+		/** Numbering using Kannada.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const KANNADA:String = "kannada";
+
+		/** Numbering using Persian.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const PERSIAN:String = "persian";
+
+		/** Numbering using Thai.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const THAI:String = "thai";
+
+		/** Numbering using Urdu.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const URDU:String = "urdu";
+
+		/** Numbering for CJK.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const CJK_EARTHLY_BRANCH:String = "cjkEarthlyBranch";
+
+		/** Numbering for CJK.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const CJK_HEAVENLY_STEM:String = "cjkHeavenlyStem";
+
+		/** Numbering for Hangul.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const HANGUL:String = "hangul";
+
+		/** Numbering for Hangul.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const HANGUL_CONSTANT:String = "hangulConstant";
+
+		/** Numbering for Hiragana.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const HIRAGANA:String = "hiragana";
+
+		/** Numbering for Hiragana.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const HIRAGANA_IROHA:String = "hiraganaIroha";
+
+		/** Numbering for Katagana.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const KATAKANA:String = "katakana";
+
+		/** Numbering for Katagana.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const KATAKANA_IROHA:String = "katakanaIroha";
+
+		/** Lower-case Greek alphabetic "numering".
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const LOWER_GREEK:String = "lowerGreek";
+
+		/** Lower-case alphabetic "numbering": a-z, aa-zz, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const LOWER_LATIN:String = "lowerLatin";
+
+		/** Upper-case Greek alphabetic "numering".
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const UPPER_GREEK:String = "upperGreek";
+
+		/** Upper-case alphabetic "numbering": A-Z, AA-ZZ, and so on.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		public static const UPPER_LATIN:String = "upperLatin";
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/Suffix.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/Suffix.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/Suffix.as
new file mode 100644
index 0000000..3afecd2
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/Suffix.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+    /**
+     * Defines values for setting the <code>suffix</code> property of a ListMarkerFormat. 
+     *
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @langversion 3.0 
+     * 
+     *  @see ListMarkerFormat#suffix
+     */
+    public class Suffix
+    {
+        /** Specifies that the auto suffix is appended to the list marker after the content. 
+         *  See <a href="http://www.w3.org/TR/css3-lists/">http://www.w3.org/TR/css3-lists/</a> for the default suffixes.
+         * 
+         * @playerversion Flash 10
+         * @playerversion AIR 1.5
+         * @langversion 3.0 
+         */
+        
+        public static const AUTO:String = "auto";
+        
+        /** Specifies that no suffix is appended to a list marker after the content. 
+         *
+         * @playerversion Flash 10
+         * @playerversion AIR 1.5
+         * @langversion 3.0 
+         */
+        
+        public static const NONE:String = "none";
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TLFTypographicCase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TLFTypographicCase.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TLFTypographicCase.as
new file mode 100644
index 0000000..5bdf114
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TLFTypographicCase.as
@@ -0,0 +1,79 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for the <code>typographicCase</code> property of the TextLayoutFormat
+	 *  class. 
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 * 
+	 * @see TextLayoutFormat#typographicCase
+	 */
+	public final class TLFTypographicCase
+	{
+		/** Specifies default typographic case -- no special features applied. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+ 		public static const DEFAULT:String = "default";
+ 		
+		/** Converts all lowercase characters to uppercase, then applies small caps to only the 
+		 * characters that the conversion changed. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+  	 	public static const LOWERCASE_TO_SMALL_CAPS:String = "lowercaseToSmallCaps";
+  	 	
+  	 	/** Specifies that all characters use lowercase glyphs on output. 
+  	 	 *
+  	 	 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+ 	 	public static const LOWERCASE:String = "lowercase";
+
+		/** Specifies that uppercase characters use small-caps glyphs on output. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+ 	 	public static const CAPS_TO_SMALL_CAPS:String = "capsToSmallCaps";
+
+		/** Specifies that all characters use uppercase glyphs on output.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+ 	 	public static const UPPERCASE:String = "uppercase";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TabStopFormat.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TabStopFormat.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TabStopFormat.as
new file mode 100644
index 0000000..7571d39
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TabStopFormat.as
@@ -0,0 +1,397 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	import org.apache.flex.text.engine.TabAlignment;
+	import org.apache.flex.textLayout.property.Property;
+	import org.apache.flex.textLayout.property.PropertyFactory;
+	import org.apache.flex.textLayout.property.PropertyUtil;
+	/**
+	 * The TabStopFormat class represents the properties of a tab stop in a paragraph. You can set the <code>TextLayoutFormat.tabstops</code> property to an array of TabStopFormat objects.
+	 * @see org.apache.flex.textLayout.elements.TabElement 
+	 * @see org.apache.flex.textLayout.formats.TextLayoutFormat#tabStops
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0
+	 */
+	public class TabStopFormat implements ITabStopFormat
+	{
+		/** @private */
+		private static var _positionProperty:Property;
+		private static function get positionProperty():Property
+		{
+			if(!_positionProperty)
+				_positionProperty = PropertyFactory.number("position",0,false,Vector.<String>([Category.TABSTOP]),0,10000);
+			return _positionProperty;
+		}
+		// static public const positionProperty:Property = PropertyUtil.NewNumberProperty("position",0,false,Vector.<String>([Category.TABSTOP]),0,10000);
+		/** @private */
+		private static var _alignmentProperty:Property;
+		private static function get alignmentProperty():Property
+		{
+			if(_alignmentProperty == null)
+			{
+				_alignmentProperty = PropertyFactory.enumString(
+					"alignment",TabAlignment.START,false,Vector.<String>([Category.TABSTOP])
+					,TabAlignment.START
+					,TabAlignment.CENTER
+					,TabAlignment.END
+					,TabAlignment.DECIMAL
+				);
+			}
+			return _alignmentProperty;
+		}
+		// static public const alignmentProperty:Property = PropertyUtil.NewEnumStringProperty(
+		// 	"alignment",TabAlignment.START,false,Vector.<String>([Category.TABSTOP])
+		// 	,TabAlignment.START
+		// 	,TabAlignment.CENTER
+		// 	,TabAlignment.END
+		// 	,TabAlignment.DECIMAL
+		// );
+		/** @private */
+		private static var _decimalAlignmentTokenProperty:Property;
+		private static function get decimalAlignmentTokenProperty():Property
+		{
+			if(_decimalAlignmentTokenProperty == null)
+			{
+				_decimalAlignmentTokenProperty = PropertyFactory.string("decimalAlignmentToken",null,false,Vector.<String>([Category.TABSTOP]));
+			}
+			return _decimalAlignmentTokenProperty;
+		}
+		// static public const decimalAlignmentTokenProperty:Property = PropertyUtil.NewStringProperty("decimalAlignmentToken",null,false,Vector.<String>([Category.TABSTOP]));
+
+		static private var _description:Object;
+
+		/** Property descriptions accessible by name. @private */
+		static public function get description():Object
+		{
+			if(!_description)
+			{
+				_description = {
+					position:positionProperty
+					, alignment:alignmentProperty
+					, decimalAlignmentToken:decimalAlignmentTokenProperty
+				};
+			}
+			 return _description;
+		}
+
+		/** @private */
+		static private var _emptyTabStopFormat:ITabStopFormat;
+		/**
+		 * Returns an ITabStopFormat instance with all properties set to <code>undefined</code>.
+		 * @private
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		static public function get emptyTabStopFormat():ITabStopFormat
+		{
+			if (_emptyTabStopFormat == null)
+				_emptyTabStopFormat = new TabStopFormat();
+			return _emptyTabStopFormat;
+		}
+
+
+		private var _position:*;
+		private var _alignment:*;
+		private var _decimalAlignmentToken:*;
+
+		/**
+		 * Return the value of the style specified by the <code>styleProp</code> parameter
+		 * which specifies the style name.
+		 * 
+		 * @param styleProp The name of the style whose value is to be retrieved.
+		 * @return The value of the specified style.  The type varies depending on the type of the style being
+		 * accessed.  Returns <code>undefined</code> if the style is not set.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function getStyle(styleName:String):*
+		{ return this[styleName]; }
+
+		/**
+		 * Set the value of the style specified by the <code>styleProp</code> parameter
+		 * which specifies the style name to <code>value</code>.
+		 * 
+		 * @param styleProp The name of the style whose value is to be set.
+		 * @param value The value to set.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function setStyle(styleName:String,value:*):void
+		{ this[styleName] = value; }
+
+		/**
+		 * The position of the tab stop, in pixels, relative to the start edge of the column.
+		 * <p>Legal values are numbers from 0 to 10000 and FormatValue.INHERIT.</p>
+		 * <p>Default value is undefined indicating not set.</p>
+		 * <p>If undefined during the cascade this property will have a value of 0.</p>
+		 * @see FormatValue#INHERIT
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function get position():*
+		{ return _position; }
+		public function set position(newValue:*):void
+		{ _position = positionProperty.setHelper(_position,newValue); }
+
+		[Inspectable(enumeration="start,center,end,decimal,inherit")]
+		/**
+		 * The tab alignment for this tab stop. 
+		 * <p>Legal values are TabAlignment.START, TabAlignment.CENTER, TabAlignment.END, TabAlignment.DECIMAL, FormatValue.INHERIT.</p>
+		 * <p>Default value is undefined indicating not set.</p>
+		 * <p>If undefined during the cascade this property will have a value of TabAlignment.START.</p>
+		 * @see FormatValue#INHERIT
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 * @see org.apache.flex.text.engine.TabAlignment
+		 */
+		public function get alignment():*
+		{ return _alignment; }
+		public function set alignment(newValue:*):void
+		{ _alignment = alignmentProperty.setHelper(_alignment,newValue); }
+
+		/**
+		 * The alignment token to be used if the alignment is DECIMAL.
+		 * <p>Default value is undefined indicating not set.</p>
+		 * <p>If undefined during the cascade this property will have a value of null.</p>
+		 * 
+		 * @throws RangeError when set value is not within range for this property
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function get decimalAlignmentToken():*
+		{ return _decimalAlignmentToken; }
+		public function set decimalAlignmentToken(newValue:*):void
+		{ _decimalAlignmentToken = decimalAlignmentTokenProperty.setHelper(_decimalAlignmentToken,newValue); }
+
+		/**
+		 * Creates a new TabStopFormat object. All settings are empty or, optionally, are initialized from the
+		 * supplied <code>initialValues</code> object.
+		 * 
+		 * @param initialValues optional instance from which to copy initial values.
+		 * 
+		 * @see #defaultFormat
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function TabStopFormat(initialValues:ITabStopFormat = null)
+		{
+			if (initialValues)
+				apply(initialValues);
+		}
+
+		/**
+		 * Copies TabStopFormat settings from the <code>values</code> ITabStopFormat instance into this TabStopFormat object.
+		 * If <code>values</code> is <code>null</code>, this TabStopFormat object is initialized with undefined values for all properties.
+		 * @param values optional instance from which to copy values.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function copy(values:ITabStopFormat):void
+		{
+			 if (values == null)
+				values = emptyTabStopFormat;
+			this.position = values.position;
+			this.alignment = values.alignment;
+			this.decimalAlignmentToken = values.decimalAlignmentToken;
+		}
+
+		/**
+		 * Concatenates the values of properties in the <code>incoming</code> ITabStopFormat instance
+		 * with the values of this TabStopFormat object. In this (the receiving) TabStopFormat object, properties whose values are <code>FormatValue.INHERIT</code>,
+		 * and inheriting properties whose values are <code>undefined</code> will get new values from the <code>incoming</code> object.
+		 * Non-inheriting properties whose values are <code>undefined</code> will get their default values.
+		 * All other property values will remain unmodified.
+		 * 
+		 * @param incoming instance from which values are concatenated.
+		 * @see org.apache.flex.textLayout.formats.FormatValue#INHERIT
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function concat(incoming:ITabStopFormat):void
+		{
+			this.position = positionProperty.concatHelper(this.position, incoming.position);
+			this.alignment = alignmentProperty.concatHelper(this.alignment, incoming.alignment);
+			this.decimalAlignmentToken = decimalAlignmentTokenProperty.concatHelper(this.decimalAlignmentToken, incoming.decimalAlignmentToken);
+		}
+
+		/**
+		 * Concatenates the values of properties in the <code>incoming</code> ITabStopFormat instance
+		 * with the values of this TabStopFormat object. In this (the receiving) TabStopFormat object, properties whose values are <code>FormatValue.INHERIT</code>,
+		 * and inheriting properties whose values are <code>undefined</code> will get new values from the <code>incoming</code> object.
+		 * All other property values will remain unmodified.
+		 * 
+		 * @param incoming instance from which values are concatenated.
+		 * @see org.apache.flex.textLayout.formats.FormatValue#INHERIT
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function concatInheritOnly(incoming:ITabStopFormat):void
+		{
+			this.position = positionProperty.concatInheritOnlyHelper(this.position, incoming.position);
+			this.alignment = alignmentProperty.concatInheritOnlyHelper(this.alignment, incoming.alignment);
+			this.decimalAlignmentToken = decimalAlignmentTokenProperty.concatInheritOnlyHelper(this.decimalAlignmentToken, incoming.decimalAlignmentToken);
+		}
+
+		/**
+		 * Replaces property values in this TabStopFormat object with the values of properties that are set in
+		 * the <code>incoming</code> ITabStopFormat instance. Properties that are <code>undefined</code> in the <code>incoming</code>
+		 * ITabStopFormat instance are not changed in this object.
+		 * 
+		 * @param incoming instance whose property values are applied to this TabStopFormat object.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function apply(incoming:ITabStopFormat):void
+		{
+			var val:*;
+
+			if ((val = incoming.position) !== undefined)
+				this.position = val;
+			if ((val = incoming.alignment) !== undefined)
+				this.alignment = val;
+			if ((val = incoming.decimalAlignmentToken) !== undefined)
+				this.decimalAlignmentToken = val;
+		}
+
+		/**
+		 * Compares properties in ITabStopFormat instance <code>p1</code> with properties in ITabStopFormat instance <code>p2</code>
+		 * and returns <code>true</code> if all properties match.
+		 * 
+		 * @param p1 instance to compare to <code>p2</code>.
+		 * @param p2 instance to compare to <code>p1</code>.
+		 * 
+		 * @return true if all properties match, false otherwise.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		static public function isEqual(p1:ITabStopFormat,p2:ITabStopFormat):Boolean
+		{
+			if (p1 == null)
+				p1 = emptyTabStopFormat;
+			if (p2 == null)
+				p2 = emptyTabStopFormat;
+			if (p1 == p2)
+				return true;
+
+			if (!positionProperty.equalHelper(p1.position, p2.position))
+				return false;
+			if (!alignmentProperty.equalHelper(p1.alignment, p2.alignment))
+				return false;
+			if (!decimalAlignmentTokenProperty.equalHelper(p1.decimalAlignmentToken, p2.decimalAlignmentToken))
+				return false;
+
+			return true;
+		}
+
+		/**
+		 * Sets properties in this TabStopFormat object to <code>undefined</code> if they match those in the <code>incoming</code>
+		 * ITabStopFormat instance.
+		 * 
+		 * @param incoming instance against which to compare this TabStopFormat object's property values.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function removeMatching(incoming:ITabStopFormat):void
+		{
+			if (incoming == null)
+				return;
+
+			if (positionProperty.equalHelper(this.position, incoming.position))
+				this.position = undefined;
+			if (alignmentProperty.equalHelper(this.alignment, incoming.alignment))
+				this.alignment = undefined;
+			if (decimalAlignmentTokenProperty.equalHelper(this.decimalAlignmentToken, incoming.decimalAlignmentToken))
+				this.decimalAlignmentToken = undefined;
+		}
+
+		/**
+		 * Sets properties in this TabStopFormat object to <code>undefined</code> if they do not match those in the
+		 * <code>incoming</code> ITabStopFormat instance.
+		 * 
+		 * @param incoming instance against which to compare this TabStopFormat object's property values.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		public function removeClashing(incoming:ITabStopFormat):void
+		{
+			if (incoming == null)
+				return;
+
+			if (!positionProperty.equalHelper(this.position, incoming.position))
+				this.position = undefined;
+			if (!alignmentProperty.equalHelper(this.alignment, incoming.alignment))
+				this.alignment = undefined;
+			if (!decimalAlignmentTokenProperty.equalHelper(this.decimalAlignmentToken, incoming.decimalAlignmentToken))
+				this.decimalAlignmentToken = undefined;
+		}
+
+		static private var _defaults:TabStopFormat;
+		/**
+		 * Returns a TabStopFormat object with default settings.
+		 * This function always returns the same object.
+		 * 
+		 * @return a singleton instance of ITabStopFormat that is populated with default values.
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0
+		 */
+		static public function get defaultFormat():ITabStopFormat
+		{
+			if (_defaults == null)
+			{
+				_defaults = new TabStopFormat();
+				PropertyUtil.defaultsAllHelper(_description,_defaults);
+			}
+			return _defaults;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableFrame.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableFrame.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableFrame.as
new file mode 100644
index 0000000..5270923
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableFrame.as
@@ -0,0 +1,113 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for the <code>TableFrame</code> property of the TextLayoutFormat class. Specifies which 
+	 *  sides of the frame surrounding a table will be visible.  
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 *  @see TextLayoutFormat#TableFrame
+	 */
+	public final class TableFrame
+	{
+		/** No sides. This is the default value. 
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const VOID:String = "void";
+		
+		/**  The top side only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const ABOVE:String = "above";
+		
+		/** The bottom side only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const BELOW:String = "below";
+		
+		/** The top and bottom sides only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const HSIDES:String = "hsides";
+		
+		/**  The right and left sides only
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const VSIDES:String = "vsides";
+		
+		/** The left-hand side only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const LHS:String = "lhs";
+		
+		/** The right-hand side only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const RHS:String = "rhs";
+		
+		/** All four sides. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const BOX:String = "box";
+		
+		/** All four sides. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const BORDER:String = "border";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableRules.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableRules.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableRules.as
new file mode 100644
index 0000000..f9a4bb4
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TableRules.as
@@ -0,0 +1,77 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for the <code>TableRules</code> property of the TextLayoutFormat class. Specifies which 
+	 *  rules will appear between cells within a table. The rendering of rules is user agent dependent.  
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 *  @see TextLayoutFormat#TableRules
+	 */
+	public final class TableRules
+	{
+		/** No sides. This is the default value. 
+		 * 
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const NONE:String = "none";
+		
+		/**  Rules will appear between row groups (see THEAD, TFOOT, and TBODY) and column groups (see COLGROUP and COL) only. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const GROUPS:String = "groups";
+		
+		/** Rules will appear between rows only.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const ROWS:String = "rows";
+		
+		/** Rules will appear between columns only.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const COLS:String = "cols";
+		
+		/**  Rules will appear between all rows and columns.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		
+		public static const ALL:String = "all";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextAlign.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextAlign.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextAlign.as
new file mode 100644
index 0000000..b97f07d
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextAlign.as
@@ -0,0 +1,91 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for setting the <code>textAlign</code> and <code>textAlignLast</code> properties
+	 *  of the TextLayoutFormat class. The values describe the alignment of lines in the paragraph relative to the 
+	 *  container.
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 * @see TextLayoutFormat#textAlign 
+	 * @see TextLayoutFormat#textAlignLast 
+	 */
+	public final class TextAlign
+	{
+		/** Specifies start edge alignment - text is aligned to match the writing order. Equivalent to setting 
+		 * left in left-to-right text, or right in right-to-left text.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const START:String = "start";
+		
+		/** Specifies end edge alignment - text is aligned opposite from the writing order. Equivalent to 
+		 *  specifying right in left-to-right text, or left in right-to-left text. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const END:String = "end";
+		
+		/** Specifies left edge alignment. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const LEFT:String = "left";
+		
+		/** Specifies right edge alignment. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const RIGHT:String = "right";
+		
+		/** Specifies center alignment within the container.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const CENTER:String = "center";
+		
+		/** Specifies that text is justified within the lines so they fill the container space.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const JUSTIFY:String = "justify";
+		
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextDecoration.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextDecoration.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextDecoration.as
new file mode 100644
index 0000000..b0b8c62
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextDecoration.as
@@ -0,0 +1,53 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for the <code>textDecoration</code> property
+	 *  of the TextLayoutFormat class. The values specify either normal text, with no decoration,
+	 *  or underline.
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0 
+	 *  
+	 * @see TextLayoutFormat#textDecoration
+	 */
+	 
+	public final class TextDecoration
+	{
+		/** Specifies normal text - no decoration applied 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const NONE:String = "none";
+		
+		/** Specifies that text is underlined. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const UNDERLINE:String = "underline";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextJustify.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextJustify.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextJustify.as
new file mode 100644
index 0000000..27f4a8f
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/formats/TextJustify.as
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.formats
+{
+	/**
+	 *  Defines values for setting the <code>textJustify</code> property of the TextLayoutFormat class. 
+	 *  Default value is INTER_WORD, meaning that extra space in justification is added to the space characters.
+	 *  DISTRIBUTE specifies that extra space is added both to space characters and between individual
+	 *  letters. Use these values only when setting <code>justificationRule</code> to SPACE.
+	 *
+	 * @playerversion Flash 10
+	 * @playerversion AIR 1.5
+	 * @langversion 3.0
+	 *
+	 * @see TextLayoutFormat#textJustify
+	 * @see TextLayoutFormat#justificationRule
+	 */
+	public final class TextJustify
+	{
+		/** Specifies that justification is to add space both to space characters and 
+		 * between individual letters.
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const DISTRIBUTE:String = "distribute";
+		
+		/** Specifies that justification is to add space to space characters. 
+		 *
+		 * @playerversion Flash 10
+		 * @playerversion AIR 1.5
+		 * @langversion 3.0 
+		 */
+		 
+		public static const INTER_WORD:String = "interWord";
+	}
+}