/// /// VideoInformation.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © 2025 Marc Rousavy @ Margelo /// #pragma once #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif // Forward declaration of `VideoOrientation` to properly resolve imports. namespace margelo::nitro::video { enum class VideoOrientation; } #include "VideoOrientation.hpp" namespace margelo::nitro::video { /** * A struct which can be represented as a JavaScript object (VideoInformation). */ struct VideoInformation { public: double bitrate SWIFT_PRIVATE; double width SWIFT_PRIVATE; double height SWIFT_PRIVATE; int64_t duration SWIFT_PRIVATE; int64_t fileSize SWIFT_PRIVATE; bool isHDR SWIFT_PRIVATE; bool isLive SWIFT_PRIVATE; VideoOrientation orientation SWIFT_PRIVATE; public: VideoInformation() = default; explicit VideoInformation(double bitrate, double width, double height, int64_t duration, int64_t fileSize, bool isHDR, bool isLive, VideoOrientation orientation): bitrate(bitrate), width(width), height(height), duration(duration), fileSize(fileSize), isHDR(isHDR), isLive(isLive), orientation(orientation) {} }; } // namespace margelo::nitro::video namespace margelo::nitro { // C++ VideoInformation <> JS VideoInformation (object) template <> struct JSIConverter final { static inline margelo::nitro::video::VideoInformation fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::video::VideoInformation( JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "bitrate")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "width")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "height")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "duration")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "fileSize")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "isHDR")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "isLive")), JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "orientation")) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::video::VideoInformation& arg) { jsi::Object obj(runtime); obj.setProperty(runtime, "bitrate", JSIConverter::toJSI(runtime, arg.bitrate)); obj.setProperty(runtime, "width", JSIConverter::toJSI(runtime, arg.width)); obj.setProperty(runtime, "height", JSIConverter::toJSI(runtime, arg.height)); obj.setProperty(runtime, "duration", JSIConverter::toJSI(runtime, arg.duration)); obj.setProperty(runtime, "fileSize", JSIConverter::toJSI(runtime, arg.fileSize)); obj.setProperty(runtime, "isHDR", JSIConverter::toJSI(runtime, arg.isHDR)); obj.setProperty(runtime, "isLive", JSIConverter::toJSI(runtime, arg.isLive)); obj.setProperty(runtime, "orientation", JSIConverter::toJSI(runtime, arg.orientation)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { if (!value.isObject()) { return false; } jsi::Object obj = value.getObject(runtime); if (!nitro::isPlainObject(runtime, obj)) { return false; } if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "bitrate"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "width"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "height"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "duration"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "fileSize"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "isHDR"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "isLive"))) return false; if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "orientation"))) return false; return true; } }; } // namespace margelo::nitro