036856aed5
* Move everything into package * Remove .DS_Store * Move scripts and eslintrc to package * Create CODE_OF_CONDUCT.md * fix some links * Update all links (I think) * Update generated docs * Update notice-yarn-changes.yml * Update validate-android.yml * Update validate-cpp.yml * Delete notice-yarn-changes.yml * Update validate-cpp.yml * Update validate-cpp.yml * Update validate-js.yml * Update validate-cpp.yml * Update validate-cpp.yml * wrong c++ style * Revert "wrong c++ style" This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
56 lines
1.9 KiB
Plaintext
56 lines
1.9 KiB
Plaintext
//
|
|
// FrameProcessorPluginHostObject.mm
|
|
// VisionCamera
|
|
//
|
|
// Created by Marc Rousavy on 21.07.23.
|
|
// Copyright © 2023 mrousavy. All rights reserved.
|
|
//
|
|
|
|
#import "FrameProcessorPluginHostObject.h"
|
|
#import "FrameHostObject.h"
|
|
#import "JSINSObjectConversion.h"
|
|
#import <Foundation/Foundation.h>
|
|
#import <vector>
|
|
|
|
using namespace facebook;
|
|
|
|
std::vector<jsi::PropNameID>
|
|
FrameProcessorPluginHostObject::getPropertyNames(jsi::Runtime& runtime) {
|
|
std::vector<jsi::PropNameID> result;
|
|
result.push_back(jsi::PropNameID::forUtf8(runtime, std::string("call")));
|
|
return result;
|
|
}
|
|
|
|
jsi::Value FrameProcessorPluginHostObject::get(jsi::Runtime& runtime,
|
|
const jsi::PropNameID& propName) {
|
|
auto name = propName.utf8(runtime);
|
|
|
|
if (name == "call") {
|
|
return jsi::Function::createFromHostFunction(
|
|
runtime, jsi::PropNameID::forUtf8(runtime, "call"), 2,
|
|
[=](jsi::Runtime& runtime, const jsi::Value& thisValue, const jsi::Value* arguments,
|
|
size_t count) -> jsi::Value {
|
|
// Frame is first argument
|
|
auto frameHostObject =
|
|
arguments[0].asObject(runtime).asHostObject<FrameHostObject>(runtime);
|
|
Frame* frame = frameHostObject->frame;
|
|
|
|
// Options are second argument (possibly undefined)
|
|
NSDictionary* options = nil;
|
|
if (count > 1) {
|
|
auto optionsObject = arguments[1].asObject(runtime);
|
|
options = JSINSObjectConversion::convertJSIObjectToNSDictionary(runtime, optionsObject,
|
|
_callInvoker);
|
|
}
|
|
|
|
// Call actual Frame Processor Plugin
|
|
id result = [_plugin callback:frame withArguments:nil];
|
|
|
|
// Convert result value to jsi::Value (possibly undefined)
|
|
return JSINSObjectConversion::convertObjCObjectToJSIValue(runtime, result);
|
|
});
|
|
}
|
|
|
|
return jsi::Value::undefined();
|
|
}
|