PckFileDataExtensions - Added GetTexture extension

This commit is contained in:
miku-666
2023-08-14 17:19:59 +02:00
parent 0e9c1d3fcc
commit 5051cd58be
3 changed files with 28 additions and 13 deletions

View File

@@ -16,6 +16,29 @@ namespace PckStudio.Extensions
{
private const string MipMap = "MipMapLevel";
internal static Image GetTexture(this PckFile.FileData file)
{
if (file.Filetype != PckFile.FileData.FileType.SkinFile &&
file.Filetype != PckFile.FileData.FileType.CapeFile &&
file.Filetype != PckFile.FileData.FileType.TextureFile)
{
return null;
}
Image image = null;
using (var stream = new MemoryStream(file.Data))
{
try
{
image = Image.FromStream(stream);
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
return image;
}
internal static void SetData(this PckFile.FileData file, IDataFormatWriter writer)
{
using (var stream = new MemoryStream())
@@ -31,7 +54,7 @@ namespace PckStudio.Extensions
file.Filetype != PckFile.FileData.FileType.CapeFile &&
file.Filetype != PckFile.FileData.FileType.TextureFile)
{
Debug.WriteLine($"{file.Filename} is can't contain image data");
Debug.WriteLine($"{file.Filename} can't contain image data");
return;
}

View File

@@ -80,8 +80,7 @@ namespace PckStudio.Forms.Editor
currentAnimation = new Animation(Array.Empty<Image>());
if (animationFile is not null && animationFile.Size > 0)
{
using MemoryStream textureMem = new MemoryStream(animationFile.Data);
var texture = new Bitmap(textureMem);
var texture = animationFile.GetTexture();
var frameTextures = texture.Split(ImageLayoutDirection.Vertical);
currentAnimation = animationFile.Properties.HasProperty("ANIM")
? new Animation(frameTextures, animationFile.Properties.GetPropertyValue("ANIM"))

View File

@@ -370,9 +370,7 @@ namespace PckStudio
if (file.Filename == "res/terrain.png" || file.Filename == "res/items.png")
{
using var ms = new MemoryStream(file.Data);
var img = Image.FromStream(ms);
var img = file.GetTexture();
var res = img.Width / 16; // texture count on X axes
var size = new Size(res, res);
var viewer = new TextureAtlasEditor(currentPCK, file.Filename, img, size);
@@ -395,7 +393,6 @@ namespace PckStudio
BuildMainTreeView();
}
}
return;
}
}
@@ -439,14 +436,10 @@ namespace PckStudio
return;
}
using(var ms = new MemoryStream(file.Data))
{
var img = Image.FromStream(ms);
var skinViewer = new SkinPreview(img, file.Properties.GetPropertyValue("ANIM", SkinANIM.FromString));
var img = file.GetTexture();
using var skinViewer = new SkinPreview(img, file.Properties.GetPropertyValue("ANIM", SkinANIM.FromString));
skinViewer.ShowDialog(this);
skinViewer.Dispose();
}
}
public void HandleModelsFile(PckFile.FileData file)
{