From c3b9d4e19b0581fda4f62d9ad206d4a6bc75e6e8 Mon Sep 17 00:00:00 2001 From: yalixie Date: Fri, 8 Aug 2025 15:33:05 +0300 Subject: [PATCH 1/2] Use reflection to get PixelMap from ptr --- arkoala-arkts/arkui/src/extractors.ets | 13 ++++++++++++- arkoala-arkts/modules/ohos/src/multimedia.image.ets | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/arkui/src/extractors.ets b/arkoala-arkts/arkui/src/extractors.ets index d18f5a6041..cf994288c0 100644 --- a/arkoala-arkts/arkui/src/extractors.ets +++ b/arkoala-arkts/arkui/src/extractors.ets @@ -23,7 +23,7 @@ export namespace extractors { } export function fromImagePixelMapPtr(ptr: KPointer): image.PixelMap { - return new image.PixelMapInner(ptr) + return fromPointer("@ohos.multimedia.image.@ohos.multimedia.image.image.PixelMapInner", ptr) as image.PixelMap } function toPointer(obj: Object, declarationName: string, pointerPropName: string): long { @@ -33,5 +33,16 @@ export namespace extractors { } throw new Error(`native pointer for ${declarationName} declaration is not found!`) } + + // Get Type for exported classes: Type.from() + // Get Type for non exported classes: Type.resolve("package.ns.ClassName") + function fromPointer(typeName: string, ptr: long): Object { + const type = Type.resolve(typeName) + if (type instanceof ClassType) { + const classType = type as ClassType + return classType.make([ptr]) + } + throw new Error(`Type "${typeName}" is not a class type: ${type}`) + } } diff --git a/arkoala-arkts/modules/ohos/src/multimedia.image.ets b/arkoala-arkts/modules/ohos/src/multimedia.image.ets index ca7708abb4..aef8628528 100644 --- a/arkoala-arkts/modules/ohos/src/multimedia.image.ets +++ b/arkoala-arkts/modules/ohos/src/multimedia.image.ets @@ -32,7 +32,7 @@ export namespace image { writeBufferToPixels(src: ArrayBuffer): void } - export class PixelMapInner implements PixelMap { + class PixelMapInner implements PixelMap { private nativeObj: long = 0; -- Gitee From 69ab76f9ef28fb309ec0ef3a4ad16e3605b90f5d Mon Sep 17 00:00:00 2001 From: yalixie Date: Fri, 8 Aug 2025 17:33:49 +0300 Subject: [PATCH 2/2] Update fromImagePixelMapPtr(...) extractor --- arkoala-arkts/arkui/src/extractors.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/arkui/src/extractors.ets b/arkoala-arkts/arkui/src/extractors.ets index cf994288c0..29a9627080 100644 --- a/arkoala-arkts/arkui/src/extractors.ets +++ b/arkoala-arkts/arkui/src/extractors.ets @@ -23,7 +23,7 @@ export namespace extractors { } export function fromImagePixelMapPtr(ptr: KPointer): image.PixelMap { - return fromPointer("@ohos.multimedia.image.@ohos.multimedia.image.image.PixelMapInner", ptr) as image.PixelMap + return fromPointer("@ohos.multimedia.image.image.PixelMapInner", ptr) as image.PixelMap } function toPointer(obj: Object, declarationName: string, pointerPropName: string): long { -- Gitee