Selection blendModes are working
Copy and Paste
For Copy and Paste to work, a focused, editable element needs to be assigned to 
the Clipboard.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/455f8802
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/455f8802
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/455f8802

Branch: refs/heads/develop
Commit: 455f880202bb37c3052be321a10f5ceca15ad27c
Parents: 99864a8
Author: Harbs <ha...@in-tools.com>
Authored: Tue Jun 27 00:29:17 2017 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Tue Jun 27 00:29:17 2017 +0300

----------------------------------------------------------------------
 .../projects/TLF/src/main/flex/TLFClasses.as    |   2 +-
 .../textLayout/container/ContainerController.as |  18 +-
 .../textLayout/conversion/PlainTextImporter.as  |   2 +-
 .../apache/flex/textLayout/dummy/Clipboard.as   |  36 ----
 .../apache/flex/textLayout/edit/Clipboard.as    | 211 +++++++++++++++++++
 .../apache/flex/textLayout/edit/EditManager.as  |  20 ++
 .../flex/textLayout/edit/SelectionManager.as    |  28 ++-
 .../flex/textLayout/edit/TextClipboard.as       |  41 +++-
 .../flex/textLayout/factory/ITLFFactory.as      |   2 +
 .../textLayout/factory/StandardTLFFactory.as    |   9 +
 10 files changed, 317 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/TLFClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/TLFClasses.as 
b/frameworks/projects/TLF/src/main/flex/TLFClasses.as
index e398e7c..29f9d14 100644
--- a/frameworks/projects/TLF/src/main/flex/TLFClasses.as
+++ b/frameworks/projects/TLF/src/main/flex/TLFClasses.as
@@ -164,7 +164,7 @@ package
                import org.apache.flex.textLayout.utils.HitTestArea; 
HitTestArea;
                import org.apache.flex.textLayout.utils.Twips; Twips;
                import org.apache.flex.textLayout.factory.ITLFFactory; 
ITLFFactory;
-               
+               import org.apache.flex.textLayout.edit.Clipboard; Clipboard;
                // CONFIG::release public function exportAssert():void
                // {
                //      assert();

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/container/ContainerController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/container/ContainerController.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/container/ContainerController.as
index 03a68c8..1bf69cb 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/container/ContainerController.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/container/ContainerController.as
@@ -3002,10 +3002,10 @@ package org.apache.flex.textLayout.container
                        }
                        
                        var selFormat:SelectionFormat = 
interactionManager.currentSelectionFormat;
-//TODO deal with blend modes
-//                     var curBlendMode:String = 
(interactionManager.activePosition == interactionManager.anchorPosition) ? 
selFormat.pointBlendMode : selFormat.rangeBlendMode;
-//                     if (selectionSprite.blendMode != curBlendMode)
-//                             selectionSprite.blendMode = curBlendMode;
+                       var curBlendMode:String = 
(interactionManager.activePosition == interactionManager.anchorPosition) ? 
selFormat.pointBlendMode : selFormat.rangeBlendMode;
+                       
+                       if (textFlow.tlfFactory.getBlendMode(selectionSprite) 
!= curBlendMode)
+                               
textFlow.tlfFactory.setBlendMode(selectionSprite,curBlendMode);
                        
                        var curAlpha:Number = 
(interactionManager.activePosition == interactionManager.anchorPosition) ? 
selFormat.pointAlpha : selFormat.rangeAlpha;
                        if (selectionSprite.alpha != curAlpha)
@@ -4411,14 +4411,14 @@ package org.apache.flex.textLayout.container
                 */
                protected function 
addSelectionContainer(selectionContainer:IParentIUIBase):void
                {
-//TODO deal with blendModes
 //                     if (selectionContainer.blendMode == BlendMode.NORMAL && 
selectionContainer.alpha == 1)
-//                     {
+                       if(textFlow.tlfFactory.getBlendMode(selectionContainer) 
== "normal")
+                       {
                                // don't put selection behind background color 
or existing content in container, put it behind first text line
                                _container.addElementAt(selectionContainer, 
getFirstTextLineChildIndex());
-//                     }
-//                     else
-//                             _container.addElement(selectionContainer);
+                       }
+                       else
+                               _container.addElement(selectionContainer);
                }
                
                /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/PlainTextImporter.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/PlainTextImporter.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/PlainTextImporter.as
index b98c43d..f3ded70 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/PlainTextImporter.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/PlainTextImporter.as
@@ -38,7 +38,7 @@ package org.apache.flex.textLayout.conversion {
         * Newlines will be converted to paragraphs. Using the 
PlainTextImporter directly
         * is equivalent to calling 
TextConverter.importToFlow(TextConverter.PLAIN_TEXT_FORMAT).
         */
-       internal class PlainTextImporter extends ConverterBase implements 
ITextImporter
+       public class PlainTextImporter extends ConverterBase implements 
ITextImporter
        {
                protected var _config:IConfiguration = null;
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
deleted file mode 100644
index ca0fed1..0000000
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
+++ /dev/null
@@ -1,36 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.dummy {
-       public class Clipboard {
-               public static var generalClipboard : Clipboard;
-
-               public function hasFormat(format : String) : Boolean {
-                       return false;
-               }
-
-               public function getData(clipboardFormat : String) : void {
-               }
-
-               public function clear() : void {
-               }
-
-               public function setData(clipboardFormat : String, clipboardData 
: String) : void {
-               }
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/Clipboard.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/Clipboard.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/Clipboard.as
new file mode 100644
index 0000000..c453aa8
--- /dev/null
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/Clipboard.as
@@ -0,0 +1,211 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.edit
+{
+    COMPILE::SWF
+    {
+        import flash.desktop.Clipboard;
+        import org.apache.flex.utils.UIDUtil;
+    }
+    COMPILE::JS
+    {
+        import org.apache.flex.textLayout.events.EditEvent;
+    }
+       /** 
+        * The Clipboard class is used for Clipboard operations such as copy 
and paste
+        * It wraps the Flash Clipboard class and creates a new one on the 
Javascript side.
+     * To use the Javascript version, it is necessary to assign a static 
`clipElement` which needs
+     * to be a `contenteditable` HTML Element. This is to work around Browser 
issues related to Copy and Paste.
+        * 
+        */
+    COMPILE::SWF
+    public class Clipboard
+    {
+        public function get clipElement():Object
+        {
+            return null;
+        }
+        public function set clipElement(value:Object):void
+        {
+            // nothing for Flash
+        }
+        private static function get systemClipboard():flash.desktop.Clipboard
+        {
+            return flash.desktop.Clipboard.generalClipboard;
+        }
+        private static var 
_generalClipboard:org.apache.flex.textLayout.edit.Clipboard;
+        public static function get 
generalClipboard():org.apache.flex.textLayout.edit.Clipboard
+        {
+            if(_generalClipboard == null)
+                _generalClipboard = new 
org.apache.flex.textLayout.edit.Clipboard();
+            return _generalClipboard;
+        }
+               public function hasFormat(format:String):Boolean
+        {
+                       return systemClipboard.hasFormat(format);
+               }
+
+               public function getData(clipboardFormat:String):Object
+        {
+            return systemClipboard.getData(clipboardFormat);
+               }
+
+               public function clear():void
+        {
+            systemClipboard.clear();
+               }
+
+        public function clearData(format:String):void
+        {
+            systemClipboard.clearData(format);
+        }
+
+               public function setData(clipboardFormat:String, 
clipboardData:String):void
+        {
+            systemClipboard.setData(clipboardFormat, clipboardData);
+               }
+
+        public function setDataHandler(format:String, handler:Function, 
serializable:Boolean = true):Boolean
+        {
+            return systemClipboard.setDataHandler(format, handler, 
serializable);
+        }
+        // Do nothing in Flash
+        public function registerCallback(callback:Function):void{}
+
+    }
+
+    COMPILE::JS
+    public class Clipboard
+    {
+
+        private var _clipElement:Object;
+        public function get clipElement():Object
+        {
+            return _clipElement;
+        }
+        public function set clipElement(value:Object):void
+        {
+            if(!_clipElement)
+            {
+                document["addEventListener"]('cut',onCut);
+                document["addEventListener"]('copy',onCopy);
+                document["addEventListener"]('paste',onPaste);
+                
+            }
+            // if(_clipElement)
+            // {
+            //     _clipElement["removeEventListener"]('cut',onCut);
+            //     _clipElement["removeEventListener"]('copy',onCopy);
+            //     _clipElement["removeEventListener"]('paste',onPaste);
+            // }
+            _clipElement = value;
+            // if(_clipElement)
+            // {
+            //     _clipElement["addEventListener"]('cut',onCut);
+            //     _clipElement["addEventListener"]('copy',onCopy);
+            //     _clipElement["addEventListener"]('paste',onPaste);
+            // }
+        }
+        private var currentEvent:Object;
+        private function onCopy(e:Event):void
+        {
+            currentEvent = e;
+            if(_callback)
+                _callback(new Event(EditEvent.COPY));
+            // only call the callback once
+            _callback = null;
+        }
+        private function onCut(e:Event):void
+        {
+            currentEvent = e;
+            if(_callback)
+                _callback(new Event(EditEvent.CUT));
+            // only call the callback once
+            _callback = null;
+            
+        }
+        private function onPaste(e:Event):void
+        {
+            currentEvent = e;
+
+            // check if the paste is outside content or TLF content
+            var pasteboardText:String;
+                if(window["clipboardData"]) {//IE
+                    pasteboardText = window["clipboardData"].getData("Text");
+                } else if(currentEvent["clipboardData"]) {
+                    pasteboardText = 
currentEvent["clipboardData"].getData("text/plain");
+                }
+            if(pasteboardText != getData("text/plain"))
+            {
+                clear();
+                setData("text/plain",pasteboardText);
+            }
+            if(_callback)
+                _callback(new Event(EditEvent.PASTE));
+            // only call the callback once
+            _callback = null;
+            
+        }
+
+        private static var _generalClipboard:Clipboard;
+               public static function get generalClipboard():Clipboard{
+            if(_generalClipboard == null)
+                _generalClipboard = new Clipboard();
+            
+            return _generalClipboard;
+        }
+        private var _formats:Object = {};
+               public function hasFormat(format:String):Boolean {
+            return _formats[format] != null;
+               }
+
+               public function getData(clipboardFormat:String):Object
+        {
+            return _formats[clipboardFormat];
+               }
+
+               public function clear() : void {
+            _formats = {};
+               }
+               public function setData(clipboardFormat:String, 
clipboardData:Object) : void {
+            _formats[clipboardFormat] = clipboardData;
+            if(clipboardFormat == "text/plain")
+            {
+                if(window["clipboardData"]) {//IE
+                    window["clipboardData"].setData("Text", clipboardData);    
    
+                } else if(currentEvent["clipboardData"]) {
+                    currentEvent["clipboardData"].setData("text/plain", 
clipboardData);      
+                }
+            }
+               }
+        public function preventDefault():void
+        {
+            if(currentEvent)
+                currentEvent.preventDefault();
+        }
+        private var _callback:Function;
+        // We need to register a callback to know what to do with the copy, 
cut and paste events
+        public function registerCallback(callback:Function):void
+        {
+            _callback = callback;
+        }
+
+    }    
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/EditManager.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/EditManager.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/EditManager.as
index a0d7bde..062cbc0 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/EditManager.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/EditManager.as
@@ -319,6 +319,26 @@ package org.apache.flex.textLayout.edit
                                                        deletePreviousWord();
                                                        event.preventDefault();
                                                        break;
+                                               
+                                       }
+                                       //copy/paste
+                                       // in Flash there is special events for 
this.
+                                       COMPILE::JS
+                                       {
+                                               switch(event.code)
+                                               {
+                                                       //Paste and cut need to 
be handled inside the "paste" and "cut" events
+                                                       case "KeyV"://paste 
fallthrough
+                                                               // 
editHandler(new Event(EditEvent.PASTE));
+                                                               // 
event.preventDefault();
+                                                               // break;
+                                                       case "KeyX"://cut
+                                                               
Clipboard.generalClipboard.registerCallback(editHandler);
+                                                               // 
editHandler(new Event(EditEvent.CUT));
+                                                               // 
event.preventDefault();
+                                                               break;
+                                               }
+
                                        }
                                        if (event.code == EditingKeys.DELETE)
                                        {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/SelectionManager.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/SelectionManager.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/SelectionManager.as
index 1860ac3..cbc693a 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/SelectionManager.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/SelectionManager.as
@@ -43,7 +43,6 @@ package org.apache.flex.textLayout.edit
        import org.apache.flex.textLayout.debug.assert;
        import org.apache.flex.textLayout.dummy.BitmapData;
        import org.apache.flex.textLayout.dummy.BoundsUtil;
-       import org.apache.flex.textLayout.dummy.Clipboard;
        import org.apache.flex.textLayout.dummy.ContextMenu;
        import org.apache.flex.textLayout.dummy.IBitmapDrawable;
        import org.apache.flex.textLayout.dummy.Mouse;
@@ -74,6 +73,7 @@ package org.apache.flex.textLayout.edit
        import org.apache.flex.textLayout.operations.FlowOperation;
        import org.apache.flex.textLayout.utils.NavigationUtil;
        import org.apache.flex.utils.PointUtils;
+       import org.apache.flex.textLayout.edit.Clipboard;
 
        /** 
         * The SelectionManager class manages text selection in a text flow.
@@ -2581,7 +2581,10 @@ package org.apache.flex.textLayout.edit
                {
                        var selState:SelectionState = null;
                        flushPendingOperations();
+                       if(event.defaultPrevented)
+                               return;
 
+                       
                        switch (event.code)
                        {
                                case NavigationKeys.LEFT:
@@ -2634,6 +2637,29 @@ package org.apache.flex.textLayout.edit
                        if (!hasSelection() || event.defaultPrevented)
                                return;
 
+                       //copy/paste
+                       // in Flash there is special events for this.
+                       COMPILE::JS
+                       {
+                               if(event.specialKey && !event.altKey && 
!event.defaultPrevented)
+                               {
+                                       switch(event.code)
+                                       {
+                                               // Copy is handled internally 
by the Clipboard class
+                                               case "KeyC"://copy
+                                                       
Clipboard.generalClipboard.registerCallback(editHandler);
+                                               //      editHandler(new 
Event(EditEvent.COPY));
+                                               //      event.preventDefault();
+                                                       break;
+                                               case "KeyA"://select all
+                                                       editHandler(new 
Event(SelectionEvent.SELECT_ALL));
+                                                       event.preventDefault();
+                                                       break;
+                                       }
+                               }
+
+                       }
+
                        // if (event.charCode == 0)
                        // {
                        // the keycodes that we currently handle

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/TextClipboard.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/TextClipboard.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/TextClipboard.as
index 69d50b8..4c11c67 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/TextClipboard.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/TextClipboard.as
@@ -24,12 +24,14 @@ package org.apache.flex.textLayout.edit
        import org.apache.flex.textLayout.conversion.ITextExporter;
        import org.apache.flex.textLayout.conversion.ITextImporter;
        import org.apache.flex.textLayout.conversion.TextConverter;
-       import org.apache.flex.textLayout.dummy.Clipboard;
        import org.apache.flex.textLayout.elements.FlowGroupElement;
        import org.apache.flex.textLayout.elements.IFlowElement;
        import org.apache.flex.textLayout.elements.ITextFlow;
 
-               
+       COMPILE::JS
+       {
+               import org.apache.flex.textLayout.conversion.PlainTextImporter;
+       }
 
 
        /**
@@ -74,7 +76,28 @@ package org.apache.flex.textLayout.edit
                 */                                                             
                
                public static function getContents():TextScrap
                {
-                       var systemClipboard:Clipboard = 
Clipboard.generalClipboard;     
+                       var systemClipboard:Clipboard = 
Clipboard.generalClipboard;
+                       COMPILE::SWF
+                       {
+                               return importScrap(getFromClipboard);
+                       }
+
+                       COMPILE::JS
+                       {
+                               systemClipboard.preventDefault();
+                               
if(systemClipboard.hasFormat(TextConverter.TEXT_LAYOUT_FORMAT))
+                                       return 
systemClipboard.getData(TextConverter.TEXT_LAYOUT_FORMAT) as TextScrap;
+                               else
+                               {
+                                       var importer:PlainTextImporter = new 
PlainTextImporter();
+                                       var flow:ITextFlow = 
importer.importToFlow(systemClipboard.getData("text/plain"));
+                                       var textScrap:TextScrap = new 
TextScrap(flow);
+                                       textScrap.setPlainText(true);
+                                       return textScrap;
+                               }
+                       }
+
+
                        return importScrap(getFromClipboard);
 
                        function getFromClipboard(clipboardFormat:String):String
@@ -134,7 +157,17 @@ package org.apache.flex.textLayout.edit
                        var systemClipboard:Clipboard = 
Clipboard.generalClipboard;
                        systemClipboard.clear();
                        
-                       exportScrap(textScrap, addToClipboard);
+                       COMPILE::SWF
+                       {
+                               exportScrap(textScrap, addToClipboard);
+                       }
+
+                       COMPILE::JS
+                       {
+                               
systemClipboard.setData(TextConverter.TEXT_LAYOUT_FORMAT, textScrap);
+                               systemClipboard.setData("text/plain", 
textScrap.textFlow.getText());
+                               systemClipboard.preventDefault();
+                       }
 
                        function addToClipboard(clipboardFormat:String, 
clipboardData:String):void 
                        {                                               

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/ITLFFactory.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/ITLFFactory.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/ITLFFactory.as
index d122879..627d03e 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/ITLFFactory.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/ITLFFactory.as
@@ -34,5 +34,7 @@ package org.apache.flex.textLayout.factory {
                // of the font information it needs
                function get currentContainer():IParentIUIBase;
                function set currentContainer(value:IParentIUIBase):void
+               function getBlendMode(obj:Object):String;
+               function setBlendMode(obj:Object,value:String):void;
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/455f8802/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/StandardTLFFactory.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/StandardTLFFactory.as
 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/StandardTLFFactory.as
index 0ed80f1..75202c6 100644
--- 
a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/StandardTLFFactory.as
+++ 
b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/factory/StandardTLFFactory.as
@@ -57,5 +57,14 @@ package org.apache.flex.textLayout.factory {
                {
                        _currentContainer = value;
                }
+               public function getBlendMode(obj:Object):String
+               {
+                       return "normal";
+               }
+
+               public function setBlendMode(obj:Object,value:String):void
+               {
+                       
+               }
        }
 }
\ No newline at end of file

Reply via email to