Rename SpriteFrameType enums.
This commit is contained in:
@@ -33,7 +33,7 @@ namespace OpenRA.FileFormats
|
||||
public SpriteFrameType Type { get; private set; }
|
||||
public Dictionary<string, string> EmbeddedData = new Dictionary<string, string>();
|
||||
|
||||
public int PixelStride { get { return Type == SpriteFrameType.Indexed ? 1 : Type == SpriteFrameType.RGB ? 3 : 4; } }
|
||||
public int PixelStride { get { return Type == SpriteFrameType.Indexed8 ? 1 : Type == SpriteFrameType.Rgb24 ? 3 : 4; } }
|
||||
|
||||
public Png(Stream s)
|
||||
{
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.FileFormats
|
||||
s.Position += 8;
|
||||
var headerParsed = false;
|
||||
var data = new List<byte>();
|
||||
Type = SpriteFrameType.RGBA;
|
||||
Type = SpriteFrameType.Rgba32;
|
||||
|
||||
while (true)
|
||||
{
|
||||
@@ -69,9 +69,9 @@ namespace OpenRA.FileFormats
|
||||
var bitDepth = ms.ReadUInt8();
|
||||
var colorType = (PngColorType)ms.ReadByte();
|
||||
if (IsPaletted(bitDepth, colorType))
|
||||
Type = SpriteFrameType.Indexed;
|
||||
Type = SpriteFrameType.Indexed8;
|
||||
else if (colorType == PngColorType.Color)
|
||||
Type = SpriteFrameType.RGB;
|
||||
Type = SpriteFrameType.Rgb24;
|
||||
|
||||
Data = new byte[Width * Height * PixelStride];
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace OpenRA.FileFormats
|
||||
}
|
||||
}
|
||||
|
||||
if (Type == SpriteFrameType.Indexed && Palette == null)
|
||||
if (Type == SpriteFrameType.Indexed8 && Palette == null)
|
||||
throw new InvalidDataException("Non-Palette indexed PNG are not supported.");
|
||||
|
||||
return;
|
||||
@@ -181,20 +181,20 @@ namespace OpenRA.FileFormats
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SpriteFrameType.Indexed:
|
||||
case SpriteFrameType.RGBA:
|
||||
case SpriteFrameType.RGB:
|
||||
case SpriteFrameType.Indexed8:
|
||||
case SpriteFrameType.Rgba32:
|
||||
case SpriteFrameType.Rgb24:
|
||||
{
|
||||
// Data is already in a compatible format
|
||||
Data = data;
|
||||
if (type == SpriteFrameType.Indexed)
|
||||
if (type == SpriteFrameType.Indexed8)
|
||||
Palette = palette;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SpriteFrameType.BGRA:
|
||||
case SpriteFrameType.BGR:
|
||||
case SpriteFrameType.Bgra32:
|
||||
case SpriteFrameType.Bgr24:
|
||||
{
|
||||
// Convert to big endian
|
||||
Data = new byte[data.Length];
|
||||
@@ -205,7 +205,7 @@ namespace OpenRA.FileFormats
|
||||
Data[stride * i + 1] = data[stride * i + 1];
|
||||
Data[stride * i + 2] = data[stride * i + 0];
|
||||
|
||||
if (type == SpriteFrameType.BGRA)
|
||||
if (type == SpriteFrameType.Bgra32)
|
||||
Data[stride * i + 3] = data[stride * i + 3];
|
||||
}
|
||||
|
||||
@@ -299,8 +299,8 @@ namespace OpenRA.FileFormats
|
||||
header.Write(IPAddress.HostToNetworkOrder(Height));
|
||||
header.WriteByte(8); // Bit depth
|
||||
|
||||
var colorType = Type == SpriteFrameType.Indexed ? PngColorType.Indexed | PngColorType.Color :
|
||||
Type == SpriteFrameType.RGB ? PngColorType.Color : PngColorType.Color | PngColorType.Alpha;
|
||||
var colorType = Type == SpriteFrameType.Indexed8 ? PngColorType.Indexed | PngColorType.Color :
|
||||
Type == SpriteFrameType.Rgb24 ? PngColorType.Color : PngColorType.Color | PngColorType.Alpha;
|
||||
header.WriteByte((byte)colorType);
|
||||
|
||||
header.WriteByte(0); // Compression
|
||||
|
||||
@@ -72,10 +72,10 @@ namespace OpenRA.Graphics
|
||||
// Resolve indexed data to real colours
|
||||
var data = f.Data;
|
||||
var type = f.Type;
|
||||
if (type == SpriteFrameType.Indexed)
|
||||
if (type == SpriteFrameType.Indexed8)
|
||||
{
|
||||
data = ConvertIndexedToBgra(kv.Key, f, palette);
|
||||
type = SpriteFrameType.BGRA;
|
||||
type = SpriteFrameType.Bgra32;
|
||||
}
|
||||
|
||||
c.Sprites[c.Length++] = sheetBuilder.Add(data, type, f.Size, 0, hotspot);
|
||||
@@ -226,7 +226,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
public static byte[] ConvertIndexedToBgra(string name, ISpriteFrame frame, ImmutablePalette palette)
|
||||
{
|
||||
if (frame.Type != SpriteFrameType.Indexed)
|
||||
if (frame.Type != SpriteFrameType.Indexed8)
|
||||
throw new ArgumentException("ConvertIndexedToBgra requires input frames to be indexed.", nameof(frame));
|
||||
|
||||
// All palettes must be explicitly referenced, even if they are embedded in the sprite.
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace OpenRA.Graphics
|
||||
if (Type == SheetType.Indexed)
|
||||
throw new InvalidOperationException("AsPng() cannot be called on Indexed sheets.");
|
||||
|
||||
return new Png(GetData(), SpriteFrameType.BGRA, Size.Width, Size.Height);
|
||||
return new Png(GetData(), SpriteFrameType.Bgra32, Size.Width, Size.Height);
|
||||
}
|
||||
|
||||
public Png AsPng(TextureChannel channel, IPalette pal)
|
||||
@@ -103,7 +103,7 @@ namespace OpenRA.Graphics
|
||||
for (var i = 0; i < Palette.Size; i++)
|
||||
palColors[i] = pal.GetColor(i);
|
||||
|
||||
return new Png(plane, SpriteFrameType.BGRA, Size.Width, Size.Height, palColors);
|
||||
return new Png(plane, SpriteFrameType.Bgra32, Size.Width, Size.Height, palColors);
|
||||
}
|
||||
|
||||
public void CreateBuffer()
|
||||
|
||||
@@ -52,14 +52,14 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
switch (t)
|
||||
{
|
||||
case SpriteFrameType.Indexed:
|
||||
case SpriteFrameType.Indexed8:
|
||||
return SheetType.Indexed;
|
||||
|
||||
// Util.FastCopyIntoChannel will automatically convert these to BGRA
|
||||
case SpriteFrameType.BGRA:
|
||||
case SpriteFrameType.BGR:
|
||||
case SpriteFrameType.RGBA:
|
||||
case SpriteFrameType.RGB:
|
||||
case SpriteFrameType.Bgra32:
|
||||
case SpriteFrameType.Bgr24:
|
||||
case SpriteFrameType.Rgba32:
|
||||
case SpriteFrameType.Rgb24:
|
||||
return SheetType.BGRA;
|
||||
default: throw new NotImplementedException("Unknown SpriteFrameType {0}".F(t));
|
||||
}
|
||||
|
||||
@@ -26,20 +26,20 @@ namespace OpenRA.Graphics
|
||||
public enum SpriteFrameType
|
||||
{
|
||||
// 8 bit index into an external palette
|
||||
Indexed,
|
||||
Indexed8,
|
||||
|
||||
// 32 bit color such as returned by Color.ToArgb() or the bmp file format
|
||||
// (remember that little-endian systems place the little bits in the first byte!)
|
||||
BGRA,
|
||||
Bgra32,
|
||||
|
||||
// Like BGRA, but without an alpha channel
|
||||
BGR,
|
||||
Bgr24,
|
||||
|
||||
// 32 bit color in big-endian format, like png
|
||||
RGBA,
|
||||
Rgba32,
|
||||
|
||||
// Like RGBA, but without an alpha channel
|
||||
RGB
|
||||
Rgb24
|
||||
}
|
||||
|
||||
public interface ISpriteLoader
|
||||
|
||||
@@ -138,9 +138,9 @@ namespace OpenRA.Graphics
|
||||
|
||||
// 1x1px transparent tile
|
||||
if (sheetBuilder.Type == SheetType.BGRA)
|
||||
missingTile = sheetBuilder.Add(new byte[4], SpriteFrameType.BGRA, new Size(1, 1));
|
||||
missingTile = sheetBuilder.Add(new byte[4], SpriteFrameType.Bgra32, new Size(1, 1));
|
||||
else
|
||||
missingTile = sheetBuilder.Add(new byte[1], SpriteFrameType.Indexed, new Size(1, 1));
|
||||
missingTile = sheetBuilder.Add(new byte[1], SpriteFrameType.Indexed8, new Size(1, 1));
|
||||
|
||||
Sheet.ReleaseBuffer();
|
||||
}
|
||||
|
||||
@@ -88,23 +88,23 @@ namespace OpenRA.Graphics
|
||||
byte r, g, b, a;
|
||||
switch (srcType)
|
||||
{
|
||||
case SpriteFrameType.BGRA:
|
||||
case SpriteFrameType.BGR:
|
||||
case SpriteFrameType.Bgra32:
|
||||
case SpriteFrameType.Bgr24:
|
||||
{
|
||||
b = src[k++];
|
||||
g = src[k++];
|
||||
r = src[k++];
|
||||
a = srcType == SpriteFrameType.BGRA ? src[k++] : (byte)255;
|
||||
a = srcType == SpriteFrameType.Bgra32 ? src[k++] : (byte)255;
|
||||
break;
|
||||
}
|
||||
|
||||
case SpriteFrameType.RGBA:
|
||||
case SpriteFrameType.RGB:
|
||||
case SpriteFrameType.Rgba32:
|
||||
case SpriteFrameType.Rgb24:
|
||||
{
|
||||
r = src[k++];
|
||||
g = src[k++];
|
||||
b = src[k++];
|
||||
a = srcType == SpriteFrameType.RGBA ? src[k++] : (byte)255;
|
||||
a = srcType == SpriteFrameType.Rgba32 ? src[k++] : (byte)255;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -163,19 +163,19 @@ namespace OpenRA.Graphics
|
||||
Color cc;
|
||||
switch (src.Type)
|
||||
{
|
||||
case SpriteFrameType.Indexed:
|
||||
case SpriteFrameType.Indexed8:
|
||||
{
|
||||
cc = src.Palette[src.Data[k++]];
|
||||
break;
|
||||
}
|
||||
|
||||
case SpriteFrameType.RGBA:
|
||||
case SpriteFrameType.RGB:
|
||||
case SpriteFrameType.Rgba32:
|
||||
case SpriteFrameType.Rgb24:
|
||||
{
|
||||
var r = src.Data[k++];
|
||||
var g = src.Data[k++];
|
||||
var b = src.Data[k++];
|
||||
var a = src.Type == SpriteFrameType.RGBA ? src.Data[k++] : (byte)255;
|
||||
var a = src.Type == SpriteFrameType.Rgba32 ? src.Data[k++] : (byte)255;
|
||||
cc = Color.FromArgb(a, r, g, b);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -779,7 +779,7 @@ namespace OpenRA
|
||||
}
|
||||
}
|
||||
|
||||
var png = new Png(minimapData, SpriteFrameType.BGRA, bitmapWidth, height);
|
||||
var png = new Png(minimapData, SpriteFrameType.Bgra32, bitmapWidth, height);
|
||||
return png.Save();
|
||||
}
|
||||
|
||||
|
||||
@@ -439,7 +439,7 @@ namespace OpenRA
|
||||
for (var y = 0; y < destHeight; y++)
|
||||
Array.Copy(src, 4 * y * srcWidth, dest, 4 * y * destWidth, 4 * destWidth);
|
||||
|
||||
new Png(dest, SpriteFrameType.BGRA, destWidth, destHeight).Save(path);
|
||||
new Png(dest, SpriteFrameType.Bgra32, destWidth, destHeight).Save(path);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -77,8 +77,8 @@ namespace OpenRA.Mods.Cnc.Graphics
|
||||
var size = new Size(su, sv);
|
||||
var s = sheetBuilder.Allocate(size);
|
||||
var t = sheetBuilder.Allocate(size);
|
||||
OpenRA.Graphics.Util.FastCopyIntoChannel(s, colors, SpriteFrameType.Indexed);
|
||||
OpenRA.Graphics.Util.FastCopyIntoChannel(t, normals, SpriteFrameType.Indexed);
|
||||
OpenRA.Graphics.Util.FastCopyIntoChannel(s, colors, SpriteFrameType.Indexed8);
|
||||
OpenRA.Graphics.Util.FastCopyIntoChannel(t, normals, SpriteFrameType.Indexed8);
|
||||
|
||||
// s and t are guaranteed to use the same sheet because
|
||||
// of the custom voxel sheet allocation implementation
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
|
||||
class ShpD2Frame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get { return Size; } }
|
||||
public float2 Offset { get { return float2.Zero; } }
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
|
||||
class ImageHeader : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get { return reader.Size; } }
|
||||
public Size FrameSize { get { return reader.Size; } }
|
||||
public float2 Offset { get { return float2.Zero; } }
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
{
|
||||
class TmpRAFrame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get; private set; }
|
||||
public float2 Offset { get { return float2.Zero; } }
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
{
|
||||
class TmpTDFrame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get; private set; }
|
||||
public float2 Offset { get { return float2.Zero; } }
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
{
|
||||
readonly TmpTSFrame parent;
|
||||
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get { return parent.Size; } }
|
||||
public Size FrameSize { get { return Size; } }
|
||||
public float2 Offset { get { return parent.Offset; } }
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Cnc.SpriteLoaders
|
||||
|
||||
class TmpTSFrame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get { return Size; } }
|
||||
public float2 Offset { get; private set; }
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Cnc.UtilityCommands
|
||||
var dest = inputFiles[0].Split('-').First() + ".shp";
|
||||
|
||||
var frames = inputFiles.Select(a => new Png(File.OpenRead(a))).ToList();
|
||||
if (frames.Any(f => f.Type != SpriteFrameType.Indexed))
|
||||
if (frames.Any(f => f.Type != SpriteFrameType.Indexed8))
|
||||
throw new InvalidOperationException("All frames must be paletted");
|
||||
|
||||
var size = new Size(frames[0].Width, frames[0].Height);
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.SpriteLoaders
|
||||
{
|
||||
class ShpTSFrame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get; private set; }
|
||||
public float2 Offset { get; private set; }
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
frame.Size.Width);
|
||||
}
|
||||
|
||||
var png = new Png(pngData, SpriteFrameType.Indexed, frameSize.Width, frameSize.Height, palColors);
|
||||
var png = new Png(pngData, SpriteFrameType.Indexed8, frameSize.Width, frameSize.Height, palColors);
|
||||
png.Save("{0}-{1:D4}.png".F(prefix, count++));
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.D2k.SpriteLoaders
|
||||
{
|
||||
class R8Frame : ISpriteFrame
|
||||
{
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed; } }
|
||||
public SpriteFrameType Type { get { return SpriteFrameType.Indexed8; } }
|
||||
public Size Size { get; private set; }
|
||||
public Size FrameSize { get; private set; }
|
||||
public float2 Offset { get; private set; }
|
||||
|
||||
Reference in New Issue
Block a user