Textue importer improvements and some gui fixes
This commit is contained in:
parent
b5f50c824c
commit
79d78f64ad
@ -116,7 +116,6 @@ namespace FirstPlugin
|
|||||||
TEX_FORMAT.BC3_UNORM,
|
TEX_FORMAT.BC3_UNORM,
|
||||||
TEX_FORMAT.BC5_UNORM,
|
TEX_FORMAT.BC5_UNORM,
|
||||||
TEX_FORMAT.R8G8B8A8_UNORM,
|
TEX_FORMAT.R8G8B8A8_UNORM,
|
||||||
TEX_FORMAT.R32G32B32A32_FLOAT,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -126,18 +125,19 @@ namespace FirstPlugin
|
|||||||
GenericTextureImporterList importer = new GenericTextureImporterList(SupportedFormats);
|
GenericTextureImporterList importer = new GenericTextureImporterList(SupportedFormats);
|
||||||
GenericTextureImporterSettings settings = new GenericTextureImporterSettings();
|
GenericTextureImporterSettings settings = new GenericTextureImporterSettings();
|
||||||
|
|
||||||
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
|
||||||
|
|
||||||
if (Utils.GetExtension(FileName) == ".dds" ||
|
if (Utils.GetExtension(FileName) == ".dds" ||
|
||||||
Utils.GetExtension(FileName) == ".dds2")
|
Utils.GetExtension(FileName) == ".dds2")
|
||||||
{
|
{
|
||||||
settings.LoadDDS(FileName);
|
settings.LoadDDS(FileName);
|
||||||
|
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
||||||
ApplySettings(settings);
|
ApplySettings(settings);
|
||||||
UpdateEditor();
|
UpdateEditor();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
settings.LoadBitMap(FileName);
|
settings.LoadBitMap(FileName);
|
||||||
|
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
||||||
|
|
||||||
if (importer.ShowDialog() == DialogResult.OK)
|
if (importer.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
|
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
|
||||||
|
@ -332,6 +332,22 @@ namespace FirstPlugin
|
|||||||
return ImageData;
|
return ImageData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GetMipmaps(STGenericTexture tex, byte[] ImageData)
|
||||||
|
{
|
||||||
|
uint width = 0;
|
||||||
|
uint height = 0;
|
||||||
|
|
||||||
|
for (int a = 0; a < tex.ArrayCount; a++)
|
||||||
|
{
|
||||||
|
for (int m = 0; m < tex.MipCount; m++)
|
||||||
|
{
|
||||||
|
width = (uint)Math.Max(1, tex.Width >> m);
|
||||||
|
Height = (uint)Math.Max(1, tex.Height >> m);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ namespace FirstPlugin
|
|||||||
Text = FileName;
|
Text = FileName;
|
||||||
//Set this if you want to save the file format
|
//Set this if you want to save the file format
|
||||||
CanSave = false;
|
CanSave = false;
|
||||||
|
CanReplace = true;
|
||||||
|
|
||||||
ImageKey = "Texture";
|
ImageKey = "Texture";
|
||||||
SelectedImageKey = "Texture";
|
SelectedImageKey = "Texture";
|
||||||
@ -140,7 +141,11 @@ namespace FirstPlugin
|
|||||||
|
|
||||||
//This is an event for when the tree is clicked on
|
//This is an event for when the tree is clicked on
|
||||||
//Load our editor
|
//Load our editor
|
||||||
public override void OnClick(TreeView treeView)
|
public override void OnClick(TreeView treeView) {
|
||||||
|
UpdateEditor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateEditor()
|
||||||
{
|
{
|
||||||
//Here we check for an active editor and load a new one if not found
|
//Here we check for an active editor and load a new one if not found
|
||||||
//This is used when a tree/object editor is used
|
//This is used when a tree/object editor is used
|
||||||
@ -157,5 +162,46 @@ namespace FirstPlugin
|
|||||||
editor.LoadProperties(GenericProperties);
|
editor.LoadProperties(GenericProperties);
|
||||||
editor.LoadImage(this);
|
editor.LoadImage(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Replace(string FileName)
|
||||||
|
{
|
||||||
|
GamecubeTextureImporterList importer = new GamecubeTextureImporterList(SupportedFormats);
|
||||||
|
GameCubeTextureImporterSettings settings = new GameCubeTextureImporterSettings();
|
||||||
|
|
||||||
|
if (Utils.GetExtension(FileName) == ".dds" ||
|
||||||
|
Utils.GetExtension(FileName) == ".dds2")
|
||||||
|
{
|
||||||
|
settings.LoadDDS(FileName);
|
||||||
|
importer.LoadSettings(new List<GameCubeTextureImporterSettings>() { settings, });
|
||||||
|
|
||||||
|
ApplySettings(settings);
|
||||||
|
UpdateEditor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
settings.LoadBitMap(FileName);
|
||||||
|
importer.LoadSettings(new List<GameCubeTextureImporterSettings>() { settings, });
|
||||||
|
|
||||||
|
if (importer.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
|
||||||
|
settings.Compress();
|
||||||
|
|
||||||
|
ApplySettings(settings);
|
||||||
|
UpdateEditor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ApplySettings(GameCubeTextureImporterSettings settings)
|
||||||
|
{
|
||||||
|
this.ImageData = settings.DataBlockOutput[0];
|
||||||
|
this.Width = settings.TexWidth;
|
||||||
|
this.Height = settings.TexHeight;
|
||||||
|
this.Format = settings.GenericFormat;
|
||||||
|
this.MipCount = settings.MipCount;
|
||||||
|
this.Depth = settings.Depth;
|
||||||
|
this.ArrayCount = (uint)settings.DataBlockOutput.Count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -278,7 +278,7 @@
|
|||||||
<Compile Include="FileFormats\Message\MSBP.cs" />
|
<Compile Include="FileFormats\Message\MSBP.cs" />
|
||||||
<Compile Include="FileFormats\CrashBandicoot\IGZ_TEX.cs" />
|
<Compile Include="FileFormats\CrashBandicoot\IGZ_TEX.cs" />
|
||||||
<Compile Include="FileFormats\MOD.cs" />
|
<Compile Include="FileFormats\MOD.cs" />
|
||||||
<Compile Include="FileFormats\Pikmin\TXE.cs" />
|
<Compile Include="FileFormats\Pikmin1\TXE.cs" />
|
||||||
<Compile Include="FileFormats\Texture\CTPK.cs" />
|
<Compile Include="FileFormats\Texture\CTPK.cs" />
|
||||||
<Compile Include="FileFormats\Grezzo\CTXB.cs" />
|
<Compile Include="FileFormats\Grezzo\CTXB.cs" />
|
||||||
<Compile Include="FileFormats\Texture\TPL.cs" />
|
<Compile Include="FileFormats\Texture\TPL.cs" />
|
||||||
|
@ -58,6 +58,7 @@ namespace FirstPlugin.Forms
|
|||||||
stTabControl1.TabPages.Add(tabPage);
|
stTabControl1.TabPages.Add(tabPage);
|
||||||
RenderStateEditor = new RenderStateEditor();
|
RenderStateEditor = new RenderStateEditor();
|
||||||
RenderStateEditor.Dock = DockStyle.Fill;
|
RenderStateEditor.Dock = DockStyle.Fill;
|
||||||
|
RenderStateEditor.LoadRenderState(mat.MaterialU.RenderState);
|
||||||
tabPage.Controls.Add(RenderStateEditor);
|
tabPage.Controls.Add(RenderStateEditor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -48,7 +48,8 @@
|
|||||||
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
||||||
this.formatComboBox = new Toolbox.Library.Forms.STComboBox();
|
this.formatComboBox = new Toolbox.Library.Forms.STComboBox();
|
||||||
this.compressionModeCB = new Toolbox.Library.Forms.STComboBox();
|
this.compressionModeCB = new Toolbox.Library.Forms.STComboBox();
|
||||||
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
|
this.compModeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.dataSizeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
this.contentContainer.SuspendLayout();
|
this.contentContainer.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.SwizzleNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.SwizzleNum)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
||||||
@ -57,8 +58,9 @@
|
|||||||
//
|
//
|
||||||
// contentContainer
|
// contentContainer
|
||||||
//
|
//
|
||||||
|
this.contentContainer.Controls.Add(this.dataSizeLbl);
|
||||||
this.contentContainer.Controls.Add(this.compressionModeCB);
|
this.contentContainer.Controls.Add(this.compressionModeCB);
|
||||||
this.contentContainer.Controls.Add(this.stLabel1);
|
this.contentContainer.Controls.Add(this.compModeLbl);
|
||||||
this.contentContainer.Controls.Add(this.SwizzleNum);
|
this.contentContainer.Controls.Add(this.SwizzleNum);
|
||||||
this.contentContainer.Controls.Add(this.label5);
|
this.contentContainer.Controls.Add(this.label5);
|
||||||
this.contentContainer.Controls.Add(this.tileModeCB);
|
this.contentContainer.Controls.Add(this.tileModeCB);
|
||||||
@ -92,8 +94,9 @@
|
|||||||
this.contentContainer.Controls.SetChildIndex(this.tileModeCB, 0);
|
this.contentContainer.Controls.SetChildIndex(this.tileModeCB, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.label5, 0);
|
this.contentContainer.Controls.SetChildIndex(this.label5, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.SwizzleNum, 0);
|
this.contentContainer.Controls.SetChildIndex(this.SwizzleNum, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
|
this.contentContainer.Controls.SetChildIndex(this.compModeLbl, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.compressionModeCB, 0);
|
this.contentContainer.Controls.SetChildIndex(this.compressionModeCB, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.dataSizeLbl, 0);
|
||||||
//
|
//
|
||||||
// button2
|
// button2
|
||||||
//
|
//
|
||||||
@ -146,7 +149,7 @@
|
|||||||
//
|
//
|
||||||
// SwizzleNum
|
// SwizzleNum
|
||||||
//
|
//
|
||||||
this.SwizzleNum.Location = new System.Drawing.Point(853, 239);
|
this.SwizzleNum.Location = new System.Drawing.Point(851, 182);
|
||||||
this.SwizzleNum.Name = "SwizzleNum";
|
this.SwizzleNum.Name = "SwizzleNum";
|
||||||
this.SwizzleNum.Size = new System.Drawing.Size(130, 20);
|
this.SwizzleNum.Size = new System.Drawing.Size(130, 20);
|
||||||
this.SwizzleNum.TabIndex = 28;
|
this.SwizzleNum.TabIndex = 28;
|
||||||
@ -154,11 +157,11 @@
|
|||||||
// label5
|
// label5
|
||||||
//
|
//
|
||||||
this.label5.AutoSize = true;
|
this.label5.AutoSize = true;
|
||||||
this.label5.Location = new System.Drawing.Point(756, 239);
|
this.label5.Location = new System.Drawing.Point(754, 184);
|
||||||
this.label5.Name = "label5";
|
this.label5.Name = "label5";
|
||||||
this.label5.Size = new System.Drawing.Size(42, 13);
|
this.label5.Size = new System.Drawing.Size(42, 13);
|
||||||
this.label5.TabIndex = 27;
|
this.label5.TabIndex = 27;
|
||||||
this.label5.Text = "Swizzle";
|
this.label5.Text = "Swizzle:";
|
||||||
//
|
//
|
||||||
// tileModeCB
|
// tileModeCB
|
||||||
//
|
//
|
||||||
@ -166,20 +169,20 @@
|
|||||||
this.tileModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.tileModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.tileModeCB.ButtonColor = System.Drawing.Color.Empty;
|
this.tileModeCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.tileModeCB.FormattingEnabled = true;
|
this.tileModeCB.FormattingEnabled = true;
|
||||||
this.tileModeCB.Location = new System.Drawing.Point(853, 166);
|
this.tileModeCB.Location = new System.Drawing.Point(851, 114);
|
||||||
this.tileModeCB.Name = "tileModeCB";
|
this.tileModeCB.Name = "tileModeCB";
|
||||||
this.tileModeCB.ReadOnly = true;
|
this.tileModeCB.ReadOnly = true;
|
||||||
this.tileModeCB.Size = new System.Drawing.Size(232, 21);
|
this.tileModeCB.Size = new System.Drawing.Size(230, 21);
|
||||||
this.tileModeCB.TabIndex = 26;
|
this.tileModeCB.TabIndex = 26;
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
//
|
//
|
||||||
this.label4.AutoSize = true;
|
this.label4.AutoSize = true;
|
||||||
this.label4.Location = new System.Drawing.Point(756, 169);
|
this.label4.Location = new System.Drawing.Point(754, 117);
|
||||||
this.label4.Name = "label4";
|
this.label4.Name = "label4";
|
||||||
this.label4.Size = new System.Drawing.Size(54, 13);
|
this.label4.Size = new System.Drawing.Size(54, 13);
|
||||||
this.label4.TabIndex = 25;
|
this.label4.TabIndex = 25;
|
||||||
this.label4.Text = "Tile Mode";
|
this.label4.Text = "Tile Mode:";
|
||||||
//
|
//
|
||||||
// ImgDimComb
|
// ImgDimComb
|
||||||
//
|
//
|
||||||
@ -187,43 +190,43 @@
|
|||||||
this.ImgDimComb.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.ImgDimComb.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.ImgDimComb.ButtonColor = System.Drawing.Color.Empty;
|
this.ImgDimComb.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.ImgDimComb.FormattingEnabled = true;
|
this.ImgDimComb.FormattingEnabled = true;
|
||||||
this.ImgDimComb.Location = new System.Drawing.Point(853, 133);
|
this.ImgDimComb.Location = new System.Drawing.Point(851, 87);
|
||||||
this.ImgDimComb.Name = "ImgDimComb";
|
this.ImgDimComb.Name = "ImgDimComb";
|
||||||
this.ImgDimComb.ReadOnly = true;
|
this.ImgDimComb.ReadOnly = true;
|
||||||
this.ImgDimComb.Size = new System.Drawing.Size(230, 21);
|
this.ImgDimComb.Size = new System.Drawing.Size(232, 21);
|
||||||
this.ImgDimComb.TabIndex = 24;
|
this.ImgDimComb.TabIndex = 24;
|
||||||
this.ImgDimComb.SelectedIndexChanged += new System.EventHandler(this.ImgDimComb_SelectedIndexChanged);
|
this.ImgDimComb.SelectedIndexChanged += new System.EventHandler(this.ImgDimComb_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
// label3
|
// label3
|
||||||
//
|
//
|
||||||
this.label3.AutoSize = true;
|
this.label3.AutoSize = true;
|
||||||
this.label3.Location = new System.Drawing.Point(756, 136);
|
this.label3.Location = new System.Drawing.Point(754, 90);
|
||||||
this.label3.Name = "label3";
|
this.label3.Name = "label3";
|
||||||
this.label3.Size = new System.Drawing.Size(96, 13);
|
this.label3.Size = new System.Drawing.Size(96, 13);
|
||||||
this.label3.TabIndex = 23;
|
this.label3.TabIndex = 23;
|
||||||
this.label3.Text = "Surface Dimension";
|
this.label3.Text = "Surface Dimension:";
|
||||||
//
|
//
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(756, 42);
|
this.label2.Location = new System.Drawing.Point(754, 63);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(39, 13);
|
this.label2.Size = new System.Drawing.Size(39, 13);
|
||||||
this.label2.TabIndex = 22;
|
this.label2.TabIndex = 22;
|
||||||
this.label2.Text = "Format";
|
this.label2.Text = "Format:";
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(756, 204);
|
this.label1.Location = new System.Drawing.Point(754, 158);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(90, 13);
|
this.label1.Size = new System.Drawing.Size(58, 13);
|
||||||
this.label1.TabIndex = 21;
|
this.label1.TabIndex = 21;
|
||||||
this.label1.Text = "Number MipMaps";
|
this.label1.Text = "Mip Count:";
|
||||||
//
|
//
|
||||||
// MipmapNum
|
// MipmapNum
|
||||||
//
|
//
|
||||||
this.MipmapNum.Location = new System.Drawing.Point(853, 202);
|
this.MipmapNum.Location = new System.Drawing.Point(851, 156);
|
||||||
this.MipmapNum.Name = "MipmapNum";
|
this.MipmapNum.Name = "MipmapNum";
|
||||||
this.MipmapNum.Size = new System.Drawing.Size(130, 20);
|
this.MipmapNum.Size = new System.Drawing.Size(130, 20);
|
||||||
this.MipmapNum.TabIndex = 20;
|
this.MipmapNum.TabIndex = 20;
|
||||||
@ -232,20 +235,20 @@
|
|||||||
// WidthLabel
|
// WidthLabel
|
||||||
//
|
//
|
||||||
this.WidthLabel.AutoSize = true;
|
this.WidthLabel.AutoSize = true;
|
||||||
this.WidthLabel.Location = new System.Drawing.Point(756, 298);
|
this.WidthLabel.Location = new System.Drawing.Point(754, 260);
|
||||||
this.WidthLabel.Name = "WidthLabel";
|
this.WidthLabel.Name = "WidthLabel";
|
||||||
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
||||||
this.WidthLabel.TabIndex = 19;
|
this.WidthLabel.TabIndex = 19;
|
||||||
this.WidthLabel.Text = "Width";
|
this.WidthLabel.Text = "Width:";
|
||||||
//
|
//
|
||||||
// HeightLabel
|
// HeightLabel
|
||||||
//
|
//
|
||||||
this.HeightLabel.AutoSize = true;
|
this.HeightLabel.AutoSize = true;
|
||||||
this.HeightLabel.Location = new System.Drawing.Point(756, 267);
|
this.HeightLabel.Location = new System.Drawing.Point(754, 224);
|
||||||
this.HeightLabel.Name = "HeightLabel";
|
this.HeightLabel.Name = "HeightLabel";
|
||||||
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
||||||
this.HeightLabel.TabIndex = 18;
|
this.HeightLabel.TabIndex = 18;
|
||||||
this.HeightLabel.Text = "Height";
|
this.HeightLabel.Text = "Height:";
|
||||||
//
|
//
|
||||||
// pictureBox1
|
// pictureBox1
|
||||||
//
|
//
|
||||||
@ -265,7 +268,7 @@
|
|||||||
this.formatComboBox.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.formatComboBox.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.formatComboBox.ButtonColor = System.Drawing.Color.Empty;
|
this.formatComboBox.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.formatComboBox.FormattingEnabled = true;
|
this.formatComboBox.FormattingEnabled = true;
|
||||||
this.formatComboBox.Location = new System.Drawing.Point(853, 39);
|
this.formatComboBox.Location = new System.Drawing.Point(851, 60);
|
||||||
this.formatComboBox.Name = "formatComboBox";
|
this.formatComboBox.Name = "formatComboBox";
|
||||||
this.formatComboBox.ReadOnly = true;
|
this.formatComboBox.ReadOnly = true;
|
||||||
this.formatComboBox.Size = new System.Drawing.Size(233, 21);
|
this.formatComboBox.Size = new System.Drawing.Size(233, 21);
|
||||||
@ -278,21 +281,30 @@
|
|||||||
this.compressionModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.compressionModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.compressionModeCB.ButtonColor = System.Drawing.Color.Empty;
|
this.compressionModeCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.compressionModeCB.FormattingEnabled = true;
|
this.compressionModeCB.FormattingEnabled = true;
|
||||||
this.compressionModeCB.Location = new System.Drawing.Point(854, 72);
|
this.compressionModeCB.Location = new System.Drawing.Point(851, 33);
|
||||||
this.compressionModeCB.Name = "compressionModeCB";
|
this.compressionModeCB.Name = "compressionModeCB";
|
||||||
this.compressionModeCB.ReadOnly = true;
|
this.compressionModeCB.ReadOnly = true;
|
||||||
this.compressionModeCB.Size = new System.Drawing.Size(233, 21);
|
this.compressionModeCB.Size = new System.Drawing.Size(232, 21);
|
||||||
this.compressionModeCB.TabIndex = 30;
|
this.compressionModeCB.TabIndex = 30;
|
||||||
this.compressionModeCB.SelectedIndexChanged += new System.EventHandler(this.compressionModeCB_SelectedIndexChanged);
|
this.compressionModeCB.SelectedIndexChanged += new System.EventHandler(this.compressionModeCB_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
// stLabel1
|
// compModeLbl
|
||||||
//
|
//
|
||||||
this.stLabel1.AutoSize = true;
|
this.compModeLbl.AutoSize = true;
|
||||||
this.stLabel1.Location = new System.Drawing.Point(757, 75);
|
this.compModeLbl.Location = new System.Drawing.Point(751, 36);
|
||||||
this.stLabel1.Name = "stLabel1";
|
this.compModeLbl.Name = "compModeLbl";
|
||||||
this.stLabel1.Size = new System.Drawing.Size(100, 13);
|
this.compModeLbl.Size = new System.Drawing.Size(100, 13);
|
||||||
this.stLabel1.TabIndex = 29;
|
this.compModeLbl.TabIndex = 29;
|
||||||
this.stLabel1.Text = "Compression Mode:";
|
this.compModeLbl.Text = "Compression Mode:";
|
||||||
|
//
|
||||||
|
// dataSizeLbl
|
||||||
|
//
|
||||||
|
this.dataSizeLbl.AutoSize = true;
|
||||||
|
this.dataSizeLbl.Location = new System.Drawing.Point(754, 295);
|
||||||
|
this.dataSizeLbl.Name = "dataSizeLbl";
|
||||||
|
this.dataSizeLbl.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.dataSizeLbl.TabIndex = 31;
|
||||||
|
this.dataSizeLbl.Text = "Data Size:";
|
||||||
//
|
//
|
||||||
// BinaryTextureImporterList
|
// BinaryTextureImporterList
|
||||||
//
|
//
|
||||||
@ -332,6 +344,7 @@
|
|||||||
private System.Windows.Forms.ColumnHeader Name;
|
private System.Windows.Forms.ColumnHeader Name;
|
||||||
private System.Windows.Forms.ColumnHeader Format;
|
private System.Windows.Forms.ColumnHeader Format;
|
||||||
private Toolbox.Library.Forms.STComboBox compressionModeCB;
|
private Toolbox.Library.Forms.STComboBox compressionModeCB;
|
||||||
private Toolbox.Library.Forms.STLabel stLabel1;
|
private Toolbox.Library.Forms.STLabel dataSizeLbl;
|
||||||
|
private Toolbox.Library.Forms.STLabel compModeLbl;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -88,6 +88,7 @@ namespace FirstPlugin
|
|||||||
|
|
||||||
compressionModeCB.SelectedIndex = 0;
|
compressionModeCB.SelectedIndex = 0;
|
||||||
compressionModeCB.Visible = false;
|
compressionModeCB.Visible = false;
|
||||||
|
compModeLbl.Visible = false;
|
||||||
|
|
||||||
foreach (SurfaceDim dim in (SurfaceDim[])Enum.GetValues(typeof(SurfaceDim)))
|
foreach (SurfaceDim dim in (SurfaceDim[])Enum.GetValues(typeof(SurfaceDim)))
|
||||||
{
|
{
|
||||||
@ -132,8 +133,8 @@ namespace FirstPlugin
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
WidthLabel.Text = $"Width {SelectedTexSettings.TexWidth}";
|
WidthLabel.Text = $"Width: {SelectedTexSettings.TexWidth}";
|
||||||
HeightLabel.Text = $"Height {SelectedTexSettings.TexHeight}";
|
HeightLabel.Text = $"Height: {SelectedTexSettings.TexHeight}";
|
||||||
|
|
||||||
if (Thread != null && Thread.IsAlive)
|
if (Thread != null && Thread.IsAlive)
|
||||||
Thread.Abort();
|
Thread.Abort();
|
||||||
@ -153,10 +154,12 @@ namespace FirstPlugin
|
|||||||
SelectedTexSettings.Format == SurfaceFormat.BC7_SRGB)
|
SelectedTexSettings.Format == SurfaceFormat.BC7_SRGB)
|
||||||
{
|
{
|
||||||
compressionModeCB.Visible = true;
|
compressionModeCB.Visible = true;
|
||||||
|
compModeLbl.Visible = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
compressionModeCB.Visible = false;
|
compressionModeCB.Visible = false;
|
||||||
|
compModeLbl.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage();
|
Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage();
|
||||||
@ -193,15 +196,18 @@ namespace FirstPlugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mips.Clear();
|
|
||||||
|
|
||||||
if (pictureBox1.InvokeRequired)
|
if (pictureBox1.InvokeRequired)
|
||||||
{
|
{
|
||||||
pictureBox1.Invoke((MethodInvoker)delegate {
|
pictureBox1.Invoke((MethodInvoker)delegate {
|
||||||
pictureBox1.Image = bitmap;
|
pictureBox1.Image = bitmap;
|
||||||
pictureBox1.Refresh();
|
pictureBox1.Refresh();
|
||||||
|
|
||||||
|
int size = Utils.GetSizeInBytes(mips);
|
||||||
|
dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mips.Clear();
|
||||||
}));
|
}));
|
||||||
Thread.Start();
|
Thread.Start();
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ namespace FirstPlugin
|
|||||||
public int SelectedIndex = -1;
|
public int SelectedIndex = -1;
|
||||||
|
|
||||||
public bool OverrideMipCounter = false;
|
public bool OverrideMipCounter = false;
|
||||||
|
private STLabel dataSizeLbl;
|
||||||
bool IsLoaded = false;
|
bool IsLoaded = false;
|
||||||
public GTXTextureImporter()
|
public GTXTextureImporter()
|
||||||
{
|
{
|
||||||
@ -166,6 +166,8 @@ namespace FirstPlugin
|
|||||||
|
|
||||||
Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage();
|
Bitmap bitmap = Toolbox.Library.Imaging.GetLoadingImage();
|
||||||
|
|
||||||
|
pictureBox1.Image = bitmap;
|
||||||
|
|
||||||
Thread = new Thread((ThreadStart)(() =>
|
Thread = new Thread((ThreadStart)(() =>
|
||||||
{
|
{
|
||||||
SelectedTexSettings.IsFinishedCompressing = false;
|
SelectedTexSettings.IsFinishedCompressing = false;
|
||||||
@ -177,15 +179,24 @@ namespace FirstPlugin
|
|||||||
|
|
||||||
ToggleOkButton(true);
|
ToggleOkButton(true);
|
||||||
|
|
||||||
pictureBox1.Image = bitmap;
|
|
||||||
SelectedTexSettings.Compress();
|
SelectedTexSettings.Compress();
|
||||||
|
|
||||||
bitmap = FTEX.DecodeBlockGetBitmap(mips[0], SelectedTexSettings.
|
bitmap = FTEX.DecodeBlockGetBitmap(mips[0], SelectedTexSettings.
|
||||||
TexWidth, SelectedTexSettings.TexHeight, FTEX.ConvertFromGx2Format(
|
TexWidth, SelectedTexSettings.TexHeight, FTEX.ConvertFromGx2Format(
|
||||||
(Syroot.NintenTools.Bfres.GX2.GX2SurfaceFormat)SelectedTexSettings.Format), new byte[0]);
|
(Syroot.NintenTools.Bfres.GX2.GX2SurfaceFormat)SelectedTexSettings.Format), new byte[0]);
|
||||||
|
|
||||||
pictureBox1.Image = bitmap;
|
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();
|
Thread.Start();
|
||||||
}
|
}
|
||||||
@ -318,6 +329,7 @@ namespace FirstPlugin
|
|||||||
this.button2 = new Toolbox.Library.Forms.STButton();
|
this.button2 = new Toolbox.Library.Forms.STButton();
|
||||||
this.button1 = new Toolbox.Library.Forms.STButton();
|
this.button1 = new Toolbox.Library.Forms.STButton();
|
||||||
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
||||||
|
this.dataSizeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
this.contentContainer.SuspendLayout();
|
this.contentContainer.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.SwizzleNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.SwizzleNum)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
||||||
@ -326,6 +338,7 @@ namespace FirstPlugin
|
|||||||
//
|
//
|
||||||
// contentContainer
|
// contentContainer
|
||||||
//
|
//
|
||||||
|
this.contentContainer.Controls.Add(this.dataSizeLbl);
|
||||||
this.contentContainer.Controls.Add(this.SwizzleNum);
|
this.contentContainer.Controls.Add(this.SwizzleNum);
|
||||||
this.contentContainer.Controls.Add(this.label5);
|
this.contentContainer.Controls.Add(this.label5);
|
||||||
this.contentContainer.Controls.Add(this.tileModeCB);
|
this.contentContainer.Controls.Add(this.tileModeCB);
|
||||||
@ -359,10 +372,11 @@ namespace FirstPlugin
|
|||||||
this.contentContainer.Controls.SetChildIndex(this.tileModeCB, 0);
|
this.contentContainer.Controls.SetChildIndex(this.tileModeCB, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.label5, 0);
|
this.contentContainer.Controls.SetChildIndex(this.label5, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.SwizzleNum, 0);
|
this.contentContainer.Controls.SetChildIndex(this.SwizzleNum, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.dataSizeLbl, 0);
|
||||||
//
|
//
|
||||||
// SwizzleNum
|
// SwizzleNum
|
||||||
//
|
//
|
||||||
this.SwizzleNum.Location = new System.Drawing.Point(774, 167);
|
this.SwizzleNum.Location = new System.Drawing.Point(772, 148);
|
||||||
this.SwizzleNum.Maximum = new decimal(new int[] {
|
this.SwizzleNum.Maximum = new decimal(new int[] {
|
||||||
7,
|
7,
|
||||||
0,
|
0,
|
||||||
@ -376,7 +390,7 @@ namespace FirstPlugin
|
|||||||
// label5
|
// label5
|
||||||
//
|
//
|
||||||
this.label5.AutoSize = true;
|
this.label5.AutoSize = true;
|
||||||
this.label5.Location = new System.Drawing.Point(666, 167);
|
this.label5.Location = new System.Drawing.Point(664, 148);
|
||||||
this.label5.Name = "label5";
|
this.label5.Name = "label5";
|
||||||
this.label5.Size = new System.Drawing.Size(82, 13);
|
this.label5.Size = new System.Drawing.Size(82, 13);
|
||||||
this.label5.TabIndex = 43;
|
this.label5.TabIndex = 43;
|
||||||
@ -388,7 +402,7 @@ namespace FirstPlugin
|
|||||||
this.tileModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.tileModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.tileModeCB.ButtonColor = System.Drawing.Color.Empty;
|
this.tileModeCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.tileModeCB.FormattingEnabled = true;
|
this.tileModeCB.FormattingEnabled = true;
|
||||||
this.tileModeCB.Location = new System.Drawing.Point(774, 94);
|
this.tileModeCB.Location = new System.Drawing.Point(772, 85);
|
||||||
this.tileModeCB.Name = "tileModeCB";
|
this.tileModeCB.Name = "tileModeCB";
|
||||||
this.tileModeCB.ReadOnly = true;
|
this.tileModeCB.ReadOnly = true;
|
||||||
this.tileModeCB.Size = new System.Drawing.Size(172, 21);
|
this.tileModeCB.Size = new System.Drawing.Size(172, 21);
|
||||||
@ -398,7 +412,7 @@ namespace FirstPlugin
|
|||||||
// label4
|
// label4
|
||||||
//
|
//
|
||||||
this.label4.AutoSize = true;
|
this.label4.AutoSize = true;
|
||||||
this.label4.Location = new System.Drawing.Point(666, 97);
|
this.label4.Location = new System.Drawing.Point(664, 88);
|
||||||
this.label4.Name = "label4";
|
this.label4.Name = "label4";
|
||||||
this.label4.Size = new System.Drawing.Size(54, 13);
|
this.label4.Size = new System.Drawing.Size(54, 13);
|
||||||
this.label4.TabIndex = 41;
|
this.label4.TabIndex = 41;
|
||||||
@ -410,7 +424,7 @@ namespace FirstPlugin
|
|||||||
this.ImgDimComb.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.ImgDimComb.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.ImgDimComb.ButtonColor = System.Drawing.Color.Empty;
|
this.ImgDimComb.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.ImgDimComb.FormattingEnabled = true;
|
this.ImgDimComb.FormattingEnabled = true;
|
||||||
this.ImgDimComb.Location = new System.Drawing.Point(772, 61);
|
this.ImgDimComb.Location = new System.Drawing.Point(772, 58);
|
||||||
this.ImgDimComb.Name = "ImgDimComb";
|
this.ImgDimComb.Name = "ImgDimComb";
|
||||||
this.ImgDimComb.ReadOnly = true;
|
this.ImgDimComb.ReadOnly = true;
|
||||||
this.ImgDimComb.Size = new System.Drawing.Size(172, 21);
|
this.ImgDimComb.Size = new System.Drawing.Size(172, 21);
|
||||||
@ -419,7 +433,7 @@ namespace FirstPlugin
|
|||||||
// label3
|
// label3
|
||||||
//
|
//
|
||||||
this.label3.AutoSize = true;
|
this.label3.AutoSize = true;
|
||||||
this.label3.Location = new System.Drawing.Point(666, 64);
|
this.label3.Location = new System.Drawing.Point(666, 61);
|
||||||
this.label3.Name = "label3";
|
this.label3.Name = "label3";
|
||||||
this.label3.Size = new System.Drawing.Size(88, 13);
|
this.label3.Size = new System.Drawing.Size(88, 13);
|
||||||
this.label3.TabIndex = 39;
|
this.label3.TabIndex = 39;
|
||||||
@ -437,15 +451,15 @@ namespace FirstPlugin
|
|||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(666, 132);
|
this.label1.Location = new System.Drawing.Point(664, 124);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(90, 13);
|
this.label1.Size = new System.Drawing.Size(58, 13);
|
||||||
this.label1.TabIndex = 37;
|
this.label1.TabIndex = 37;
|
||||||
this.label1.Text = "Number MipMaps";
|
this.label1.Text = "Mip Count:";
|
||||||
//
|
//
|
||||||
// MipmapNum
|
// MipmapNum
|
||||||
//
|
//
|
||||||
this.MipmapNum.Location = new System.Drawing.Point(774, 130);
|
this.MipmapNum.Location = new System.Drawing.Point(772, 122);
|
||||||
this.MipmapNum.Maximum = new decimal(new int[] {
|
this.MipmapNum.Maximum = new decimal(new int[] {
|
||||||
13,
|
13,
|
||||||
0,
|
0,
|
||||||
@ -459,7 +473,7 @@ namespace FirstPlugin
|
|||||||
// WidthLabel
|
// WidthLabel
|
||||||
//
|
//
|
||||||
this.WidthLabel.AutoSize = true;
|
this.WidthLabel.AutoSize = true;
|
||||||
this.WidthLabel.Location = new System.Drawing.Point(666, 235);
|
this.WidthLabel.Location = new System.Drawing.Point(664, 225);
|
||||||
this.WidthLabel.Name = "WidthLabel";
|
this.WidthLabel.Name = "WidthLabel";
|
||||||
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
||||||
this.WidthLabel.TabIndex = 35;
|
this.WidthLabel.TabIndex = 35;
|
||||||
@ -468,7 +482,7 @@ namespace FirstPlugin
|
|||||||
// HeightLabel
|
// HeightLabel
|
||||||
//
|
//
|
||||||
this.HeightLabel.AutoSize = true;
|
this.HeightLabel.AutoSize = true;
|
||||||
this.HeightLabel.Location = new System.Drawing.Point(666, 200);
|
this.HeightLabel.Location = new System.Drawing.Point(664, 188);
|
||||||
this.HeightLabel.Name = "HeightLabel";
|
this.HeightLabel.Name = "HeightLabel";
|
||||||
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
||||||
this.HeightLabel.TabIndex = 34;
|
this.HeightLabel.TabIndex = 34;
|
||||||
@ -547,6 +561,15 @@ namespace FirstPlugin
|
|||||||
this.pictureBox1.TabIndex = 33;
|
this.pictureBox1.TabIndex = 33;
|
||||||
this.pictureBox1.TabStop = false;
|
this.pictureBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// dataSizeLbl
|
||||||
|
//
|
||||||
|
this.dataSizeLbl.AutoSize = true;
|
||||||
|
this.dataSizeLbl.Location = new System.Drawing.Point(664, 262);
|
||||||
|
this.dataSizeLbl.Name = "dataSizeLbl";
|
||||||
|
this.dataSizeLbl.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.dataSizeLbl.TabIndex = 45;
|
||||||
|
this.dataSizeLbl.Text = "Data Size:";
|
||||||
|
//
|
||||||
// GTXTextureImporter
|
// GTXTextureImporter
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -1293,18 +1293,19 @@ namespace Toolbox.Library
|
|||||||
GenericTextureImporterList importer = new GenericTextureImporterList(SupportedFormats);
|
GenericTextureImporterList importer = new GenericTextureImporterList(SupportedFormats);
|
||||||
GenericTextureImporterSettings settings = new GenericTextureImporterSettings();
|
GenericTextureImporterSettings settings = new GenericTextureImporterSettings();
|
||||||
|
|
||||||
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
|
||||||
|
|
||||||
if (Utils.GetExtension(FileName) == ".dds" ||
|
if (Utils.GetExtension(FileName) == ".dds" ||
|
||||||
Utils.GetExtension(FileName) == ".dds2")
|
Utils.GetExtension(FileName) == ".dds2")
|
||||||
{
|
{
|
||||||
settings.LoadDDS(FileName);
|
settings.LoadDDS(FileName);
|
||||||
|
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
||||||
ApplySettings(settings);
|
ApplySettings(settings);
|
||||||
UpdateEditor();
|
UpdateEditor();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
settings.LoadBitMap(FileName);
|
settings.LoadBitMap(FileName);
|
||||||
|
importer.LoadSettings(new List<GenericTextureImporterSettings>() { settings, });
|
||||||
|
|
||||||
if (importer.ShowDialog() == DialogResult.OK)
|
if (importer.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
|
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
|
||||||
|
@ -1266,9 +1266,9 @@ namespace Toolbox.Library.Forms
|
|||||||
if (pictureBoxCustom1.Image != null)
|
if (pictureBoxCustom1.Image != null)
|
||||||
{
|
{
|
||||||
if (Runtime.ImageEditor.EnableImageZoom)
|
if (Runtime.ImageEditor.EnableImageZoom)
|
||||||
bottomLabel.Text = $"Zoom: {pictureBoxCustom1.Zoom}% Image {pictureBoxCustom1.Image.Width} x {pictureBoxCustom1.Image.Height}";
|
bottomLabel.Text = $"Zoom: {pictureBoxCustom1.Zoom}% Image {pictureBoxCustom1.Image.Width} x {pictureBoxCustom1.Image.Height} Data Size: {ActiveTexture.DataSize}";
|
||||||
else
|
else
|
||||||
bottomLabel.Text = $"Zoom: 100% Image {pictureBoxCustom1.Image.Width} x {pictureBoxCustom1.Image.Height}";
|
bottomLabel.Text = $"Zoom: 100% Image {pictureBoxCustom1.Image.Width} x {pictureBoxCustom1.Image.Height} Data Size: {ActiveTexture.DataSize}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace Toolbox.Library.Forms
|
|||||||
public int SelectedIndex = -1;
|
public int SelectedIndex = -1;
|
||||||
|
|
||||||
public bool OverrideMipCounter = false;
|
public bool OverrideMipCounter = false;
|
||||||
|
private STLabel dataSizeLbl;
|
||||||
bool IsLoaded = false;
|
bool IsLoaded = false;
|
||||||
public CTR_3DSTextureImporter()
|
public CTR_3DSTextureImporter()
|
||||||
{
|
{
|
||||||
@ -126,15 +126,18 @@ namespace Toolbox.Library.Forms
|
|||||||
|
|
||||||
bitmap = CTR_3DS.DecodeBlockToBitmap(mips[0], (int)SelectedTexSettings.TexWidth, (int)SelectedTexSettings.TexHeight, SelectedTexSettings.Format);
|
bitmap = CTR_3DS.DecodeBlockToBitmap(mips[0], (int)SelectedTexSettings.TexWidth, (int)SelectedTexSettings.TexHeight, SelectedTexSettings.Format);
|
||||||
|
|
||||||
mips.Clear();
|
|
||||||
|
|
||||||
if (pictureBox1.InvokeRequired)
|
if (pictureBox1.InvokeRequired)
|
||||||
{
|
{
|
||||||
pictureBox1.Invoke((MethodInvoker)delegate {
|
pictureBox1.Invoke((MethodInvoker)delegate {
|
||||||
pictureBox1.Image = bitmap;
|
pictureBox1.Image = bitmap;
|
||||||
pictureBox1.Refresh();
|
pictureBox1.Refresh();
|
||||||
|
|
||||||
|
int size = Utils.GetSizeInBytes(mips);
|
||||||
|
dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mips.Clear();
|
||||||
}));
|
}));
|
||||||
Thread.Start();
|
Thread.Start();
|
||||||
}
|
}
|
||||||
@ -211,7 +214,6 @@ namespace Toolbox.Library.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CTR_3DSTextureImporter));
|
|
||||||
this.ImgDimComb = new Toolbox.Library.Forms.STComboBox();
|
this.ImgDimComb = new Toolbox.Library.Forms.STComboBox();
|
||||||
this.label3 = new Toolbox.Library.Forms.STLabel();
|
this.label3 = new Toolbox.Library.Forms.STLabel();
|
||||||
this.label2 = new Toolbox.Library.Forms.STLabel();
|
this.label2 = new Toolbox.Library.Forms.STLabel();
|
||||||
@ -226,6 +228,7 @@ namespace Toolbox.Library.Forms
|
|||||||
this.button2 = new Toolbox.Library.Forms.STButton();
|
this.button2 = new Toolbox.Library.Forms.STButton();
|
||||||
this.button1 = new Toolbox.Library.Forms.STButton();
|
this.button1 = new Toolbox.Library.Forms.STButton();
|
||||||
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
||||||
|
this.dataSizeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
this.contentContainer.SuspendLayout();
|
this.contentContainer.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
@ -233,6 +236,7 @@ namespace Toolbox.Library.Forms
|
|||||||
//
|
//
|
||||||
// contentContainer
|
// contentContainer
|
||||||
//
|
//
|
||||||
|
this.contentContainer.Controls.Add(this.dataSizeLbl);
|
||||||
this.contentContainer.Controls.Add(this.ImgDimComb);
|
this.contentContainer.Controls.Add(this.ImgDimComb);
|
||||||
this.contentContainer.Controls.Add(this.label3);
|
this.contentContainer.Controls.Add(this.label3);
|
||||||
this.contentContainer.Controls.Add(this.label2);
|
this.contentContainer.Controls.Add(this.label2);
|
||||||
@ -258,6 +262,7 @@ namespace Toolbox.Library.Forms
|
|||||||
this.contentContainer.Controls.SetChildIndex(this.label2, 0);
|
this.contentContainer.Controls.SetChildIndex(this.label2, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.label3, 0);
|
this.contentContainer.Controls.SetChildIndex(this.label3, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.ImgDimComb, 0);
|
this.contentContainer.Controls.SetChildIndex(this.ImgDimComb, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.dataSizeLbl, 0);
|
||||||
//
|
//
|
||||||
// ImgDimComb
|
// ImgDimComb
|
||||||
//
|
//
|
||||||
@ -393,7 +398,7 @@ namespace Toolbox.Library.Forms
|
|||||||
// pictureBox1
|
// pictureBox1
|
||||||
//
|
//
|
||||||
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
|
this.pictureBox1.BackgroundImage = global::Toolbox.Library.Properties.Resources.CheckerBackground;
|
||||||
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
|
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||||
this.pictureBox1.Location = new System.Drawing.Point(200, 25);
|
this.pictureBox1.Location = new System.Drawing.Point(200, 25);
|
||||||
this.pictureBox1.Name = "pictureBox1";
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
@ -402,6 +407,15 @@ namespace Toolbox.Library.Forms
|
|||||||
this.pictureBox1.TabIndex = 33;
|
this.pictureBox1.TabIndex = 33;
|
||||||
this.pictureBox1.TabStop = false;
|
this.pictureBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// dataSizeLbl
|
||||||
|
//
|
||||||
|
this.dataSizeLbl.AutoSize = true;
|
||||||
|
this.dataSizeLbl.Location = new System.Drawing.Point(667, 217);
|
||||||
|
this.dataSizeLbl.Name = "dataSizeLbl";
|
||||||
|
this.dataSizeLbl.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.dataSizeLbl.TabIndex = 41;
|
||||||
|
this.dataSizeLbl.Text = "Data Size:";
|
||||||
|
//
|
||||||
// CTR_3DSTextureImporter
|
// CTR_3DSTextureImporter
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -117,212 +117,4 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="pictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
|
||||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
|
|
||||||
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
|
|
||||||
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
|
|
||||||
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
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
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
345
Switch_Toolbox_Library/Forms/Editors/TextureImport/Gamecube/GamecubeTextureImporterList.Designer.cs
generated
Normal file
345
Switch_Toolbox_Library/Forms/Editors/TextureImport/Gamecube/GamecubeTextureImporterList.Designer.cs
generated
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
namespace Toolbox.Library.Forms
|
||||||
|
{
|
||||||
|
partial class GamecubeTextureImporterList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.button2 = new Toolbox.Library.Forms.STButton();
|
||||||
|
this.button1 = new Toolbox.Library.Forms.STButton();
|
||||||
|
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
|
||||||
|
this.Name = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.Format = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.label2 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.label1 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.MipmapNum = new Toolbox.Library.Forms.STNumbericUpDown();
|
||||||
|
this.pictureBox1 = new Toolbox.Library.Forms.PictureBoxCustom();
|
||||||
|
this.formatComboBox = new Toolbox.Library.Forms.STComboBox();
|
||||||
|
this.dataSizeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.stLabel2 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.stLabel3 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.paletteFormatCB = new Toolbox.Library.Forms.STComboBox();
|
||||||
|
this.paletteColorsUD = new Toolbox.Library.Forms.STNumbericUpDown();
|
||||||
|
this.stLabel4 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.stLabel5 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.paletteAlgorithmCB = new Toolbox.Library.Forms.STComboBox();
|
||||||
|
this.HeightLabel = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.WidthLabel = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.contentContainer.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.paletteColorsUD)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// contentContainer
|
||||||
|
//
|
||||||
|
this.contentContainer.Controls.Add(this.stLabel5);
|
||||||
|
this.contentContainer.Controls.Add(this.paletteAlgorithmCB);
|
||||||
|
this.contentContainer.Controls.Add(this.stLabel4);
|
||||||
|
this.contentContainer.Controls.Add(this.paletteColorsUD);
|
||||||
|
this.contentContainer.Controls.Add(this.stLabel3);
|
||||||
|
this.contentContainer.Controls.Add(this.paletteFormatCB);
|
||||||
|
this.contentContainer.Controls.Add(this.stLabel2);
|
||||||
|
this.contentContainer.Controls.Add(this.stLabel1);
|
||||||
|
this.contentContainer.Controls.Add(this.dataSizeLbl);
|
||||||
|
this.contentContainer.Controls.Add(this.label2);
|
||||||
|
this.contentContainer.Controls.Add(this.label1);
|
||||||
|
this.contentContainer.Controls.Add(this.MipmapNum);
|
||||||
|
this.contentContainer.Controls.Add(this.WidthLabel);
|
||||||
|
this.contentContainer.Controls.Add(this.HeightLabel);
|
||||||
|
this.contentContainer.Controls.Add(this.pictureBox1);
|
||||||
|
this.contentContainer.Controls.Add(this.formatComboBox);
|
||||||
|
this.contentContainer.Controls.Add(this.listViewCustom1);
|
||||||
|
this.contentContainer.Controls.Add(this.button2);
|
||||||
|
this.contentContainer.Controls.Add(this.button1);
|
||||||
|
this.contentContainer.Size = new System.Drawing.Size(1092, 557);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.button1, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.button2, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.listViewCustom1, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.formatComboBox, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.pictureBox1, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.HeightLabel, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.WidthLabel, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.MipmapNum, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.label1, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.label2, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.dataSizeLbl, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.stLabel2, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.paletteFormatCB, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.stLabel3, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.paletteColorsUD, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.stLabel4, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.paletteAlgorithmCB, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.stLabel5, 0);
|
||||||
|
//
|
||||||
|
// button2
|
||||||
|
//
|
||||||
|
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button2.Location = new System.Drawing.Point(1009, 517);
|
||||||
|
this.button2.Name = "button2";
|
||||||
|
this.button2.Size = new System.Drawing.Size(79, 33);
|
||||||
|
this.button2.TabIndex = 5;
|
||||||
|
this.button2.Text = "Cancel";
|
||||||
|
this.button2.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// button1
|
||||||
|
//
|
||||||
|
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||||
|
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button1.Location = new System.Drawing.Point(911, 517);
|
||||||
|
this.button1.Name = "button1";
|
||||||
|
this.button1.Size = new System.Drawing.Size(79, 33);
|
||||||
|
this.button1.TabIndex = 4;
|
||||||
|
this.button1.Text = "Ok";
|
||||||
|
this.button1.UseVisualStyleBackColor = true;
|
||||||
|
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||||
|
//
|
||||||
|
// listViewCustom1
|
||||||
|
//
|
||||||
|
this.listViewCustom1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.listViewCustom1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||||
|
this.Name,
|
||||||
|
this.Format});
|
||||||
|
this.listViewCustom1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||||
|
this.listViewCustom1.Location = new System.Drawing.Point(0, 25);
|
||||||
|
this.listViewCustom1.Name = "listViewCustom1";
|
||||||
|
this.listViewCustom1.OwnerDraw = true;
|
||||||
|
this.listViewCustom1.Size = new System.Drawing.Size(237, 532);
|
||||||
|
this.listViewCustom1.TabIndex = 6;
|
||||||
|
this.listViewCustom1.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.listViewCustom1.View = System.Windows.Forms.View.Details;
|
||||||
|
this.listViewCustom1.SelectedIndexChanged += new System.EventHandler(this.listViewCustom1_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// Name
|
||||||
|
//
|
||||||
|
this.Name.Text = "Name";
|
||||||
|
this.Name.Width = 104;
|
||||||
|
//
|
||||||
|
// Format
|
||||||
|
//
|
||||||
|
this.Format.Text = "Format";
|
||||||
|
this.Format.Width = 133;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(784, 67);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(39, 13);
|
||||||
|
this.label2.TabIndex = 22;
|
||||||
|
this.label2.Text = "Format";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Location = new System.Drawing.Point(781, 103);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(58, 13);
|
||||||
|
this.label1.TabIndex = 21;
|
||||||
|
this.label1.Text = "Mip Count:";
|
||||||
|
//
|
||||||
|
// MipmapNum
|
||||||
|
//
|
||||||
|
this.MipmapNum.Location = new System.Drawing.Point(841, 101);
|
||||||
|
this.MipmapNum.Name = "MipmapNum";
|
||||||
|
this.MipmapNum.Size = new System.Drawing.Size(133, 20);
|
||||||
|
this.MipmapNum.TabIndex = 20;
|
||||||
|
this.MipmapNum.ValueChanged += new System.EventHandler(this.MipmapNum_ValueChanged);
|
||||||
|
//
|
||||||
|
// pictureBox1
|
||||||
|
//
|
||||||
|
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.pictureBox1.BackgroundImage = global::Toolbox.Library.Properties.Resources.CheckerBackground;
|
||||||
|
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||||
|
this.pictureBox1.Location = new System.Drawing.Point(237, 25);
|
||||||
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
|
this.pictureBox1.Size = new System.Drawing.Size(513, 532);
|
||||||
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox1.TabIndex = 17;
|
||||||
|
this.pictureBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// formatComboBox
|
||||||
|
//
|
||||||
|
this.formatComboBox.BorderColor = System.Drawing.Color.Empty;
|
||||||
|
this.formatComboBox.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
|
this.formatComboBox.ButtonColor = System.Drawing.Color.Empty;
|
||||||
|
this.formatComboBox.FormattingEnabled = true;
|
||||||
|
this.formatComboBox.Location = new System.Drawing.Point(841, 64);
|
||||||
|
this.formatComboBox.Name = "formatComboBox";
|
||||||
|
this.formatComboBox.ReadOnly = true;
|
||||||
|
this.formatComboBox.Size = new System.Drawing.Size(133, 21);
|
||||||
|
this.formatComboBox.TabIndex = 16;
|
||||||
|
this.formatComboBox.SelectedIndexChanged += new System.EventHandler(this.formatComboBox_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// dataSizeLbl
|
||||||
|
//
|
||||||
|
this.dataSizeLbl.AutoSize = true;
|
||||||
|
this.dataSizeLbl.Location = new System.Drawing.Point(756, 363);
|
||||||
|
this.dataSizeLbl.Name = "dataSizeLbl";
|
||||||
|
this.dataSizeLbl.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.dataSizeLbl.TabIndex = 31;
|
||||||
|
this.dataSizeLbl.Text = "Data Size:";
|
||||||
|
//
|
||||||
|
// stLabel1
|
||||||
|
//
|
||||||
|
this.stLabel1.AutoSize = true;
|
||||||
|
this.stLabel1.Location = new System.Drawing.Point(756, 38);
|
||||||
|
this.stLabel1.Name = "stLabel1";
|
||||||
|
this.stLabel1.Size = new System.Drawing.Size(36, 13);
|
||||||
|
this.stLabel1.TabIndex = 32;
|
||||||
|
this.stLabel1.Text = "Image";
|
||||||
|
//
|
||||||
|
// stLabel2
|
||||||
|
//
|
||||||
|
this.stLabel2.AutoSize = true;
|
||||||
|
this.stLabel2.Location = new System.Drawing.Point(756, 133);
|
||||||
|
this.stLabel2.Name = "stLabel2";
|
||||||
|
this.stLabel2.Size = new System.Drawing.Size(43, 13);
|
||||||
|
this.stLabel2.TabIndex = 33;
|
||||||
|
this.stLabel2.Text = "Palette:";
|
||||||
|
//
|
||||||
|
// stLabel3
|
||||||
|
//
|
||||||
|
this.stLabel3.AutoSize = true;
|
||||||
|
this.stLabel3.Location = new System.Drawing.Point(784, 168);
|
||||||
|
this.stLabel3.Name = "stLabel3";
|
||||||
|
this.stLabel3.Size = new System.Drawing.Size(42, 13);
|
||||||
|
this.stLabel3.TabIndex = 35;
|
||||||
|
this.stLabel3.Text = "Format:";
|
||||||
|
//
|
||||||
|
// paletteFormatCB
|
||||||
|
//
|
||||||
|
this.paletteFormatCB.BorderColor = System.Drawing.Color.Empty;
|
||||||
|
this.paletteFormatCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
|
this.paletteFormatCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
|
this.paletteFormatCB.FormattingEnabled = true;
|
||||||
|
this.paletteFormatCB.Location = new System.Drawing.Point(844, 165);
|
||||||
|
this.paletteFormatCB.Name = "paletteFormatCB";
|
||||||
|
this.paletteFormatCB.ReadOnly = true;
|
||||||
|
this.paletteFormatCB.Size = new System.Drawing.Size(130, 21);
|
||||||
|
this.paletteFormatCB.TabIndex = 34;
|
||||||
|
this.paletteFormatCB.SelectedIndexChanged += new System.EventHandler(this.paletteFormatCB_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// paletteColorsUD
|
||||||
|
//
|
||||||
|
this.paletteColorsUD.Location = new System.Drawing.Point(844, 202);
|
||||||
|
this.paletteColorsUD.Name = "paletteColorsUD";
|
||||||
|
this.paletteColorsUD.Size = new System.Drawing.Size(130, 20);
|
||||||
|
this.paletteColorsUD.TabIndex = 36;
|
||||||
|
//
|
||||||
|
// stLabel4
|
||||||
|
//
|
||||||
|
this.stLabel4.AutoSize = true;
|
||||||
|
this.stLabel4.Location = new System.Drawing.Point(784, 204);
|
||||||
|
this.stLabel4.Name = "stLabel4";
|
||||||
|
this.stLabel4.Size = new System.Drawing.Size(39, 13);
|
||||||
|
this.stLabel4.TabIndex = 37;
|
||||||
|
this.stLabel4.Text = "Colors:";
|
||||||
|
//
|
||||||
|
// stLabel5
|
||||||
|
//
|
||||||
|
this.stLabel5.AutoSize = true;
|
||||||
|
this.stLabel5.Location = new System.Drawing.Point(784, 242);
|
||||||
|
this.stLabel5.Name = "stLabel5";
|
||||||
|
this.stLabel5.Size = new System.Drawing.Size(50, 13);
|
||||||
|
this.stLabel5.TabIndex = 39;
|
||||||
|
this.stLabel5.Text = "Algorithm";
|
||||||
|
//
|
||||||
|
// paletteAlgorithmCB
|
||||||
|
//
|
||||||
|
this.paletteAlgorithmCB.BorderColor = System.Drawing.Color.Empty;
|
||||||
|
this.paletteAlgorithmCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
|
this.paletteAlgorithmCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
|
this.paletteAlgorithmCB.FormattingEnabled = true;
|
||||||
|
this.paletteAlgorithmCB.Location = new System.Drawing.Point(844, 239);
|
||||||
|
this.paletteAlgorithmCB.Name = "paletteAlgorithmCB";
|
||||||
|
this.paletteAlgorithmCB.ReadOnly = true;
|
||||||
|
this.paletteAlgorithmCB.Size = new System.Drawing.Size(133, 21);
|
||||||
|
this.paletteAlgorithmCB.TabIndex = 38;
|
||||||
|
//
|
||||||
|
// HeightLabel
|
||||||
|
//
|
||||||
|
this.HeightLabel.AutoSize = true;
|
||||||
|
this.HeightLabel.Location = new System.Drawing.Point(756, 293);
|
||||||
|
this.HeightLabel.Name = "HeightLabel";
|
||||||
|
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
||||||
|
this.HeightLabel.TabIndex = 18;
|
||||||
|
this.HeightLabel.Text = "Height";
|
||||||
|
//
|
||||||
|
// WidthLabel
|
||||||
|
//
|
||||||
|
this.WidthLabel.AutoSize = true;
|
||||||
|
this.WidthLabel.Location = new System.Drawing.Point(756, 328);
|
||||||
|
this.WidthLabel.Name = "WidthLabel";
|
||||||
|
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
||||||
|
this.WidthLabel.TabIndex = 19;
|
||||||
|
this.WidthLabel.Text = "Width";
|
||||||
|
//
|
||||||
|
// GamecubeTextureImporterList
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(1096, 560);
|
||||||
|
this.KeyPreview = true;
|
||||||
|
this.Text = "Texture Importer";
|
||||||
|
this.Load += new System.EventHandler(this.BinaryTextureImporterList_Load);
|
||||||
|
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.BinaryTextureImporterList_KeyDown);
|
||||||
|
this.contentContainer.ResumeLayout(false);
|
||||||
|
this.contentContainer.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.paletteColorsUD)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
private Toolbox.Library.Forms.STButton button2;
|
||||||
|
private Toolbox.Library.Forms.STButton button1;
|
||||||
|
private Toolbox.Library.Forms.ListViewCustom listViewCustom1;
|
||||||
|
private Toolbox.Library.Forms.STLabel label2;
|
||||||
|
private Toolbox.Library.Forms.STLabel label1;
|
||||||
|
private Toolbox.Library.Forms.STNumbericUpDown MipmapNum;
|
||||||
|
private Toolbox.Library.Forms.PictureBoxCustom pictureBox1;
|
||||||
|
private Toolbox.Library.Forms.STComboBox formatComboBox;
|
||||||
|
private System.Windows.Forms.ColumnHeader Name;
|
||||||
|
private System.Windows.Forms.ColumnHeader Format;
|
||||||
|
private STLabel dataSizeLbl;
|
||||||
|
private STLabel stLabel4;
|
||||||
|
private STNumbericUpDown paletteColorsUD;
|
||||||
|
private STLabel stLabel3;
|
||||||
|
private STComboBox paletteFormatCB;
|
||||||
|
private STLabel stLabel2;
|
||||||
|
private STLabel stLabel1;
|
||||||
|
private STLabel stLabel5;
|
||||||
|
private STComboBox paletteAlgorithmCB;
|
||||||
|
private STLabel WidthLabel;
|
||||||
|
private STLabel HeightLabel;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,293 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Toolbox.Library.Forms
|
||||||
|
{
|
||||||
|
public partial class GamecubeTextureImporterList : STForm
|
||||||
|
{
|
||||||
|
public int SelectedIndex = -1;
|
||||||
|
public bool ForceMipCount = false;
|
||||||
|
|
||||||
|
public uint SelectedMipCount
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (MipmapNum.Maximum <= value)
|
||||||
|
MipmapNum.Value = value;
|
||||||
|
}
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (uint)MipmapNum.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsLoaded = false;
|
||||||
|
|
||||||
|
public GamecubeTextureImporterList(TEX_FORMAT[] SupportedFormats)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
CanResize = false;
|
||||||
|
|
||||||
|
listViewCustom1.FullRowSelect = true;
|
||||||
|
listViewCustom1.CanResizeList = true;
|
||||||
|
|
||||||
|
//Add enums
|
||||||
|
foreach (TEX_FORMAT format in SupportedFormats)
|
||||||
|
{
|
||||||
|
formatComboBox.Items.Add(Decode_Gamecube.FromGenericFormat(format));
|
||||||
|
}
|
||||||
|
|
||||||
|
paletteFormatCB.Items.Add(Decode_Gamecube.PaletteFormats.IA8);
|
||||||
|
paletteFormatCB.Items.Add(Decode_Gamecube.PaletteFormats.RGB565);
|
||||||
|
paletteFormatCB.Items.Add(Decode_Gamecube.PaletteFormats.RGB5A3);
|
||||||
|
|
||||||
|
paletteFormatCB.SelectedIndex = 1;
|
||||||
|
|
||||||
|
paletteColorsUD.Maximum = 256;
|
||||||
|
paletteColorsUD.Minimum = 16;
|
||||||
|
paletteColorsUD.Value = 256;
|
||||||
|
|
||||||
|
paletteAlgorithmCB.Items.Add("MedianCut");
|
||||||
|
paletteAlgorithmCB.SelectedIndex = 0;
|
||||||
|
|
||||||
|
formatComboBox.SelectedIndex = 0;
|
||||||
|
|
||||||
|
IsLoaded = true;
|
||||||
|
|
||||||
|
button1.Select();
|
||||||
|
}
|
||||||
|
GameCubeTextureImporterSettings SelectedTexSettings;
|
||||||
|
|
||||||
|
public List<GameCubeTextureImporterSettings> settings = new List<GameCubeTextureImporterSettings>();
|
||||||
|
public void LoadSetting(GameCubeTextureImporterSettings setting)
|
||||||
|
{
|
||||||
|
settings.Add(setting);
|
||||||
|
|
||||||
|
listViewCustom1.Items.Add(setting.TexName).SubItems.Add(setting.Format.ToString());
|
||||||
|
listViewCustom1.Items[0].Selected = true;
|
||||||
|
listViewCustom1.Select();
|
||||||
|
}
|
||||||
|
public void LoadSettings(List<GameCubeTextureImporterSettings> s)
|
||||||
|
{
|
||||||
|
settings = s;
|
||||||
|
|
||||||
|
foreach (var setting in settings)
|
||||||
|
{
|
||||||
|
listViewCustom1.Items.Add(setting.TexName).SubItems.Add(setting.Format.ToString());
|
||||||
|
}
|
||||||
|
listViewCustom1.Items[0].Selected = true;
|
||||||
|
listViewCustom1.Select();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Thread Thread;
|
||||||
|
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();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleOkButton(bool Enable)
|
||||||
|
{
|
||||||
|
if (button1.InvokeRequired)
|
||||||
|
{
|
||||||
|
button1.Invoke((MethodInvoker)delegate {
|
||||||
|
button1.Enabled = Enable;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
button1.Enabled = Enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void button1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void formatComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (listViewCustom1.SelectedItems.Count > 1)
|
||||||
|
{
|
||||||
|
foreach (int index in listViewCustom1.SelectedIndices)
|
||||||
|
{
|
||||||
|
if (formatComboBox.SelectedItem is Decode_Gamecube.TextureFormats)
|
||||||
|
{
|
||||||
|
settings[index].Format = (Decode_Gamecube.TextureFormats)formatComboBox.SelectedItem;
|
||||||
|
listViewCustom1.Items[index].SubItems[1].Text = settings[index].Format.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
else if (formatComboBox.SelectedIndex > -1 && SelectedTexSettings != null)
|
||||||
|
{
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void paletteFormatCB_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (listViewCustom1.SelectedItems.Count > 1)
|
||||||
|
{
|
||||||
|
foreach (int index in listViewCustom1.SelectedIndices)
|
||||||
|
{
|
||||||
|
if (paletteFormatCB.SelectedItem is Decode_Gamecube.PaletteFormats)
|
||||||
|
{
|
||||||
|
settings[index].PaletteFormat = (Decode_Gamecube.PaletteFormats)paletteFormatCB.SelectedItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
else if (paletteFormatCB.SelectedIndex > -1 && SelectedTexSettings != null)
|
||||||
|
{
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (listViewCustom1.SelectedItems.Count == 1)
|
||||||
|
{
|
||||||
|
SelectedIndex = listViewCustom1.SelectedIndices[0];
|
||||||
|
|
||||||
|
SelectedTexSettings = settings[listViewCustom1.SelectedIndices[0]];
|
||||||
|
formatComboBox.SelectedItem = SelectedTexSettings.Format;
|
||||||
|
|
||||||
|
SetupSettings();
|
||||||
|
|
||||||
|
if (ForceMipCount)
|
||||||
|
MipmapNum.Maximum = SelectedTexSettings.MipCount;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MipmapNum.Maximum = STGenericTexture.GenerateTotalMipCount(
|
||||||
|
SelectedTexSettings.TexWidth, SelectedTexSettings.TexHeight) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
MipmapNum.Value = SelectedTexSettings.MipCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BinaryTextureImporterList_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MipmapNum_ValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsLoaded)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (MipmapNum.Value > 0)
|
||||||
|
SelectedTexSettings.MipCount = (uint)MipmapNum.Value;
|
||||||
|
else
|
||||||
|
SelectedTexSettings.MipCount = 1;
|
||||||
|
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BinaryTextureImporterList_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.KeyCode == Keys.Enter)
|
||||||
|
{
|
||||||
|
if (button1.Enabled)
|
||||||
|
{
|
||||||
|
DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void compressionModeCB_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (formatComboBox.SelectedIndex > -1 && SelectedTexSettings != null)
|
||||||
|
{
|
||||||
|
SetupSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ImgDimComb_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
@ -0,0 +1,171 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Toolbox.Library;
|
||||||
|
using Toolbox.Library.IO;
|
||||||
|
|
||||||
|
namespace Toolbox.Library.Forms
|
||||||
|
{
|
||||||
|
public class GameCubeTextureImporterSettings
|
||||||
|
{
|
||||||
|
public GameCubeTextureImporterSettings()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string TexName;
|
||||||
|
|
||||||
|
public uint MipCount;
|
||||||
|
|
||||||
|
public uint Depth = 1;
|
||||||
|
|
||||||
|
public uint TexWidth;
|
||||||
|
|
||||||
|
public uint TexHeight;
|
||||||
|
|
||||||
|
public Decode_Gamecube.TextureFormats Format = Decode_Gamecube.TextureFormats.CMPR;
|
||||||
|
public Decode_Gamecube.PaletteFormats PaletteFormat = Decode_Gamecube.PaletteFormats.RGB565;
|
||||||
|
|
||||||
|
public TEX_FORMAT GenericFormat
|
||||||
|
{
|
||||||
|
get { return Decode_Gamecube.ToGenericFormat(Format); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public PALETTE_FORMAT GenericPaletteFormat
|
||||||
|
{
|
||||||
|
get { return Decode_Gamecube.ToGenericPaletteFormat(PaletteFormat); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public STChannelType RedComp = STChannelType.Red;
|
||||||
|
public STChannelType GreenComp = STChannelType.Green;
|
||||||
|
public STChannelType BlueComp = STChannelType.Blue;
|
||||||
|
public STChannelType AlphaComp = STChannelType.Alpha;
|
||||||
|
|
||||||
|
public List<byte[]> DataBlockOutput = new List<byte[]>();
|
||||||
|
public List<byte[]> DecompressedData = new List<byte[]>();
|
||||||
|
|
||||||
|
public bool GenerateMipmaps = false; //If bitmap and count more that 1 then generate
|
||||||
|
public float alphaRef = 0.5f;
|
||||||
|
|
||||||
|
public bool IsFinishedCompressing = false;
|
||||||
|
|
||||||
|
public void LoadDDS(string FileName, byte[] FileData = null)
|
||||||
|
{
|
||||||
|
TexName = STGenericTexture.SetNameFromPath(FileName);
|
||||||
|
|
||||||
|
DDS dds = new DDS();
|
||||||
|
|
||||||
|
if (FileData != null)
|
||||||
|
dds.Load(new FileReader(new MemoryStream(FileData)));
|
||||||
|
else
|
||||||
|
dds.Load(new FileReader(FileName));
|
||||||
|
MipCount = dds.header.mipmapCount;
|
||||||
|
TexWidth = dds.header.width;
|
||||||
|
TexHeight = dds.header.height;
|
||||||
|
|
||||||
|
var surfaces = DDS.GetArrayFaces(dds, dds.ArrayCount);
|
||||||
|
|
||||||
|
RedComp = dds.RedChannel;
|
||||||
|
GreenComp = dds.GreenChannel;
|
||||||
|
BlueComp = dds.BlueChannel;
|
||||||
|
AlphaComp = dds.AlphaChannel;
|
||||||
|
|
||||||
|
foreach (var surface in surfaces)
|
||||||
|
DataBlockOutput.Add(Utils.CombineByteArray(surface.mipmaps.ToArray()));
|
||||||
|
|
||||||
|
Format = Decode_Gamecube.FromGenericFormat(dds.Format);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadBitMap(Image Image, string Name)
|
||||||
|
{
|
||||||
|
DecompressedData.Clear();
|
||||||
|
|
||||||
|
TexName = STGenericTexture.SetNameFromPath(Name);
|
||||||
|
|
||||||
|
Format = Decode_Gamecube.TextureFormats.CMPR;
|
||||||
|
|
||||||
|
GenerateMipmaps = true;
|
||||||
|
LoadImage(new Bitmap(Image));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadBitMap(string FileName)
|
||||||
|
{
|
||||||
|
DecompressedData.Clear();
|
||||||
|
|
||||||
|
TexName = STGenericTexture.SetNameFromPath(FileName);
|
||||||
|
|
||||||
|
Format = Decode_Gamecube.TextureFormats.CMPR;
|
||||||
|
|
||||||
|
GenerateMipmaps = true;
|
||||||
|
|
||||||
|
//If a texture is .tga, we need to convert it
|
||||||
|
Bitmap Image = null;
|
||||||
|
if (Utils.GetExtension(FileName) == ".tga")
|
||||||
|
{
|
||||||
|
Image = Paloma.TargaImage.LoadTargaImage(FileName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Image = new Bitmap(FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadImage(Image);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadImage(Bitmap Image)
|
||||||
|
{
|
||||||
|
TexWidth = (uint)Image.Width;
|
||||||
|
TexHeight = (uint)Image.Height;
|
||||||
|
MipCount = (uint)STGenericTexture.GenerateTotalMipCount(TexWidth, TexHeight);
|
||||||
|
|
||||||
|
DecompressedData.Add(BitmapExtension.ImageToByte(Image));
|
||||||
|
|
||||||
|
Image.Dispose();
|
||||||
|
if (DecompressedData.Count == 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Failed to load " + Format);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Tuple<List<byte[]>, ushort[]> GenerateMipList(int SurfaceLevel = 0)
|
||||||
|
{
|
||||||
|
Bitmap Image = BitmapExtension.GetBitmap(DecompressedData[SurfaceLevel], (int)TexWidth, (int)TexHeight);
|
||||||
|
|
||||||
|
ushort[] paletteData = new ushort[0];
|
||||||
|
|
||||||
|
List<byte[]> mipmaps = new List<byte[]>();
|
||||||
|
for (int mipLevel = 0; mipLevel < MipCount; mipLevel++)
|
||||||
|
{
|
||||||
|
int MipWidth = Math.Max(1, (int)TexWidth >> mipLevel);
|
||||||
|
int MipHeight = Math.Max(1, (int)TexHeight >> mipLevel);
|
||||||
|
|
||||||
|
if (mipLevel != 0)
|
||||||
|
Image = BitmapExtension.Resize(Image, MipWidth, MipHeight);
|
||||||
|
|
||||||
|
var EncodedData = Decode_Gamecube.EncodeData(BitmapExtension.ImageToByte(Image), Format, PaletteFormat, MipWidth, MipHeight);
|
||||||
|
|
||||||
|
mipmaps.Add(EncodedData.Item1);
|
||||||
|
|
||||||
|
if (mipLevel == 0) //Set palette data once
|
||||||
|
paletteData = EncodedData.Item2;
|
||||||
|
}
|
||||||
|
Image.Dispose();
|
||||||
|
|
||||||
|
return Tuple.Create(mipmaps, paletteData);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Compress()
|
||||||
|
{
|
||||||
|
DataBlockOutput.Clear();
|
||||||
|
foreach (var surface in DecompressedData)
|
||||||
|
{
|
||||||
|
var encodedData = GenerateMipList();
|
||||||
|
DataBlockOutput.Add(Utils.CombineByteArray(encodedData.Item1.ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,6 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GenericTextureImporterSettings));
|
|
||||||
this.button2 = new Toolbox.Library.Forms.STButton();
|
this.button2 = new Toolbox.Library.Forms.STButton();
|
||||||
this.button1 = new Toolbox.Library.Forms.STButton();
|
this.button1 = new Toolbox.Library.Forms.STButton();
|
||||||
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
|
this.listViewCustom1 = new Toolbox.Library.Forms.ListViewCustom();
|
||||||
@ -43,6 +42,7 @@
|
|||||||
this.formatComboBox = new Toolbox.Library.Forms.STComboBox();
|
this.formatComboBox = new Toolbox.Library.Forms.STComboBox();
|
||||||
this.compressionModeCB = new Toolbox.Library.Forms.STComboBox();
|
this.compressionModeCB = new Toolbox.Library.Forms.STComboBox();
|
||||||
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
|
this.stLabel1 = new Toolbox.Library.Forms.STLabel();
|
||||||
|
this.dataSizeLbl = new Toolbox.Library.Forms.STLabel();
|
||||||
this.contentContainer.SuspendLayout();
|
this.contentContainer.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.MipmapNum)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
@ -50,6 +50,7 @@
|
|||||||
//
|
//
|
||||||
// contentContainer
|
// contentContainer
|
||||||
//
|
//
|
||||||
|
this.contentContainer.Controls.Add(this.dataSizeLbl);
|
||||||
this.contentContainer.Controls.Add(this.compressionModeCB);
|
this.contentContainer.Controls.Add(this.compressionModeCB);
|
||||||
this.contentContainer.Controls.Add(this.stLabel1);
|
this.contentContainer.Controls.Add(this.stLabel1);
|
||||||
this.contentContainer.Controls.Add(this.label2);
|
this.contentContainer.Controls.Add(this.label2);
|
||||||
@ -75,6 +76,7 @@
|
|||||||
this.contentContainer.Controls.SetChildIndex(this.label2, 0);
|
this.contentContainer.Controls.SetChildIndex(this.label2, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
|
this.contentContainer.Controls.SetChildIndex(this.stLabel1, 0);
|
||||||
this.contentContainer.Controls.SetChildIndex(this.compressionModeCB, 0);
|
this.contentContainer.Controls.SetChildIndex(this.compressionModeCB, 0);
|
||||||
|
this.contentContainer.Controls.SetChildIndex(this.dataSizeLbl, 0);
|
||||||
//
|
//
|
||||||
// button2
|
// button2
|
||||||
//
|
//
|
||||||
@ -128,7 +130,7 @@
|
|||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(756, 42);
|
this.label2.Location = new System.Drawing.Point(757, 61);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(39, 13);
|
this.label2.Size = new System.Drawing.Size(39, 13);
|
||||||
this.label2.TabIndex = 22;
|
this.label2.TabIndex = 22;
|
||||||
@ -137,15 +139,15 @@
|
|||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(757, 109);
|
this.label1.Location = new System.Drawing.Point(757, 96);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(90, 13);
|
this.label1.Size = new System.Drawing.Size(58, 13);
|
||||||
this.label1.TabIndex = 21;
|
this.label1.TabIndex = 21;
|
||||||
this.label1.Text = "Number MipMaps";
|
this.label1.Text = "Mip Count:";
|
||||||
//
|
//
|
||||||
// MipmapNum
|
// MipmapNum
|
||||||
//
|
//
|
||||||
this.MipmapNum.Location = new System.Drawing.Point(854, 107);
|
this.MipmapNum.Location = new System.Drawing.Point(854, 94);
|
||||||
this.MipmapNum.Name = "MipmapNum";
|
this.MipmapNum.Name = "MipmapNum";
|
||||||
this.MipmapNum.Size = new System.Drawing.Size(130, 20);
|
this.MipmapNum.Size = new System.Drawing.Size(130, 20);
|
||||||
this.MipmapNum.TabIndex = 20;
|
this.MipmapNum.TabIndex = 20;
|
||||||
@ -154,7 +156,7 @@
|
|||||||
// WidthLabel
|
// WidthLabel
|
||||||
//
|
//
|
||||||
this.WidthLabel.AutoSize = true;
|
this.WidthLabel.AutoSize = true;
|
||||||
this.WidthLabel.Location = new System.Drawing.Point(757, 173);
|
this.WidthLabel.Location = new System.Drawing.Point(760, 175);
|
||||||
this.WidthLabel.Name = "WidthLabel";
|
this.WidthLabel.Name = "WidthLabel";
|
||||||
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
this.WidthLabel.Size = new System.Drawing.Size(35, 13);
|
||||||
this.WidthLabel.TabIndex = 19;
|
this.WidthLabel.TabIndex = 19;
|
||||||
@ -163,7 +165,7 @@
|
|||||||
// HeightLabel
|
// HeightLabel
|
||||||
//
|
//
|
||||||
this.HeightLabel.AutoSize = true;
|
this.HeightLabel.AutoSize = true;
|
||||||
this.HeightLabel.Location = new System.Drawing.Point(757, 142);
|
this.HeightLabel.Location = new System.Drawing.Point(757, 138);
|
||||||
this.HeightLabel.Name = "HeightLabel";
|
this.HeightLabel.Name = "HeightLabel";
|
||||||
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
this.HeightLabel.Size = new System.Drawing.Size(38, 13);
|
||||||
this.HeightLabel.TabIndex = 18;
|
this.HeightLabel.TabIndex = 18;
|
||||||
@ -172,7 +174,7 @@
|
|||||||
// pictureBox1
|
// pictureBox1
|
||||||
//
|
//
|
||||||
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.pictureBox1.BackgroundImage = Toolbox.Library.Properties.Resources.CheckerBackground;
|
this.pictureBox1.BackgroundImage = global::Toolbox.Library.Properties.Resources.CheckerBackground;
|
||||||
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
|
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||||
this.pictureBox1.Location = new System.Drawing.Point(237, 25);
|
this.pictureBox1.Location = new System.Drawing.Point(237, 25);
|
||||||
this.pictureBox1.Name = "pictureBox1";
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
@ -187,7 +189,7 @@
|
|||||||
this.formatComboBox.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.formatComboBox.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.formatComboBox.ButtonColor = System.Drawing.Color.Empty;
|
this.formatComboBox.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.formatComboBox.FormattingEnabled = true;
|
this.formatComboBox.FormattingEnabled = true;
|
||||||
this.formatComboBox.Location = new System.Drawing.Point(853, 39);
|
this.formatComboBox.Location = new System.Drawing.Point(854, 58);
|
||||||
this.formatComboBox.Name = "formatComboBox";
|
this.formatComboBox.Name = "formatComboBox";
|
||||||
this.formatComboBox.ReadOnly = true;
|
this.formatComboBox.ReadOnly = true;
|
||||||
this.formatComboBox.Size = new System.Drawing.Size(233, 21);
|
this.formatComboBox.Size = new System.Drawing.Size(233, 21);
|
||||||
@ -200,7 +202,7 @@
|
|||||||
this.compressionModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
this.compressionModeCB.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid;
|
||||||
this.compressionModeCB.ButtonColor = System.Drawing.Color.Empty;
|
this.compressionModeCB.ButtonColor = System.Drawing.Color.Empty;
|
||||||
this.compressionModeCB.FormattingEnabled = true;
|
this.compressionModeCB.FormattingEnabled = true;
|
||||||
this.compressionModeCB.Location = new System.Drawing.Point(854, 72);
|
this.compressionModeCB.Location = new System.Drawing.Point(854, 31);
|
||||||
this.compressionModeCB.Name = "compressionModeCB";
|
this.compressionModeCB.Name = "compressionModeCB";
|
||||||
this.compressionModeCB.ReadOnly = true;
|
this.compressionModeCB.ReadOnly = true;
|
||||||
this.compressionModeCB.Size = new System.Drawing.Size(233, 21);
|
this.compressionModeCB.Size = new System.Drawing.Size(233, 21);
|
||||||
@ -210,13 +212,23 @@
|
|||||||
// stLabel1
|
// stLabel1
|
||||||
//
|
//
|
||||||
this.stLabel1.AutoSize = true;
|
this.stLabel1.AutoSize = true;
|
||||||
this.stLabel1.Location = new System.Drawing.Point(757, 75);
|
this.stLabel1.Location = new System.Drawing.Point(757, 34);
|
||||||
this.stLabel1.Name = "stLabel1";
|
this.stLabel1.Name = "stLabel1";
|
||||||
this.stLabel1.Size = new System.Drawing.Size(100, 13);
|
this.stLabel1.Size = new System.Drawing.Size(100, 13);
|
||||||
this.stLabel1.TabIndex = 29;
|
this.stLabel1.TabIndex = 29;
|
||||||
this.stLabel1.Text = "Compression Mode:";
|
this.stLabel1.Text = "Compression Mode:";
|
||||||
|
this.stLabel1.Click += new System.EventHandler(this.stLabel1_Click);
|
||||||
//
|
//
|
||||||
// BinaryTextureImporterList
|
// dataSizeLbl
|
||||||
|
//
|
||||||
|
this.dataSizeLbl.AutoSize = true;
|
||||||
|
this.dataSizeLbl.Location = new System.Drawing.Point(760, 214);
|
||||||
|
this.dataSizeLbl.Name = "dataSizeLbl";
|
||||||
|
this.dataSizeLbl.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.dataSizeLbl.TabIndex = 31;
|
||||||
|
this.dataSizeLbl.Text = "Data Size:";
|
||||||
|
//
|
||||||
|
// GenericTextureImporterList
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
@ -248,5 +260,6 @@
|
|||||||
private System.Windows.Forms.ColumnHeader Format;
|
private System.Windows.Forms.ColumnHeader Format;
|
||||||
private Toolbox.Library.Forms.STComboBox compressionModeCB;
|
private Toolbox.Library.Forms.STComboBox compressionModeCB;
|
||||||
private Toolbox.Library.Forms.STLabel stLabel1;
|
private Toolbox.Library.Forms.STLabel stLabel1;
|
||||||
|
private STLabel dataSizeLbl;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -146,15 +146,18 @@ namespace Toolbox.Library.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mips.Clear();
|
|
||||||
|
|
||||||
if (pictureBox1.InvokeRequired)
|
if (pictureBox1.InvokeRequired)
|
||||||
{
|
{
|
||||||
pictureBox1.Invoke((MethodInvoker)delegate {
|
pictureBox1.Invoke((MethodInvoker)delegate {
|
||||||
pictureBox1.Image = bitmap;
|
pictureBox1.Image = bitmap;
|
||||||
pictureBox1.Refresh();
|
pictureBox1.Refresh();
|
||||||
|
|
||||||
|
int size = Utils.GetSizeInBytes(mips);
|
||||||
|
dataSizeLbl.Text = $"Data Size: {STMath.GetFileSize(size, 5)}";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mips.Clear();
|
||||||
}));
|
}));
|
||||||
Thread.Start();
|
Thread.Start();
|
||||||
|
|
||||||
@ -262,5 +265,10 @@ namespace Toolbox.Library.Forms
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void stLabel1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,212 +117,4 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="pictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
|
||||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEXMzMzNzc3Ozs7Pz8/Q0NDR0dHS
|
|
||||||
0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm
|
|
||||||
5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6
|
|
||||||
+vr7+/v8/Pz9/f3+/v7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
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
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
@ -100,6 +100,77 @@ namespace Toolbox.Library
|
|||||||
public STChannelType BlueChannel;
|
public STChannelType BlueChannel;
|
||||||
public STChannelType AlphaChannel;
|
public STChannelType AlphaChannel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The total length of all the bytes given from GetImageData.
|
||||||
|
/// </summary>
|
||||||
|
public long DataSizeInBytes
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
long totalSize = 0;
|
||||||
|
|
||||||
|
if (PlatformSwizzle == PlatformSwizzle.Platform_3DS)
|
||||||
|
{
|
||||||
|
for (int arrayLevel = 0; arrayLevel < ArrayCount; arrayLevel++)
|
||||||
|
{
|
||||||
|
for (int mipLevel = 0; mipLevel < MipCount; mipLevel++)
|
||||||
|
{
|
||||||
|
uint width = (uint)Math.Max(1, Width >> mipLevel);
|
||||||
|
uint height = (uint)Math.Max(1, Height >> mipLevel);
|
||||||
|
|
||||||
|
totalSize += CTR_3DS.CalculateLength((int)width, (int)height, CTR_3DS.ConvertToPICAFormat(Format));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PlatformSwizzle == PlatformSwizzle.Platform_Gamecube)
|
||||||
|
{
|
||||||
|
for (int arrayLevel = 0; arrayLevel < ArrayCount; arrayLevel++)
|
||||||
|
{
|
||||||
|
for (int mipLevel = 0; mipLevel < MipCount; mipLevel++)
|
||||||
|
{
|
||||||
|
uint width = (uint)Math.Max(1, Width >> mipLevel);
|
||||||
|
uint height = (uint)Math.Max(1, Height >> mipLevel);
|
||||||
|
|
||||||
|
totalSize += Decode_Gamecube.GetDataSize((uint)Decode_Gamecube.FromGenericFormat(Format), width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FormatTable.ContainsKey(Format))
|
||||||
|
{
|
||||||
|
uint bpp = GetBytesPerPixel(Format);
|
||||||
|
|
||||||
|
for (int arrayLevel = 0; arrayLevel < ArrayCount; arrayLevel++)
|
||||||
|
{
|
||||||
|
for (int mipLevel = 0; mipLevel < MipCount; mipLevel++)
|
||||||
|
{
|
||||||
|
uint width = (uint)Math.Max(1, Width >> mipLevel);
|
||||||
|
uint height = (uint)Math.Max(1, Height >> mipLevel);
|
||||||
|
|
||||||
|
uint size = width * height * bpp;
|
||||||
|
if (IsCompressed(Format))
|
||||||
|
{
|
||||||
|
size = ((width + 3) >> 2) * ((Height + 3) >> 2) * bpp;
|
||||||
|
if (size < bpp)
|
||||||
|
size = bpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
totalSize += size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DataSize { get { return STMath.GetFileSize(DataSizeInBytes, 5); } }
|
||||||
|
|
||||||
public abstract byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0);
|
public abstract byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0);
|
||||||
|
|
||||||
private byte[] paletteData = new byte[0];
|
private byte[] paletteData = new byte[0];
|
||||||
|
@ -92,7 +92,7 @@ namespace Toolbox.Library
|
|||||||
public static System.Drawing.Bitmap DecodeBlockToBitmap(byte[] Input, int Width, int Height, PICASurfaceFormat picaFormat)
|
public static System.Drawing.Bitmap DecodeBlockToBitmap(byte[] Input, int Width, int Height, PICASurfaceFormat picaFormat)
|
||||||
{
|
{
|
||||||
return BitmapExtension.GetBitmap(DecodeBlock(Input, Width, Height, picaFormat),
|
return BitmapExtension.GetBitmap(DecodeBlock(Input, Width, Height, picaFormat),
|
||||||
Width, Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
|
Width, Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] DecodeBlock(byte[] Input, int Width, int Height, TEX_FORMAT Format) {
|
public static byte[] DecodeBlock(byte[] Input, int Width, int Height, TEX_FORMAT Format) {
|
||||||
|
@ -5,6 +5,9 @@ using System.Threading.Tasks;
|
|||||||
using Toolbox.Library.IO;
|
using Toolbox.Library.IO;
|
||||||
using Chadsoft.CTools.Image;
|
using Chadsoft.CTools.Image;
|
||||||
using SuperBMDLib.Util;
|
using SuperBMDLib.Util;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Toolbox.Library
|
namespace Toolbox.Library
|
||||||
{
|
{
|
||||||
@ -154,6 +157,17 @@ namespace Toolbox.Library
|
|||||||
_paletteData = paletteData;
|
_paletteData = paletteData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Load(ushort[] paletteData)
|
||||||
|
{
|
||||||
|
var mem = new System.IO.MemoryStream();
|
||||||
|
using (var writer = new FileWriter(mem))
|
||||||
|
{
|
||||||
|
writer.Write(paletteData);
|
||||||
|
}
|
||||||
|
|
||||||
|
_paletteData = mem.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public void Load(FileReader reader, uint paletteEntryCount)
|
public void Load(FileReader reader, uint paletteEntryCount)
|
||||||
{
|
{
|
||||||
//Files that don't have palettes have an entry count of zero.
|
//Files that don't have palettes have an entry count of zero.
|
||||||
@ -195,18 +209,39 @@ namespace Toolbox.Library
|
|||||||
return Width * Height * GetBpp(Format) / 8;
|
return Width * Height * GetBpp(Format) / 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] DecodeData(byte[] ImageData, byte[] PaletteData, uint width, uint height, TEX_FORMAT format, PALETTE_FORMAT palleteFormat)
|
public static System.Drawing.Bitmap DecodeDataToBitmap(byte[] ImageData, ushort[] PaletteData, uint width, uint height, TextureFormats format, PaletteFormats palleteFormat)
|
||||||
|
{
|
||||||
|
return BitmapExtension.GetBitmap(DecodeData(ImageData, PaletteData, width, height, format, palleteFormat),
|
||||||
|
(int)width, (int)height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static System.Drawing.Bitmap DecodeDataToBitmap(byte[] ImageData, byte[] PaletteData, uint width, uint height, TEX_FORMAT format, PALETTE_FORMAT palleteFormat)
|
||||||
{
|
{
|
||||||
var FormatGC = FromGenericFormat(format);
|
var FormatGC = FromGenericFormat(format);
|
||||||
var PalleteFormatGC = FromGenericPaletteFormat(palleteFormat);
|
var PalleteFormatGC = FromGenericPaletteFormat(palleteFormat);
|
||||||
|
return BitmapExtension.GetBitmap(DecodeData(ImageData, PaletteData, width, height, FormatGC, PalleteFormatGC),
|
||||||
|
(int)width, (int)height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] DecodeData(byte[] ImageData, byte[] PaletteData, uint width, uint height, TEX_FORMAT format, PALETTE_FORMAT palleteFormat) {
|
||||||
|
var FormatGC = FromGenericFormat(format);
|
||||||
|
var PalleteFormatGC = FromGenericPaletteFormat(palleteFormat);
|
||||||
|
return DecodeData(ImageData, PaletteData, width, height, FormatGC, PalleteFormatGC);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] DecodeData(byte[] ImageData, ushort[] PaletteData, uint width, uint height, TextureFormats format, PaletteFormats palleteFormat) {
|
||||||
Palette Palette = new Palette();
|
Palette Palette = new Palette();
|
||||||
Palette.Load(PaletteData);
|
Palette.Load(PaletteData);
|
||||||
|
|
||||||
System.IO.File.WriteAllBytes("PaletteData.bin", PaletteData);
|
return DecodeData(new FileReader(ImageData), width, height, format, Palette, palleteFormat);
|
||||||
|
}
|
||||||
|
|
||||||
Console.WriteLine($"Decoding GC {FormatGC}");
|
public static byte[] DecodeData(byte[] ImageData, byte[] PaletteData, uint width, uint height, TextureFormats format, PaletteFormats palleteFormat)
|
||||||
|
{
|
||||||
|
Palette Palette = new Palette();
|
||||||
|
Palette.Load(PaletteData);
|
||||||
|
|
||||||
return DecodeData(new FileReader(ImageData), width, height, FormatGC, Palette, PalleteFormatGC);
|
return DecodeData(new FileReader(ImageData), width, height, format, Palette, palleteFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static byte[] DecodeData(FileReader stream, uint width, uint height, TextureFormats format, Palette imagePalette, PaletteFormats paletteFormat)
|
private static byte[] DecodeData(FileReader stream, uint width, uint height, TextureFormats format, Palette imagePalette, PaletteFormats paletteFormat)
|
||||||
@ -831,6 +866,21 @@ namespace Toolbox.Library
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public static Tuple<byte[], ushort[]> EncodeFromBitmap(System.Drawing.Bitmap bitmap, TextureFormats Format, PaletteFormats PaletteFormat)
|
||||||
|
{
|
||||||
|
byte[] m_rgbaImageData = new byte[bitmap.Width * bitmap.Height * 4];
|
||||||
|
|
||||||
|
int width = bitmap.Width;
|
||||||
|
int height = bitmap.Height;
|
||||||
|
|
||||||
|
BitmapData dat = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
||||||
|
Marshal.Copy(dat.Scan0, m_rgbaImageData, 0, m_rgbaImageData.Length);
|
||||||
|
bitmap.UnlockBits(dat);
|
||||||
|
bitmap.Dispose();
|
||||||
|
|
||||||
|
return EncodeData(m_rgbaImageData, Format, PaletteFormat, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
#region Encoding
|
#region Encoding
|
||||||
public static Tuple<byte[], ushort[]> EncodeData(byte[] m_rgbaImageData, TextureFormats Format, PaletteFormats PaletteFormat, int Width, int Height)
|
public static Tuple<byte[], ushort[]> EncodeData(byte[] m_rgbaImageData, TextureFormats Format, PaletteFormats PaletteFormat, int Width, int Height)
|
||||||
{
|
{
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -247,6 +247,13 @@
|
|||||||
<Compile Include="Forms\Editors\TextureImport\3DS\CTR_3DSTextureImporter.cs">
|
<Compile Include="Forms\Editors\TextureImport\3DS\CTR_3DSTextureImporter.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\Editors\TextureImport\Gamecube\GamecubeTextureImporterList.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Editors\TextureImport\Gamecube\GamecubeTextureImporterList.Designer.cs">
|
||||||
|
<DependentUpon>GamecubeTextureImporterList.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Editors\TextureImport\Gamecube\GenericTextureImporterSettings.cs" />
|
||||||
<Compile Include="Forms\Editors\TextureImport\GenericTextureImporterList.cs">
|
<Compile Include="Forms\Editors\TextureImport\GenericTextureImporterList.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -962,6 +969,9 @@
|
|||||||
<EmbeddedResource Include="Forms\Editors\TextureImport\3DS\CTR_3DSTextureImporter.resx">
|
<EmbeddedResource Include="Forms\Editors\TextureImport\3DS\CTR_3DSTextureImporter.resx">
|
||||||
<DependentUpon>CTR_3DSTextureImporter.cs</DependentUpon>
|
<DependentUpon>CTR_3DSTextureImporter.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Editors\TextureImport\Gamecube\GamecubeTextureImporterList.resx">
|
||||||
|
<DependentUpon>GamecubeTextureImporterList.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Forms\Editors\TextureImport\GenericTextureImporterList.resx">
|
<EmbeddedResource Include="Forms\Editors\TextureImport\GenericTextureImporterList.resx">
|
||||||
<DependentUpon>GenericTextureImporterList.cs</DependentUpon>
|
<DependentUpon>GenericTextureImporterList.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
@ -23,6 +23,14 @@ namespace Toolbox.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GetSizeInBytes(List<byte[]> bytes)
|
||||||
|
{
|
||||||
|
int length = 0;
|
||||||
|
for (int i = 0; i < bytes.Count; i++)
|
||||||
|
length += bytes[i].Length;
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
public static bool HasInterface(Type objectType, Type interfaceType)
|
public static bool HasInterface(Type objectType, Type interfaceType)
|
||||||
{
|
{
|
||||||
foreach (var inter in objectType.GetInterfaces())
|
foreach (var inter in objectType.GetInterfaces())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user