From 89add3e0c18a248b631b12f946002be10accbaa0 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 5 Apr 2014 18:57:13 +0000 Subject: [PATCH 1/4] - Added the showMaximized helper method to QTWidget --- src/QtGui/qwidget.cc | 15 ++++++++++++++- src/QtGui/qwidget.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/QtGui/qwidget.cc b/src/QtGui/qwidget.cc index 15a00ae..c5ed6d2 100644 --- a/src/QtGui/qwidget.cc +++ b/src/QtGui/qwidget.cc @@ -212,7 +212,9 @@ void QWidgetWrap::Initialize(Handle target) { FunctionTemplate::New(X)->GetFunction()); tpl->PrototypeTemplate()->Set(String::NewSymbol("y"), FunctionTemplate::New(Y)->GetFunction()); - + tpl->PrototypeTemplate()->Set(String::NewSymbol("showMaximized"), + FunctionTemplate::New(Show)->GetFunction()); + // Events tpl->PrototypeTemplate()->Set(String::NewSymbol("paintEvent"), FunctionTemplate::New(PaintEvent)->GetFunction()); @@ -515,3 +517,14 @@ Handle QWidgetWrap::Y(const Arguments& args) { return scope.Close(Integer::New(q->y())); } + +Handle QWidgetWrap::showMaximized(const Arguments& args) { + HandleScope scope; + + QWidgetWrap* w = node::ObjectWrap::Unwrap(args.This()); + QWidgetImpl* q = w->GetWrapped(); + + q->showMaximized(); + + return scope.Close(Undefined()); +} \ No newline at end of file diff --git a/src/QtGui/qwidget.h b/src/QtGui/qwidget.h index 013c925..9249fa9 100644 --- a/src/QtGui/qwidget.h +++ b/src/QtGui/qwidget.h @@ -89,6 +89,7 @@ class QWidgetWrap : public node::ObjectWrap { static v8::Handle Move(const v8::Arguments& args); static v8::Handle X(const v8::Arguments& args); static v8::Handle Y(const v8::Arguments& args); + static v8::Handle showMaximized(const v8::Arguments& args); // QUIRK // Event binding. These functions bind implemented event handlers above From 3f20b0538a8c556dbd19924a06d563e91e1a25de Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 5 Apr 2014 21:10:46 +0000 Subject: [PATCH 2/4] - added the drawEllipse method --- src/QtGui/qpainter.cc | 30 ++++++++++++++++++++++++++++++ src/QtGui/qpainter.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/src/QtGui/qpainter.cc b/src/QtGui/qpainter.cc index 63ebe56..5c8fe2e 100644 --- a/src/QtGui/qpainter.cc +++ b/src/QtGui/qpainter.cc @@ -40,6 +40,7 @@ #include "qpainterpath.h" #include "qfont.h" #include "qmatrix.h" +#include "../QtCore/qpointf.h" using namespace v8; @@ -85,6 +86,8 @@ void QPainterWrap::Initialize(Handle target) { FunctionTemplate::New(DrawImage)->GetFunction()); tpl->PrototypeTemplate()->Set(String::NewSymbol("strokePath"), FunctionTemplate::New(StrokePath)->GetFunction()); + tpl->PrototypeTemplate()->Set(String::NewSymbol("drawEllipse"), + FunctionTemplate::New(DrawEllipse)->GetFunction()); constructor = Persistent::New(tpl->GetFunction()); target->Set(String::NewSymbol("QPainter"), constructor); @@ -445,3 +448,30 @@ Handle QPainterWrap::StrokePath(const Arguments& args) { return scope.Close(Undefined()); } + +// void QPainter::drawEllipse ( const QPoint & center, int rx, int ry ) +Handle QPainterWrap::DrawEllipse(const Arguments& args) { + HandleScope scope; + + QPainterWrap* w = ObjectWrap::Unwrap(args.This()); + QPainter* q = w->GetWrapped(); + + QString arg0_constructor; + if (args[0]->IsObject()) { + arg0_constructor = + qt_v8::ToQString(args[0]->ToObject()->GetConstructorName()); + } + + if (arg0_constructor != "QPointF") + return ThrowException(Exception::TypeError( + String::New("QPainterPathWrap::MoveTo: argument not recognized"))); + + QPointFWrap* pointf_wrap = ObjectWrap::Unwrap(args[0]->ToObject()); + QPointF* pointf = pointf_wrap->GetWrapped(); + + // args[1]->IntegerValue(), args[2]->IntegerValue() + + q->drawEllipse( *pointf, args[1]->IntegerValue(), args[2]->IntegerValue() ); + + return scope.Close(Undefined()); +} \ No newline at end of file diff --git a/src/QtGui/qpainter.h b/src/QtGui/qpainter.h index 471de5c..f643079 100644 --- a/src/QtGui/qpainter.h +++ b/src/QtGui/qpainter.h @@ -66,6 +66,8 @@ class QPainterWrap : public node::ObjectWrap { static v8::Handle DrawPixmap(const v8::Arguments& args); static v8::Handle DrawImage(const v8::Arguments& args); static v8::Handle StrokePath(const v8::Arguments& args); + static v8::Handle DrawEllipse(const v8::Arguments& args); + // Wrapped object QPainter* q_; From 08e84a117a07c9bce0984495bf46e0c214dc4414 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 5 Apr 2014 21:36:31 +0000 Subject: [PATCH 3/4] - added the SetBrush method --- src/QtGui/qpainter.cc | 35 ++++++++++++++++++++++++++++++----- src/QtGui/qpainter.h | 3 ++- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/QtGui/qpainter.cc b/src/QtGui/qpainter.cc index 5c8fe2e..23b50ad 100644 --- a/src/QtGui/qpainter.cc +++ b/src/QtGui/qpainter.cc @@ -88,6 +88,8 @@ void QPainterWrap::Initialize(Handle target) { FunctionTemplate::New(StrokePath)->GetFunction()); tpl->PrototypeTemplate()->Set(String::NewSymbol("drawEllipse"), FunctionTemplate::New(DrawEllipse)->GetFunction()); + tpl->PrototypeTemplate()->Set(String::NewSymbol("setBrush"), + FunctionTemplate::New(SetBrush)->GetFunction()); constructor = Persistent::New(tpl->GetFunction()); target->Set(String::NewSymbol("QPainter"), constructor); @@ -464,14 +466,37 @@ Handle QPainterWrap::DrawEllipse(const Arguments& args) { if (arg0_constructor != "QPointF") return ThrowException(Exception::TypeError( - String::New("QPainterPathWrap::MoveTo: argument not recognized"))); + String::New("QPainterPathWrap::DrawEllipse: argument not recognized"))); QPointFWrap* pointf_wrap = ObjectWrap::Unwrap(args[0]->ToObject()); - QPointF* pointf = pointf_wrap->GetWrapped(); - - // args[1]->IntegerValue(), args[2]->IntegerValue() + QPointF* pointf = pointf_wrap->GetWrapped(); q->drawEllipse( *pointf, args[1]->IntegerValue(), args[2]->IntegerValue() ); return scope.Close(Undefined()); -} \ No newline at end of file +} + +Handle QPainterWrap::SetBrush(const Arguments& args) { + HandleScope scope; + + QPainterWrap* w = ObjectWrap::Unwrap(args.This()); + QPainter* q = w->GetWrapped(); + + QString arg0_constructor; + if (args[0]->IsObject()) { + arg0_constructor = + qt_v8::ToQString(args[0]->ToObject()->GetConstructorName()); + } + + if (arg0_constructor != "QBrush") + return ThrowException(Exception::TypeError( + String::New("QPainterPathWrap::SetBrush: argument not recognized"))); + + // Unwrap QBrush + QBrushWrap* brush_wrap = ObjectWrap::Unwrap(args[0]->ToObject()); + QBrush* brush = brush_wrap->GetWrapped(); + + q->setBrush( *brush ); + + return scope.Close(Undefined()); +} diff --git a/src/QtGui/qpainter.h b/src/QtGui/qpainter.h index f643079..ba7d809 100644 --- a/src/QtGui/qpainter.h +++ b/src/QtGui/qpainter.h @@ -59,7 +59,8 @@ class QPainterWrap : public node::ObjectWrap { static v8::Handle SetPen(const v8::Arguments& args); static v8::Handle SetFont(const v8::Arguments& args); static v8::Handle SetMatrix(const v8::Arguments& args); - + static v8::Handle SetBrush(const v8::Arguments& args); + // Paint actions static v8::Handle FillRect(const v8::Arguments& args); static v8::Handle DrawText(const v8::Arguments& args); From 619d9b27f6668e585699efa37eeb5c317e5921fc Mon Sep 17 00:00:00 2001 From: Raspberry Pi Date: Tue, 8 Apr 2014 02:28:48 +0000 Subject: [PATCH 4/4] - added fillRect --- src/QtGui/qpainter.cc | 44 ++++++++++++++++++++++++++++++++++++++++++- src/QtGui/qpainter.h | 2 +- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/QtGui/qpainter.cc b/src/QtGui/qpainter.cc index 23b50ad..56a68af 100644 --- a/src/QtGui/qpainter.cc +++ b/src/QtGui/qpainter.cc @@ -90,7 +90,9 @@ void QPainterWrap::Initialize(Handle target) { FunctionTemplate::New(DrawEllipse)->GetFunction()); tpl->PrototypeTemplate()->Set(String::NewSymbol("setBrush"), FunctionTemplate::New(SetBrush)->GetFunction()); - + tpl->PrototypeTemplate()->Set(String::NewSymbol("fillPath"), + FunctionTemplate::New(FillPath)->GetFunction()); + constructor = Persistent::New(tpl->GetFunction()); target->Set(String::NewSymbol("QPainter"), constructor); } @@ -476,6 +478,46 @@ Handle QPainterWrap::DrawEllipse(const Arguments& args) { return scope.Close(Undefined()); } +Handle QPainterWrap::FillPath(const Arguments& args) { + HandleScope scope; + + QPainterWrap* w = ObjectWrap::Unwrap(args.This()); + QPainter* q = w->GetWrapped(); + + QString arg0_constructor; + if (args[0]->IsObject()) { + arg0_constructor = + qt_v8::ToQString(args[0]->ToObject()->GetConstructorName()); + } + + if (arg0_constructor != "QPainterPath") + return ThrowException(Exception::TypeError( + String::New("QPainterPathWrap::FillPath: argument not recognized"))); + + QString arg1_constructor; + if (args[1]->IsObject()) { + arg1_constructor = + qt_v8::ToQString(args[1]->ToObject()->GetConstructorName()); + } + + if (arg1_constructor != "QBrush") + return ThrowException(Exception::TypeError( + String::New("QBrush::FillPath: argument not recognized"))); + + + // Unwrap QPainterPath + QPainterPathWrap* path_wrap = ObjectWrap::Unwrap(args[0]->ToObject()); + QPainterPath* path = path_wrap->GetWrapped(); + + // Unwrap QBrush + QBrushWrap* brush_wrap = ObjectWrap::Unwrap(args[1]->ToObject()); + QBrush* brush = brush_wrap->GetWrapped(); + + q->fillPath( *path, *brush ); + + return scope.Close(Undefined()); +} + Handle QPainterWrap::SetBrush(const Arguments& args) { HandleScope scope; diff --git a/src/QtGui/qpainter.h b/src/QtGui/qpainter.h index ba7d809..17ffaca 100644 --- a/src/QtGui/qpainter.h +++ b/src/QtGui/qpainter.h @@ -68,7 +68,7 @@ class QPainterWrap : public node::ObjectWrap { static v8::Handle DrawImage(const v8::Arguments& args); static v8::Handle StrokePath(const v8::Arguments& args); static v8::Handle DrawEllipse(const v8::Arguments& args); - + static v8::Handle FillPath(const v8::Arguments& args); // Wrapped object QPainter* q_;