@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
JavaScript
;
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;