From ca5a58908f98e0bec0e2345bb6cf1df686bc8037 Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Mon, 29 Nov 2010 11:18:29 -0800 Subject: [PATCH] Added CanvasRenderingContext2d#patternQuality accessor (non-standard) --- src/CanvasRenderingContext2d.cc | 35 +++++++++++++++++++++++++++++++++ src/CanvasRenderingContext2d.h | 2 ++ 2 files changed, 37 insertions(+) diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 44ab5ff..80dd8d7 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -94,6 +94,7 @@ Context2d::Initialize(Handle target) { NODE_SET_PROTOTYPE_METHOD(constructor, "setStrokeColor", SetStrokeColor); NODE_SET_PROTOTYPE_METHOD(constructor, "setFillPattern", SetFillPattern); NODE_SET_PROTOTYPE_METHOD(constructor, "setStrokePattern", SetStrokePattern); + proto->SetAccessor(String::NewSymbol("patternQuality"), GetPatternQuality, SetPatternQuality); proto->SetAccessor(String::NewSymbol("globalCompositeOperation"), GetGlobalCompositeOperation, SetGlobalCompositeOperation); proto->SetAccessor(String::NewSymbol("globalAlpha"), GetGlobalAlpha, SetGlobalAlpha); proto->SetAccessor(String::NewSymbol("shadowColor"), GetShadowColor, SetShadowColor); @@ -661,6 +662,40 @@ Context2d::GetGlobalCompositeOperation(Local prop, const AccessorInfo &i } } +/* + * Set pattern quality. + */ + +void +Context2d::SetPatternQuality(Local prop, Local val, const AccessorInfo &info) { + Context2d *context = ObjectWrap::Unwrap(info.This()); + String::AsciiValue quality(val->ToString()); + if (0 == strcmp("fast", *quality)) { + context->state->patternQuality = CAIRO_FILTER_FAST; + } else if (0 == strcmp("good", *quality)) { + context->state->patternQuality = CAIRO_FILTER_GOOD; + } else if (0 == strcmp("best", *quality)) { + context->state->patternQuality = CAIRO_FILTER_BEST; + } +} + +/* + * Get pattern quality. + */ + +Handle +Context2d::GetPatternQuality(Local prop, const AccessorInfo &info) { + Context2d *context = ObjectWrap::Unwrap(info.This()); + switch (context->state->patternQuality) { + case CAIRO_FILTER_FAST: + return String::New("fast"); + case CAIRO_FILTER_BEST: + return String::New("best"); + default: + return String::New("good"); + } +} + /* * Set global composite operation. */ diff --git a/src/CanvasRenderingContext2d.h b/src/CanvasRenderingContext2d.h index 90b1e68..4bfc49c 100644 --- a/src/CanvasRenderingContext2d.h +++ b/src/CanvasRenderingContext2d.h @@ -78,6 +78,7 @@ class Context2d: public node::ObjectWrap { static Handle Rect(const Arguments &args); static Handle Arc(const Arguments &args); static Handle ArcTo(const Arguments &args); + static Handle GetPatternQuality(Local prop, const AccessorInfo &info); static Handle GetGlobalCompositeOperation(Local prop, const AccessorInfo &info); static Handle GetGlobalAlpha(Local prop, const AccessorInfo &info); static Handle GetShadowColor(Local prop, const AccessorInfo &info); @@ -91,6 +92,7 @@ class Context2d: public node::ObjectWrap { static Handle GetShadowOffsetY(Local prop, const AccessorInfo &info); static Handle GetShadowBlur(Local prop, const AccessorInfo &info); static Handle GetAntiAlias(Local prop, const AccessorInfo &info); + static void SetPatternQuality(Local prop, Local val, const AccessorInfo &info); static void SetGlobalCompositeOperation(Local prop, Local val, const AccessorInfo &info); static void SetGlobalAlpha(Local prop, Local val, const AccessorInfo &info); static void SetShadowColor(Local prop, Local val, const AccessorInfo &info);