Add font support (#261)
* Add font support * Update qfontdatabase_wrap.h * Update qfontdatabase_wrap.cpp * Update QFontDatabase.ts * make static method
This commit is contained in:
parent
9cb47c7d8a
commit
19f786a0f1
@ -40,6 +40,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QClipboard/qclipboard_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPixmap/qpixmap_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QCursor/qcursor_wrap.cpp"
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include <napi.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <QFontDatabase>
|
||||
|
||||
#include "core/Component/component_macro.h"
|
||||
|
||||
class QFontDatabaseWrap : public Napi::ObjectWrap<QFontDatabaseWrap> {
|
||||
private:
|
||||
std::unique_ptr<QFontDatabase> instance;
|
||||
|
||||
public:
|
||||
static Napi::FunctionReference constructor;
|
||||
static Napi::Object init(Napi::Env env, Napi::Object exports);
|
||||
QFontDatabaseWrap(const Napi::CallbackInfo& info);
|
||||
QFontDatabase* getInternalInstance();
|
||||
// Wrapped methods
|
||||
Napi::Value bold(const Napi::CallbackInfo& info);
|
||||
Napi::Value italic(const Napi::CallbackInfo& info);
|
||||
Napi::Value weight(const Napi::CallbackInfo& info);
|
||||
|
||||
COMPONENT_WRAPPED_METHODS_DECLARATION
|
||||
};
|
||||
|
||||
namespace StaticQFontDatabaseWrapMethods {
|
||||
Napi::Value addApplicationFont(const Napi::CallbackInfo& info);
|
||||
Napi::Value removeApplicationFont(const Napi::CallbackInfo& info);
|
||||
} // namespace StaticQFontDatabaseWrapMethods
|
||||
85
src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp
Normal file
85
src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp
Normal file
@ -0,0 +1,85 @@
|
||||
#include "QtGui/QFontDatabase/qfontdatabase_wrap.h"
|
||||
|
||||
#include "Extras/Utils/nutils.h"
|
||||
|
||||
Napi::FunctionReference QFontDatabaseWrap::constructor;
|
||||
|
||||
Napi::Object QFontDatabaseWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
Napi::HandleScope scope(env);
|
||||
char CLASSNAME[] = "QFontDatabase";
|
||||
Napi::Function func =
|
||||
DefineClass(
|
||||
env, CLASSNAME,
|
||||
{InstanceMethod("bold", &QFontDatabaseWrap::bold),
|
||||
InstanceMethod("italic", &QFontDatabaseWrap::italic),
|
||||
InstanceMethod("weight", &QFontDatabaseWrap::weight),
|
||||
StaticMethod("addApplicationFont",
|
||||
&StaticQFontDatabaseWrapMethods::addApplicationFont),
|
||||
StaticMethod("removeApplicationFont",
|
||||
&StaticQFontDatabaseWrapMethods::removeApplicationFont),
|
||||
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
return exports;
|
||||
}
|
||||
|
||||
QFontDatabaseWrap::QFontDatabaseWrap(const Napi::CallbackInfo& info)
|
||||
: Napi::ObjectWrap<QFontDatabaseWrap>(info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->instance = std::make_unique<QFontDatabase>();
|
||||
this->rawData = extrautils::configureComponent(this->getInternalInstance());
|
||||
}
|
||||
|
||||
QFontDatabase* QFontDatabaseWrap::getInternalInstance() {
|
||||
return this->instance.get();
|
||||
}
|
||||
|
||||
Napi::Value QFontDatabaseWrap::bold(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
std::string family = info[0].As<Napi::String>().Utf8Value();
|
||||
std::string style = info[1].As<Napi::String>().Utf8Value();
|
||||
bool result = this->instance->bold(QString::fromUtf8(family.c_str()),
|
||||
QString::fromUtf8(style.c_str()));
|
||||
return Napi::Value::From(env, result);
|
||||
}
|
||||
|
||||
Napi::Value QFontDatabaseWrap::italic(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
std::string family = info[0].As<Napi::String>().Utf8Value();
|
||||
std::string style = info[1].As<Napi::String>().Utf8Value();
|
||||
bool result = this->instance->italic(QString::fromUtf8(family.c_str()),
|
||||
QString::fromUtf8(style.c_str()));
|
||||
return Napi::Value::From(env, result);
|
||||
}
|
||||
|
||||
Napi::Value QFontDatabaseWrap::weight(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
std::string family = info[0].As<Napi::String>().Utf8Value();
|
||||
std::string style = info[1].As<Napi::String>().Utf8Value();
|
||||
int result = this->instance->weight(QString::fromUtf8(family.c_str()),
|
||||
QString::fromUtf8(style.c_str()));
|
||||
return Napi::Value::From(env, result);
|
||||
}
|
||||
|
||||
Napi::Value StaticQFontDatabaseWrapMethods::addApplicationFont(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
std::string fileName = info[0].As<Napi::String>().Utf8Value();
|
||||
int id =
|
||||
QFontDatabase::addApplicationFont(QString::fromUtf8(fileName.c_str()));
|
||||
return Napi::Value::From(env, id);
|
||||
}
|
||||
|
||||
Napi::Value StaticQFontDatabaseWrapMethods::removeApplicationFont(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
int id = info[0].As<Napi::Number>().Int32Value();
|
||||
bool result = QFontDatabase::removeApplicationFont(id);
|
||||
return Napi::Value::From(env, result);
|
||||
}
|
||||
@ -10,6 +10,7 @@
|
||||
#include "QtGui/QCursor/qcursor_wrap.h"
|
||||
#include "QtGui/QEvent/QKeyEvent/qkeyevent_wrap.h"
|
||||
#include "QtGui/QEvent/QMouseEvent/qmouseevent_wrap.h"
|
||||
#include "QtGui/QFontDatabase/qfontdatabase_wrap.h"
|
||||
#include "QtGui/QIcon/qicon_wrap.h"
|
||||
#include "QtGui/QKeySequence/qkeysequence_wrap.h"
|
||||
#include "QtGui/QMovie/qmovie_wrap.h"
|
||||
@ -59,6 +60,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) {
|
||||
QWidgetWrap::init(env, exports);
|
||||
QPixmapWrap::init(env, exports);
|
||||
QKeySequenceWrap::init(env, exports);
|
||||
QFontDatabaseWrap::init(env, exports);
|
||||
QIconWrap::init(env, exports);
|
||||
QMovieWrap::init(env, exports);
|
||||
QStyleWrap::init(env, exports);
|
||||
|
||||
@ -12,6 +12,7 @@ export { QCursor } from './lib/QtGui/QCursor';
|
||||
export { QTextOptionWrapMode } from './lib/QtGui/QTextOption';
|
||||
export { QClipboard, QClipboardMode } from './lib/QtGui/QClipboard';
|
||||
export { QStyle, QStylePixelMetric } from './lib/QtGui/QStyle';
|
||||
export { QFontDatabase, SystemFont, WritingSystem } from './lib/QtGui/QFontDatabase';
|
||||
// Events: Maybe a separate module ?
|
||||
export { QKeyEvent } from './lib/QtGui/QEvent/QKeyEvent';
|
||||
export { QMouseEvent } from './lib/QtGui/QEvent/QMouseEvent';
|
||||
|
||||
70
src/lib/QtGui/QFontDatabase.ts
Normal file
70
src/lib/QtGui/QFontDatabase.ts
Normal file
@ -0,0 +1,70 @@
|
||||
import addon from '../utils/addon';
|
||||
import { Component, NativeElement } from '../core/Component';
|
||||
|
||||
export enum SystemFont {
|
||||
GeneralFont,
|
||||
FixedFont,
|
||||
TitleFont,
|
||||
SmallestReadableFont,
|
||||
}
|
||||
|
||||
export enum WritingSystem {
|
||||
Any = 0,
|
||||
Latin = 1,
|
||||
Greek = 2,
|
||||
Cyrillic = 3,
|
||||
Armenian = 4,
|
||||
Hebrew = 5,
|
||||
Arabic = 6,
|
||||
Syriac = 7,
|
||||
Thaana = 8,
|
||||
Devanagari = 9,
|
||||
Bengali = 10,
|
||||
Gurmukhi = 11,
|
||||
Gujaratin = 12,
|
||||
Oriya = 13,
|
||||
Tamil = 14,
|
||||
Telugu = 15,
|
||||
Kannada = 16,
|
||||
Malayalam = 17,
|
||||
Sinhala = 18,
|
||||
Thai = 19,
|
||||
Lao = 20,
|
||||
Tibetan = 21,
|
||||
Myanmar = 22,
|
||||
Georgian = 23,
|
||||
Khmer = 24,
|
||||
SimplifiedChinese = 25,
|
||||
TraditionalChinese = 26,
|
||||
Japanese = 27,
|
||||
Korean = 28,
|
||||
Vietnamese = 29,
|
||||
Symbol = 30,
|
||||
Other = Symbol,
|
||||
Ogham = 31,
|
||||
Runic = 32,
|
||||
Nko = 33,
|
||||
}
|
||||
|
||||
export class QFontDatabase extends Component {
|
||||
native: NativeElement;
|
||||
constructor() {
|
||||
super();
|
||||
this.native = new addon.QFontDatabase();
|
||||
}
|
||||
bold(family: string, style: string): boolean {
|
||||
return this.native.bold(family, style);
|
||||
}
|
||||
italic(family: string, style: string): boolean {
|
||||
return this.native.italic(family, style);
|
||||
}
|
||||
weight(family: string, style: string): number {
|
||||
return this.native.weight(family, style);
|
||||
}
|
||||
static addApplicationFont(fileName: string): number {
|
||||
return addon.QFontDatabase.addApplicationFont(fileName);
|
||||
}
|
||||
static removeApplicationFont(id: number): boolean {
|
||||
return addon.QFontDatabase.removeApplicationFont(id);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user