From 86837dbecc3aac83fbfaba85a2b4bbab5413479e Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Sat, 6 Nov 2010 14:25:16 -0700 Subject: [PATCH] Added Context2d::{save,restore}() --- src/CanvasRenderingContext2d.cc | 28 +++++++++++++++++++++++----- src/CanvasRenderingContext2d.h | 2 ++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 5c59af3..030e429 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -171,6 +171,26 @@ Context2d::~Context2d() { cairo_destroy(_context); } +/* + * Save cairo / canvas state. + */ + +void +Context2d::save() { + cairo_save(_context); + saveState(); +} + +/* + * Restore cairo / canvas state. + */ + +void +Context2d::restore() { + cairo_restore(_context); + restoreState(); +} + /* * Save the current state. */ @@ -630,8 +650,7 @@ Handle Context2d::Save(const Arguments &args) { HandleScope scope; Context2d *context = ObjectWrap::Unwrap(args.This()); - cairo_save(context->getContext()); - context->saveState(); + context->save(); return Undefined(); } @@ -643,8 +662,7 @@ Handle Context2d::Restore(const Arguments &args) { HandleScope scope; Context2d *context = ObjectWrap::Unwrap(args.This()); - cairo_restore(context->getContext()); - context->restoreState(); + context->restore(); return Undefined(); } @@ -1082,7 +1100,7 @@ Context2d::StrokeRect(const Arguments &args) { Context2d *context = ObjectWrap::Unwrap(args.This()); cairo_t *ctx = context->getContext(); cairo_new_path(ctx); - + if (!context->hasShadow()) { cairo_rectangle(ctx, x, y, width, height); SET_SOURCE(context->state->stroke); diff --git a/src/CanvasRenderingContext2d.h b/src/CanvasRenderingContext2d.h index f9229ac..142fb65 100644 --- a/src/CanvasRenderingContext2d.h +++ b/src/CanvasRenderingContext2d.h @@ -104,6 +104,8 @@ class Context2d: public node::ObjectWrap { void setTextPath(const char *str, double x, double y); void savePath(); void restorePath(); + void save(); + void restore(); void saveState(); void restoreState();