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(); }
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); } }