You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by bi...@apache.org on 2014/04/17 22:51:32 UTC

git commit: [flex-utilities] [refs/heads/develop] - Make importing Adobe Illustrator generated FXG files more robust. * Removes unnecessary nested Groups * Removes all unwanted namespaces (ai, flm, ate, d, etc.) and corresponding attributes

Repository: flex-utilities
Updated Branches:
  refs/heads/develop 5a19c9a54 -> e3d273765


Make importing Adobe Illustrator generated FXG files more robust.
* Removes unnecessary nested Groups
* Removes all unwanted namespaces (ai, flm, ate, d, etc.) and corresponding attributes


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

Branch: refs/heads/develop
Commit: e3d27376552f52c1ce484e71ad1e50412a91ee5b
Parents: 5a19c9a
Author: Om <bi...@gmail.com>
Authored: Thu Apr 17 13:48:43 2014 -0700
Committer: Om <bi...@gmail.com>
Committed: Thu Apr 17 13:49:14 2014 -0700

----------------------------------------------------------------------
 FXGTools/src/WriteFXG.mxml | 81 +++++++++++++++++------------------------
 1 file changed, 33 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e3d27376/FXGTools/src/WriteFXG.mxml
----------------------------------------------------------------------
diff --git a/FXGTools/src/WriteFXG.mxml b/FXGTools/src/WriteFXG.mxml
index 4addc7c..929a926 100644
--- a/FXGTools/src/WriteFXG.mxml
+++ b/FXGTools/src/WriteFXG.mxml
@@ -22,6 +22,7 @@ limitations under the License.
 					   xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="windowedapplication1_creationCompleteHandler(event)">
 	<fx:Script>
 		<![CDATA[
+			import mx.controls.Alert;
 			import mx.events.FlexEvent;
 			
 			private var sourceFile:File = new File();			
@@ -31,13 +32,12 @@ limitations under the License.
 			private var sourceStream:FileStream;
 			private var sourceString:String;
 			private var sourceXML:XML;
-			private var xml1:XML = <afx:foo xmlns:afx="http://ns.apache.org/flex/2012" />;
-			private var afxns:Namespace = xml1.namespace();
-			private var xml2:XML = <flm:foo xmlns:flm="http://ns.adobe.com/flame/2008" />;
-			private var flmns:Namespace = xml2.namespace();
-			private var fxgns:Namespace = new Namespace("http://ns.adobe.com/fxg/2008");
-			private var originalNameQName:QName = new QName(flmns, "originalName");
-			
+			private var fxgNS:Namespace = new Namespace(null,"http://ns.adobe.com/fxg/2008");
+			private var flmNS:Namespace = new Namespace("flm","http://ns.adobe.com/flame/2008");
+			private var aiNS:Namespace = new Namespace("ai","http://ns.adobe.com/ai/2009");
+			private var ateNS:Namespace = new Namespace("ate","http://ns.adobe.com/ate/2009");
+			private var dNS:Namespace = new Namespace("d","http://ns.adobe.com/fxg/2008/dt");
+
 			protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
 			{
 				XML.ignoreComments = false;
@@ -92,12 +92,7 @@ limitations under the License.
 			
 			private function makeFXGFiles():void
 			{
-				default xml namespace = fxgns;
-				/*var topGroups:XMLList = sourceXML.Group;
-				if (topGroups.length() > 1)
-				errorLabel.text = "Unexpected: More than one top-level group";
-				topTags = topGroups.children();
-				numTags = topTags.length();*/
+				default xml namespace = fxgNS;
 				
 				var syms:XMLList = sourceXML.Library.children();
 				var n:int = syms.length();
@@ -121,8 +116,8 @@ limitations under the License.
 					writeStream.open(destFile, FileMode.WRITE);
 					writeStream.writeUTFBytes(newFXG.toXMLString());
 					writeStream.close();
-					
 				}
+				Alert.show("FXG creation complete!","Process complete");
 			}
 			
 			private function getNewFXG(v:XML):XML
@@ -132,7 +127,6 @@ limitations under the License.
 				var newName:String = newFXG.@name
 				// change name from 'Definition' to 'Graphic'
 				newFXG.setName("Graphic");
-				newFXG.addNamespace(flmns);
 				
 				// delete name attribute
 				delete newFXG.@name;
@@ -140,16 +134,10 @@ limitations under the License.
 				// add version
 				newFXG.@version = "2.0";
 				newFXG.setChildren(childFXG);
-				//newFXG.removeNamespace("aaa");
+				newFXG = removeCruft(newFXG);
 				return newFXG;
 			}
 			
-			/*private function optimizeFXG():void
-			{
-			readFile();
-			optimize();
-			}*/
-			
 			private function optimizeFXG(v:XML):XML
 			{
 				var children:XMLList = v.children();
@@ -171,32 +159,6 @@ limitations under the License.
 				return outputXML;
 			}
 			
-			private function optimize():void{
-				var children:XMLList = sourceXML.children();
-				var outputXML:XML = getNewFXG(sourceXML);
-				if(children.length() == 1)
-				{
-					sourceXML = simplify(children[0]);
-				}
-				else
-				{
-					for each (var child:XML in children)
-					{
-						if(child.localName() != "Private")
-						{
-							outputXML.appendChild(simplify(child));	
-						}
-					}
-				}
-				// write out file
-				var destFile:File = new File(sourceDir + slash + "fxg" + slash + sourceFile.name);
-				var writeStream:FileStream = new FileStream();
-				writeStream.open(destFile, FileMode.WRITE);
-				writeStream.writeUTFBytes(outputXML.toXMLString());
-				writeStream.close();
-				
-			}
-			
 			private function simplify(v:XML):XML
 			{
 				if(v.localName() == "Group")
@@ -216,6 +178,29 @@ limitations under the License.
 				}
 			}
 			
+			private function removeCruft(v:XML):XML
+			{
+				//Remove unused attributes
+				var attributes:XMLList = v.attributes();
+				for(var i:int=attributes.length()-1; i>=0; i--)
+				{
+					var attribute:XML = attributes[i];
+					var ns:Namespace = attribute.namespace();
+					if(ns.uri == aiNS.uri || ns.uri == flmNS.uri || ns.uri == ateNS.uri || ns.uri == dNS.uri)
+					{
+						use namespace ns;
+						delete attributes[i];
+					}
+				}
+				//Process children
+				for each (var child:XML in v.children())
+				{
+					removeCruft(child);					
+				}
+
+				return v;
+			}
+			
 		]]>
 	</fx:Script>
 	<s:VGroup width="100%" >