More window bits.

More window bits.

git-svn-id: 41360ad359616a519dfba9f2f48af1afe653c9f7@18 be230a1c-449f-4488-b524-6273046f66f0

--- src/as/client/ClientApp.as
+++ src/as/client/ClientApp.as
@@ -16,6 +16,7 @@

 import flash.external.ExternalInterface;

+import flash.geom.Point;
 import flash.geom.Rectangle;

 import flash.net.Socket;
@@ -124,13 +125,13 @@
         _socket = new Socket();
         _socket.addEventListener(Event.CONNECT, function (event :Event) :void {
             // write the magic number, version, screen dimensions
-            _socket.writeUnsignedInt(0x57544750);
+            _socket.writeUnsignedInt(0x57544750); // "WTGP"
             _socket.writeUnsignedInt(0x00000001);
             _socket.writeShort(_width);
             _socket.writeShort(_height);
         });
         _socket.addEventListener(IOErrorEvent.IO_ERROR, function (event :IOErrorEvent) :void {
-            fatalError("Couldn't connect to server.  Please try again later.");
+            fatalError("Couldn't connect to server.  Please wait a while, then reload the page.");
         });
         _socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
                 function (event :SecurityErrorEvent) :void {
@@ -176,7 +177,7 @@
             return;
         }
         _socket.writeShort(6);
-        _socket.writeShort(event.type == KeyboardEvent.KEY_DOWN ? 0 : 1);
+        _socket.writeShort(event.type == KeyboardEvent.KEY_DOWN ? KEY_PRESSED : KEY_RELEASED);
         _socket.writeUnsignedInt(getQtKeyCode(event));
     }

@@ -196,12 +197,12 @@
         text = " " + text + " ";
         var bounds :Rectangle = new Rectangle(
             int((_width - text.length - 2) / 2), int(_height/2), text.length + 2, 3);
-        var window :Window = new Window(int.MAX_VALUE, int.MAX_VALUE, bounds, "#");
+        var window :Window = new Window(int.MAX_VALUE, int.MAX_VALUE, bounds, "#".charCodeAt(0));
         for (var ii :int = 0; ii < text.length; ii++) {
             window.contents[text.length + 3 + ii] = int(text.charCodeAt(ii));
         }
         addWindow(window);
-        updateDisplay(bounds);
+        updateDisplay();
     }

     /**
@@ -209,6 +210,7 @@
      */
     protected function addWindow (window :Window) :void
     {
+        addDirtyRegion(window.bounds);
         for (var ii :int = _windows.length - 1; ii >= 0; ii--) {
             if (window.layer >= _windows[ii].layer) {
                 _windows.splice(ii + 1, 0, window);
@@ -223,19 +225,111 @@
      */
     protected function removeWindow (id :int) :void
     {
+        var idx :int = getWindowIndex(id);
+        if (idx != -1) {
+            addDirtyRegion(_windows[idx].bounds);
+            _windows.splice(idx, 1);
+        }
+    }
+
+    /**
+     * Updates the identified window.
+     */
+    protected function updateWindow (id :int, layer :int, bounds :Rectangle, fill :int) :void
+    {
+        var idx :int = getWindowIndex(id);
+        if (idx == -1) {
+            return;
+        }
+        var window :Window = _windows[idx];
+        if (window.layer != layer) {
+            // remove and reinsert
+            _windows.splice(idx, 1);
+            window.layer = layer;
+            addWindow(window);
+        }
+        addDirtyRegion(window.bounds);
+        if (!window.bounds.equals(bounds)) {
+            addDirtyRegion(bounds);
+            if (!window.bounds.size.equals(bounds.size)) {
+                window.resizeContents(bounds.size, fill);
+            }
+            window.bounds.copyFrom(bounds);
+        }
+    }
+
+    /**
+     * Sets part of a window's contents.
+     */
+    protected function setWindowContents (id :int, bounds :Rectangle, contents :Array) :void
+    {
+        var window :Window = getWindow(id);
+        if (window != null) {
+            addDirtyRegion(new Rectangle(window.bounds.x + bounds.x, window.bounds.y + bounds.y,
+                bounds.width, bounds.height));
+            window.setContents(bounds, contents);
+        }
+    }
+
+    /**
+     * Moves part of a window's contents.
+     */
+    protected function moveWindowContents (
+        id :int, source :Rectangle, dest :Point, fill :int) :void
+    {
+        var window :Window = getWindow(id);
+        if (window != null) {
+            addDirtyRegion(new Rectangle(window.bounds.x + source.x, window.bounds.y + source.y,
+                source.width, source.height));
+            addDirtyRegion(new Rectangle(window.bounds.x + dest.x, window.bounds.y + dest.y,
+                source.width, source.height));
+            window.moveContents(source, dest, fill);
+        }
+    }
+
+    /**
+     * Returns a reference to the window with the specified id, or null if not found.
+     */
+    protected function getWindow (id :int) :Window
+    {
+        var idx :int = getWindowIndex(id);
+        return (idx == -1) ? null : _windows[idx];
+    }
+
+    /**
+     * Returns the index of the window with the specified id, or -1 if not found.
+     */
+    protected function getWindowIndex (id :int) :int
+    {
         for (var ii :int = 0; ii < _windows.length; ii++) {
             if (_windows[ii].id == id) {
-                _windows.splice(ii, 1);
-                return;
-            }
-        }
-    }
-
-    /**
-     * Updates the portion of the display covered by the given bounds.
-     */
-    protected function updateDisplay (bounds :Rectangle) :void
-    {
+                return ii;
+            }
+        }
+        trace("Window not found.", id);
+        return -1;
+    }
+
+    /**
+     * Adds a region to the rectangle that will need updating.
+     */
+    protected function addDirtyRegion (region :Rectangle) :void
+    {
+        _dirty = _dirty.union(region);
+    }
+
+    /**
+     * Updates the portion of the display covered by the dirty region.
+     */
+    protected function updateDisplay () :void
+    {
+        // get the intersection of the screen bounds and the dirty region
+        var bounds :Rectangle = _dirty.intersection(new Rectangle(0, 0, _width, _height));
+        _dirty.setEmpty();
+        if (bounds.isEmpty()) {
+            return;
+        }
+
         // first, combine the contents of all intersecting windows
         var combined :Array = new Array(bounds.width * bounds.height);
         for (var ii :int = 0; ii < _windows.length; ii++) {
@@ -280,11 +374,11 @@
                         // assuming the text is centered within the field
                         var highlight :Bitmap = new Bitmap(_highlightData);
                         addChildAt(_highlights[idx] = highlight, 0);
-                        var bounds :Rectangle = _field.getCharBoundaries(0);
-                        highlight.x = _field.x + bounds.width*xx +
-                            (_field.width - bounds.width*_width)/2;
-                        highlight.y = _field.y + bounds.height*yy +
-                            (_field.height - bounds.height*_height)/2;
+                        var cbounds :Rectangle = _field.getCharBoundaries(0);
+                        highlight.x = _field.x + cbounds.width*xx +
+                            (_field.width - cbounds.width*_width)/2;
+                        highlight.y = _field.y + cbounds.height*yy +
+                            (_field.height - cbounds.height*_height)/2;
                        _field.setTextFormat(_litFormat, tidx, tidx + 1);
                     } else {
                         removeChild(_highlights[idx]);
@@ -436,11 +530,36 @@
     /** The list of windows (sorted by layer). */
     protected var _windows :Array = [ ];

+    /** The current dirty region. */
+    protected var _dirty :Rectangle = new Rectangle();
+
     /** Flag indicating that the character should be highlighted. */
     protected static var HIGHLIGHT_FLAG :int = 0x10000;
+
+    /** Outgoing message: key pressed. */
+    protected static var KEY_PRESSED :int = 1;
+
+    /** Outgoing message: key released. */
+    protected static var KEY_RELEASED :int = 2;
+
+    /** Incoming message: add window. */
+    protected static var ADD_WINDOW :int = 1;
+
+    /** Incoming message: remove window. */
+    protected static var REMOVE_WINDOW :int = 2;
+
+    /** Incoming message: update window. */
+    protected static var UPDATE_WINDOW :int = 3;
+
+    /** Incoming message: set contents. */
+    protected static var SET_CONTENTS :int = 4;
+
+    /** Incoming message: move contents. */
+    protected static var MOVE_CONTENTS :int = 5;
 }
 }

+import flash.geom.Point;
 import flash.geom.Rectangle;

 /**
@@ -463,7 +582,7 @@
     /**
      * Creates a new, empty window.
      */
-    public function Window (id :int, layer :int, bounds :Rectangle, fill :String = " ")
+    public function Window (id :int, layer :int, bounds :Rectangle, fill :int = 0x20)
     {
         this.id = id;
         this.layer = layer;
@@ -471,9 +590,55 @@

         var size :int = bounds.width * bounds.height;
         contents = new Array(size);
-        var fchar :int = int(fill.charCodeAt(0));
         for (var ii :int = 0; ii < size; ii++) {
-            contents[ii] = fchar;
-        }
+            contents[ii] = fill;
+        }
+    }
+
+    /**
+     * Resizes the contents to the specified dimensions.
+     */
+    public function resizeContents (size :Point, fill :int = 0x20) :void
+    {
+        var osize :Point = bounds.size;
+        var ocontents :Array = contents;
+        contents = new Array(size.x * size.y);
+        for (var yy :int = 0; yy < size.y; yy++) {
+            for (var xx :int = 0; xx < size.x; xx++) {
+                contents[yy*size.x + xx] = (xx < osize.x && yy < osize.y) ?
+                    ocontents[yy*osize.x + xx] : fill;
+            }
+        }
+    }
+
+    /**
+     * Sets part of the window's contents.
+     */
+    public function setContents (rect :Rectangle, values :Array) :void
+    {
+        for (var yy :int = 0; yy < rect.height; yy++) {
+            for (var xx :int = 0; xx < rect.width; xx++) {
+                contents[(rect.y + yy)*bounds.width + (rect.x + xx)] = values[yy*rect.width + xx];
+            }
+        }
+    }
+
+    /**
+     * Moves part of a window's contents.
+     */
+    public function moveContents (source :Rectangle, dest :Point, fill :int = 0x20) :void
+    {
+        // copy the source to a temporary buffer and clear it
+        var values :Array = new Array(source.width * source.height);
+        for (var yy :int = 0; yy < source.height; yy++) {
+            for (var xx :int = 0; xx < source.width; xx++) {
+                var cidx :int = (source.y + yy)*bounds.width + (source.x + xx);
+                values[yy*source.width + xx] = contents[cidx];
+                contents[cidx] = fill;
+            }
+        }
+
+        // then set it in the main one
+        setContents(new Rectangle(dest.x, dest.y, source.width, source.height), values);
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 7163
Author:   aharui@adobe.com
Date:     2009-05-21T02:19:55.813792Z

Log Message:
-----------
Initial checkin of frame 1 cleanup.  In an RSL linkage, more classes will now come from the RSL because they are no longer needed in frame 1, and the size of the application SWF will be smaller.

QE Notes: None
Doc Notes: Maybe.  All new classes should be undocumented, but it might be worth checking that and any changes to interfaces
Bugs:
Reviewer: darrell
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/MarshalPopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/EventProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFont.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EventListenerRequest.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/MustellaResultsParser.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/SWFBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/DragManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/PopUpManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/messaging/config/LoaderConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManagerChildManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/CursorManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269198 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -29,6 +29,7 @@
 import mx.effects.EffectManager;
 import mx.events.FlexEvent;
 import mx.managers.FocusManager;
+import mx.managers.IActiveWindowManager;
 import mx.managers.ILayoutManager;
 import mx.managers.ISystemManager;
 import mx.styles.CSSStyleDeclaration;
@@ -443,8 +444,8 @@
     /**
      *    Specifies a string that appears in the title bar of the browser.
      *    This property provides the same functionality as the
-     *    HTML <title> tag.
-     *
+     *    HTML <title> tag.
+     *
      *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.
      * 	  The value set in MXML code is designed to be used by a tool to update the HTML templates
      *    provided with the SDK.

@@ -1298,7 +1299,12 @@
         if (sm.isTopLevel())
         {
             focusManager = new FocusManager(this);
-            sm.activate(this);
+			var awm:IActiveWindowManager =
+				IActiveWindowManager(sm.getImplementation("mx.managers::IActiveWindowManager"));
+			if (awm)
+           		awm.activate(this);
+            else
+                focusManager.activate();
         }
     }

@@ -1308,23 +1314,23 @@
      */
     private function initContextMenu():void
     {
-        // context menu already set
-        // nothing to init
-        if (flexContextMenu != null)
-        {
-            // make sure we set it back on systemManager b/c it may have been overriden by now
-            if (systemManager is InteractiveObject)
-                InteractiveObject(systemManager).contextMenu = contextMenu;
-            return;
-        }
-
+    	// context menu already set
+    	// nothing to init
+    	if (flexContextMenu != null)
+    	{
+    		// make sure we set it back on systemManager b/c it may have been overriden by now
+    		if (systemManager is InteractiveObject)
+        		InteractiveObject(systemManager).contextMenu = contextMenu;
+        	return;
+    	}
+
         var defaultMenu:ContextMenu = new ContextMenu();
         defaultMenu.hideBuiltInItems();
         defaultMenu.builtInItems.print = true;

         if (_viewSourceURL)
         {
-            // don't worry! this gets updated in resourcesChanged()
+        	// don't worry! this gets updated in resourcesChanged()
             const caption:String = resourceManager.getString("core", "viewSource");

             viewSourceCMI = new ContextMenuItem(caption, true);
@@ -1336,7 +1342,7 @@
         contextMenu = defaultMenu;

         if (systemManager is InteractiveObject)
-            InteractiveObject(systemManager).contextMenu = defaultMenu;
+        	InteractiveObject(systemManager).contextMenu = defaultMenu;
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269428 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/effects/WipeDown.as
+++ frameworks/projects/mx/src/mx/effects/WipeDown.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.effects
 {


removed duplicated line in Mesh@244

removed duplicated line in Mesh@244

--- src/aerys/minko/scene/node/mesh/Mesh.as
+++ src/aerys/minko/scene/node/mesh/Mesh.as
@@ -241,8 +241,6 @@
 			_bindings = new DataBindings(this);
 			this.properties = new DataProvider(properties, 'meshProperties', DataProviderUsage.EXCLUSIVE);

-			this.properties = new DataProvider(properties, 'meshProperties', DataProviderUsage.EXCLUSIVE);
-
 			_geometry = geometry;
 			this.effect = effect || DEFAULT_EFFECT;


removed obsolete guard against ssl

removed obsolete guard against ssl

--- flex_src/src/com/elctech/S3UploadRequest.as
+++ flex_src/src/com/elctech/S3UploadRequest.as
@@ -60,15 +60,7 @@

 		private function buildUrl():String
 		{
-
 			var canUseVanityStyle:Boolean = canUseVanityStyle(_bucket);
-
-			if(_options.Secure!="false" && canUseVanityStyle && _bucket.match(/\./)) {
-				// We cannot use SSL for bucket names containing "."
-				// The certificate won't match "my.bucket.s3.amazonaws.com"
-				throw new SecurityError("Cannot use SSL with bucket name containing '.': " + _bucket);
-			}
-
 			var postUrl:String = "http" + ((_options.Secure == 'true') ? "s" : "") + "://";

 			if(canUseVanityStyle) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1253512 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/core/src/CoreClasses.as
+++ frameworks/projects/core/src/CoreClasses.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18602
Author:   chiedozi@adobe.com
Date:     2010-11-16T01:12:30.896435Z

Log Message:
-----------
The navigator skinpart is now bindable on MobileApplication and TabbedMobileApplicaiton
ViewNavigator.length is now bindable
ViewNavigator now ignores push and replace operations that don't provide a view factory class

QE notes:
Doc notes:
Bugs: SDK-28531
Reviewer: Ryan
Tests run: checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedMobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1264356 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
@@ -133,6 +133,7 @@
     //
     //--------------------------------------------------------------------------

+    [Bindable]
     [SkinPart(required="false")]
     /**
      *  The main view navigator for the application.  This component is


Transferred from the Adobe Open Source Subversion Repository

Revision: 17065
Author:   chiedozi@adobe.com
Date:     2010-07-26T22:24:42.162194Z

Log Message:
-----------
MobileApplication now exposes applicationPersist and applicationRestore events to allow developers to respond to persistence operations
Added APPLICATION_RESTORE and APPLICATION_PERSIST events to FlexEvent
Persistence data is now only written to disk when the app exits, and not after every view change
Desktop applications now only persist view history when the app is exited and not when the window is deactivated.

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1264331 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
@@ -6,10 +6,13 @@
     import flash.events.KeyboardEvent;
     import flash.events.StageOrientationEvent;
     import flash.net.registerClassAlias;
+    import flash.system.Capabilities;
+    import flash.system.System;
     import flash.ui.Keyboard;

     import mx.core.IVisualElement;
     import mx.core.mx_internal;
+    import mx.events.FlexEvent;
     import mx.utils.BitFlagUtil;

     import spark.components.supportClasses.ViewData;
@@ -28,9 +31,14 @@
     //--------------------------------------

     /**
-     *  @inherit
+     *  @inheritDic
      */
-    [Event(name="applicationRestore", type="flash.events.Event")]
+    [Event(name="applicationPersist", type="mx.events.FlexEvent")]
+
+    /**
+     *  @inheritDic
+     */
+    [Event(name="applicationRestore", type="mx.events.FlexEvent")]

     public class MobileApplication extends Application
     {
@@ -559,15 +567,30 @@
             // This method called on Android when app run in background
             if (sessionCachingEnabled)
             {
-                persistenceManager.setProperty("selectedSection", navigator.selectedIndex);
-
-                if (navigator.activeView)
-                {
-                    navigator.activeView.active = false;
-                    navigator.persistCurrentView();
-                }
-
-                persistenceManager.flush();
+                // Dispatch event for saving persistence data
+                var eventDispatched:Boolean = true;
+                if (hasEventListener(FlexEvent.APPLICATION_PERSIST))
+                    eventDispatched = dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_PERSIST, false, true));
+
+                if (eventDispatched)
+                {
+                    // Save version number of application
+                    var appDescriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;
+                    var ns:Namespace = appDescriptor.namespace();
+
+                    persistenceManager.setProperty("applicationVersion", appDescriptor.ns::versionNumber.toString());
+                    persistenceManager.setProperty("timestamp", new Date().getMilliseconds());
+                    persistenceManager.setProperty("selectedSection", navigator.selectedIndex);
+                    persistenceManager.setProperty("sectionData", sections);
+
+                    if (navigator.activeView)
+                    {
+                        navigator.activeView.active = false;
+                        navigator.persistCurrentView();
+                    }
+
+                    persistenceManager.flush();
+                }
             }
         }

@@ -583,8 +606,16 @@

             // Add device key listeners
             NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, applicationActivateHandler);
-            NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, applicationDeactivateHandler);
-            NativeApplication.nativeApplication.addEventListener(Event.EXITING, applicationDeactivateHandler);
+
+            // We need to listen to different events on desktop and mobile because
+            // on desktop, the deactivate event is dispatched whenever the window loses
+            // focus.  This could cause persistence to run when the developer doesn't
+            // expect it to on desktop.
+            var os:String = Capabilities.os;
+            if (os.indexOf("Windows") != -1 || os.indexOf("Mac OS") != -1)
+                NativeApplication.nativeApplication.addEventListener(Event.EXITING, applicationDeactivateHandler);
+            else
+                NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, applicationDeactivateHandler);

             systemManager.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChangeHandler);
             systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, deviceKeyDownHandler);
@@ -605,8 +636,8 @@

                 // Dispatch event for loading persistence data
                 var eventDispatched:Boolean = true;
-                if (hasEventListener("applicationRestore"))
-                    eventDispatched = dispatchEvent(new Event("applicationRestore", false, true))
+                if (hasEventListener(FlexEvent.APPLICATION_RESTORE))
+                    eventDispatched = dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_RESTORE, false, true))

                 if (eventDispatched)
                 {
@@ -628,6 +659,9 @@
                             navigator.tabBar.selectedIndex = navigator.selectedIndex;
                     }
                 }
+
+                // Clear previously persisted data
+                persistenceManager.clear();
             }

             // If the sections property is not set by this point, MobileApplication will
@@ -715,7 +749,7 @@
                 navigatorProperties = newNavigatorProperties;

                 // Add event listeners
-                navigator.addEventListener(Event.COMPLETE, persistViewData);
+//                navigator.addEventListener(Event.COMPLETE, persistViewData);
                 navigator.addEventListener(ViewNavigatorEvent.VIEW_ADD, navigator_viewAddHandler);
             }
         }
@@ -755,7 +789,7 @@
                 navigatorProperties = newNavigatorProperties;

                 // TODO (chiedozi): Do i need to null out the properties on navigator?  Applicaiton does.
-                navigator.removeEventListener(Event.COMPLETE, persistViewData);
+//                navigator.removeEventListener(Event.COMPLETE, persistViewData);
                 navigator.removeEventListener(ViewNavigatorEvent.VIEW_ADD, navigator_viewAddHandler);
             }
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1284955 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as
+++ frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as
@@ -1,11 +1,19 @@
-///////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2010 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  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
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 13133
Author:   chaase@adobe.com
Date:     2009-12-22T00:02:54.186166Z

Log Message:
-----------
Fix to transform effects to ignore projection on 2D effects. The prior implementation meant that even 2D effects, like Move, would cause us to set the projection information on a target object's container, even though we were not changing 3D values.
The fix is to set the default values of the projection properties to false in AnimateTransformInstance. That way, any 3D effect (AnimateTransform3D or its subclasses) would cuase the properties to be set according to the 3D defaults (or values that the developer set them to), whereas any 2D effect would leave the values false, which would result in our ignoring the projection matrix for that effect.

QE notes: Breaks several AnimateTransform tests in Mustella, but new behavior is correct and tests should be updated (they have been excluded for now)
Doc notes: None
Bugs: SDK-24396
Reviewer: Ely
Tests run: Checkintests, Mustella sparrk transform effects (AnimateTransform, Move, AnimateTransform3D, etc.)
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1284312 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as
@@ -73,11 +73,11 @@
     /**
      *  @private
      */
-    public var applyLocalProjection:Boolean = true;
-    /**
-     *  @private
-     */
-    public var autoCenterProjection:Boolean = true;
+    public var applyLocalProjection:Boolean = false;
+    /**
+     *  @private
+     */
+    public var autoCenterProjection:Boolean = false;
     /**
      *  @private
      */


clearing entire queue

clearing entire queue

--- src/com/phylake/pooling/ObjectPool.as
+++ src/com/phylake/pooling/ObjectPool.as
@@ -127,10 +127,8 @@
                 reclaimFunction(instance);
                 _available.push(instance);

-                if (_callbacks.length > 0)
-                {
-                    _callbacks.shift().call(null, getObject());
-                }
+                var f:Function;
+                while (f = _callbacks.shift()) f(getObject());
             }
         }


Change 20090405-bargull-Fp9 by bargull@dell--p4--2-53 on 2009-04-05 21:42:42
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: IllegalOperationError when setting defaultTextFormat

New Features:

Bugs Fixed: LPP-8024 (SWF9: flash error if defaultTextFormat is set on a textfield with stylesheet)

Technical Reviewer: max
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:
Implement some basic changes in order to provide support for Flash StyleSheets on text.
(The Flash player throws an IllegalOperationError if you set the defaultTextFormat property on TextField which has got a StyleSheet.)

Tests:

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@13617 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.as
@@ -23,6 +23,7 @@
         import flash.geom.Point;
         import flash.net.URLRequest;
         import flash.text.AntiAliasType;
+        import flash.text.StyleSheet;
         import flash.text.TextField;
         import flash.text.TextFieldAutoSize;
         import flash.text.TextFormat;
@@ -512,13 +513,18 @@

         public function appendText( t:String ):void {
             this.text += t;
+
+            var tfield:TextField = this.textfield;
             if (! this.html) {
-                this.textfield.appendText(t);
+                tfield.appendText(t);
+            } else if (tfield.styleSheet == null) {
+                var df:TextFormat = tfield.defaultTextFormat;
+                // reset textformat to workaround flash player bug (FP-77)
+                tfield.defaultTextFormat = df;
+                tfield.htmlText = this.text;
             } else {
-                var df:TextFormat = this.textfield.defaultTextFormat;
-                // reset textformat to workaround flash player bug (FP-77)
-                this.textfield.defaultTextFormat = df;
-                this.textfield.htmlText = this.text;
+                // you can't set defaultTextFormat if a style sheet is applied
+                tfield.htmlText = this.text;
             }
         }

@@ -538,21 +544,24 @@
          * @param String t: the string to which to set the text
          */
         public function setText ( t:String ):void {
-            //this.textfield.cacheAsBitmap = false;
             this.text = t;
-            if (this.html) {
-                var df:TextFormat = this.textfield.defaultTextFormat;
+
+            var tfield:TextField = this.textfield;
+            if (! this.html) {
+                tfield.text = t;
+            } else if (tfield.styleSheet == null) {
+                var df:TextFormat = tfield.defaultTextFormat;
                 // reset textformat to workaround flash player bug (FP-77)
-                this.textfield.defaultTextFormat = df;
-                this.textfield.htmlText = t;
+                tfield.defaultTextFormat = df;
+                tfield.htmlText = t;
             } else {
-                this.textfield.text = t;
+                // you can't set defaultTextFormat if a style sheet is applied
+                tfield.htmlText = t;
             }

             if (this.resize && (this.multiline == false)) {
                 // single line resizable fields adjust their width to match the text
                 var w:Number = this.getTextWidth();
-                //Debug.write('lztextsprite resize setwidth ', w, this.lzheight );
                 if (w != this.lzwidth) {
                     this.setWidth(w);
                 }
@@ -560,12 +569,10 @@

             //multiline resizable fields adjust their height
             if (this.sizeToHeight) {
-                var theight:Number = this.textfield.textHeight;
+                var theight:Number = tfield.textHeight;
                 if (theight == 0) theight = this.lineheight;
                 this.setHeight(theight + LzTextSprite.PAD_TEXTHEIGHT);
             }
-
-            //this.textfield.cacheAsBitmap = true;
         }

         /**
@@ -583,6 +590,7 @@
             //            Debug.write("__setFormat this.font=", this.font, 'this.fontname = ',this.fontname,
             //'cfontname=', cfontname);

+            var tfield:TextField = this.textfield;
             var tf:TextFormat = new TextFormat();
             tf.kerning = true;
             tf.size = this.fontsize;
@@ -590,7 +598,7 @@
             tf.color = this.textcolor;

             // If there is no font found, assume a device font
-            this.textfield.embedFonts = (this.font != null);
+            tfield.embedFonts = (this.font != null);

             tf.bold = (this.fontstyle == "bold" || this.fontstyle =="bolditalic");
             tf.italic = (this.fontstyle == "italic" || this.fontstyle =="bolditalic");
@@ -604,13 +612,17 @@
             }
             tf.letterSpacing = this.letterspacing;

-            this.textfield.defaultTextFormat = tf;
+            // you can't set defaultTextFormat if a style sheet is applied
+            var stylesheet:StyleSheet = tfield.styleSheet;
+            tfield.styleSheet = null;
+            tfield.defaultTextFormat = tf;

             // measure sample text
-            var text:String = this.textfield[this.html ? 'htmlText' : 'text'];
-            this.textfield.text = "__ypgSAMPLE__";
-            var lm:TextLineMetrics = this.textfield.getLineMetrics(0);
-            this.textfield[this.html ? 'htmlText' : 'text'] = text;
+            var text:String = tfield[this.html ? 'htmlText' : 'text'];
+            tfield.text = "__ypgSAMPLE__";
+            var lm:TextLineMetrics = tfield.getLineMetrics(0);
+            tfield.styleSheet = stylesheet;
+            tfield[this.html ? 'htmlText' : 'text'] = text;

             var lh:Number = lm.ascent + lm.descent + lm.leading;
             if (lh !== this.lineheight) {


newInstanceOfSameClass relocated here from RESTUtils

--- as3/xobjas3/src/com/rpath/xobj/XObjUtils.as
+++ as3/xobjas3/src/com/rpath/xobj/XObjUtils.as
@@ -138,7 +138,13 @@
         return classOf(obj);
     }

-
+    public static function newInstanceOfSameClass(value:*):*
+    {
+        var clazz:Class = XObjUtils.classOf(value);
+        var newObj:Object = new clazz();
+        return newObj;
+    }
+
     private static var typePropertyCache:Dictionary = new Dictionary(true);

     private static var arrayTypeCache:Dictionary = new Dictionary(true);


flash playback: fix NetStream.Play.Start state

--- src/plugins/flash_playback/Player.as
+++ src/plugins/flash_playback/Player.as
@@ -24,11 +24,11 @@

     public function Player() {
       playbackState = "IDLE";
-      setupCallbacks();
       setupNetConnection();
       setupNetStream();
       setupStage();
       _video = new Video();
+      setupCallbacks();
     }
     private function setupStage():void {
       stage.scaleMode = StageScaleMode.NO_SCALE;
@@ -67,14 +67,12 @@
       ExternalInterface.addCallback("getDuration", getDuration);
     }
     private function netStatusHandler(event:NetStatusEvent):void {
-      if (event.info.code === "NetStream.Play.Start" || event.info.code === "NetStream.Buffer.Full") {
+      if (event.info.code === "NetStream.Buffer.Full") {
         playbackState = "PLAYING";
-      } else if (event.info.code === "NetStream.Buffer.Empty" || event.info.code == "NetStream.SeekStart.Notify") {
+      } else if (event.info.code === "NetStream.Buffer.Empty" || event.info.code == "NetStream.SeekStart.Notify" || event.info.code == "NetStream.Play.Start") {
         playbackState = "PLAYING_BUFFERING";
       } else if (event.info.code == "NetStream.Video.DimensionChange") {
         setVideoSize(stage.stageWidth, stage.stageHeight);
-      } else {
-        ExternalInterface.call("console.log", event.info.code);
       }
     }
     private function _onResize(event:Event):void {


Disabled invalid input meshes.

Disabled invalid input meshes.

--- demo/src/app/data/mesh/EmbeddedMeshes.as
+++ demo/src/app/data/mesh/EmbeddedMeshes.as
@@ -26,12 +26,12 @@

         public static function initialize():void
         {
-            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new dungeon_obj(), "dungeon.obj");
-            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new nav_test_obj(), "nav_test.obj");
+//            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new dungeon_obj(), "dungeon.obj");
+//            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new nav_test_obj(), "nav_test.obj");
             MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_1_obj(), "Obj-test-1.obj", 0.5);
-            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_2_obj(), "Obj-test-2.obj");
-            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_3_obj(), "Obj-test-3.obj");
-            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_4_obj(), "Obj-test-4.obj");
+//            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_2_obj(), "Obj-test-2.obj");
+//            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_3_obj(), "Obj-test-3.obj");
+//            MeshInfoLibrary.instance.addMeshInfoFromByteArray(new Obj_test_4_obj(), "Obj-test-4.obj");
         }
     }
 }