private void ImageSave_button_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = ImageFilterSave; saveFileDialog1.Title = "Save Tattoo Image"; saveFileDialog1.FilterIndex = 1; saveFileDialog1.CheckFileExists = false; saveFileDialog1.CheckPathExists = true; saveFileDialog1.OverwritePrompt = true; saveFileDialog1.AddExtension = true; saveFileDialog1.DefaultExt = "dds"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { saveOptionsDDS = ImageHandler.SaveImage(saveFileDialog1.FileName, dds, saveOptionsDDS); } }
private void newTattooToolStripMenuItem_Click(object sender, EventArgs e) { presets = new Preset[3] { new Preset(0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0xFF000000), new Preset(0xFFCC0000, 0xFF00CC00, 0xFF0000CC, 0xFF000000), new Preset(0xFF880000, 0xFF008800, 0xFF000088, 0xFF000000) }; currentPreset = 0; PresetPrep(); CASPtodder_checkBox.Checked = false; CASPchild_checkBox.Checked = false; CASPteen_checkBox.Checked = true; CASPadult_checkBox.Checked = true; CASPelder_checkBox.Checked = true; CASPmale_checkBox.Checked = true; CASPfemale_checkBox.Checked = true; ChannelA_checkBox.Checked = true; ChannelG_checkBox.Checked = true; ChannelB_checkBox.Checked = true; ChannelA_checkBox.Checked = false; TattooName.Text = ""; TattooInstance.Text = ""; TattooImageFile.Text = ""; CASPsortOrder.Text = "100"; bgColor = new Color(0x00D2B48Cu); BGcolor_panel.BackColor = System.Drawing.Color.FromArgb(bgColor.Red, bgColor.Green, bgColor.Blue); dds = null; ddsOriginal = null; saveOptionsDDS = new DdsSaveOptions("DXT5", true, 90); thumbNail = null; Preview_pictureBox.Image = null; PhotoConvert_radioButton.Checked = false; Black2Red_radioButton.Checked = false; Resize_checkBox.Checked = false; ReplaceAlpha_checkBox.Checked = false; Black2Alpha_radioButton.Checked = true; White2Alpha_radioButton.Checked = false; BlankAlpha_radioButton.Checked = false; invertAlpha_radioButton.Checked = false; White2Back_checkBox.Checked = false; }
private void openTattooPackageToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = PackageFilter; openFileDialog1.Title = "Select Tattoo Package File"; openFileDialog1.FilterIndex = 1; openFileDialog1.CheckFileExists = true; if (openFileDialog1.ShowDialog() != DialogResult.OK) { return; } Package myPack; try { myPack = (Package)Package.OpenPackage(0, openFileDialog1.FileName); } catch (Exception ex) { MessageBox.Show("Cannot open package: " + openFileDialog1.FileName + " - Error is:" + System.Environment.NewLine + ex.Message + System.Environment.NewLine + ex.InnerException); return; } Predicate <IResourceIndexEntry> isCASP = r => r.ResourceType == (uint)ResourceTypes.CASP; List <IResourceIndexEntry> CASPlist = myPack.FindAll(isCASP); if (CASPlist.Count == 0) { MessageBox.Show("No CASP files found in package!"); Package.ClosePackage(0, (IPackage)myPack); return; } Predicate <IResourceIndexEntry> isKEY = r => r.ResourceType == (uint)ResourceTypes.KEY; IResourceIndexEntry irKey = myPack.Find(isKEY); NameMapResource.NameMapResource nMap = null; if (irKey != null) { Stream n = myPack.GetResource(irKey); nMap = new NameMapResource.NameMapResource(0, n); } int numTattoos = 0; foreach (IResourceIndexEntry r in CASPlist) { Stream s = myPack.GetResource(r); s.Position = 0; CASPartResource.CASPartResource casp = new CASPartResource.CASPartResource(0, s); if (casp.Clothing == ClothingType.TattooTemplate) { numTattoos++; string tatName = ""; if (casp.Presets.Count > 0) { XmlDocument imp = new XmlDocument(); imp.LoadXml(casp.Presets[0].XmlFile.ReadToEnd()); XmlNodeList nodes = imp.GetElementsByTagName("value"); foreach (XmlNode n in nodes) { if (n.Attributes["key"].InnerXml.Contains("daeFileName")) { tatName = n.Attributes["value"].InnerXml; break; } } } string tmp; if (nMap != null && nMap.TryGetValue(r.Instance, out tmp)) { tatName = tmp; } DialogResult res = MessageBox.Show("Open tattoo: " + tatName + "?", "Select Tattoo", MessageBoxButtons.YesNoCancel); if (res == DialogResult.Yes) { bool gotImage = false; for (int i = 0; i < Math.Min(casp.Presets.Count, 3); i++) { XmlDocument imp = new XmlDocument(); imp.LoadXml(casp.Presets[i].XmlFile.ReadToEnd()); XmlNodeList nodes = imp.GetElementsByTagName("value"); foreach (XmlNode n in nodes) { if (n.Attributes["key"].InnerXml.Contains("Layer1ColorR")) { presets[i].rChannelColor = new Color(n.Attributes["value"].InnerXml); } else if (n.Attributes["key"].InnerXml.Contains("Layer1ColorG")) { presets[i].gChannelColor = new Color(n.Attributes["value"].InnerXml); } else if (n.Attributes["key"].InnerXml.Contains("Layer1ColorB")) { presets[i].bChannelColor = new Color(n.Attributes["value"].InnerXml); } else if (n.Attributes["key"].InnerXml.Contains("Layer1ColorA")) { presets[i].aChannelColor = new Color(n.Attributes["value"].InnerXml); } else if (n.Attributes["key"].InnerXml.Contains("Layer1Mask") && !gotImage) { string[] imgTgi = n.Attributes["value"].InnerXml.Split(':'); Predicate <IResourceIndexEntry> isIMG; try { isIMG = ri => ri.ResourceType == UInt32.Parse(imgTgi[1], System.Globalization.NumberStyles.HexNumber) & ri.ResourceGroup == UInt32.Parse(imgTgi[2], System.Globalization.NumberStyles.HexNumber) & ri.Instance == UInt64.Parse(imgTgi[3], System.Globalization.NumberStyles.HexNumber); } catch { MessageBox.Show("Could not parse TGI of tattoo image!"); return; } IResourceIndexEntry img = myPack.Find(isIMG); if (img != null) { Stream d = myPack.GetResource(img); d.Position = 0; dds = new DdsFile(); dds.Load(d, false); ddsOriginal = new DdsFile(); ddsOriginal.CreateImage(dds, false); gotImage = true; } } } } if (!gotImage) { MessageBox.Show("Could not find tattoo image!"); } bgColor = new Color(0x00D2B48Cu); BGcolor_panel.BackColor = System.Drawing.Color.FromArgb(bgColor.Red, bgColor.Green, bgColor.Blue); currentPreset = 0; PresetPrep(); Update_DDSdisplay(); TattooImageFile.Text = ""; Predicate <IResourceIndexEntry> isTHUM = ri => ri.ResourceType == (uint)ResourceTypes.THUM & ri.ResourceGroup == 1U & ri.Instance == r.Instance; IResourceIndexEntry irThum = myPack.Find(isTHUM); if (irThum != null) { Stream t = myPack.GetResource(irThum); thumbNail = new Bitmap(t); } else { thumbNail = null; } TattooName.Text = tatName; TattooInstance.Text = r.Instance.ToString("X16"); AgeGenderFlags ag = casp.AgeGender; CASPtodder_checkBox.Checked = ((ag.Age & AgeFlags.Toddler) > 0); CASPchild_checkBox.Checked = ((ag.Age & AgeFlags.Child) > 0); CASPteen_checkBox.Checked = ((ag.Age & AgeFlags.Teen) > 0); CASPadult_checkBox.Checked = ((ag.Age & AgeFlags.Adult) > 0); CASPelder_checkBox.Checked = ((ag.Age & AgeFlags.Elder) > 0); CASPmale_checkBox.Checked = ((ag.Gender & GenderFlags.Male) > 0); CASPfemale_checkBox.Checked = ((ag.Gender & GenderFlags.Female) > 0); CASPsortOrder.Text = casp.SortPriority.ToString(); saveOptionsDDS = new DdsSaveOptions("DXT5", true, 90); PhotoConvert_radioButton.Checked = false; Black2Red_radioButton.Checked = false; Resize_checkBox.Checked = false; ReplaceAlpha_checkBox.Checked = false; Black2Alpha_radioButton.Checked = true; White2Alpha_radioButton.Checked = false; BlankAlpha_radioButton.Checked = false; invertAlpha_radioButton.Checked = false; White2Back_checkBox.Checked = false; break; } else if (res == DialogResult.No) { continue; } else { Package.ClosePackage(0, (IPackage)myPack); return; } } } if (numTattoos == 0) { MessageBox.Show("No tattoos found in package!"); } Package.ClosePackage(0, (IPackage)myPack); // CASPartResource.CASPartResource casp = }