Skip to content

Commit 22180b9

Browse files
committed
closer match to json output
1 parent eedc55f commit 22180b9

File tree

2 files changed

+21
-36
lines changed

2 files changed

+21
-36
lines changed

Sources/aseprite/Aseprite.hx

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,39 @@
11
package aseprite;
22

3+
@:allow(aseprite.Parser)
34
class Aseprite<Texture>
45
{
5-
public var header :Header;
6-
public var frames :Array<Frame<Texture>>;
7-
8-
public function new(header :Header, frames :Array<Frame<Texture>>) : Void
9-
{
10-
this.header = header;
11-
this.frames = frames;
12-
}
13-
}
14-
15-
class Header
16-
{
17-
public var frames (default, null):Int;
186
public var width (default, null):Int;
197
public var height (default, null):Int;
208
public var colorDepth (default, null):ColorDepth;
21-
public var flags (default, null):Int;
229
public var transparentColor (default, null):Int;
2310
public var numberOfColors (default, null):Int;
2411
public var pixelWidth (default, null):Int;
2512
public var pixelHeight (default, null):Int;
13+
public var frameTags (default, null):Array<FrameTag>;
14+
public var frames :Array<Frame<Texture>>;
15+
public var colorProfile (default, null):ColorProfile;
16+
public var palette (default, null):Palette;
2617

27-
public function new(frames :Int, width :Int, height :Int, colorDepth :Int, flags :Int, transparentColor :Int, numberOfColors :Int, pixelWidth :Int, pixelHeight :Int) : Void
18+
public function new(width :Int, height :Int, colorDepth :Int, transparentColor :Int, numberOfColors :Int, pixelWidth :Int, pixelHeight :Int) : Void
2819
{
29-
this.frames = frames;
3020
this.width = width;
3121
this.height = height;
3222
this.colorDepth = colorDepth;
33-
this.flags = flags;
3423
this.transparentColor = transparentColor;
3524
this.numberOfColors = numberOfColors;
3625
this.pixelWidth = pixelWidth;
3726
this.pixelHeight = pixelHeight;
27+
this.frames = [];
3828
}
3929
}
4030

4131
@:allow(aseprite.Parser)
4232
class Frame<Texture>
4333
{
4434
public var duration (default, null) :Float;
45-
public var colorProfile (default, null):ColorProfile;
46-
public var palette (default, null):Palette;
4735
public var layers (default, null):Array<Layer>;
4836
public var cels (default, null):Array<Cel<Texture>>;
49-
public var frameTags (default, null):Array<FrameTag>;
5037

5138
public function new(duration :Float) : Void
5239
{

Sources/aseprite/Parser.hx

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,7 @@ class Parser
1111
public static function parse<Texture>(bytes :Bytes) : Aseprite<Texture>
1212
{
1313
var reader = new Reader(bytes);
14-
var header = readHeader(reader);
15-
var frames = [for(i in 0...header.frames) readFrame(reader)];
16-
return new Aseprite(header, frames);
17-
}
1814

19-
static function readHeader(reader :Reader) : Header
20-
{
2115
var fileSize :Int = reader.getDWord();
2216
var magicNumber :Int = reader.getWord();
2317
assert(magicNumber == 0xA5E0, "FILE NOT ASE");
@@ -36,10 +30,14 @@ class Parser
3630
var pixelHeight :Int = reader.getByte();
3731
reader.seek(92);
3832

39-
return new Header(frames, width, height, colorDepth, flags, transparentColor, numberOfColors, pixelWidth, pixelHeight);
33+
var sprite = new Aseprite(width, height, colorDepth, transparentColor, numberOfColors, pixelWidth, pixelHeight);
34+
for(i in 0...frames) {
35+
sprite.frames.push(readFrame(sprite, reader));
36+
}
37+
return sprite;
4038
}
4139

42-
static function readFrame<Texture>(reader :Reader) : Frame<Texture>
40+
static function readFrame<Texture>(sprite :Aseprite<Texture>, reader :Reader) : Frame<Texture>
4341
{
4442
var bytesLength :Int = reader.getDWord();
4543
var magicNumber :Int = reader.getWord();
@@ -53,13 +51,13 @@ class Parser
5351
var frame = new Frame(frameDuration/1000);
5452

5553
for(i in 0...length) {
56-
getChunk(frame, reader);
54+
getChunk(sprite, frame, reader);
5755
}
5856

5957
return frame;
6058
}
6159

62-
static function getChunk<Texture>(frame :Frame<Texture>, reader :Reader) : Void
60+
static function getChunk<Texture>(sprite :Aseprite<Texture>, frame :Frame<Texture>, reader :Reader) : Void
6361
{
6462
var chunkSize = reader.getDWord();
6563
var chunkType :ChunkType = reader.getWord();
@@ -71,12 +69,12 @@ class Parser
7169
assert(false, "CEL_EXTRA_CHUNK");
7270

7371
case COLOR_PROFILE_CHUNK:
74-
assert(frame.colorProfile == null, "frame profile is already set");
75-
frame.colorProfile = readColorProfile(reader);
72+
assert(sprite.colorProfile == null, "color profile is already set");
73+
sprite.colorProfile = readColorProfile(reader);
7674

7775
case FRAME_TAGS_CHUNK:
78-
assert(frame.frameTags == null, "frame tags are already set");
79-
frame.frameTags = readFrameTags(reader);
76+
assert(sprite.frameTags == null, "frame tags are already set");
77+
sprite.frameTags = readFrameTags(reader);
8078

8179
case LAYER_CHUNK:
8280
frame.layers.push(readLayer(reader));
@@ -88,8 +86,8 @@ class Parser
8886
assert(false, "OLD_PALETTE_CHUNK_B");
8987

9088
case PALETTE_CHUNK:
91-
assert(frame.palette == null, "frame palette is already set");
92-
frame.palette = readPalette(reader);
89+
assert(sprite.palette == null, "palette is already set");
90+
sprite.palette = readPalette(reader);
9391

9492
case PATH_CHUNK:
9593
assert(false, "PATH_CHUNK");

0 commit comments

Comments
 (0)