From 702cad96f6f3fc7a07c3d5f5449d5e2455873ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Werner=20Vestera=CC=8As?= Date: Fri, 26 Dec 2014 00:41:12 +0100 Subject: [PATCH] Refactorings --- examples/berries.js | 2 +- examples/circles.js | 2 +- examples/clock.js | 2 +- examples/lines.js | 3 ++- examples/rectangles.js | 2 +- examples/text.js | 3 +-- package.json | 4 ++-- src/framebuffer.cc | 25 ++++++++++++++++++------- src/framebuffer.h | 5 +++-- src/pitft.cc | 13 +++++++++++-- 10 files changed, 41 insertions(+), 20 deletions(-) diff --git a/examples/berries.js b/examples/berries.js index 48ab05f..ee65525 100644 --- a/examples/berries.js +++ b/examples/berries.js @@ -1,6 +1,6 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1"); +var fb = pitft("/dev/fb1"); fb.clear(); var xMax = fb.size().width; diff --git a/examples/circles.js b/examples/circles.js index 78656e0..8afc9ad 100644 --- a/examples/circles.js +++ b/examples/circles.js @@ -1,6 +1,6 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1"); +var fb = pitft("/dev/fb1"); fb.clear(); var xMax = fb.size().width; diff --git a/examples/clock.js b/examples/clock.js index 04d86b3..22bc99d 100644 --- a/examples/clock.js +++ b/examples/clock.js @@ -1,6 +1,6 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1", true); +var fb = pitft("/dev/fb1", true); fb.clear(); var xMax = fb.size().width; diff --git a/examples/lines.js b/examples/lines.js index 53c3288..04903bd 100644 --- a/examples/lines.js +++ b/examples/lines.js @@ -1,6 +1,7 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1"); +var fb = pitft("/dev/fb1"); + fb.clear(); var xMax = fb.size().width; diff --git a/examples/rectangles.js b/examples/rectangles.js index 371aef4..0790a53 100644 --- a/examples/rectangles.js +++ b/examples/rectangles.js @@ -1,6 +1,6 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1"); +var fb = pitft("/dev/fb1"); fb.clear(); var xMax = fb.size().width; diff --git a/examples/text.js b/examples/text.js index 1c752d9..af56741 100644 --- a/examples/text.js +++ b/examples/text.js @@ -1,7 +1,6 @@ var pitft = require("../pitft"); -var fb = new pitft.FrameBuffer("/dev/fb1"); - +var fb = pitft("/dev/fb1"); fb.clear(); var xMax = fb.size().width; diff --git a/package.json b/package.json index 32b75c3..d045dc5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pitft", - "description": "A C++ extension for node.js that gives javascript access to the PiTFT framebuffer", - "version": "0.0.7", + "description": "A NodeJS module that gives you access to the PiTFT framebuffer", + "version": "0.0.8", "main": "pitft.js", "author": "Werner Vesteraas ", "license": { diff --git a/src/framebuffer.cc b/src/framebuffer.cc index 6f7472a..0050db0 100644 --- a/src/framebuffer.cc +++ b/src/framebuffer.cc @@ -2,13 +2,12 @@ using namespace v8; -Persistent FrameBuffer::constructor; +Persistent FrameBuffer::constructor; -void FrameBuffer::Init(Handle exports) { +void FrameBuffer::Init() { NanScope(); Local ctor = NanNew(FrameBuffer::New); - NanAssignPersistent(constructor, ctor); ctor->InstanceTemplate()->SetInternalFieldCount(1); ctor->SetClassName(NanNew("FrameBuffer")); @@ -25,7 +24,17 @@ void FrameBuffer::Init(Handle exports) { NODE_SET_PROTOTYPE_METHOD(ctor, "text", Text); NODE_SET_PROTOTYPE_METHOD(ctor, "image", Image); - exports->Set(NanNew("FrameBuffer"), ctor->GetFunction()); + constructor = Persistent::New(ctor->GetFunction()); +} + +NAN_METHOD(FrameBuffer::NewInstance) { + HandleScope scope; + + const unsigned argc = 2; + Handle argv[2] = { args[0], args[1] }; + Local instance = constructor->NewInstance(argc, argv); + + NanReturnValue(instance); } NAN_METHOD(FrameBuffer::New) { @@ -84,9 +93,11 @@ NAN_METHOD(FrameBuffer::Blit) { FrameBuffer *obj = ObjectWrap::Unwrap(args.Holder()); - cairo_t *cr = cairo_create (obj->screenSurface); - cairo_set_source_surface (cr, obj->bufferSurface, 0, 0); - cairo_paint (cr); + if (obj->drawToBuffer) { + cairo_t *cr = cairo_create (obj->screenSurface); + cairo_set_source_surface (cr, obj->bufferSurface, 0, 0); + cairo_paint (cr); + } NanReturnUndefined(); } diff --git a/src/framebuffer.h b/src/framebuffer.h index fb69332..91e46fb 100644 --- a/src/framebuffer.h +++ b/src/framebuffer.h @@ -20,8 +20,9 @@ using namespace node; class FrameBuffer : public node::ObjectWrap { public: - static Persistent constructor; - static void Init(Handle exports); + static Persistent constructor; + static void Init(); + static NAN_METHOD(NewInstance); static NAN_METHOD(New); static NAN_METHOD(Size); static NAN_METHOD(Data); diff --git a/src/pitft.cc b/src/pitft.cc index 8a9e169..aeed90c 100644 --- a/src/pitft.cc +++ b/src/pitft.cc @@ -3,8 +3,17 @@ using namespace v8; -void InitAll(Handle exports) { - FrameBuffer::Init(exports); +NAN_METHOD(CreateObject) { + NanScope(); + + NanReturnValue(FrameBuffer::NewInstance(args)); +} + +void InitAll(Handle exports, Handle module) { + FrameBuffer::Init(); + + module->Set(String::NewSymbol("exports"), + FunctionTemplate::New(CreateObject)->GetFunction()); } NODE_MODULE(pitft, InitAll)