UNPKG

@bezlepkin/nativescript-ar

Version:

NativeScript Augmented Reality plugin. ARKit on iOS and (with the help of Sceneform) ARCore on Android.

47 lines (46 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ARImage = void 0; const core_1 = require("@nativescript/core"); const arcommon_1 = require("./arcommon"); const pixelsPerMeter = 500; class ARImage extends arcommon_1.ARCommonNode { static create(options, fragment) { if (typeof options.image === "string") { if (options.image.indexOf("://") >= 0) { return core_1.ImageSource.fromUrl(options.image).then(image => { options.image = image; return ARImage.create(options, fragment); }); } options.image = core_1.ImageSource.fromFileOrResourceSync(options.image); } return new Promise(async (resolve, reject) => { const image = options.image.android; const context = core_1.Utils.ad.getApplicationContext(); const imageView = new android.widget.ImageView(context); imageView.setImageBitmap(image); com.google.ar.sceneform.rendering.ViewRenderable.builder() .setView(context, imageView) .build() .thenAccept(new java.util.function.Consumer({ accept: renderable => { if (options.dimensions) { renderable.setSizer(new com.google.ar.sceneform.rendering.FixedWidthViewSizer(options.dimensions.x)); } else { renderable.setSizer(new com.google.ar.sceneform.rendering.DpToMetersViewSizer(pixelsPerMeter)); } renderable.setVerticalAlignment(com.google.ar.sceneform.rendering.ViewRenderable.VerticalAlignment.CENTER); const node = arcommon_1.ARCommonNode.createNode(options, fragment); node.setRenderable(renderable); resolve(new ARImage(options, node)); } })) .exceptionally(new java.util.function.Function({ apply: error => reject(error) })); }); } } exports.ARImage = ARImage;