Created
October 27, 2016 21:35
-
-
Save mattpodwysocki/f862373d7c932d91b838daee26b8e64f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "csslayoutnode.h" | |
Nan::Persistent<v8::Function> CSSLayoutNode::constructor; | |
CSSLayoutNode::CSSLayoutNode(v8::Local<v8::Object> self) { | |
this->_node = CSSNodeNew(); | |
CSSNodeInit(this->_node); | |
CSSNodeSetContext(this->_node, *self); | |
} | |
CSSLayoutNode::~CSSLayoutNode() { | |
} | |
void CSSLayoutNode::Init(v8::Local<v8::Object> exports) { | |
Nan::HandleScope scope; | |
v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(New); | |
tpl->SetClassName(Nan::New("CSSLayoutNode").ToLocalChecked()); | |
tpl->InstanceTemplate()->SetInternalFieldCount(1); | |
Nan::SetPrototypeMethod(tpl, "free", Free); | |
Nan::SetPrototypeMethod(tpl, "freeRecursive", FreeRecursive); | |
Nan::SetPrototypeMethod(tpl, "markDirty", MarkDirty); | |
Nan::SetAccessor(tpl->InstanceTemplate(), Nan::New("isDirty").ToLocalChecked(), GetIsDirty); | |
CSSNODE_GETTER_SETTER(isTextNode, IsTextNode); | |
CSSNODE_GETTER_SETTER(hasNewLayout, HasNewLayout); | |
CSSNODE_GETTER_SETTER(direction, Direction); | |
CSSNODE_GETTER_SETTER(flexDirection, FlexDirection); | |
CSSNODE_GETTER_SETTER(justifyContent, JustifyContent); | |
CSSNODE_GETTER_SETTER(alignContent, AlignContent); | |
CSSNODE_GETTER_SETTER(alignItems, AlignItems); | |
Nan::SetMethod(tpl, "instanceCount", InstanceCount); | |
constructor.Reset(tpl->GetFunction()); | |
exports->Set(Nan::New("CSSLayoutNode").ToLocalChecked(), tpl->GetFunction()); | |
} | |
NAN_METHOD(CSSLayoutNode::New) { | |
if (!info.IsConstructCall()) { | |
Nan::ThrowReferenceError("CSSLayoutNode requires new to instantiate."); | |
} | |
v8::Local<v8::Object> self = info.This(); | |
CSSLayoutNode* obj = new CSSLayoutNode(self); | |
obj->Wrap(self); | |
info.GetReturnValue().Set(self); | |
} | |
NAN_METHOD(CSSLayoutNode::Free) { | |
CSSNODE_ASSERT | |
CSSNodeFree(obj->_node); | |
obj->_node = nullptr; | |
} | |
NAN_METHOD(CSSLayoutNode::FreeRecursive) { | |
CSSNODE_ASSERT | |
CSSNodeFreeRecursive(obj->_node); | |
obj->_node = nullptr; | |
} | |
NAN_METHOD(CSSLayoutNode::ValueIsUndefined) { | |
float value = static_cast<float>(info[0]->NumberValue()); | |
info.GetReturnValue().Set(Nan::New(CSSValueIsUndefined(value))); | |
} | |
NAN_GETTER(CSSLayoutNode::GetIsDirty) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New(CSSNodeIsDirty(obj->_node))); | |
} | |
NAN_METHOD(CSSLayoutNode::MarkDirty) { | |
CSSNODE_ASSERT | |
CSSNodeMarkDirty(obj->_node); | |
} | |
NAN_METHOD(CSSLayoutNode::InstanceCount) { | |
int32_t count = CSSNodeGetInstanceCount(); | |
info.GetReturnValue().Set(Nan::New(count)); | |
} | |
NAN_GETTER(CSSLayoutNode::GetIsTextNode) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New(CSSNodeGetIsTextnode(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetIsTextNode) { | |
V8BOOLEAN_ASSERT | |
CSSNODE_ASSERT | |
bool bValue = value->BooleanValue(); | |
CSSNodeSetIsTextnode(obj->_node, bValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetHasNewLayout) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New(CSSNodeGetHasNewLayout(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetHasNewLayout) { | |
V8BOOLEAN_ASSERT | |
CSSNODE_ASSERT | |
bool bValue = value->BooleanValue(); | |
CSSNodeSetHasNewLayout(obj->_node, bValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetDirection) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New((int32_t)CSSNodeStyleGetDirection(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetDirection) { | |
V8INT32_ASSERT | |
CSSNODE_ASSERT | |
V8RANGE_ASSERT(0, 2) | |
CSSNodeStyleSetDirection(obj->_node, (CSSDirection)iValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetFlexDirection) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New((int32_t)CSSNodeStyleGetFlexDirection(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetFlexDirection) { | |
V8INT32_ASSERT | |
CSSNODE_ASSERT | |
V8RANGE_ASSERT(0, 4) | |
CSSNodeStyleSetFlexDirection(obj->_node, (CSSFlexDirection)iValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetJustifyContent) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New((int32_t)CSSNodeStyleGetJustifyContent(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetJustifyContent) { | |
V8INT32_ASSERT | |
CSSNODE_ASSERT | |
V8RANGE_ASSERT(0, 4) | |
CSSNodeStyleSetJustifyContent(obj->_node, (CSSJustify)iValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetAlignContent) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New((int32_t)CSSNodeStyleGetAlignContent(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetAlignContent) { | |
V8INT32_ASSERT | |
CSSNODE_ASSERT | |
V8RANGE_ASSERT(0, 4) | |
CSSNodeStyleSetAlignContent(obj->_node, (CSSAlign)iValue); | |
} | |
NAN_GETTER(CSSLayoutNode::GetAlignItems) { | |
CSSNODE_ASSERT | |
info.GetReturnValue().Set(Nan::New((int32_t)CSSNodeStyleGetAlignItems(obj->_node))); | |
} | |
NAN_SETTER(CSSLayoutNode::SetAlignItems) { | |
V8INT32_ASSERT | |
CSSNODE_ASSERT | |
V8RANGE_ASSERT(0, 4) | |
CSSNodeStyleSetAlignItems(obj->_node, (CSSAlign)iValue); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment