@@ -1828,24 +1828,26 @@ NAN_GETTER(Context2d::GetFillStyle) {
18281828NAN_SETTER (Context2d::SetFillStyle) {
18291829 Context2d *context = Nan::ObjectWrap::Unwrap<Context2d>(info.This ());
18301830
1831- if (Nan::New (Gradient::constructor)->HasInstance (value) ||
1832- Nan::New (Pattern::constructor)->HasInstance (value)) {
1833- context->_fillStyle .Reset (value);
1834-
1831+ if (value->IsString ()) {
1832+ MaybeLocal<String> mstr = Nan::To<String>(value);
1833+ if (mstr.IsEmpty ()) return ;
1834+ Local<String> str = mstr.ToLocalChecked ();
1835+ context->_fillStyle .Reset ();
1836+ context->_setFillColor (str);
1837+ } else if (value->IsObject ()) {
18351838 Local<Object> obj = Nan::To<Object>(value).ToLocalChecked ();
1836- if (Nan::New (Gradient::constructor)->HasInstance (obj)){
1839+ if (Nan::New (Gradient::constructor)->HasInstance (obj)) {
1840+ context->_fillStyle .Reset (value);
18371841 Gradient *grad = Nan::ObjectWrap::Unwrap<Gradient>(obj);
18381842 context->state ->fillGradient = grad->pattern ();
1839- } else if (Nan::New (Pattern::constructor)->HasInstance (obj)){
1843+ } else if (Nan::New (Pattern::constructor)->HasInstance (obj)) {
1844+ context->_fillStyle .Reset (value);
18401845 Pattern *pattern = Nan::ObjectWrap::Unwrap<Pattern>(obj);
18411846 context->state ->fillPattern = pattern->pattern ();
1847+ } else {
1848+ // TODO this is non-standard
1849+ Nan::ThrowTypeError (" Gradient or Pattern expected" );
18421850 }
1843- } else {
1844- MaybeLocal<String> mstr = Nan::To<String>(value);
1845- if (mstr.IsEmpty ()) return ;
1846- Local<String> str = mstr.ToLocalChecked ();
1847- context->_fillStyle .Reset ();
1848- context->_setFillColor (str);
18491851 }
18501852}
18511853
@@ -1872,26 +1874,26 @@ NAN_GETTER(Context2d::GetStrokeStyle) {
18721874NAN_SETTER (Context2d::SetStrokeStyle) {
18731875 Context2d *context = Nan::ObjectWrap::Unwrap<Context2d>(info.This ());
18741876
1875- if (Nan::New (Gradient::constructor)->HasInstance (value) ||
1876- Nan::New (Pattern::constructor)->HasInstance (value)) {
1877- context->_strokeStyle .Reset (value);
1878-
1877+ if (value->IsString ()) {
1878+ MaybeLocal<String> mstr = Nan::To<String>(value);
1879+ if (mstr.IsEmpty ()) return ;
1880+ Local<String> str = mstr.ToLocalChecked ();
1881+ context->_strokeStyle .Reset ();
1882+ context->_setStrokeColor (str);
1883+ } else if (value->IsObject ()) {
18791884 Local<Object> obj = Nan::To<Object>(value).ToLocalChecked ();
1880- if (Nan::New (Gradient::constructor)->HasInstance (obj)){
1885+ if (Nan::New (Gradient::constructor)->HasInstance (obj)) {
1886+ context->_strokeStyle .Reset (value);
18811887 Gradient *grad = Nan::ObjectWrap::Unwrap<Gradient>(obj);
18821888 context->state ->strokeGradient = grad->pattern ();
1883- } else if (Nan::New (Pattern::constructor)->HasInstance (obj)){
1889+ } else if (Nan::New (Pattern::constructor)->HasInstance (obj)) {
1890+ context->_strokeStyle .Reset (value);
18841891 Pattern *pattern = Nan::ObjectWrap::Unwrap<Pattern>(obj);
18851892 context->state ->strokePattern = pattern->pattern ();
18861893 } else {
1894+ // TODO this is non-standard
18871895 return Nan::ThrowTypeError (" Gradient or Pattern expected" );
18881896 }
1889- } else {
1890- MaybeLocal<String> mstr = Nan::To<String>(value);
1891- if (mstr.IsEmpty ()) return ;
1892- Local<String> str = mstr.ToLocalChecked ();
1893- context->_strokeStyle .Reset ();
1894- context->_setStrokeColor (str);
18951897 }
18961898}
18971899
0 commit comments