implemented QFontDatabase families method (#392)

* implemented QFontDatabase families method

* fixed linting
This commit is contained in:
Solant 2020-02-07 21:20:05 +03:00 committed by GitHub
parent 87e4045a75
commit c97efce5f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 65 additions and 30 deletions

View File

@ -21,6 +21,7 @@ class DLL_EXPORT QFontDatabaseWrap
QFontDatabase* getInternalInstance();
// Wrapped methods
Napi::Value bold(const Napi::CallbackInfo& info);
Napi::Value families(const Napi::CallbackInfo& info);
Napi::Value italic(const Napi::CallbackInfo& info);
Napi::Value weight(const Napi::CallbackInfo& info);
};

View File

@ -12,6 +12,7 @@ Napi::Object QFontDatabaseWrap::init(Napi::Env env, Napi::Object exports) {
{InstanceMethod("bold", &QFontDatabaseWrap::bold),
InstanceMethod("italic", &QFontDatabaseWrap::italic),
InstanceMethod("weight", &QFontDatabaseWrap::weight),
InstanceMethod("families", &QFontDatabaseWrap::families),
StaticMethod("addApplicationFont",
&StaticQFontDatabaseWrapMethods::addApplicationFont),
StaticMethod("removeApplicationFont",
@ -34,6 +35,21 @@ QFontDatabase* QFontDatabaseWrap::getInternalInstance() {
return this->instance.get();
}
Napi::Value QFontDatabaseWrap::families(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int writingSystem = 0;
if (info.Length() == 1) {
writingSystem = info[0].As<Napi::Number>().Int32Value();
}
QStringList families = this->instance->families(static_cast<QFontDatabase::WritingSystem>(writingSystem));
Napi::Array familiesNapi = Napi::Array::New(env, families.size());
for (int i = 0; i < families.size(); i++) {
familiesNapi[i] = Napi::String::New(env, families[i].toStdString());
}
return familiesNapi;
}
Napi::Value QFontDatabaseWrap::bold(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);

View File

@ -1,36 +1,6 @@
import addon from '../utils/addon';
import { Component, NativeElement } from '../core/Component';
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);
}
}
export enum SystemFont {
GeneralFont,
FixedFont,
TitleFont,
SmallestReadableFont,
}
export enum WritingSystem {
Any = 0,
Latin = 1,
@ -68,3 +38,36 @@ export enum WritingSystem {
Runic = 32,
Nko = 33,
}
export class QFontDatabase extends Component {
native: NativeElement;
constructor() {
super();
this.native = new addon.QFontDatabase();
}
families(ws: WritingSystem = WritingSystem.Any): string[] {
return this.native.families(ws);
}
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);
}
}
export enum SystemFont {
GeneralFont,
FixedFont,
TitleFont,
SmallestReadableFont,
}

View File

@ -0,0 +1,15 @@
import { QFontDatabase, WritingSystem } from '../QFontDatabase';
describe('QFont', () => {
it('initialize empty', () => {
const fontDatabase = new QFontDatabase();
expect(fontDatabase).toBeTruthy();
});
it('families', () => {
const fontDatabase = new QFontDatabase();
expect(fontDatabase.native).toBeTruthy();
expect(fontDatabase.families).toBeTruthy();
expect(fontDatabase.families().length).toBeTruthy();
expect(fontDatabase.families(WritingSystem.Runic).length < fontDatabase.families().length).toBeTruthy();
});
});