Esempio n. 1
0
        private static System.Drawing.Color GetTreeColor(TreeRow treeRow)
        {
            if (treeColors.ContainsKey(treeRow.Name))
            {
                return(treeColors[treeRow.Name]);
            }

            string treeTextureFile = string.Format("{0}\\zones\\trees\\{1}", Properties.Settings.Default.game_path, treeRow.LeafTexture);

            if (!File.Exists(treeTextureFile))
            {
                MainForm.Log(string.Format("Unable to get texture for tree {0}. Using default color.", treeRow.Name));
                return(System.Drawing.ColorTranslator.FromHtml("#5e683a"));
            }
            else
            {
                using (ImageMagick.MagickImage texture = new ImageMagick.MagickImage(treeTextureFile))
                {
                    texture.Resize(1, 1);
                    ImageMagick.Pixel pixel = texture.GetPixels().First();

                    System.Drawing.Color color = pixel.ToColor();
                    treeColors.Add(treeRow.Name, color);
                    return(color);
                }
            }
        }
Esempio n. 2
0
        //
        // Export
        //
        private void Button_Export_Click(object sender, EventArgs e)
        {
            try
            {
                FolderBrowserDialog folderDialog = new FolderBrowserDialog();
                if (folderDialog.ShowDialog() != DialogResult.OK)
                {
                    UpdateStatus("No output folder selected", SystemIcons.Error);
                    return;
                }


                UpdateStatus("Preparing to export", 0, InputFiles.Count * 3);
                foreach (string file in InputFiles)
                {
                    // import
                    UpdateStatus($"Loading {file}", true);
                    using (ImageMagick.MagickImage img = new ImageMagick.MagickImage(file))
                    {
                        // convert
                        UpdateStatus($"Converting {file}", true);
                        if (checkBox_Resize.Checked)
                        {
                            img.Resize((int)numericUpDown_ResizeX.Value, (int)numericUpDown_ResizeY.Value);
                        }

                        if (checkBox_AlphaMask.Checked)
                        {
                            ImageMagick.IPixelCollection pixels = img.GetPixels();
                            int width  = img.Width;
                            int height = img.Height;
                            for (int y = 0; y < height; y++)
                            {
                                for (int x = 0; x < width; x++)
                                {
                                    ImageMagick.MagickColor pixelColor = pixels[x, y].ToColor();
                                    pixels[x, y].Set(new ushort[] { pixelColor.A, pixelColor.A, pixelColor.A, ushort.MaxValue });
                                }
                            }
                        }

                        // export
                        string exportPath = $@"{folderDialog.SelectedPath}{Path.DirectorySeparatorChar}{Path.GetFileName(file)}";
                        if (checkBox_ChangeFormat.Checked && comboBox_ExportFormat.SelectedItem != null)
                        {
                            exportPath = Path.ChangeExtension(exportPath, (comboBox_ExportFormat.SelectedItem as FormatComboBoxItem).Extension());
                        }
                        UpdateStatus($"Exporting \"{file}\"", true);
                        img.Write(exportPath);
                    }
                }

                UpdateStatus($"Exported {InputFiles.Count} files", 0);
            }
            catch (Exception ex)
            {
                UpdateStatus(ex.Message, SystemIcons.Error);
            }
        }