skia2/experimental/SkV8Example/DrawingMethods.h
jcgregorio 5e44b00392 Start moving to the new canvas structure.
Adds DrawingMethods with some of the methods it defines. Context is now
an implementation of DrawingMethods.

The sample.js file now shows how the context is used.

Not much new code here, that's mostly in DrawingMethods::DrawPath, most everything else is a code move.

BUG=skia:

Review URL: https://codereview.chromium.org/676423002
2014-10-27 10:27:01 -07:00

58 lines
1.7 KiB
C++

/*
* Copyright 2014 Google Inc.
*
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
*/
#ifndef SkV8Example_DrawingMethods_DEFINED
#define SkV8Example_DrawingMethods_DEFINED
#include <v8.h>
class SkCanvas;
class Global;
// DrawingMethods contains common functionality for both Context, Image2Builder,
// and DisplayListBuiler.
class DrawingMethods {
public:
DrawingMethods(Global* global)
: fGlobal(global)
{}
virtual ~DrawingMethods() {}
// Retrieve the SkCanvas to draw on. May return NULL.
virtual SkCanvas* getCanvas() = 0;
// Add the Javascript attributes and methods that DrawingMethods
// implements to the ObjectTemplate.
void addAttributesAndMethods(v8::Handle<v8::ObjectTemplate> tmpl);
protected:
// Get the pointer out of obj.
static DrawingMethods* Unwrap(v8::Handle<v8::Object> obj);
Global* fGlobal;
private:
// JS Attributes
static void GetWidth(v8::Local<v8::String> name,
const v8::PropertyCallbackInfo<v8::Value>& info);
static void GetHeight(v8::Local<v8::String> name,
const v8::PropertyCallbackInfo<v8::Value>& info);
// JS Methods
static void Save(const v8::FunctionCallbackInfo<v8::Value>& args);
static void Restore(const v8::FunctionCallbackInfo<v8::Value>& args);
static void Rotate(const v8::FunctionCallbackInfo<v8::Value>& args);
static void Translate(const v8::FunctionCallbackInfo<v8::Value>& args);
static void ResetTransform(const v8::FunctionCallbackInfo<v8::Value>& args);
static void DrawPath(const v8::FunctionCallbackInfo<v8::Value>& args);
};
#endif