blob: b7fe3815a6aedb30737ad5abbefe171451c45b2c [file] [log] [blame]
commit-bot@chromium.org24e04962014-03-04 20:44:32 +00001/*
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_BaseContext_DEFINED
11#define SkV8Example_BaseContext_DEFINED
12
13#include <v8.h>
14
15#include "SkPaint.h"
16
17using namespace v8;
18
19class SkCanvas;
20class Global;
21
22// BaseContext contains common functionality for both JsContext
23// and DisplayList.
24class BaseContext {
25public:
26 BaseContext(Global* global)
27 : fGlobal(global)
28 {
29 fFillStyle.setColor(SK_ColorBLACK);
30 fFillStyle.setAntiAlias(true);
31 fFillStyle.setStyle(SkPaint::kFill_Style);
32 fStrokeStyle.setColor(SK_ColorBLACK);
33 fStrokeStyle.setAntiAlias(true);
34 fStrokeStyle.setStyle(SkPaint::kStroke_Style);
35 }
36 virtual ~BaseContext() {}
37
38 // Retrieve the SkCanvas to draw on. May return NULL.
39 virtual SkCanvas* getCanvas() = 0;
40
41 // Add the Javascript attributes and methods that BaseContext implements to the ObjectTemplate.
42 void addAttributesAndMethods(Handle<ObjectTemplate> tmpl);
43
44protected:
45 // Get the pointer out of obj.
46 static BaseContext* Unwrap(Handle<Object> obj);
47
48 Global* fGlobal;
49 SkPaint fFillStyle;
50 SkPaint fStrokeStyle;
51
52private:
53 static void GetStyle(Local<String> name,
54 const PropertyCallbackInfo<Value>& info,
55 const SkPaint& style);
56 static void SetStyle(Local<String> name, Local<Value> value,
57 const PropertyCallbackInfo<void>& info,
58 SkPaint& style);
59 // JS Attributes
60 static void GetFillStyle(Local<String> name,
61 const PropertyCallbackInfo<Value>& info);
62 static void SetFillStyle(Local<String> name, Local<Value> value,
63 const PropertyCallbackInfo<void>& info);
64 static void GetStrokeStyle(Local<String> name,
65 const PropertyCallbackInfo<Value>& info);
66 static void SetStrokeStyle(Local<String> name, Local<Value> value,
67 const PropertyCallbackInfo<void>& info);
68 static void GetWidth(Local<String> name,
69 const PropertyCallbackInfo<Value>& info);
70 static void GetHeight(Local<String> name,
71 const PropertyCallbackInfo<Value>& info);
72
73 // JS Methods
74 static void FillRect(const v8::FunctionCallbackInfo<Value>& args);
75 static void Stroke(const v8::FunctionCallbackInfo<Value>& args);
76 static void Fill(const v8::FunctionCallbackInfo<Value>& args);
77 static void Rotate(const v8::FunctionCallbackInfo<Value>& args);
78 static void Save(const v8::FunctionCallbackInfo<Value>& args);
79 static void Restore(const v8::FunctionCallbackInfo<Value>& args);
80 static void Translate(const v8::FunctionCallbackInfo<Value>& args);
81 static void ResetTransform(const v8::FunctionCallbackInfo<Value>& args);
82};
83
84#endif