diff --git a/src/QtGui/qpainter.cc b/src/QtGui/qpainter.cc index 63ebe56..56a68af 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,7 +86,13 @@ 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()); + 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); } @@ -445,3 +452,93 @@ 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::DrawEllipse: argument not recognized"))); + + QPointFWrap* pointf_wrap = ObjectWrap::Unwrap(args[0]->ToObject()); + QPointF* pointf = pointf_wrap->GetWrapped(); + + q->drawEllipse( *pointf, args[1]->IntegerValue(), args[2]->IntegerValue() ); + + 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; + + 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 471de5c..17ffaca 100644 --- a/src/QtGui/qpainter.h +++ b/src/QtGui/qpainter.h @@ -59,13 +59,16 @@ 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); 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); + static v8::Handle FillPath(const v8::Arguments& args); // Wrapped object QPainter* q_; 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