mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-22 15:05:32 +00:00
47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Text;
|
|
using OMI;
|
|
using OMI.Workers;
|
|
|
|
namespace PckStudio.Core.IO._3DST
|
|
{
|
|
public class _3DSTextureWriter : IDataFormatWriter
|
|
{
|
|
private Image _image;
|
|
private _3DSTextureFormat _format;
|
|
public _3DSTextureWriter(Image image, _3DSTextureFormat format = _3DSTextureFormat.argb8)
|
|
{
|
|
_image = image;
|
|
_format = format;
|
|
}
|
|
|
|
public void WriteToFile(string filename)
|
|
{
|
|
using(FileStream fs = File.OpenWrite(filename))
|
|
{
|
|
WriteToStream(fs);
|
|
}
|
|
}
|
|
|
|
public void WriteToStream(Stream stream)
|
|
{
|
|
using (var writer = new EndiannessAwareBinaryWriter(stream, Encoding.ASCII, leaveOpen: true, ByteOrder.LittleEndian))
|
|
{
|
|
writer.WriteString("3DST"); // 0
|
|
writer.Write(2); // 4 unknown
|
|
writer.Write((int)_format); // 8
|
|
writer.Write(_image.Width); // 12
|
|
writer.Write(_image.Height); // 16
|
|
writer.Write(0); // 20
|
|
writer.Write(0); // 24
|
|
writer.Write(0); // 28
|
|
_image.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
|
byte[] buffer = TextureCodec.Encode(new Bitmap(_image), _format);
|
|
stream.Write(buffer, 0, buffer.Length);
|
|
}
|
|
}
|
|
}
|
|
}
|