#include "QtGui/QFont/qfont_wrap.h" #include "Extras/Utils/nutils.h" #include "QtCore/QVariant/qvariant_wrap.h" #include "core/Component/component_wrap.h" Napi::FunctionReference QFontWrap::constructor; Napi::Object QFontWrap::init(Napi::Env env, Napi::Object exports) { Napi::HandleScope scope(env); char CLASSNAME[] = "QFont"; Napi::Function func = DefineClass( env, CLASSNAME, {InstanceMethod("setBold", &QFontWrap::setBold), InstanceMethod("bold", &QFontWrap::bold), InstanceMethod("setCapitalization", &QFontWrap::setCapitalization), InstanceMethod("capitalization", &QFontWrap::capitalization), InstanceMethod("setFamily", &QFontWrap::setFamily), InstanceMethod("family", &QFontWrap::family), InstanceMethod("setPixelSize", &QFontWrap::setPixelSize), InstanceMethod("setPointSize", &QFontWrap::setPointSize), InstanceMethod("pixelSize", &QFontWrap::pixelSize), InstanceMethod("pointSize", &QFontWrap::pointSize), InstanceMethod("setStretch", &QFontWrap::setStretch), InstanceMethod("stretch", &QFontWrap::stretch), InstanceMethod("setWeight", &QFontWrap::setWeight), InstanceMethod("weight", &QFontWrap::weight), InstanceMethod("setItalic", &QFontWrap::setItalic), InstanceMethod("italic", &QFontWrap::italic), InstanceMethod("setStyleName", &QFontWrap::setStyleName), InstanceMethod("toString", &QFontWrap::toString), StaticMethod("fromQVariant", &StaticQFontWrapMethods::fromQVariant), COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QFontWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); return exports; } QFontWrap::QFontWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); if (info.Length() == 4) { std::string family = info[0].As().Utf8Value(); int pointSize = info[1].As().Int32Value(); int weight = info[2].As().Int32Value(); bool italic = info[3].As().Value(); this->instance = std::make_unique( QString::fromStdString(family.c_str()), pointSize, weight, italic); } else if (info.Length() == 1) { this->instance = std::unique_ptr(info[0].As>().Data()); } else if (info.Length() == 0) { this->instance = std::make_unique(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } this->rawData = extrautils::configureComponent(this->getInternalInstance()); } QFontWrap::~QFontWrap() { this->instance.reset(); } QFont* QFontWrap::getInternalInstance() { return this->instance.get(); } Napi::Value QFontWrap::setBold(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int enable = info[0].As().Value(); this->instance->setBold(enable); return env.Null(); } Napi::Value QFontWrap::bold(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, this->instance->bold()); } Napi::Value QFontWrap::setCapitalization(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); QFont::Capitalization caps = static_cast( info[0].As().Int32Value()); this->instance->setCapitalization(caps); return env.Null(); } Napi::Value QFontWrap::capitalization(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, static_cast(this->instance->capitalization())); } Napi::Value QFontWrap::setFamily(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); std::string family = info[0].As().Utf8Value(); this->instance->setFamily(QString::fromStdString(family.c_str())); return env.Null(); } Napi::Value QFontWrap::family(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); QString family = this->instance->family(); return Napi::String::New(env, family.toStdString()); } Napi::Value QFontWrap::setPixelSize(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int pointSize = info[0].As().Int32Value(); this->instance->setPixelSize(pointSize); return env.Null(); } Napi::Value QFontWrap::setPointSize(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int pointSize = info[0].As().Int32Value(); this->instance->setPointSize(pointSize); return env.Null(); } Napi::Value QFontWrap::pixelSize(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, this->instance->pixelSize()); } Napi::Value QFontWrap::pointSize(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, this->instance->pointSize()); } Napi::Value QFontWrap::setStretch(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int factor = info[0].As().Int32Value(); this->instance->setStretch(factor); return env.Null(); } Napi::Value QFontWrap::stretch(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, this->instance->stretch()); } Napi::Value QFontWrap::setWeight(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int weight = info[0].As().Int32Value(); this->instance->setWeight(static_cast(weight)); return env.Null(); } Napi::Value QFontWrap::weight(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, static_cast(this->instance->weight())); } Napi::Value QFontWrap::setItalic(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); int enable = info[0].As().Value(); this->instance->setItalic(enable); return env.Null(); } Napi::Value QFontWrap::italic(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::Value::From(env, this->instance->italic()); } Napi::Value QFontWrap::setStyleName(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); std::string styleName = info[0].As().Utf8Value(); this->instance->setStyleName(QString::fromStdString(styleName.c_str())); return env.Null(); } Napi::Value QFontWrap::toString(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); QString value = this->instance->toString(); return Napi::String::New(env, value.toStdString()); } Napi::Value StaticQFontWrapMethods::fromQVariant( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::Object variantObject = info[0].As(); QVariantWrap* variantWrap = Napi::ObjectWrap::Unwrap(variantObject); QVariant* variant = variantWrap->getInternalInstance(); QFont font = variant->value(); auto instance = QFontWrap::constructor.New( {Napi::External::New(env, new QFont(font))}); return instance; }