Example #1
0
 public List<Bitmap> GenerateBitmaps(SwfCompilationUnit scu)
 {
     List<Bitmap> result = new List<Bitmap>();
     Dictionary<uint, Bitmap> dbmp = GenerateMappedBitmaps(scu);
     result.AddRange(dbmp.Values);
     return result;
 }
Example #2
0
        public Dictionary<uint, Bitmap> GenerateMappedBitmaps(SwfCompilationUnit scu)
        {
            Dictionary<uint, Bitmap> result = new Dictionary<uint, Bitmap>();

            foreach (ISwfTag tag in scu.Tags)
            {
                Edge[] edges = null;
                if (tag is DefineShape2Tag)
                {
                    DefineShape2Tag def = (DefineShape2Tag)tag;
                    edges = ParseEdges(def.Shapes, def.ShapeBounds);
                    Bitmap b = DrawShape(def.Shapes, edges, def.ShapeBounds);
                }
                else if (tag is DefineShape3Tag)
                {
                    DefineShape3Tag def = (DefineShape3Tag)tag;
                    edges = ParseEdges(def.Shapes, def.ShapeBounds);
                    Bitmap b = DrawShape(def.Shapes, edges, def.ShapeBounds);
                }
                if (tag is DefineShape4Tag)
                {
                    DefineShape4Tag def = (DefineShape4Tag)tag;
                    edges = ParseEdges(def.Shapes, def.ShapeBounds);
                    Bitmap b = DrawShape(def.Shapes, edges, def.ShapeBounds);
                }

                if (edges != null)
                {
                    Program.form.edges = edges;
                    break;
                }
            }
            return result;
        }
Example #3
0
        public static VexTree ProcessFile(string fileName)
        {
            VexTree v2tree = null;
            if (File.Exists(fileName))
            {
                fileName = Path.GetFullPath(fileName);
                Directory.SetCurrentDirectory(Path.GetDirectoryName(fileName));
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);

                string name = Path.GetFileNameWithoutExtension(fileName);
                SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
                SwfCompilationUnit scu = new SwfCompilationUnit(r, name);

                if (scu.IsValid)
                {
                    v2tree = ProcessSwf(scu);
            //SwfToV2DContent(scu, null);

                    Console.WriteLine("");
                }
                else
                {
                    Console.WriteLine("Not a valid swf file: " + fileName);
                    Console.WriteLine("Usage: v2d <filename>");
                }
            }
            else
            {
                Console.WriteLine(fileName + " does not exist.");
                Console.WriteLine("Usage: v2d <filename>");
            }
            return v2tree;
        }
Example #4
0
		public VexObject Convert(SwfCompilationUnit swf)
		{
			this.swf = swf;
			this.v = new VexObject(swf.Name);
			Log = new StringBuilder();

			RootTimeline = new Timeline(v.NextId());
			RootTimeline.Name = "_root";

			this.curTimeline = RootTimeline;
			curTimeline.FrameCount = swf.Header.FrameCount;
			curTimeline.Duration = GetDuration(swf.Header.FrameCount);

			v.Root = curTimeline;
			this.curDepthChart = rootDepthChart;

			this.ParseHeader();
			foreach(ISwfTag tag in swf.Tags)
			{
				this.ParseTag(tag);
			}

			WriteEndTimes();
			return v;
		}
Example #5
0
        public static string Convert(string fileName, out SwfCompilationUnit scu, out VexObject v)
        {
            v = null;
            string result = "Failed to convert.";
            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);

            string name = Path.GetFileNameWithoutExtension(fileName);
            SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
            scu = new SwfCompilationUnit(r, name);
            if (scu.IsValid)
            {
                result = "\n\n**** Converting to SwfCompilationUnit ****\n";

            #if DEBUG
                StringWriter sw = new StringWriter();
                IndentedTextWriter w = new IndentedTextWriter(sw);
                scu.Dump(w);
                Debug.WriteLine(sw.ToString());
            #endif

                result += scu.Log.ToString();

                SwfToVex s2v = new SwfToVex();
                v = s2v.Convert(scu);
                result += "\n\n**** Converting to Vex ****\n";
                result += s2v.Log.ToString();
            }
            return result;
        }
Example #6
0
        //public static GdiForm gf;
        static void Main(string[] args)
        {
            string fileName = "test14.swf";
            if (args.Length > 0)
            {
                fileName = args[0];
            }

            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);

            SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
            SwfCompilationUnit scu = new SwfCompilationUnit(r);

            //StringWriter sw = new StringWriter();
            //IndentedTextWriter w = new IndentedTextWriter(sw);
            //scu.Dump(w);
            //Debug.WriteLine(sw.ToString());

            SwfToVex s2v = new SwfToVex();
            VexObject v = s2v.Convert(scu);

            XamlRenderer xr = new WPFRenderer();
            xr.GenerateXaml(v);

            //GdiRenderer gr = new GdiRenderer();
            //List<Bitmap> bmps = gr.GenerateBitmaps(v);
            ////gr.ExportBitmaps(bmps);

            //gf = new GdiForm(bmps);
            //Application.EnableVisualStyles();
            //Application.Run(gf);
        }
Example #7
0
 public void Convert(SwfCompilationUnit swf, UnsafeBitmap fullBitmap, Dictionary<uint, System.Drawing.Rectangle> rects)
 {
     this.swf = swf;
     this.fullBitmap = fullBitmap;
     this.rects = rects;
     foreach(ISwfTag tag in swf.Tags)
     {
         this.ParseTag(tag);
     }
 }
Example #8
0
 public static VexTree ProcessSwf(SwfCompilationUnit scu)
 {
     VexTree result = null;
     if (scu.IsValid)
     {
         SwfToVex s2v = new SwfToVex();
         VexObject vo = s2v.Convert(scu);
         result = new VexTree();
         result.Convert(vo, scu);
     }
     return result;
 }
Example #9
0
        static void Main(string[] args)
        {
            Console.WriteLine("SWF BITMAP PACKER - swf v8");
            Console.WriteLine("");

            string fileName = (args.Length < 1) ? "test.swf" : args[0];
            if (File.Exists(fileName))
            {
                fileName = Path.GetFullPath(fileName);
                Directory.SetCurrentDirectory(Path.GetDirectoryName(fileName));
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);

                string name = Path.GetFileNameWithoutExtension(fileName);
                SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
                SwfCompilationUnit scu = new SwfCompilationUnit(r, name);
                if (scu.IsValid)
                {
                    SwfToVex s2v = new SwfToVex();
                    VexObject vo = s2v.Convert(scu);
                    Dictionary<uint, string> bitmapPaths = s2v.bitmapPaths;
                    Dictionary<uint, System.Drawing.Rectangle> rectResult = new Dictionary<uint, System.Drawing.Rectangle>();
                    UnsafeBitmap fullBitmap = BitmapPacker.PackBitmaps(bitmapPaths, rectResult);
                    foreach (var rect in rectResult)
                    {
                        Console.WriteLine("\t" + rect.Value + ",");
                    }
                    fullBitmap.Bitmap.Save("fullBitmap.png");

                    BitmapSwapper bs = new BitmapSwapper();
                    bs.Convert(scu, fullBitmap, rectResult);

                    MemoryStream ms = new MemoryStream();
                    SwfWriter swfWriter = new SwfWriter(ms);
                    scu.ToSwf(swfWriter);
                    byte[] swfBytes = swfWriter.ToArray();
                    FileStream fsw = new FileStream("result.swf", FileMode.Create, FileAccess.Write);
                    fsw.Write(swfBytes, 0, swfBytes.Length);
                    fsw.Close();
                    ms.Close();
                }
                else
                {
                    Console.WriteLine("Not a valid swf file: " + fileName);
                    Console.WriteLine("Usage: SwfBitmapPacker <filename>");
                }
            }
            else
            {
                Console.WriteLine(fileName + " does not exist.");
                Console.WriteLine("Usage: SwfBitmapPacker <filename>");
            }
        }
Example #10
0
        public static string Convert(
			string fileName, 
			bool isSilverlight,
			out SwfCompilationUnit scu, 
			out VexObject v, 
			out string xamlFileName)
        {
            string result = "Failed to convert.";
            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);

            string name = Path.GetFileNameWithoutExtension(fileName);
            SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
            scu = new SwfCompilationUnit(r, name);
            if (scu.IsValid)
            {
                result = "\n\n**** Converting to SwfCompilationUnit ****\n";
            #if DEBUG
                    StringWriter sw = new StringWriter();
                    IndentedTextWriter w = new IndentedTextWriter(sw);
                    scu.Dump(w);
                    Debug.WriteLine(sw.ToString());
            #endif
                result += scu.Log.ToString();

                SwfToVex s2v = new SwfToVex();
                v = s2v.Convert(scu);
                result += "\n\n**** Converting to Vex ****\n";
                result += s2v.Log.ToString();

                XamlRenderer xr;
                if (isSilverlight)
                {
                    xr = new Silverlight10Renderer();
                }
                else
                {
                    xr = new WPFRenderer();
                }
                xr.GenerateXaml(v, out xamlFileName);
                result += "\n\n**** Converting to Xaml ****\n";
                result += xr.Log.ToString();
                result += "\n\nSuccess.";
            }
            else
            {
                result = "Not a valid swf file: " + fileName;
                v = null;
                xamlFileName = "";
            }
            return result;
        }
Example #11
0
		public static V2DContentHolder SwfToV2DContent(SwfCompilationUnit scu, ContentProcessorContext context)
        {
			V2DContentHolder result = null;
            if (scu.IsValid)
            {
                SwfToVex s2v = new SwfToVex();
                VexObject vo = s2v.Convert(scu);
                VexTree vt = new VexTree();
                vt.Convert(vo, scu);
                vt.WriteToXml();

                result = vt.GetV2DContent(context);
            }
            return result;
        }
Example #12
0
        static void Main(string[] args)
        {
            string fileName = (args.Length < 1) ? "test.swf" : args[0];
            if (File.Exists(fileName))
            {
                fileName = Path.GetFullPath(fileName);
                Directory.SetCurrentDirectory(Path.GetDirectoryName(fileName));
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);

                string name = Path.GetFileNameWithoutExtension(fileName);
                SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
                SwfCompilationUnit scu = new SwfCompilationUnit(r, name);
                if (scu.IsValid)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    form = new Form1();
                    //SwfToVex s2v = new SwfToVex();
                    //VexObject vo = s2v.Convert(scu);
                    SwfRenderer sr = new SwfRenderer();
                    sr.GenerateMappedBitmaps(scu);

                    Application.Run(form);

                }
                else
                {
                    Console.WriteLine("Not a valid swf file: " + fileName);
                    Console.WriteLine("Usage: swfrenderer <filename>");
                }
            }
            else
            {
                Console.WriteLine(fileName + " does not exist.");
                Console.WriteLine("Usage: swfrenderer <filename>");
            }
        }
Example #13
0
        public static string Convert(
			bool isSilverlight,
			SwfCompilationUnit scu,
			VexObject v,
			out string xamlFileName)
        {
            string result = "Failed to convert.";

            SwfToVex s2v = new SwfToVex();
            v = s2v.Convert(scu);
            result = "\n\n**** Converting to Vex ****\n";
            result += s2v.Log.ToString();

            XamlRenderer xr;
            if (isSilverlight)
            {
                xr = new Silverlight10Renderer();
            }
            else
            {
                xr = new WPFRenderer();
            }
            xr.GenerateXaml(v, out xamlFileName);
            result += "\n\n**** Converting to Xaml ****\n";
            result += xr.Log.ToString();
            result += "\n\nSuccess.";

            return result;
        }
Example #14
0
        private void AddSwfToTreeView(SwfCompilationUnit scu, TreeView tv)
        {
            // temp: move this to subclasss of treeview
            tv.Nodes.Add("root", scu.Name);
            TreeNode root = tv.Nodes[0];

            for (int i = 0; i < scu.Tags.Count; i++)
            {
                switch (scu.Tags[i].TagType)
                {
                    case TagType.DefineShape:
                    case TagType.DefineShape2:
                        DefineShape2Tag ds2 = (DefineShape2Tag)scu.Tags[i];
                        root.Nodes.Add(ds2.ShapeId.ToString(), ds2.ShapeId + ": DefineShape2");
                        break;

                    case TagType.DefineShape3:
                        DefineShape3Tag ds3 = (DefineShape3Tag)scu.Tags[i];
                        root.Nodes.Add(ds3.ShapeId.ToString(), ds3.ShapeId + ": DefineShape3");
                        break;

                    case TagType.DefineShape4:
                        DefineShape4Tag ds4 = (DefineShape4Tag)scu.Tags[i];
                        root.Nodes.Add(ds4.ShapeId.ToString(), ds4.ShapeId + ": DefineShape4");
                        break;
                }
            }
        }
Example #15
0
 private void MapBitmapFills(SwfCompilationUnit scu)
 {
     //scu.Tags.FindAll(tag => tag.TagType == TagType.
 }
Example #16
0
        static void Main(string[] args)
        {
            Console.WriteLine("SWF DUMP TOOL - swf v8");
            Console.WriteLine("");
            #if !DEBUG

            if(args.Length < 1)
            {
                Console.WriteLine("");
                Console.WriteLine("Need some swf file format help? Parser tools? Generators?");
                Console.WriteLine("Just give me a shout : )   [email protected]");
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("Usage: swfdump <filename>");
                return;
            }
            #endif

            string fileName = (args.Length < 1) ? "test.swf" : args[0];
            if(File.Exists(fileName))
            {
                fileName = Path.GetFullPath(fileName);
                Directory.SetCurrentDirectory(Path.GetDirectoryName(fileName));
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);

                string name = Path.GetFileNameWithoutExtension(fileName);
                SwfReader r = new SwfReader(br.ReadBytes((int)fs.Length));
                SwfCompilationUnit scu = new SwfCompilationUnit(r, name);
                if (scu.IsValid)
                {
                    StringWriter sw = new StringWriter();
                    IndentedTextWriter w = new IndentedTextWriter(sw);
            //					scu.Dump(w);
            //					Console.WriteLine(sw.ToString());

                    SwfToVex s2v = new SwfToVex();
                    VexObject vo = s2v.Convert(scu);

                    DumpTextObject(vo);
                    //VexTo2DPhysics.VexTo2DPhysics v2dp = new VexTo2DPhysics.VexTo2DPhysics();
                    //v2dp.Convert(vo, scu);

                    Console.WriteLine("");
                    Console.WriteLine("Need some swf file format help? [email protected]");
                    Console.WriteLine("");

                    //temp
                    MemoryStream ms = new MemoryStream();
                    SwfWriter swfWriter = new SwfWriter(ms);
                    scu.Header.IsCompressed = false;
                    scu.ToSwf(swfWriter);
                    byte[] swfBytes = swfWriter.ToArray();
                    FileStream fsw = new FileStream("dump.swf", FileMode.Create, FileAccess.Write);
                    fsw.Write(swfBytes, 0, swfBytes.Length);
                    fsw.Close();
                    ms.Close();

                    //Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Not a valid swf file: " + fileName);
                    Console.WriteLine("Usage: swfdump <filename>");
                }
            }
            else
            {
                Console.WriteLine(fileName + " does not exist.");
                Console.WriteLine("Usage: swfdump <filename>");
            }
        }