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

#include "JHybridBlurViewGroupSpec.hpp"



#include <optional>
#include <string>

namespace margelo::nitro::qmblurview {

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

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

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

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

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

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

  // Properties
  std::optional<double> JHybridBlurViewGroupSpec::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 JHybridBlurViewGroupSpec::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> JHybridBlurViewGroupSpec::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 JHybridBlurViewGroupSpec::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> JHybridBlurViewGroupSpec::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 JHybridBlurViewGroupSpec::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> JHybridBlurViewGroupSpec::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 JHybridBlurViewGroupSpec::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> JHybridBlurViewGroupSpec::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 JHybridBlurViewGroupSpec::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
