diff --git a/include.xml b/include.xml index d7525fdc4..2f7586044 100644 --- a/include.xml +++ b/include.xml @@ -7,7 +7,10 @@
+ + + diff --git a/templates/haxe/DefaultAssetLibrary.hx b/templates/haxe/DefaultAssetLibrary.hx index 925d8182f..020316a79 100644 --- a/templates/haxe/DefaultAssetLibrary.hx +++ b/templates/haxe/DefaultAssetLibrary.hx @@ -6,6 +6,7 @@ import haxe.Unserializer; import lime.app.Preloader; import lime.graphics.ImageData; import lime.utils.ByteArray; +import lime.utils.UInt8Array; import lime.Assets; #if sys @@ -209,7 +210,37 @@ class DefaultAssetLibrary extends AssetLibrary { #else - return null; + // TODO: Implement in native backend + + var bytes = getBytes (id); + var byteInput = new haxe.io.BytesInput (bytes, 0, bytes.length); + var png = new format.png.Reader (byteInput).read (); + var data = format.png.Tools.extract32 (png); + var header = format.png.Tools.getHeader (png); + + var imageWidth = header.width; + var imageHeight = header.height; + var imageData = new UInt8Array (ByteArray.fromBytes (data)); + + var imageLength = imageWidth * imageHeight; + var b, g, r, a; + + for (i in 0...imageLength) { + + b = imageData[i * 4]; + g = imageData[i * 4 + 1]; + r = imageData[i * 4 + 2]; + a = imageData[i * 4 + 3]; + + imageData[i * 4] = r; + imageData[i * 4 + 1] = g; + imageData[i * 4 + 2] = b; + imageData[i * 4 + 3] = a; + + } + + return new ImageData (imageData, imageWidth, imageHeight); + //if (className.exists(id)) return cast (Type.createInstance (className.get (id), []), BitmapData); //else return BitmapData.load (path.get (id));