OLD | NEW |
---|---|
(Empty) | |
1 /* | |
robertphillips
2014/01/06 15:37:04
2014 now?
jcgregorio
2014/01/06 15:57:31
Done.
| |
2 * Copyright 2013 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_JsContext_DEFINED | |
11 #define SkV8Example_JsContext_DEFINED | |
12 | |
13 #include <v8.h> | |
14 | |
15 #include "SkPaint.h" | |
16 | |
17 using namespace v8; | |
18 | |
19 class SkCanvas; | |
20 class Global; | |
21 | |
22 // Provides the canvas context implementation in JS, and the OnDraw() method in | |
23 // C++ that's used to bridge from C++ to JS. Should be used in JS as: | |
24 // | |
25 // function onDraw(context) { | |
26 // context.fillStyle="#FF0000"; | |
27 // context.fillRect(x, y, w, h); | |
28 // } | |
29 class JsContext { | |
30 public: | |
31 JsContext(Global* global) | |
32 : fGlobal(global) | |
33 , fCanvas(NULL) | |
34 { | |
35 fFillStyle.setColor(SK_ColorRED); | |
36 } | |
37 ~JsContext(); | |
38 | |
39 // Parse the script. | |
40 bool initialize(); | |
41 | |
42 // Call this with the SkCanvas you want onDraw to draw on. | |
43 void onDraw(SkCanvas* canvas); | |
44 | |
45 private: | |
46 // Implementation of the context.fillStyle field. | |
47 static void GetFillStyle(Local<String> name, | |
48 const PropertyCallbackInfo<Value>& info); | |
49 static void SetFillStyle(Local<String> name, Local<Value> value, | |
50 const PropertyCallbackInfo<void>& info); | |
51 static void GetWidth(Local<String> name, | |
52 const PropertyCallbackInfo<Value>& info); | |
53 static void GetHeight(Local<String> name, | |
54 const PropertyCallbackInfo<Value>& info); | |
55 | |
56 // Implementation of the context.fillRect() JS function. | |
57 static void FillRect(const v8::FunctionCallbackInfo<Value>& args); | |
58 | |
59 // Implementation of the context.stroke(Path path) JS function. | |
60 static void Stroke(const v8::FunctionCallbackInfo<Value>& args); | |
61 | |
62 // Implementation of the context.fill(Path path) JS function. | |
63 static void Fill(const v8::FunctionCallbackInfo<Value>& args); | |
64 | |
65 // Implementation of the context.translate(dx, dy) JS function. | |
66 static void Translate(const v8::FunctionCallbackInfo<Value>& args); | |
67 | |
68 // Implementation of the context.resetTransform() JS function. | |
69 static void ResetTransform(const v8::FunctionCallbackInfo<Value>& args); | |
70 | |
71 // Get the pointer out of obj. | |
72 static JsContext* Unwrap(Handle<Object> obj); | |
73 | |
74 // Create a template for JS object associated with JsContext, called lazily | |
75 // by Wrap() and the results are stored in fContextTemplate; | |
76 Handle<ObjectTemplate> makeContextTemplate(); | |
77 | |
78 // Wrap the 'this' pointer into an Object. Can be retrieved via Unwrap. | |
79 Handle<Object> wrap(); | |
80 | |
81 Global* fGlobal; | |
82 | |
83 // Only valid when inside OnDraw(). | |
84 SkCanvas* fCanvas; | |
85 | |
86 SkPaint fFillStyle; | |
87 | |
88 // A handle to the onDraw function defined in the script. | |
89 Persistent<Function> fOnDraw; | |
90 | |
91 // The template for what a canvas context object looks like. The canvas | |
92 // context object is what's passed into the JS onDraw() function. | |
robertphillips
2014/01/06 15:37:04
gContextTemplate?
jcgregorio
2014/01/06 15:57:31
Done.
| |
93 static Persistent<ObjectTemplate> fContextTemplate; | |
94 }; | |
95 | |
96 #endif | |
OLD | NEW |