From c651775ecaaf81be9fefd0b2861e99c95b34a35f Mon Sep 17 00:00:00 2001 From: Atul R Date: Sat, 22 Jun 2019 21:26:26 +0200 Subject: [PATCH] Convert flexNode to Napi::External. --- config/application.gypi | 1 - src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp | 1 - .../QMainWindow/qmainwindow_wrap.cpp | 6 ++-- src/cpp/core/FlexLayout/flexlayout_wrap.cpp | 14 ++++----- src/cpp/core/FlexLayout/flexnode_wrap.cpp | 31 ------------------- src/cpp/core/FlexLayout/flexnode_wrap.h | 24 -------------- src/cpp/core/YogaWidget/yogawidget_macro.h | 11 ++----- src/cpp/main.cpp | 2 -- src/lib/QtWidgets/QMainWindow/index.ts | 6 ++-- src/lib/core/FlexLayout/FlexNode/index.ts | 12 ------- src/lib/core/FlexLayout/index.ts | 9 ++---- src/lib/core/YogaWidget/index.ts | 4 +-- 12 files changed, 20 insertions(+), 101 deletions(-) delete mode 100644 src/cpp/core/FlexLayout/flexnode_wrap.cpp delete mode 100644 src/cpp/core/FlexLayout/flexnode_wrap.h delete mode 100644 src/lib/core/FlexLayout/FlexNode/index.ts diff --git a/config/application.gypi b/config/application.gypi index ecb0f4838..8ea70e697 100644 --- a/config/application.gypi +++ b/config/application.gypi @@ -19,7 +19,6 @@ # wrapped cpps "../src/cpp/QtGui/QApplication/qapplication_wrap.cpp", "../src/cpp/QtGui/QWidget/qwidget_wrap.cpp", - '../src/cpp/core/FlexLayout/flexnode_wrap.cpp', '../src/cpp/core/FlexLayout/flexlayout_wrap.cpp', "../src/cpp/QtWidgets/QGridLayout/qgridlayout_wrap.cpp", "../src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp", diff --git a/src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp b/src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp index 0dbe341c7..e7c957095 100644 --- a/src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp +++ b/src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp @@ -1,7 +1,6 @@ #include "qlabel_wrap.h" #include "src/cpp/QtGui/QWidget/qwidget_wrap.h" #include "src/cpp/Extras/Utils/nutils.h" -#include "src/cpp/core/FlexLayout/flexnode_wrap.h" #include Napi::FunctionReference QLabelWrap::constructor; diff --git a/src/cpp/QtWidgets/QMainWindow/qmainwindow_wrap.cpp b/src/cpp/QtWidgets/QMainWindow/qmainwindow_wrap.cpp index 4d30788e1..608ca6d5f 100644 --- a/src/cpp/QtWidgets/QMainWindow/qmainwindow_wrap.cpp +++ b/src/cpp/QtWidgets/QMainWindow/qmainwindow_wrap.cpp @@ -50,11 +50,11 @@ Napi::Value QMainWindowWrap::setCentralWidget(const Napi::CallbackInfo& info){ Napi::Object widgetObject = info[0].As(); QWidgetWrap* centralWidget = Napi::ObjectWrap::Unwrap(widgetObject); - Napi::Object flexNodeObject = info[1].As(); - FlexNodeWrap* flexNodeWrap = Napi::ObjectWrap::Unwrap(flexNodeObject); + Napi::External flexNodeObject = info[1].As>(); + YGNodeRef flexNodeRef = flexNodeObject.Data(); YGNodeRef node = this->instance->getFlexNode(); - YGNodeInsertChild(node, flexNodeWrap->getInternalInstance(), 0); + YGNodeInsertChild(node, flexNodeRef, 0); this->instance->setCentralWidget(centralWidget->getInternalInstance()); return env.Null(); diff --git a/src/cpp/core/FlexLayout/flexlayout_wrap.cpp b/src/cpp/core/FlexLayout/flexlayout_wrap.cpp index d24acf1ab..d30781145 100644 --- a/src/cpp/core/FlexLayout/flexlayout_wrap.cpp +++ b/src/cpp/core/FlexLayout/flexlayout_wrap.cpp @@ -1,5 +1,4 @@ #include "flexlayout_wrap.h" -#include "flexnode_wrap.h" #include "src/cpp/QtGui/QWidget/qwidget_wrap.h" #include "src/cpp/Extras/Utils/nutils.h" #include @@ -50,10 +49,10 @@ Napi::Value FlexLayoutWrap::addWidget(const Napi::CallbackInfo& info) { Napi::HandleScope scope(env); Napi::Object qwidgetObject = info[0].As(); - Napi::Object childFlexNodeObject = info[1].As(); + Napi::External childFlexNodeObject = info[1].As>(); QWidgetWrap* widget = Napi::ObjectWrap::Unwrap(qwidgetObject); - FlexNodeWrap* childFlexNodeWrap = Napi::ObjectWrap::Unwrap(childFlexNodeObject); - this->instance->addWidget(widget->getInternalInstance(),childFlexNodeWrap->getInternalInstance()); + YGNodeRef childNodeRef = childFlexNodeObject.Data(); + this->instance->addWidget(widget->getInternalInstance(),childNodeRef); return env.Null(); } @@ -62,9 +61,10 @@ Napi::Value FlexLayoutWrap::setFlexNode(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Object flexNodeObject = info[0].As(); - FlexNodeWrap* flexNodeWrap = Napi::ObjectWrap::Unwrap(flexNodeObject); - this->instance->setFlexNode(flexNodeWrap->getInternalInstance()); + Napi::External flexNodeObject = info[0].As>(); + YGNodeRef flexNodeRef = flexNodeObject.Data(); + + this->instance->setFlexNode(flexNodeRef); return env.Null(); } diff --git a/src/cpp/core/FlexLayout/flexnode_wrap.cpp b/src/cpp/core/FlexLayout/flexnode_wrap.cpp deleted file mode 100644 index 487201ffd..000000000 --- a/src/cpp/core/FlexLayout/flexnode_wrap.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "flexnode_wrap.h" -#include - -Napi::FunctionReference FlexNodeWrap::constructor; - -void FlexNodeWrap::init(Napi::Env env) { - Napi::HandleScope scope(env); - char CLASSNAME[] = "FlexNode"; - Napi::Function func = DefineClass(env, CLASSNAME, { - InstanceMethod("debugValue", &FlexNodeWrap::debugValue), - }); - constructor = Napi::Persistent(func); -} - -YGNodeRef FlexNodeWrap::getInternalInstance() { - return this->instance; -} - -FlexNodeWrap::FlexNodeWrap(const Napi::CallbackInfo& info): Napi::ObjectWrap(info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); -} - -Napi::Value FlexNodeWrap::debugValue(const Napi::CallbackInfo& info) { - uint64_t addr = reinterpret_cast(this->getInternalInstance()); - return Napi::Number::New(info.Env(), addr); -} - -FlexNodeWrap::~FlexNodeWrap() { - delete this->instance; -} diff --git a/src/cpp/core/FlexLayout/flexnode_wrap.h b/src/cpp/core/FlexLayout/flexnode_wrap.h deleted file mode 100644 index 49fd5c705..000000000 --- a/src/cpp/core/FlexLayout/flexnode_wrap.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -#include -#include "deps/yoga/YGNode.h" - -/* - - NAPI Wrapper class to export YGNodeRef/Yoga/Flex Node of a Widget - */ - - -//ABSTRACT CLASS -class FlexNodeWrap : public Napi::ObjectWrap{ - public: - YGNodeRef instance; - static void init(Napi::Env env); - FlexNodeWrap(const Napi::CallbackInfo& info); - ~FlexNodeWrap(); - YGNodeRef getInternalInstance(); -//class constructor - static Napi::FunctionReference constructor; - Napi::Value debugValue(const Napi::CallbackInfo& info); -}; - - diff --git a/src/cpp/core/YogaWidget/yogawidget_macro.h b/src/cpp/core/YogaWidget/yogawidget_macro.h index e7935416b..2a086e90b 100644 --- a/src/cpp/core/YogaWidget/yogawidget_macro.h +++ b/src/cpp/core/YogaWidget/yogawidget_macro.h @@ -1,7 +1,5 @@ #pragma once -#include "src/cpp/core/FlexLayout/flexnode_wrap.h" - /* This macro adds common YogaWidget's exported methods @@ -12,12 +10,9 @@ #define YOGAWIDGET_WRAPPED_METHODS_DECLARATION \ \ Napi::Value getFlexNode(const Napi::CallbackInfo& info) {\ - Napi::EscapableHandleScope scope(info.Env());\ - Napi::Value arg = info[0];\ - Napi::Object flexNodeObject = FlexNodeWrap::constructor.New({ arg });\ - FlexNodeWrap* flexNodeWrap = FlexNodeWrap::Unwrap(flexNodeObject);\ - flexNodeWrap->instance = this->instance->getFlexNode();\ - return scope.Escape(napi_value(flexNodeObject)).ToObject();\ + YGNodeRef node = this->instance->getFlexNode(); \ + Napi::Value yogaNodeRef = Napi::External::New(info.Env(), node); \ + return yogaNodeRef; \ }\ #endif //YOGAWIDGET_WRAPPED_METHODS_DECLARATION diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index 7da09f19c..a62f51dd4 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -9,14 +9,12 @@ #include "src/cpp/QtWidgets/QProgressBar/qprogressbar_wrap.h" #include "src/cpp/QtWidgets/QRadioButton/qradiobutton_wrap.h" #include "src/cpp/QtWidgets/QLineEdit/qlineedit_wrap.h" -#include "src/cpp/core/FlexLayout/flexnode_wrap.h" #include "src/cpp/core/FlexLayout/flexlayout_wrap.h" #include // These cant be instantiated in JS Side void InitPrivateHelpers(Napi::Env env){ QLayoutWrap::init(env); //Abstact class wrapper for pointing to any layout - FlexNodeWrap::init(env); //Abstact class wrapper for pointing to flex/yoga node } Napi::Object Main(Napi::Env env, Napi::Object exports) { diff --git a/src/lib/QtWidgets/QMainWindow/index.ts b/src/lib/QtWidgets/QMainWindow/index.ts index ae654d4fd..fd6c31bee 100644 --- a/src/lib/QtWidgets/QMainWindow/index.ts +++ b/src/lib/QtWidgets/QMainWindow/index.ts @@ -1,7 +1,7 @@ import addon from "../../core/addon"; import { NodeWidget } from "../../QtGui/QWidget"; -import { FlexNode } from "../../core/FlexLayout/FlexNode"; import { BaseWidgetEvents } from "../../core/EventWidget"; +import { FlexNode } from "../../core/YogaWidget"; export const QMainWindowEvents = Object.freeze({ ...BaseWidgetEvents @@ -9,7 +9,6 @@ export const QMainWindowEvents = Object.freeze({ export class QMainWindow extends NodeWidget { native: any; protected centralWidget?: NodeWidget; - protected centralWidgetFlexNode?: FlexNode; constructor(parent?: NodeWidget) { let native; if (parent) { @@ -26,11 +25,10 @@ export class QMainWindow extends NodeWidget { } setCentralWidget(widget: NodeWidget) { - this.centralWidgetFlexNode = widget.getFlexNode(); this.centralWidget = widget; this.native.setCentralWidget( this.centralWidget.native, - this.centralWidgetFlexNode.native + widget.getFlexNode() ); } setFixedSize(width: number, height: number) { diff --git a/src/lib/core/FlexLayout/FlexNode/index.ts b/src/lib/core/FlexLayout/FlexNode/index.ts deleted file mode 100644 index 14c926f42..000000000 --- a/src/lib/core/FlexLayout/FlexNode/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from "../../Component"; - -export class FlexNode extends Component { - native: any; - constructor(nativeNode: any) { - super(); - this.native = nativeNode; - } - debugValue = (): void => { - return this.native.debugValue(); - }; -} diff --git a/src/lib/core/FlexLayout/index.ts b/src/lib/core/FlexLayout/index.ts index 5a0988c96..dc47ae149 100644 --- a/src/lib/core/FlexLayout/index.ts +++ b/src/lib/core/FlexLayout/index.ts @@ -1,21 +1,18 @@ import addon from "../addon"; import { NodeWidget } from "../../QtGui/QWidget"; -import { FlexNode } from "./FlexNode"; import { NodeLayout } from "../../QtWidgets/QLayout"; +import { FlexNode } from "../YogaWidget"; export class FlexLayout extends NodeLayout { native = new addon.FlexLayout(); protected flexNode?: FlexNode; - protected childFlexNodes = new Set(); addWidget = (childWidget: NodeWidget, childFlexNode: FlexNode) => { this.children.add(childWidget); - this.childFlexNodes.add(childFlexNode); - - this.native.addWidget(childWidget.native, childFlexNode.native); + this.native.addWidget(childWidget.native, childFlexNode); }; setFlexNode = (flexNode: FlexNode) => { this.flexNode = flexNode; - this.native.setFlexNode(flexNode.native); + this.native.setFlexNode(flexNode); }; } diff --git a/src/lib/core/YogaWidget/index.ts b/src/lib/core/YogaWidget/index.ts index bd9b99427..0a58d3d71 100644 --- a/src/lib/core/YogaWidget/index.ts +++ b/src/lib/core/YogaWidget/index.ts @@ -1,8 +1,8 @@ import { Component } from "../Component"; -import { FlexNode } from "../FlexLayout/FlexNode"; +export type FlexNode = {}; export abstract class YogaWidget extends Component { getFlexNode = (): FlexNode => { - return new FlexNode(this.native.getFlexNode()); + return this.native.getFlexNode(); }; }