static void ProcessTree(ObjectTreeNode parent, ArchiveFileInfo file, string[] paths, int index) { string currentPath = paths[index]; if (paths.Length - 1 == index) { var fileNode = new ObjectTreeNode(currentPath); string ext = Utils.GetExtension(currentPath); if (FileImageKeys.Lookup.ContainsKey(ext)) { fileNode.ImageKey = FileImageKeys.Lookup[ext]; } else { fileNode.ImageKey = "File"; } fileNode.Type = ext; fileNode.Size = STMath.GetFileSize(file.GetFileSize()); fileNode.Tag = file; parent.AddChild(fileNode); return; } var node = FindFolderNode(parent, currentPath); if (node == null) { node = new ObjectTreeNode(currentPath); node.ImageKey = "Folder"; parent.AddChild(node); } ProcessTree(node, file, paths, index + 1); }
public void SetupSettings(GTXImporterSettings setting) { if (setting.Format == GX2.GX2SurfaceFormat.INVALID || SelectedIndex == -1) { return; } if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is GX2.GX2SurfaceFormat) { setting.Format = (GX2.GX2SurfaceFormat)formatComboBox.SelectedItem; listViewCustom1.Items[SelectedIndex].SubItems[1].Text = setting.Format.ToString(); } HeightLabel.Text = $"Height: {setting.TexHeight}"; WidthLabel.Text = $"Width: {setting.TexWidth}"; Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); pictureBox1.Image = bitmap; Thread = new Thread((ThreadStart)(() => { setting.IsFinishedCompressing = false; ToggleOkButton(false); var mips = setting.GenerateMipList(); setting.DataBlockOutput.Clear(); setting.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); setting.Compress(); bitmap = FTEX.DecodeBlockGetBitmap(mips[0], setting. TexWidth, setting.TexHeight, FTEX.ConvertFromGx2Format( (Syroot.NintenTools.Bfres.GX2.GX2SurfaceFormat)setting.Format), new byte[0]); if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }
public void SetupSettings() { if (SelectedIndex == -1) { return; } if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is CTR_3DS.PICASurfaceFormat) { SelectedTexSettings.Format = (CTR_3DS.PICASurfaceFormat)formatComboBox.SelectedItem; listViewCustom1.Items[SelectedIndex].SubItems[1].Text = SelectedTexSettings.Format.ToString(); } HeightLabel.Text = $"Height: {SelectedTexSettings.TexHeight}"; WidthLabel.Text = $"Width: {SelectedTexSettings.TexWidth}"; Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); pictureBox1.Image = bitmap; Thread = new Thread((ThreadStart)(() => { SelectedTexSettings.IsFinishedCompressing = false; ToggleOkButton(false); var mips = SelectedTexSettings.GenerateMipList(); SelectedTexSettings.DataBlockOutput.Clear(); SelectedTexSettings.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); SelectedTexSettings.IsFinishedCompressing = true; bitmap = CTR_3DS.DecodeBlockToBitmap(mips[0], (int)SelectedTexSettings.TexWidth, (int)SelectedTexSettings.TexHeight, SelectedTexSettings.Format); bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }
public void SetupSettings(TextureImporterSettings setting) { if (setting.Format == SurfaceFormat.Invalid || SelectedIndex == -1) { return; } WidthLabel.Text = $"Width: {setting.TexWidth}"; HeightLabel.Text = $"Height: {setting.TexHeight}"; if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is SurfaceDim) { setting.SurfaceDim = (SurfaceDim)formatComboBox.SelectedItem; } if (formatComboBox.SelectedItem is SurfaceFormat) { setting.Format = (SurfaceFormat)formatComboBox.SelectedItem; listViewCustom1.Items[SelectedIndex].SubItems[1].Text = setting.Format.ToString(); } if (setting.Format == SurfaceFormat.BC7_UNORM || setting.Format == SurfaceFormat.BC7_SRGB) { compressionModeCB.Visible = true; compModeLbl.Visible = true; } else { compressionModeCB.Visible = false; compModeLbl.Visible = false; } Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); if (compressionModeCB.SelectedIndex == 0) { CompressionMode = STCompressionMode.Fast; } else { CompressionMode = STCompressionMode.Normal; } Thread = new Thread((ThreadStart)(() => { setting.IsFinishedCompressing = false; ToggleOkButton(false); pictureBox1.Image = bitmap; var mips = setting.GenerateMipList(CompressionMode); setting.DataBlockOutput.Clear(); setting.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); setting.IsFinishedCompressing = true; if (setting.DataBlockOutput.Count > 0) { if (setting.Format == SurfaceFormat.BC5_SNORM) { bitmap = DDSCompressor.DecompressBC5(mips[0], (int)setting.TexWidth, (int)setting.TexHeight, true); } else { bitmap = STGenericTexture.DecodeBlockGetBitmap(mips[0], setting.TexWidth, setting.TexHeight, TextureData.ConvertFormat(setting.Format), new byte[0]); } } if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }
public void SetupSettings() { if (SelectedTexSettings.Format == TEX_FORMAT.UNKNOWN || SelectedIndex == -1) { return; } WidthLabel.Text = $"Width {SelectedTexSettings.TexWidth}"; HeightLabel.Text = $"Height {SelectedTexSettings.TexHeight}"; if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is TEX_FORMAT) { SelectedTexSettings.Format = (TEX_FORMAT)formatComboBox.SelectedItem; listViewCustom1.Items[SelectedIndex].SubItems[1].Text = SelectedTexSettings.Format.ToString(); } if (SelectedTexSettings.Format == TEX_FORMAT.BC7_UNORM || SelectedTexSettings.Format == TEX_FORMAT.BC7_TYPELESS || SelectedTexSettings.Format == TEX_FORMAT.BC7_UNORM_SRGB) { compressionModeCB.Visible = true; } else { compressionModeCB.Visible = false; } Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); if (compressionModeCB.SelectedIndex == 0) { CompressionMode = STCompressionMode.Fast; } else { CompressionMode = STCompressionMode.Normal; } Thread = new Thread((ThreadStart)(() => { SelectedTexSettings.IsFinishedCompressing = false; ToggleOkButton(false); pictureBox1.Image = bitmap; var mips = SelectedTexSettings.GenerateMipList(CompressionMode, MultiThreading); SelectedTexSettings.DataBlockOutput.Clear(); SelectedTexSettings.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); SelectedTexSettings.IsFinishedCompressing = true; if (SelectedTexSettings.DataBlockOutput.Count > 0) { if (SelectedTexSettings.Format == TEX_FORMAT.BC5_SNORM) { bitmap = DDSCompressor.DecompressBC5(mips[0], (int)SelectedTexSettings.TexWidth, (int)SelectedTexSettings.TexHeight, true); } else { bitmap = STGenericTexture.DecodeBlockGetBitmap(mips[0], SelectedTexSettings.TexWidth, SelectedTexSettings.TexHeight, SelectedTexSettings.Format, new byte[0]); } } if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }
public void SetupSettings() { if (SelectedIndex == -1) { return; } WidthLabel.Text = $"Width {SelectedTexSettings.TexWidth}"; HeightLabel.Text = $"Height {SelectedTexSettings.TexHeight}"; if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is Decode_Gamecube.TextureFormats) { SelectedTexSettings.Format = (Decode_Gamecube.TextureFormats)formatComboBox.SelectedItem; listViewCustom1.Items[SelectedIndex].SubItems[1].Text = SelectedTexSettings.Format.ToString(); if (SelectedTexSettings.Format == Decode_Gamecube.TextureFormats.C4 || SelectedTexSettings.Format == Decode_Gamecube.TextureFormats.C8) { paletteColorsUD.Enabled = true; paletteColorsUD.Enabled = true; paletteAlgorithmCB.Enabled = true; } else { paletteColorsUD.Enabled = false; paletteColorsUD.Enabled = false; paletteAlgorithmCB.Enabled = false; } } if (paletteFormatCB.SelectedItem is Decode_Gamecube.PaletteFormats) { SelectedTexSettings.PaletteFormat = (Decode_Gamecube.PaletteFormats)paletteFormatCB.SelectedItem; } Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); Thread = new Thread((ThreadStart)(() => { SelectedTexSettings.IsFinishedCompressing = false; ToggleOkButton(false); pictureBox1.Image = bitmap; var encodedData = SelectedTexSettings.GenerateMipList(); var mips = encodedData.Item1; var paletteData = encodedData.Item2; SelectedTexSettings.DataBlockOutput.Clear(); SelectedTexSettings.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); SelectedTexSettings.IsFinishedCompressing = true; bitmap = Decode_Gamecube.DecodeDataToBitmap(mips[0], paletteData, SelectedTexSettings.TexWidth, SelectedTexSettings.TexHeight, SelectedTexSettings.Format, SelectedTexSettings.PaletteFormat); if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }
public void SetupSettings(GTXImporterSettings setting, bool setFormat = true) { if (setting.Format == GX2.GX2SurfaceFormat.INVALID || SelectedIndex == -1) { return; } if (Thread != null && Thread.IsAlive) { Thread.Abort(); } if (formatComboBox.SelectedItem is GX2.GX2SurfaceFormat && setFormat) { setting.Format = (GX2.GX2SurfaceFormat)formatComboBox.SelectedItem; if (setting.Format == GX2.GX2SurfaceFormat.T_BC4_UNORM && DisplayBC4Alpha || setting.Format == GX2.GX2SurfaceFormat.T_BC4_SNORM && DisplayBC4Alpha) { chkBc4Alpha.Visible = true; } else { chkBc4Alpha.Visible = false; } listViewCustom1.Items[SelectedIndex].SubItems[1].Text = setting.Format.ToString(); } if (setting.MipCountOriginal >= 0) { chkOriginalMipCount.Enabled = true; } else { chkOriginalMipCount.Enabled = false; } HeightLabel.Text = $"Height: {setting.TexHeight}"; WidthLabel.Text = $"Width: {setting.TexWidth}"; Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage(); pictureBox1.Image = bitmap; Thread = new Thread((ThreadStart)(() => { setting.IsFinishedCompressing = false; ToggleOkButton(false); var mips = setting.GenerateMipList(); setting.DataBlockOutput.Clear(); setting.DataBlockOutput.Add(Utils.CombineByteArray(mips.ToArray())); ToggleOkButton(true); setting.IsFinishedCompressing = true; bitmap = FTEX.DecodeBlockGetBitmap(mips[0], setting. TexWidth, setting.TexHeight, FTEX.ConvertFromGx2Format( (Syroot.NintenTools.Bfres.GX2.GX2SurfaceFormat)setting.Format), new byte[0]); if (setting.FlipY) { bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); } if (setting.UseBc4Alpha) { bitmap = BitmapExtension.SetChannel(bitmap, STChannelType.Red, STChannelType.Red, STChannelType.Red, STChannelType.Red); } if (pictureBox1.InvokeRequired) { pictureBox1.Invoke((MethodInvoker) delegate { pictureBox1.Image = bitmap; pictureBox1.Refresh(); int size = Utils.GetSizeInBytes(mips); dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}"; }); } mips.Clear(); })); Thread.Start(); }