Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3782)

Unified Diff: experimental/SkV8Example/JsContext.h

Issue 121303004: Fleshed out a lot of the Path interfac (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: unused imports Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « experimental/SkV8Example/Global.cpp ('k') | experimental/SkV8Example/JsContext.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/SkV8Example/JsContext.h
diff --git a/experimental/SkV8Example/JsContext.h b/experimental/SkV8Example/JsContext.h
new file mode 100644
index 0000000000000000000000000000000000000000..0fc180d956d9a441ece5c2e869a2641f1526d635
--- /dev/null
+++ b/experimental/SkV8Example/JsContext.h
@@ -0,0 +1,96 @@
+/*
+ * 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_JsContext_DEFINED
+#define SkV8Example_JsContext_DEFINED
+
+#include <v8.h>
+
+#include "SkPaint.h"
+
+using namespace v8;
+
+class SkCanvas;
+class Global;
+
+// Provides the canvas context implementation in JS, and the OnDraw() method in
+// C++ that's used to bridge from C++ to JS. Should be used in JS as:
+//
+// function onDraw(context) {
+// context.fillStyle="#FF0000";
+// context.fillRect(x, y, w, h);
+// }
+class JsContext {
+public:
+ JsContext(Global* global)
+ : fGlobal(global)
+ , fCanvas(NULL)
+ {
+ fFillStyle.setColor(SK_ColorRED);
+ }
+ ~JsContext();
+
+ // Parse the script.
+ bool initialize();
+
+ // Call this with the SkCanvas you want onDraw to draw on.
+ void onDraw(SkCanvas* canvas);
+
+private:
+ // Implementation of the context.fillStyle field.
+ static void GetFillStyle(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+ static void SetFillStyle(Local<String> name, Local<Value> value,
+ const PropertyCallbackInfo<void>& info);
+ static void GetWidth(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+ static void GetHeight(Local<String> name,
+ const PropertyCallbackInfo<Value>& info);
+
+ // Implementation of the context.fillRect() JS function.
+ static void FillRect(const v8::FunctionCallbackInfo<Value>& args);
+
+ // Implementation of the context.stroke(Path path) JS function.
+ static void Stroke(const v8::FunctionCallbackInfo<Value>& args);
+
+ // Implementation of the context.fill(Path path) JS function.
+ static void Fill(const v8::FunctionCallbackInfo<Value>& args);
+
+ // Implementation of the context.translate(dx, dy) JS function.
+ static void Translate(const v8::FunctionCallbackInfo<Value>& args);
+
+ // Implementation of the context.resetTransform() JS function.
+ static void ResetTransform(const v8::FunctionCallbackInfo<Value>& args);
+
+ // Get the pointer out of obj.
+ static JsContext* Unwrap(Handle<Object> obj);
+
+ // Create a template for JS object associated with JsContext, called lazily
+ // by Wrap() and the results are stored in gContextTemplate;
+ Handle<ObjectTemplate> makeContextTemplate();
+
+ // Wrap the 'this' pointer into an Object. Can be retrieved via Unwrap.
+ Handle<Object> wrap();
+
+ Global* fGlobal;
+
+ // Only valid when inside OnDraw().
+ SkCanvas* fCanvas;
+
+ SkPaint fFillStyle;
+
+ // A handle to the onDraw function defined in the script.
+ Persistent<Function> fOnDraw;
+
+ // The template for what a canvas context object looks like. The canvas
+ // context object is what's passed into the JS onDraw() function.
+ static Persistent<ObjectTemplate> gContextTemplate;
+};
+
+#endif
« no previous file with comments | « experimental/SkV8Example/Global.cpp ('k') | experimental/SkV8Example/JsContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698