From f85b2aea250e90280a874cb17386e05bca4843bb Mon Sep 17 00:00:00 2001 From: MattNL Date: Tue, 25 Oct 2022 05:20:25 -0400 Subject: [PATCH] Fix for crash when failing to load an image. Now displays "No Image Found". --- PCK-Studio/MainForm.cs | 92 +++++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index ed7a34c8..29172e0f 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -404,32 +404,40 @@ namespace PckStudio if (node is TreeNode t && t.Tag is PCKFile.FileData file) { viewFileInfoToolStripMenuItem.Visible = true; - if (file.properties.HasProperty("BOX")) - { - buttonEdit.Text = "EDIT BOXES"; - buttonEdit.Visible = true; - } - else if (file.properties.HasProperty("ANIM") && - (file.properties.GetPropertyValue("ANIM") == "0x40000" || - file.properties.GetPropertyValue("ANIM") == "0x80000")) - { - buttonEdit.Text = "View Skin"; - buttonEdit.Visible = true; - } + if (file.properties.HasProperty("BOX")) + { + buttonEdit.Text = "EDIT BOXES"; + buttonEdit.Visible = true; + } + else if (file.properties.HasProperty("ANIM") && + (file.properties.GetPropertyValue("ANIM") == "0x40000" || + file.properties.GetPropertyValue("ANIM") == "0x80000")) + { + buttonEdit.Text = "View Skin"; + buttonEdit.Visible = true; + } - switch (file.filetype) - { - case PCKFile.FileData.FileType.SkinFile: - case PCKFile.FileData.FileType.CapeFile: - case PCKFile.FileData.FileType.TextureFile: - // TODO: Add tga support - if (Path.GetExtension(file.filepath) == ".tga") break; - using (MemoryStream png = new MemoryStream(file.data)) - { - Image skinPicture = Image.FromStream(png); - pictureBoxImagePreview.Image = skinPicture; - labelImageSize.Text = $"{skinPicture.Size.Width}x{skinPicture.Size.Height}"; - } + switch (file.filetype) + { + case PCKFile.FileData.FileType.SkinFile: + case PCKFile.FileData.FileType.CapeFile: + case PCKFile.FileData.FileType.TextureFile: + // TODO: Add tga support + if (Path.GetExtension(file.filepath) == ".tga") break; + using (MemoryStream png = new MemoryStream(file.data)) + { + try + { + pictureBoxImagePreview.Image = Image.FromStream(png); + labelImageSize.Text = $"{pictureBoxImagePreview.Image.Size.Width}x{pictureBoxImagePreview.Image.Size.Height}"; + } + catch (Exception ex) + { + labelImageSize.Text = ""; + pictureBoxImagePreview.Image = Resources.NoImageFound; + Console.WriteLine("Not a supported image format. Setting back to default"); + } + } if ((file.filepath.StartsWith("res/textures/blocks/") || file.filepath.StartsWith("res/textures/items/")) && !file.filepath.EndsWith("clock.png") && !file.filepath.EndsWith("compass.png") && @@ -439,28 +447,28 @@ namespace PckStudio buttonEdit.Text = "EDIT TEXTURE ANIMATION"; buttonEdit.Visible = true; } - break; + break; - case PCKFile.FileData.FileType.LocalisationFile: - buttonEdit.Text = "EDIT LOC"; - buttonEdit.Visible = true; - break; + case PCKFile.FileData.FileType.LocalisationFile: + buttonEdit.Text = "EDIT LOC"; + buttonEdit.Visible = true; + break; - case PCKFile.FileData.FileType.AudioFile when file.filepath == "audio.pck": - buttonEdit.Text = "EDIT MUSIC CUES"; - buttonEdit.Visible = true; - break; + case PCKFile.FileData.FileType.AudioFile when file.filepath == "audio.pck": + buttonEdit.Text = "EDIT MUSIC CUES"; + buttonEdit.Visible = true; + break; - case PCKFile.FileData.FileType.ColourTableFile when file.filepath == "colours.col": - buttonEdit.Text = "EDIT COLORS"; - buttonEdit.Visible = true; - break; - default: - buttonEdit.Visible = false; - break; + case PCKFile.FileData.FileType.ColourTableFile when file.filepath == "colours.col": + buttonEdit.Text = "EDIT COLORS"; + buttonEdit.Visible = true; + break; + default: + buttonEdit.Visible = false; + break; + } } } - } private void extractToolStripMenuItem_Click(object sender, EventArgs e) {