Use SpriteLoader for frame exporting.
This commit is contained in:
@@ -23,6 +23,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get; private set; }
|
public Size FrameSize { get; private set; }
|
||||||
public float2 Offset { get; private set; }
|
public float2 Offset { get; private set; }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return true; } }
|
||||||
|
|
||||||
public R8Image(Stream s)
|
public R8Image(Stream s)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get { return Size; } }
|
public Size FrameSize { get { return Size; } }
|
||||||
public float2 Offset { get { return float2.Zero; } }
|
public float2 Offset { get { return float2.Zero; } }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return false; } }
|
||||||
|
|
||||||
public Frame(Stream s)
|
public Frame(Stream s)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get { return reader.Size; } }
|
public Size FrameSize { get { return reader.Size; } }
|
||||||
public float2 Offset { get { return float2.Zero; } }
|
public float2 Offset { get { return float2.Zero; } }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return false; } }
|
||||||
|
|
||||||
public uint FileOffset;
|
public uint FileOffset;
|
||||||
public Format Format;
|
public Format Format;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get; private set; }
|
public Size FrameSize { get; private set; }
|
||||||
public float2 Offset { get; private set; }
|
public float2 Offset { get; private set; }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return false; } }
|
||||||
|
|
||||||
public readonly uint FileOffset;
|
public readonly uint FileOffset;
|
||||||
public readonly byte Format;
|
public readonly byte Format;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get; private set; }
|
public Size FrameSize { get; private set; }
|
||||||
public float2 Offset { get { return float2.Zero; } }
|
public float2 Offset { get { return float2.Zero; } }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return false; } }
|
||||||
|
|
||||||
public TmpTile(byte[] data, Size size)
|
public TmpTile(byte[] data, Size size)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace OpenRA.FileFormats
|
|||||||
public Size FrameSize { get { return Size; } }
|
public Size FrameSize { get { return Size; } }
|
||||||
public float2 Offset { get { return float2.Zero; } }
|
public float2 Offset { get { return float2.Zero; } }
|
||||||
public byte[] Data { get; set; }
|
public byte[] Data { get; set; }
|
||||||
|
public bool DisableExportPadding { get { return false; } }
|
||||||
|
|
||||||
public TmpTSTile(Stream s, Size size)
|
public TmpTSTile(Stream s, Size size)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace OpenRA.Graphics
|
|||||||
Size FrameSize { get; }
|
Size FrameSize { get; }
|
||||||
float2 Offset { get; }
|
float2 Offset { get; }
|
||||||
byte[] Data { get; }
|
byte[] Data { get; }
|
||||||
|
bool DisableExportPadding { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ISpriteSource
|
public interface ISpriteSource
|
||||||
|
|||||||
@@ -41,19 +41,17 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
|
|
||||||
var palette = new ImmutablePalette(args[2], shadowIndex);
|
var palette = new ImmutablePalette(args[2], shadowIndex);
|
||||||
|
|
||||||
ISpriteSource source;
|
var frames = new SpriteLoader(new string[0], null)
|
||||||
using (var stream = File.OpenRead(src))
|
.LoadAllFrames(src);
|
||||||
source = SpriteSource.LoadSpriteSource(stream, src);
|
|
||||||
|
|
||||||
// The r8 padding requires external information that we can't access here.
|
var usePadding = !args.Contains("--nopadding");
|
||||||
var usePadding = !(args.Contains("--nopadding") || source is R8Reader);
|
|
||||||
var count = 0;
|
var count = 0;
|
||||||
var prefix = Path.GetFileNameWithoutExtension(src);
|
var prefix = Path.GetFileNameWithoutExtension(src);
|
||||||
|
|
||||||
foreach (var frame in source.Frames)
|
foreach (var frame in frames)
|
||||||
{
|
{
|
||||||
var frameSize = usePadding ? frame.FrameSize : frame.Size;
|
var frameSize = usePadding && !frame.DisableExportPadding ? frame.FrameSize : frame.Size;
|
||||||
var offset = usePadding ? (frame.Offset - 0.5f * new float2(frame.Size - frame.FrameSize)).ToInt2() : int2.Zero;
|
var offset = usePadding && !frame.DisableExportPadding ? (frame.Offset - 0.5f * new float2(frame.Size - frame.FrameSize)).ToInt2() : int2.Zero;
|
||||||
|
|
||||||
// shp(ts) may define empty frames
|
// shp(ts) may define empty frames
|
||||||
if (frameSize.Width == 0 && frameSize.Height == 0)
|
if (frameSize.Width == 0 && frameSize.Height == 0)
|
||||||
@@ -69,7 +67,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
|
ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
|
||||||
|
|
||||||
// Clear the frame
|
// Clear the frame
|
||||||
if (usePadding)
|
if (usePadding && !frame.DisableExportPadding)
|
||||||
{
|
{
|
||||||
var clearRow = new byte[data.Stride];
|
var clearRow = new byte[data.Stride];
|
||||||
for (var i = 0; i < frameSize.Height; i++)
|
for (var i = 0; i < frameSize.Height; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user