Skip to content

Commit d8b2531

Browse files
committed
using createTexture
using createTexture function to replace data in image data.
1 parent 58dd637 commit d8b2531

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

Sources/aseprite/Aseprite.hx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,14 @@ typedef Cel<Texture> =
8484
var x (default, null):Int;
8585
var y (default, null):Int;
8686
var opacityLevel (default, null):Int;
87-
var data (default, null):CelData;
87+
var data (default, null):CelData<Texture>;
8888
@:optional var texture :Texture;
8989
}
9090

91-
enum CelData {
91+
enum CelData<Texture> {
9292
RAW_DATA(width :Int, height :Int, pixels :Int);
9393
LINKED_DATA(linkedFramePosition :Int);
94-
IMAGE_DATA(width :Int, height :Int, data :haxe.io.Bytes);
94+
IMAGE_DATA(width :Int, height :Int, texture :Texture);
9595
}
9696

9797
enum PaletteColor

Sources/aseprite/Parser.hx

Lines changed: 8 additions & 8 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<Texture>(bytes :Bytes) : Aseprite<Texture>
11+
public static function parse<Texture>(bytes :Bytes, createTexture :Bytes -> Int -> Int -> ColorDepth -> Texture) : Aseprite<Texture>
1212
{
1313
var reader = new Reader(bytes);
1414

@@ -33,12 +33,12 @@ class Parser
3333

3434
var sprite = new Aseprite(width, height, colorDepth, transparentColor, numberOfColors, pixelWidth, pixelHeight, hasValidOpacity);
3535
for(i in 0...frames) {
36-
sprite.frames.push(readFrame(sprite, reader));
36+
sprite.frames.push(readFrame(sprite, reader, createTexture));
3737
}
3838
return sprite;
3939
}
4040

41-
static function readFrame<Texture>(sprite :Aseprite<Texture>, reader :Reader) : Frame<Texture>
41+
static function readFrame<Texture>(sprite :Aseprite<Texture>, reader :Reader, createTexture :Bytes -> Int -> Int -> ColorDepth -> Texture) : Frame<Texture>
4242
{
4343
var bytesLength :Int = reader.getDWord();
4444
var magicNumber :Int = reader.getWord();
@@ -52,19 +52,19 @@ class Parser
5252
var frame = new Frame(frameDuration/1000);
5353

5454
for(i in 0...length) {
55-
getChunk(sprite, frame, reader);
55+
getChunk(sprite, frame, reader, createTexture);
5656
}
5757

5858
return frame;
5959
}
6060

61-
static function getChunk<Texture>(sprite :Aseprite<Texture>, frame :Frame<Texture>, reader :Reader) : Void
61+
static function getChunk<Texture>(sprite :Aseprite<Texture>, frame :Frame<Texture>, reader :Reader, createTexture :Bytes -> Int -> Int -> ColorDepth -> Texture) : Void
6262
{
6363
var chunkSize = reader.getDWord();
6464
var chunkType :ChunkType = reader.getWord();
6565
switch chunkType {
6666
case CEL_CHUNK:
67-
frame.cels.push(readCel(reader));
67+
frame.cels.push(readCel(sprite, reader, createTexture));
6868

6969
case CEL_EXTRA_CHUNK:
7070
assert(false, "CEL_EXTRA_CHUNK");
@@ -171,7 +171,7 @@ class Parser
171171
return {type:type, childLevel:childLevel, blendMode:blendMode, opacity:opacity, name:name, visible: visible};
172172
}
173173

174-
static function readCel<Texture>(reader :Reader) : Cel<Texture>
174+
static function readCel<Texture>(sprite :Aseprite<Texture>, reader :Reader, createTexture :Bytes -> Int -> Int -> ColorDepth -> Texture) : Cel<Texture>
175175
{
176176
var layerIndex :Int = reader.getWord();
177177
var x :Int = reader.getShort();
@@ -194,7 +194,7 @@ class Parser
194194
var width = reader.getWord();
195195
var height = reader.getWord();
196196
var data = InflateImpl.run(reader.input, width*height);
197-
IMAGE_DATA(width, height, data);
197+
IMAGE_DATA(width, height, createTexture(data, width, height, sprite.colorDepth));
198198
}
199199
}
200200
return {layerIndex:layerIndex, x:x, y:y, opacityLevel:opacityLevel, data:celData};

0 commit comments

Comments
 (0)