private void chk_8bpp_CheckedChanged(object sender, EventArgs e) { AbstractImage im = GetImageFromComboBoxItem(); if (im.CanSelectPalette()) { ((ISelectablePalette4bppImage)im).ImportExport8bpp = chk_8bpp.Checked; if (chk_8bpp.Checked) { im.CurrentPalette = Math.Max(0, im.CurrentPalette - 15); int upperIndexBound = Math.Max(1, im.PaletteCount - 15); ddl_Palette.Items.Clear(); for (int index = 0; index < upperIndexBound; index++) { ddl_Palette.Items.Add(index); } ddl_Palette.SelectedIndex = im.CurrentPalette; RefreshPictureBox(true); } else { SetupPaletteDropdown(); } } }
public static List <AbstractImage> GetPSXEffectImages(Stream iso) { List <AbstractImage> images = new List <AbstractImage>(); const int effectCount = 512; byte[] effectFileBytes = PatcherLib.Iso.PsxIso.ReadFile(iso, PatcherLib.Iso.PsxIso.Sectors.BATTLE_BIN, 0x14E3E8, effectCount * 8); byte[] headerLocationBytes = PatcherLib.Iso.PsxIso.ReadFile(iso, PatcherLib.Iso.PsxIso.Sectors.BATTLE_BIN, 0x14D8D0, effectCount * 4); IList <string> effectNames = PatcherLib.PSXResources.Lists.AbilityEffects; for (int effectIndex = 0; effectIndex < effectCount; effectIndex++) { int effectByteCount = effectFileBytes.SubLength((effectIndex * 8) + 4, 4).ToIntLE(); if (effectByteCount == 0) { continue; } uint headerLocation = headerLocationBytes.SubLength((effectIndex * 4), 4).ToUInt32(); int headerOffset = (int)(headerLocation - 0x801C2500U); try { AbstractImage image = GetPSXEffectImage(iso, effectIndex, effectNames[effectIndex], headerOffset); if (image != null) { images.Add(image); } } catch (Exception) { } } return(images); }
private void ddl_Palette_SelectedIndexChanged(object sender, EventArgs e) { AbstractImage im = GetImageFromComboBoxItem(); im.CurrentPalette = ddl_Palette.SelectedIndex; RefreshPictureBox(true); }
public static List <AbstractImage> GetPSPEffectImages(Stream iso) { List <AbstractImage> images = new List <AbstractImage>(); const int effectCount = 512; IList <string> effectNames = PatcherLib.PSPResources.Lists.AbilityEffects; PatcherLib.Iso.PspIso.PspIsoInfo pspIsoInfo = PatcherLib.Iso.PspIso.PspIsoInfo.GetPspIsoInfo(iso); //byte[] subroutineEndByteSequence = new byte[8] { 0x08, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00 }; //byte[] frameDataOffsetByteSequence = new byte[4] { 0x28, 0x00, 0x00, 0x00 }; for (int effectIndex = 0; effectIndex < effectCount; effectIndex++) { try { AbstractImage effectImage = GetPSPEffectImage(iso, effectIndex, effectNames[effectIndex], pspIsoInfo); if (effectImage != null) { images.Add(effectImage); } } catch (Exception) { } } return(images); }
private void RefreshPictureBox(bool forceReload = false) { AbstractImage im = GetImageFromComboBoxItem(); AssignNewPictureBoxImage(im.GetImageFromIso(iso, forceReload)); imageSizeLabel.Text = string.Format("Image dimensions: {0}x{1}", im.Width, im.Height); }
private void ddl_Entry_SelectedIndexChanged(object sender, EventArgs e) { AbstractImage im = GetImageFromComboBoxItem(); SetupPaletteDropdown(); Setup8bppCheckbox(); RefreshPictureBox(true); }
public bool ImportEntireFile(string path) { AbstractImage abIm = GetImageFromComboBoxItem(); bool result = abIm.ImportEntireFile(iso, path); RefreshPictureBox(true); return(result); }
public void SaveCurrentImage(string path) { AbstractImage im = GetImageFromComboBoxItem(); using (System.IO.Stream s = System.IO.File.Open(path, System.IO.FileMode.Create)) { im.SaveImage(iso, s); } }
public void LoadToCurrentImage(string path) { using (Image im = Image.FromFile(path)) { AbstractImage abIm = GetImageFromComboBoxItem(); abIm.ImportFilename = path; abIm.WriteImageToIso(iso, im); } RefreshPictureBox(); }
public void RefreshPictureBox(bool forceReload = false) { if (comboBox1.SelectedItem != null) { AbstractImage im = GetImageFromComboBoxItem(); Bitmap image = im.GetImageFromIso(iso, forceReload); Bitmap zoomedImage = zoom.GetZoomedBitmap(image); AssignNewPictureBoxImage(zoomedImage); imageSizeLabel.Text = string.Format("Image dimensions: {0}x{1}", im.Width, im.Height); } }
public bool ExportEntireFile(string path) { AbstractImage abIm = GetImageFromComboBoxItem(); if (abIm.Filesize > 0) { return(abIm.ExportEntireFile(iso, path, true)); } else { return(false); } }
private void Setup8bppCheckbox(AbstractImage im = null) { if (im == null) { im = GetImageFromComboBoxItem(); } if (im.CanSelectPalette()) { chk_8bpp.Checked = ((ISelectablePalette4bppImage)im).ImportExport8bpp; chk_8bpp.Visible = true; } else { chk_8bpp.Visible = false; } }
private void SetupPaletteDropdown(AbstractImage im = null) { if (im == null) { im = GetImageFromComboBoxItem(); } if (im.PaletteCount > 0) { ddl_Palette.Items.Clear(); for (int index = 0; index < im.PaletteCount; index++) { ddl_Palette.Items.Add(index); } ddl_Palette.SelectedIndex = im.CurrentPalette; pnl_Palette.Visible = true; } else { pnl_Palette.Visible = false; } }
private void menuItem_ExportEntireFile_Click(object sender, EventArgs e) { saveFileDialog.FileName = string.Empty; string origFilename = allOtherImagesEditor1.GetCurrentOriginalFilename(); int startIndex = origFilename.LastIndexOf(".") + 1; string extension = origFilename.Substring(startIndex, origFilename.Length - startIndex).ToUpper(); saveFileDialog.Filter = origFilename + "|" + origFilename + "|" + extension + " files|" + "*." + extension + "|All files|*.*"; AbstractImage image = allOtherImagesEditor1.GetImageFromComboBoxItem(); if (image.Filesize == 0) { MyMessageBox.Show(this, "Exporting entire file is not implemented for this image.", "Not Implemented", MessageBoxButtons.OK); } else if (saveFileDialog.ShowDialog(this) == DialogResult.OK) { bool didExport = allOtherImagesEditor1.ExportEntireFile(saveFileDialog.FileName); if (!didExport) { MyMessageBox.Show(this, "Exporting entire file is not implemented for this image.", "Not Implemented", MessageBoxButtons.OK); } } }
public bool ImportEntireFile(string path) { AbstractImageList list = GetImageListFromComboBoxItem(); int listIndex = (list.Count == 1) ? 0 : ddl_Entry.SelectedIndex; AbstractImage abIm = list[listIndex]; bool result = abIm.ImportEntireFile(iso, path); if (abIm.IsEffect) { Type type = abIm.Sector.GetType(); if (type == typeof(PatcherLib.Iso.PsxIso.Sectors)) { list.Images[listIndex] = AllOtherImages.GetPSXEffectImage(iso, abIm.EffectIndex); } else if ((type == typeof(PatcherLib.Iso.PspIso.Sectors)) || (type == typeof(PatcherLib.Iso.FFTPack.Files))) { list.Images[listIndex] = AllOtherImages.GetPSPEffectImage(iso, abIm.EffectIndex); } } RefreshPictureBox(true); return(result); }
private static List <AbstractImage> GetImagesFromNodeInner(XmlDocument doc, XmlNode sectionNode, XmlNode imageNode, List <string> names, int depth = 0, int inIndex = 0, int inOffset = 0, int inPaletteOffset = 0) { List <AbstractImage> result = new List <AbstractImage>(); if (imageNode.Name == "Repeat") { int number = int.Parse(imageNode.Attributes["Number"].InnerText); int offset = int.Parse(imageNode.Attributes["Offset"].InnerText); XmlAttribute paletteOffsetAttr = imageNode.Attributes["PaletteOffset"]; int paletteOffset = (paletteOffsetAttr == null) ? 0 : int.Parse(imageNode.Attributes["PaletteOffset"].InnerText); XmlNode innerNode = imageNode.FirstChild; int totalIndex = inIndex; for (int index = 0; index < number; index++) { XmlNode indexNode = innerNode.CloneNode(true); List <AbstractImage> innerResult = GetImagesFromNodeInner(doc, sectionNode, indexNode, names, depth + 1, totalIndex, inOffset, inPaletteOffset); result.AddRange(innerResult); totalIndex += innerResult.Count; inOffset += offset; inPaletteOffset += paletteOffset; } } else { XmlNode nameNode = imageNode["Name"]; if (nameNode == null) { imageNode.AppendChild(doc.CreateElement("Name")); } if (depth > 0) { imageNode["Name"].InnerText = (inIndex < names.Count) ? names[inIndex] : imageNode["Name"].InnerText + " (" + (inIndex + 1) + ")"; XmlNode palettePositionNode = imageNode["PalettePosition"]; if (palettePositionNode != null) { imageNode["PalettePosition"]["Offset"].InnerText = (int.Parse(imageNode["PalettePosition"]["Offset"].InnerText) + inPaletteOffset).ToString(); } imageNode["Position"]["Offset"].InnerText = (int.Parse(imageNode["Position"]["Offset"].InnerText) + inOffset).ToString(); } if (string.IsNullOrEmpty(imageNode["Name"].InnerText) && (inIndex < names.Count)) { imageNode["Name"].InnerText = names[inIndex]; } EnsureImageNodeProperty(doc, sectionNode, imageNode, "Filename"); EnsureImageNodeProperty(doc, sectionNode, imageNode, "Filesize"); var types = ImageTypes; Type type = types.Find(t => t.Name == imageNode.Name); System.Reflection.MethodInfo mi = type.GetMethod("ConstructFromXml"); AbstractImage image = (AbstractImage)mi.Invoke(null, new object[] { imageNode }); result.Add(image); } return(result); }
public bool CanSelectPalette(AbstractImage img = null) { img = img ?? this; //return ((img is PalettedImage4bpp) || (img is PalettedImage4bppSectioned) || (img is StupidTM2Image4bpp)); return (img is ISelectablePalette4bppImage); }
private void SetupPaletteDropdown(AbstractImage im = null) { if (im == null) { im = GetImageFromComboBoxItem(); } if (im.PaletteCount > 0) { ddl_Palette.Items.Clear(); for (int index = 0; index < im.PaletteCount; index++) { ddl_Palette.Items.Add((index + 1)); } ddl_Palette.SelectedIndex = im.CurrentPalette; pnl_Palette.Visible = true; } else { pnl_Palette.Visible = false; } }
private void Setup8bppCheckbox(AbstractImage im = null) { if (im == null) { im = GetImageFromComboBoxItem(); } if (im.CanSelectPalette()) { chk_8bpp.Checked = ((ISelectablePalette4bppImage)im).ImportExport8bpp; chk_8bpp.Visible = true; } else { chk_8bpp.Visible = false; } }
public bool CanSelectPalette(AbstractImage img = null) { img = img ?? this; //return ((img is PalettedImage4bpp) || (img is PalettedImage4bppSectioned) || (img is StupidTM2Image4bpp)); return(img is ISelectablePalette4bppImage); }
public string GetCurrentImageInputFileFilter() { AbstractImage im = GetImageFromComboBoxItem(); return(im.InputFilenameFilter); }