Home | History | Annotate | Download | only in SkV8Example
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  *
      8  */
      9 
     10 #ifndef SkV8Example_DrawingMethods_DEFINED
     11 #define SkV8Example_DrawingMethods_DEFINED
     12 
     13 #include <v8.h>
     14 
     15 class SkCanvas;
     16 class Global;
     17 
     18 // DrawingMethods contains common functionality for both Context, Image2Builder,
     19 // and DisplayListBuiler.
     20 class DrawingMethods {
     21 public:
     22     DrawingMethods(Global* global)
     23             : fGlobal(global)
     24     {}
     25     virtual ~DrawingMethods() {}
     26 
     27     // Retrieve the SkCanvas to draw on. May return NULL.
     28     virtual SkCanvas* getCanvas() = 0;
     29 
     30     // Add the Javascript attributes and methods that DrawingMethods
     31     // implements to the ObjectTemplate.
     32     void addAttributesAndMethods(v8::Handle<v8::ObjectTemplate> tmpl);
     33 
     34 protected:
     35     // Get the pointer out of obj.
     36     static DrawingMethods* Unwrap(v8::Handle<v8::Object> obj);
     37 
     38     Global* fGlobal;
     39 
     40 private:
     41     // JS Attributes
     42     static void GetWidth(v8::Local<v8::String> name,
     43                          const v8::PropertyCallbackInfo<v8::Value>& info);
     44     static void GetHeight(v8::Local<v8::String> name,
     45                           const v8::PropertyCallbackInfo<v8::Value>& info);
     46 
     47     // JS Methods
     48     static void Save(const v8::FunctionCallbackInfo<v8::Value>& args);
     49     static void Restore(const v8::FunctionCallbackInfo<v8::Value>& args);
     50     static void Rotate(const v8::FunctionCallbackInfo<v8::Value>& args);
     51     static void Translate(const v8::FunctionCallbackInfo<v8::Value>& args);
     52     static void ResetTransform(const v8::FunctionCallbackInfo<v8::Value>& args);
     53 
     54     static void DrawPath(const v8::FunctionCallbackInfo<v8::Value>& args);
     55 };
     56 
     57 #endif
     58