Beispiel #1
0
        static void Main(string[] args)
        {
            var texTool = new TextureTool();
            GlobalLogger.GlobalMessageLogged += new ConsoleLogListener();


            try
            {
                /*var list = new List<TexImage>();
                for (int i = 0; i < 3; ++i)
                {
                    list.Add(texTool.Load(@"C:\dev\data\test\atlas\stones256.png"));
                    list.Add(texTool.Load(@"C:\dev\data\test\atlas\square256.png"));
                }

                var cube = texTool.CreateTextureCube(list);
                //texTool.Compress(cube, Paradox.Framework.Graphics.PixelFormat.BC3_UNorm);
                texTool.GenerateMipMaps(cube, Filter.MipMapGeneration.Box);

                texTool.Save(cube, @"C:\dev\data\test\cube.pvr");

                /*texTool.Remove(cube, 0);

                texTool.Save(array, @"C:\dev\data\test\array_after.dds");

                foreach (var texture in list)  
                {
                    texture.Dispose();
                }

                cube.Dispose();*/


                /*var list = new List<TexImage>();
                for (int i = 0; i < 5; ++i)
                {
                    list.Add(texTool.Load(@"C:\dev\data\test\input\atlas\stones256.png"));
                    list.Add(texTool.Load(@"C:\dev\data\test\input\atlas\square256.png"));
                }

                var array = texTool.CreateTextureArray(list);
                texTool.Compress(array, Paradox.Framework.Graphics.PixelFormat.BC3_UNorm);
                //texTool.GenerateMipMaps(array, Filter.MipMapGeneration.Box);

                texTool.Save(array, @"C:\dev\data\test\array_before.dds");

                texTool.Remove(array, 0);

                texTool.Save(array, @"C:\dev\data\test\array_after.dds");

                foreach (var texture in list)
                {
                    texture.Dispose();
                }

                array.Dispose();*/


                /*var list = new List<TexImage>();
                for (int i = 0; i < 5; ++i)
                {
                    list.Add(texTool.Load(@"C:\dev\data\test\atlas\stones256.png"));
                    list.Add(texTool.Load(@"C:\dev\data\test\atlas\square256.png"));
                }

                var array = texTool.CreateTextureArray(list);
                texTool.GenerateMipMaps(array, Filter.MipMapGeneration.Box);

                texTool.Save(array, @"C:\dev\data\test\array_before.dds");

                var newImg = texTool.Load(@"C:\dev\data\test\atlas\square512.png");
                texTool.Resize(newImg, array.Width, array.Height, Filter.Rescaling.Bilinear);
                texTool.Insert(array, newImg, 1);

                var newImg = texTool.Extract(array, 2, 16);
                texTool.Save(newImg, @"C:\dev\data\test\extract.png");

                //texTool.Save(array, @"C:\dev\data\test\array_after.dds");

                foreach (var texture in list)
                {
                    texture.Dispose();
                }

                array.Dispose();
                newImg.Dispose();*/

                /*string[] fileList = Directory.GetFiles(@"C:\dev\data\test\input\atlas");
                var list = new List<TexImage>(fileList.Length);

                foreach(string filePath in fileList)
                {
                    list.Add(texTool.Load(filePath));
                }

                var atlas = texTool.CreateAtlas(list);

                texTool.Save(atlas, @"C:\dev\data\test\input\atlas_WOMipMaps.png");*/

                /*string[] fileList = Directory.GetFiles(@"C:\dev\data\test\atlas");
                var list = new List<TexImage>(fileList.Length);

                /*foreach(string filePath in fileList)
                {
                    var img = texTool.Load(filePath);
                    list.Add(img);
                    texTool.GenerateMipMaps(img, Filter.MipMapGeneration.Cubic);
                    texTool.Save(img, @"C:\dev\data\test\"+img.Name);
                }

                var img = texTool.Load(@"C:\dev\data\test\atlas\rect100_128.png");
                list.Add(img);
                texTool.GenerateMipMaps(img, Filter.MipMapGeneration.Cubic);
                texTool.Save(img, @"C:\dev\data\test\" + img.Name);

                var atlas = texTool.CreateAtlas(list);
                //texTool.GenerateMipMaps(atlas, Filter.MipMapGeneration.Box);

                /*var newImg = texTool.Extract(atlas, "rect100_128.png");
                texTool.Save(newImg, @"C:\dev\data\test\extracted.png");

                texTool.Save(atlas, @"C:\dev\data\test\atlas_with_mipmaps_already.dds");

                /*var texImage = texTool.Extract(atlas, "stones256.png");

                texTool.Update(atlas, texImage, "square256.png");

                //var newImg = texTool.Load(@"C:\dev\data\test\atlas\stones256.png");
                //var newImg = texTool.Extract(atlas, "square128.png", 16);
                //texTool.Save(newImg, @"C:\dev\data\test\extracted.png");

                texTool.Save(atlas, @"C:\dev\data\test\atlas_after.dds");

                //newImg.Dispose();
                atlas.Dispose();*/
            }
            catch (TextureToolsException)
            {
            }

            texTool.Dispose();

            Log.Info("Done.");
            Console.ReadKey();
        }
Beispiel #2
0
        public void Run(string[] args)
        {
            // Print the exe header
            PrintHeader();

            foreach (String s in args)
                Console.WriteLine(s);

            Console.WriteLine("");

            // Parse the command line
            if (!ParseCommandLine(args))
            {
                Environment.Exit(-1);
            }

            // Check if we have a pattern
            InputPatternFile = Path.Combine(Environment.CurrentDirectory, InputPatternFile);

            int indexOfPattern = InputPatternFile.IndexOf('*');
            bool isPattern = indexOfPattern >= 0;

            if (!isPattern)
            {
                InputPatternFile = Path.GetFullPath(InputPatternFile);
            }
            OutputFileOrDirectory = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, OutputFileOrDirectory));

            var inputOutputFiles = new List<Tuple<string, string>>();

            if (isPattern)
            {

                if (!Directory.Exists(OutputFileOrDirectory))
                {
                    Directory.CreateDirectory(OutputFileOrDirectory);
                }

                var directory = InputPatternFile.Substring(0, indexOfPattern);
                var pattern = InputPatternFile.Substring(indexOfPattern, InputPatternFile.Length - indexOfPattern);

                foreach (var file in Directory.EnumerateFiles(directory, pattern, SearchOption.AllDirectories))
                {
                    var outputFile = Path.Combine(OutputFileOrDirectory, file.Substring(directory.Length, file.Length - directory.Length));

                    bool excludeFile = false;
                    foreach (var excludeItem in ExcludeList)
                    {
                        if (file.IndexOf(excludeItem, StringComparison.InvariantCultureIgnoreCase) >= 0)
                        {
                            excludeFile = true;
                            break;
                        }
                    }

                    if (!excludeFile)
                    {
                        inputOutputFiles.Add(new Tuple<string, string>(file, outputFile));
                    }
                }
            }
            else
            {
                inputOutputFiles.Add(new Tuple<string, string>(InputPatternFile, OutputFileOrDirectory));
            }

            var texTool = new TextureTool();
            GlobalLogger.GlobalMessageLogged += new ConsoleLogListener();

            bool hasErrors = false;
            foreach (var inputOutputFile in inputOutputFiles)
            {
                var inputFile = inputOutputFile.Item1;
                var outputFile = inputOutputFile.Item2;

                TexImage image = null;
                try
                {
                    image = texTool.Load(inputFile, IsSRgb);

                    HandleResizing(texTool, image);

                    if (FlipOrientation.HasValue) texTool.Flip(image, FlipOrientation.Value);

                    if (MipMap) texTool.GenerateMipMaps(image, MipMapFilter);
                    
                    if(PreMulAlpha) texTool.PreMultiplyAlpha(image);

                    if(TextureFormat.HasValue) texTool.Compress(image, TextureFormat.Value);

                    texTool.Save(image, outputFile, MipMapSize);
                }
                catch (TextureToolsException)
                {
                    hasErrors = true;
                }
                finally
                {
                    if(image!=null) image.Dispose();
                }
            }

            texTool.Dispose();

            if (hasErrors)
            {
                //Environment.Exit(-1);
            }
        }