From a1ec63928fe06bb74a0e565706bf02018b0c401e Mon Sep 17 00:00:00 2001 From: Hugh Sanderson Date: Sat, 29 Apr 2023 23:13:30 +0800 Subject: [PATCH] Add BitmapData getDataHandle --- project/src/common/ExternalInterface.cpp | 12 ++++++++++++ src/nme/display/BitmapData.hx | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/project/src/common/ExternalInterface.cpp b/project/src/common/ExternalInterface.cpp index 120c0d3a3..f77306051 100644 --- a/project/src/common/ExternalInterface.cpp +++ b/project/src/common/ExternalInterface.cpp @@ -4722,6 +4722,18 @@ void nme_bitmap_data_get_uints8(value inSurface, value inData, int inOffset, int } DEFINE_PRIME6v(nme_bitmap_data_get_uints8); +value nme_bitmap_data_get_data_handle(value inSurface) +{ + Surface *surf; + if (AbstractToObject(inSurface,surf)) + { + const void *base = surf->GetBase(); + if (base) + return alloc_abstract(gDataPointer,(void *)base); + } + return alloc_null(); +} +DEFINE_PRIME1(nme_bitmap_data_get_data_handle); void nme_bitmap_data_set_uints8(value inSurface, value inData, int inOffset, int inStride, diff --git a/src/nme/display/BitmapData.hx b/src/nme/display/BitmapData.hx index 456cac662..0f775468c 100644 --- a/src/nme/display/BitmapData.hx +++ b/src/nme/display/BitmapData.hx @@ -330,6 +330,16 @@ class BitmapData implements IBitmapDrawable var pf:Int = inPixelFormat==-1 ? format : inPixelFormat; nme_bitmap_data_get_uints8(nmeHandle,dataHandle, dataOffset, dataStride, pf, subSample); } + + // Get raw pointer to image data - you can use Pointer.fromHandle(...); + public function getDataHandle() : Dynamic + { + return nme_bitmap_data_get_data_handle(nmeHandle); + } + + + + public function getBytes(inPixelFormat:Int=-1) : ByteArray { var pf:Int = inPixelFormat==-1 ? format : inPixelFormat; @@ -845,6 +855,7 @@ class BitmapData implements IBitmapDrawable private static var nme_bitmap_data_set_floats32 = PrimeLoader.load("nme_bitmap_data_set_floats32", "ooiiiiiov"); private static var nme_bitmap_data_get_uints8 = PrimeLoader.load("nme_bitmap_data_get_uints8", "ooiiiiv"); private static var nme_bitmap_data_set_uints8 = PrimeLoader.load("nme_bitmap_data_set_uints8", "ooiiiiv"); + private static var nme_bitmap_data_get_data_handle = PrimeLoader.load("nme_bitmap_data_get_data_handle", "oo"); }