///
/// JHybridBlurViewSpec.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#include "JHybridBlurViewSpec.hpp"



#include <optional>
#include <string>

namespace margelo::nitro::qmblurview {

  jni::local_ref<JHybridBlurViewSpec::jhybriddata> JHybridBlurViewSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
    return makeCxxInstance(jThis);
  }

  void JHybridBlurViewSpec::registerNatives() {
    registerHybrid({
      makeNativeMethod("initHybrid", JHybridBlurViewSpec::initHybrid),
    });
  }

  size_t JHybridBlurViewSpec::getExternalMemorySize() noexcept {
    static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
    return method(_javaPart);
  }

  bool JHybridBlurViewSpec::equals(const std::shared_ptr<HybridObject>& other) {
    if (auto otherCast = std::dynamic_pointer_cast<JHybridBlurViewSpec>(other)) {
      return _javaPart == otherCast->_javaPart;
    }
    return false;
  }

  void JHybridBlurViewSpec::dispose() noexcept {
    static const auto method = javaClassStatic()->getMethod<void()>("dispose");
    method(_javaPart);
  }

  std::string JHybridBlurViewSpec::toString() {
    static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
    auto javaString = method(_javaPart);
    return javaString->toStdString();
  }

  // Properties
  std::optional<double> JHybridBlurViewSpec::getBlurRadius() {
    static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getBlurRadius");
    auto __result = method(_javaPart);
    return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
  }
  void JHybridBlurViewSpec::setBlurRadius(std::optional<double> blurRadius) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* blurRadius */)>("setBlurRadius");
    method(_javaPart, blurRadius.has_value() ? jni::JDouble::valueOf(blurRadius.value()) : nullptr);
  }
  std::optional<double> JHybridBlurViewSpec::getCornerRadius() {
    static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getCornerRadius");
    auto __result = method(_javaPart);
    return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
  }
  void JHybridBlurViewSpec::setCornerRadius(std::optional<double> cornerRadius) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* cornerRadius */)>("setCornerRadius");
    method(_javaPart, cornerRadius.has_value() ? jni::JDouble::valueOf(cornerRadius.value()) : nullptr);
  }
  std::optional<double> JHybridBlurViewSpec::getBlurRounds() {
    static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getBlurRounds");
    auto __result = method(_javaPart);
    return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
  }
  void JHybridBlurViewSpec::setBlurRounds(std::optional<double> blurRounds) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* blurRounds */)>("setBlurRounds");
    method(_javaPart, blurRounds.has_value() ? jni::JDouble::valueOf(blurRounds.value()) : nullptr);
  }
  std::optional<std::string> JHybridBlurViewSpec::getOverlayColor() {
    static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getOverlayColor");
    auto __result = method(_javaPart);
    return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
  }
  void JHybridBlurViewSpec::setOverlayColor(const std::optional<std::string>& overlayColor) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* overlayColor */)>("setOverlayColor");
    method(_javaPart, overlayColor.has_value() ? jni::make_jstring(overlayColor.value()) : nullptr);
  }
  std::optional<double> JHybridBlurViewSpec::getDownsampleFactor() {
    static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getDownsampleFactor");
    auto __result = method(_javaPart);
    return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
  }
  void JHybridBlurViewSpec::setDownsampleFactor(std::optional<double> downsampleFactor) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* downsampleFactor */)>("setDownsampleFactor");
    method(_javaPart, downsampleFactor.has_value() ? jni::JDouble::valueOf(downsampleFactor.value()) : nullptr);
  }

  // Methods
  

} // namespace margelo::nitro::qmblurview
