From f948b10d7cd7fb09ffaf768feee5b5b81c8e1d29 Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Wed, 17 Nov 2010 10:21:43 -0800 Subject: [PATCH] HasInstance() for Set{Fill,Stroke}Pattern() --- src/CanvasRenderingContext2d.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 4a056d3..5daef19 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -962,9 +962,13 @@ Context2d::IsPointInPath(const Arguments &args) { Handle Context2d::SetFillPattern(const Arguments &args) { HandleScope scope; - // TODO: HasInstance / error handling + + Local obj = args[0]->ToObject(); + if (!Gradient::constructor->HasInstance(obj)) + return ThrowException(Exception::TypeError(String::New("Gradient expected"))); + Context2d *context = ObjectWrap::Unwrap(args.This()); - Gradient *grad = ObjectWrap::Unwrap(args[0]->ToObject()); + Gradient *grad = ObjectWrap::Unwrap(obj); context->state->fillPattern = grad->pattern(); return Undefined(); } @@ -976,9 +980,13 @@ Context2d::SetFillPattern(const Arguments &args) { Handle Context2d::SetStrokePattern(const Arguments &args) { HandleScope scope; - // TODO: HasInstance / error handling + + Local obj = args[0]->ToObject(); + if (!Gradient::constructor->HasInstance(obj)) + return ThrowException(Exception::TypeError(String::New("Gradient expected"))); + Context2d *context = ObjectWrap::Unwrap(args.This()); - Gradient *grad = ObjectWrap::Unwrap(args[0]->ToObject()); + Gradient *grad = ObjectWrap::Unwrap(obj); context->state->strokePattern = grad->pattern(); return Undefined(); }