1
0
mirror of synced 2025-02-20 20:51:35 +01:00

Add support for editing BCFNT and BRFNT images

This commit is contained in:
KillzXGaming 2020-02-14 18:46:06 -05:00
parent c170eb4b19
commit c51958f91d
3 changed files with 106 additions and 42 deletions

View File

@ -40,33 +40,26 @@ namespace FirstPlugin
}
public override bool CanEdit { get; set; } = true;
public override string ExportFilter => FileFilters.GTX;
public override string ReplaceFilter => FileFilters.GTX;
public override void Replace(string FileName)
{
}
public override string ExportFilter => FileFilters.CTR_TEX;
public override string ReplaceFilter => FileFilters.CTR_TEX;
public override TEX_FORMAT[] SupportedFormats
{
get
{
return new TEX_FORMAT[] {
TEX_FORMAT.R8_UNORM,
TEX_FORMAT.BC1_UNORM_SRGB,
TEX_FORMAT.BC1_UNORM,
TEX_FORMAT.BC2_UNORM,
TEX_FORMAT.BC2_UNORM_SRGB,
TEX_FORMAT.BC3_UNORM,
TEX_FORMAT.BC3_UNORM_SRGB,
TEX_FORMAT.BC4_UNORM,
TEX_FORMAT.BC5_UNORM,
TEX_FORMAT.R8G8_UNORM,
TEX_FORMAT.B5G6R5_UNORM,
TEX_FORMAT.B5G5R5A1_UNORM,
TEX_FORMAT.R8G8B8A8_UNORM_SRGB,
TEX_FORMAT.R8G8B8A8_UNORM,
TEX_FORMAT.B5G6R5_UNORM,
TEX_FORMAT.R8G8_UNORM,
TEX_FORMAT.B5G5R5A1_UNORM,
TEX_FORMAT.B4G4R4A4_UNORM,
TEX_FORMAT.LA8,
TEX_FORMAT.HIL08,
TEX_FORMAT.L8,
TEX_FORMAT.A8_UNORM,
TEX_FORMAT.LA4,
TEX_FORMAT.A4,
TEX_FORMAT.ETC1_UNORM,
TEX_FORMAT.ETC1_A4,
};
}
}
@ -86,6 +79,44 @@ namespace FirstPlugin
UpdateEditor();
}
public override void Replace(string FileName)
{
CTR_3DSTextureImporter importer = new CTR_3DSTextureImporter();
CTR_3DSImporterSettings settings = new CTR_3DSImporterSettings();
settings.LoadBitMap(FileName);
importer.LoadSettings(new List<CTR_3DSImporterSettings>() { settings, });
settings.MipCount = 1;
settings.Format = CTR_3DS.ConvertToPICAFormat(Format);
if (importer.ShowDialog() == DialogResult.OK)
{
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
{
settings.DataBlockOutput.Clear();
settings.DataBlockOutput.Add(settings.GenerateMips());
}
ApplySettings(settings);
UpdateEditor();
}
}
private void ApplySettings(CTR_3DSImporterSettings settings)
{
if (this.Width != settings.TexWidth)
throw new Exception("The image should be the same width as the original!");
if (this.Height != settings.TexHeight)
throw new Exception("The image should be the same height as the original!");
this.TextureTGLP.SheetDataList[SheetIndex] = settings.DataBlockOutput[0];
this.TextureTGLP.Format = (ushort)CTR_3DS.ConvertToPICAFormat(settings.GenericFormat);
this.Format = settings.GenericFormat;
this.MipCount = settings.MipCount;
this.Depth = settings.Depth;
this.ArrayCount = (uint)settings.DataBlockOutput.Count;
}
private void UpdateEditor()
{
ImageEditorBase editor = (ImageEditorBase)LibraryGUI.GetActiveContent(typeof(ImageEditorBase));

View File

@ -38,33 +38,25 @@ namespace FirstPlugin
}
public override bool CanEdit { get; set; } = true;
public override string ExportFilter => FileFilters.GTX;
public override string ReplaceFilter => FileFilters.GTX;
public override void Replace(string FileName)
{
}
public override string ExportFilter => FileFilters.REV_TEX;
public override string ReplaceFilter => FileFilters.REV_TEX;
public override TEX_FORMAT[] SupportedFormats
{
get
{
return new TEX_FORMAT[] {
TEX_FORMAT.R8_UNORM,
TEX_FORMAT.BC1_UNORM_SRGB,
TEX_FORMAT.BC1_UNORM,
TEX_FORMAT.BC2_UNORM,
TEX_FORMAT.BC2_UNORM_SRGB,
TEX_FORMAT.BC3_UNORM,
TEX_FORMAT.BC3_UNORM_SRGB,
TEX_FORMAT.BC4_UNORM,
TEX_FORMAT.BC5_UNORM,
TEX_FORMAT.R8G8_UNORM,
TEX_FORMAT.B5G6R5_UNORM,
TEX_FORMAT.B5G5R5A1_UNORM,
TEX_FORMAT.R8G8B8A8_UNORM_SRGB,
TEX_FORMAT.R8G8B8A8_UNORM,
TEX_FORMAT.I4,
TEX_FORMAT.I8,
TEX_FORMAT.IA4,
TEX_FORMAT.IA8,
TEX_FORMAT.RGB565,
TEX_FORMAT.RGB5A3,
TEX_FORMAT.RGBA32,
TEX_FORMAT.C4,
TEX_FORMAT.C8,
TEX_FORMAT.C14X2,
TEX_FORMAT.CMPR,
};
}
}
@ -79,6 +71,44 @@ namespace FirstPlugin
return TextureTGLP.SheetDataList[SheetIndex];
}
public override void Replace(string FileName)
{
GamecubeTextureImporterList importer = new GamecubeTextureImporterList(SupportedFormats);
GameCubeTextureImporterSettings settings = new GameCubeTextureImporterSettings();
importer.ForceMipCount = true;
importer.SelectedMipCount = 1;
settings.LoadBitMap(FileName);
importer.LoadSettings(new List<GameCubeTextureImporterSettings>() { settings, });
settings.MipCount = 1;
settings.Format = Decode_Gamecube.FromGenericFormat(Format);
if (importer.ShowDialog() == DialogResult.OK)
{
if (settings.GenerateMipmaps && !settings.IsFinishedCompressing)
settings.Compress();
ApplySettings(settings);
UpdateEditor();
}
}
private void ApplySettings(GameCubeTextureImporterSettings settings)
{
if (this.Width != settings.TexWidth)
throw new Exception("The image should be the same width as the original!");
if (this.Height != settings.TexHeight)
throw new Exception("The image should be the same height as the original!");
this.TextureTGLP.SheetDataList[SheetIndex] = settings.DataBlockOutput[0];
this.TextureTGLP.Format = (ushort)Decode_Gamecube.FromGenericFormat(settings.GenericFormat);
this.Format = settings.GenericFormat;
this.MipCount = 1; //Always 1
this.Depth = 1;
this.ArrayCount = (uint)settings.DataBlockOutput.Count;
}
public override void OnClick(TreeView treeview)
{
UpdateEditor();

View File

@ -43,6 +43,9 @@ namespace FirstPlugin
public static string CMDL = GetFilter(".dae");
public static string CTR_TEX = GetFilter(".png", ".bmp", ".tga", ".jpg", ".tiff", ".tif", ".gif");
public static string REV_TEX = GetFilter(".png", ".bmp", ".tga", ".jpg", ".tiff", ".tif", ".gif");
public static string NUTEXB = GetFilter(".dds",".png", ".bmp", ".tga", ".jpg", ".tiff", ".tif", ".gif");
public static string XTX = GetFilter(".dds", ".png", ".bmp", ".tga", ".jpg", ".tiff", ".tif", ".gif");