Exemplo n.º 1
0
        public HIPFileInfo(string path, HIPEncoding hipEncoding, bool layeredImage = false, int offsetX = 0,
                           int offsetY          = 0, int canvasWidth = 0, int canvasHeight = 0,
                           ByteOrder endianness = ByteOrder.LittleEndian) : base(path)
        {
            Endianness = endianness;
            var ext = Path.GetExtension(path).ToLower();

            if (ImageTools.nativeImageExtensions.Contains(ext) || ext == ".dds")
            {
                CreateHIP(path, hipEncoding, layeredImage, offsetX, offsetY, canvasWidth, canvasHeight);
            }
        }
Exemplo n.º 2
0
        public HIPFileInfo(string path, HIPEncoding hipEncoding, ref HIPFileInfo refHIPFileInfo,
                           ByteOrder endianness = ByteOrder.LittleEndian) : base(path)
        {
            Endianness = endianness;
            var ext = Path.GetExtension(path).ToLower();

            if (ImageTools.nativeImageExtensions.Contains(ext) || ext == ".dds")
            {
                CreateHIP(path, hipEncoding, Convert.ToBoolean(refHIPFileInfo.EncodingParams[2]),
                          refHIPFileInfo.OffsetX, refHIPFileInfo.OffsetY, refHIPFileInfo.CanvasWidth,
                          refHIPFileInfo.CanvasHeight);
            }
        }
Exemplo n.º 3
0
        public static void ProcessOptions(string[] args)
        {
            var newArgsList = new List <string>();

            for (var i = 1; i < args.Length; i++)
            {
                var arg = args[i];
                if (arg.First() != '-')
                {
                    continue;
                }

                newArgsList.Add(arg);

                foreach (var co in ConsoleOptions)
                {
                    if (arg == co.ShortOp || arg == co.LongOp)
                    {
                        options |= (Options)co.Flag;
                        if (co.HasArg)
                        {
                            var subArgsList = new List <string>();
                            var lastArg     = string.Empty;
                            for (var j = i; j < args.Length - 1; j++)
                            {
                                var subArg = args[j + 1];

                                if (subArg.First() == '-')
                                {
                                    break;
                                }

                                if (string.IsNullOrWhiteSpace(lastArg) || subArg.ToLower() != lastArg.ToLower())
                                {
                                    subArgsList.Add(subArg);
                                }
                                i++;
                            }

                            co.SpecialObject = subArgsList.ToArray();
                        }
                    }
                }
            }

            foreach (var co in ConsoleOptions)
            {
                if (co.Flag == null)
                {
                    continue;
                }

                if (co.HasArg)
                {
                    var subArgs = (string[])co.SpecialObject;
                    if ((Options)co.Flag == Options.Encoding &&
                        options.HasFlag(Options.Encoding))
                    {
                        if (subArgs.Length > 0)
                        {
                            HIPEncoding encoding;
                            if (Enum.TryParse(subArgs[0], true, out encoding))
                            {
                                Encoding = encoding;
                            }
                        }
                        else
                        {
                            Encoding = HIPEncoding.Raw;
                        }
                    }

                    if ((Options)co.Flag == Options.Layered &&
                        options.HasFlag(Options.Layered))
                    {
                        var layered = false;
                        if (subArgs.Length > 0)
                        {
                            bool.TryParse(subArgs[0], out layered);
                        }

                        Layered = layered;
                    }

                    if ((Options)co.Flag == Options.Offsets &&
                        options.HasFlag(Options.Offsets))
                    {
                        var offsetX = 0;
                        var offsetY = 0;
                        if (subArgs.Length > 0)
                        {
                            int.TryParse(subArgs[0], out offsetX);
                            if (subArgs.Length > 1)
                            {
                                int.TryParse(subArgs[1], out offsetY);
                            }
                        }

                        Offsets = new Tuple <int, int>(offsetX, offsetY);
                    }

                    if ((Options)co.Flag == Options.CanvasDimensions &&
                        options.HasFlag(Options.CanvasDimensions))
                    {
                        var canvasWidth  = 0;
                        var canvasHeight = 0;
                        if (subArgs.Length > 0)
                        {
                            int.TryParse(subArgs[0], out canvasWidth);
                            if (subArgs.Length > 1)
                            {
                                int.TryParse(subArgs[1], out canvasHeight);
                            }
                        }

                        CanvasDimensions = new Tuple <int, int>(canvasWidth, canvasHeight);
                    }

                    if ((Options)co.Flag == Options.ReferencedHIP &&
                        options.HasFlag(Options.ReferencedHIP))
                    {
                        if (subArgs.Length == 0)
                        {
                            subArgs    = new string[1];
                            subArgs[0] = OpenFileDialog("Select Referenced HIP File...");
                            if (string.IsNullOrWhiteSpace(subArgs[0]))
                            {
                                subArgs[0] = OpenFolderDialog("Select Referenced HIP folder...");
                            }
                        }

                        foreach (var arg in subArgs)
                        {
                            var subArg = Path.GetFullPath(arg.Replace("\"", "\\"));
                            if (subArgs.Length > 1)
                            {
                                WarningMessage(
                                    $"Too many arguments for referenced HIP file or folder path. Defaulting to \"{subArg}\"...");
                            }

                            referencedHIPPath = subArg.ToLower() == "auto" ? "auto" : Path.GetFullPath(subArg);
                            break;
                        }

                        if (string.IsNullOrWhiteSpace(referencedHIPPath))
                        {
                            if (subArgs.Length > 1)
                            {
                                WarningMessage(
                                    "None of the given file or folder paths exist. Ignoring...");
                            }
                            else if (subArgs.Length == 1)
                            {
                                WarningMessage(
                                    "Given file or folder path does not exist. Ignoring...");
                            }
                            else if (subArgs.Length == 0)
                            {
                                WarningMessage(
                                    "No file or folder path was given. Ignoring...");
                            }
                        }
                        else
                        {
                            if (!File.Exists(referencedHIPPath) && !Directory.Exists(referencedHIPPath))
                            {
                                WarningMessage(
                                    "Given file or folder path does not exist. Ignoring...");
                                referencedHIPPath = string.Empty;
                            }
                        }
                    }

                    if ((Options)co.Flag == Options.Endianness &&
                        options.HasFlag(Options.Endianness))
                    {
                        if (subArgs.Length > 0)
                        {
                            ByteOrder endian;
                            if (Enum.TryParse(subArgs[0], true, out endian))
                            {
                                endianness = endian;
                            }
                        }
                        else
                        {
                            endianness = ByteOrder.LittleEndian;
                        }
                    }

                    if ((Options)co.Flag == Options.Output &&
                        options.HasFlag(Options.Output))
                    {
                        if (subArgs.Length == 0)
                        {
                            subArgs    = new string[1];
                            subArgs[0] = OpenFolderDialog("Select output folder...");
                        }

                        foreach (var arg in subArgs)
                        {
                            var subArg = Path.GetFullPath(arg.Replace("\"", "\\"));
                            if (subArgs.Length > 1)
                            {
                                WarningMessage(
                                    $"Too many arguments for output path. Defaulting to \"{subArg}\"...");
                            }
                            outputPath = Path.GetFullPath(subArg);
                            break;
                        }

                        if (string.IsNullOrWhiteSpace(outputPath))
                        {
                            if (subArgs.Length > 1)
                            {
                                WarningMessage(
                                    "None of the given output paths exist or could be created. Ignoring...");
                            }
                            else if (subArgs.Length == 1)
                            {
                                WarningMessage(
                                    "Given output path does not exist. Ignoring...");
                            }
                            else if (subArgs.Length == 0)
                            {
                                WarningMessage(
                                    "No output path was given. Ignoring...");
                            }
                        }
                        else
                        {
                            if (!Directory.Exists(outputPath))
                            {
                                WarningMessage(
                                    "Given output path does not exist. Ignoring...");
                                outputPath = string.Empty;
                            }
                        }
                    }
                }
            }
        }