Skip to content

Commit e6e91b0

Browse files
committed
added typed optional texture field to cel
1 parent d773528 commit e6e91b0

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

Sources/aseprite/Aseprite.hx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package aseprite;
22

33
// import aseprite.Parser;
44

5-
class Aseprite
5+
class Aseprite<Texture>
66
{
77
public var header :Header;
8-
public var frames :Array<Frame>;
8+
public var frames :Array<Frame<Texture>>;
99

10-
public function new(header :Header, frames :Array<Frame>) : Void
10+
public function new(header :Header, frames :Array<Frame<Texture>>) : Void
1111
{
1212
this.header = header;
1313
this.frames = frames;
@@ -41,13 +41,13 @@ class Header
4141
}
4242

4343
@:allow(aseprite.Parser)
44-
class Frame
44+
class Frame<Texture>
4545
{
4646
public var duration (default, null) :Int;
4747
public var colorProfile (default, null):ColorProfile;
4848
public var palette (default, null):Palette;
4949
public var layers (default, null):Array<Layer>;
50-
public var cels (default, null):Array<Cel>;
50+
public var cels (default, null):Array<Cel<Texture>>;
5151
public var frameTags (default, null):Array<FrameTag>;
5252

5353
public function new(duration :Int) : Void
@@ -92,13 +92,14 @@ typedef Layer =
9292
var name (default, null):String;
9393
}
9494

95-
typedef Cel =
95+
typedef Cel<Texture> =
9696
{
9797
var layerIndex (default, null):Int;
9898
var x (default, null):Int;
9999
var y (default, null):Int;
100100
var opacityLevel (default, null):Int;
101101
var data (default, null):CelData;
102+
@:optional var texture :Texture;
102103
}
103104

104105
enum CelData {

Sources/aseprite/Parser.hx

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import aseprite.Aseprite;
88

99
class Parser
1010
{
11-
public static function parse(bytes :Bytes) : Aseprite
11+
public static function parse<Texture>(bytes :Bytes) : Aseprite<Texture>
1212
{
1313
var reader = new Reader(bytes);
1414
var header = readHeader(reader);
@@ -39,7 +39,7 @@ class Parser
3939
return new Header(frames, width, height, colorDepth, flags, transparentColor, numberOfColors, pixelWidth, pixelHeight);
4040
}
4141

42-
static function readFrame(reader :Reader) : Frame
42+
static function readFrame<Texture>(reader :Reader) : Frame<Texture>
4343
{
4444
var bytesLength :Int = reader.getDWord();
4545
var magicNumber :Int = reader.getWord();
@@ -59,15 +59,16 @@ class Parser
5959
return frame;
6060
}
6161

62-
static function getChunk(frame :Frame, reader :Reader) : Void
62+
static function getChunk<Texture>(frame :Frame<Texture>, reader :Reader) : Void
6363
{
6464
var chunkSize = reader.getDWord();
6565
var chunkType :ChunkType = reader.getWord();
6666
switch chunkType {
6767
case CEL_CHUNK:
6868
frame.cels.push(readCel(reader));
6969

70-
case CEL_EXTRA_CHUNK: assert(false, "CEL_EXTRA_CHUNK");
70+
case CEL_EXTRA_CHUNK:
71+
assert(false, "CEL_EXTRA_CHUNK");
7172

7273
case COLOR_PROFILE_CHUNK:
7374
assert(frame.colorProfile == null, "frame profile is already set");
@@ -80,21 +81,27 @@ class Parser
8081
case LAYER_CHUNK:
8182
frame.layers.push(readLayer(reader));
8283

83-
case OLD_PALETTE_CHUNK_A: readOldPaletteA(reader);
84+
case OLD_PALETTE_CHUNK_A:
85+
readOldPaletteA(reader);
8486

85-
case OLD_PALETTE_CHUNK_B: assert(false, "OLD_PALETTE_CHUNK_B");
87+
case OLD_PALETTE_CHUNK_B:
88+
assert(false, "OLD_PALETTE_CHUNK_B");
8689

8790
case PALETTE_CHUNK:
8891
assert(frame.palette == null, "frame palette is already set");
8992
frame.palette = readPalette(reader);
9093

91-
case PATH_CHUNK: assert(false, "PATH_CHUNK");
94+
case PATH_CHUNK:
95+
assert(false, "PATH_CHUNK");
9296

93-
case SLICE_CHUNK: assert(false, "SLICE_CHUNK");
97+
case SLICE_CHUNK:
98+
assert(false, "SLICE_CHUNK");
9499

95-
case USER_DATA_CHUNK: assert(false, "USER_DATA_CHUNK");
100+
case USER_DATA_CHUNK:
101+
assert(false, "USER_DATA_CHUNK");
96102

97-
case _: assert(false, "CHUNK NOT FOUND: " + chunkType);
103+
case _:
104+
assert(false, "CHUNK NOT FOUND: " + chunkType);
98105
}
99106
}
100107

@@ -164,7 +171,7 @@ class Parser
164171
return {flags:flags, type:type, childLevel:childLevel, blendMode:blendMode, opacity:opacity, name:name};
165172
}
166173

167-
static function readCel(reader :Reader) : Cel
174+
static function readCel<Texture>(reader :Reader) : Cel<Texture>
168175
{
169176
var layerIndex :Int = reader.getWord();
170177
var x :Int = reader.getShort();

0 commit comments

Comments
 (0)