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_Path2DBuilder_DEFINED
11 #define SkV8Example_Path2DBuilder_DEFINED
12 
13 #include <v8.h>
14 
15 #include "SkPath.h"
16 #include "SkTypes.h"
17 
18 class Global;
19 
20 class Path2DBuilder : SkNoncopyable {
21 public:
Path2DBuilder()22     Path2DBuilder() : fSkPath() {}
~Path2DBuilder()23     virtual ~Path2DBuilder() {}
24 
getSkPath()25     const SkPath& getSkPath() { return fSkPath; }
26 
27     // The JS Path2DBuilder constuctor implementation.
28     static void ConstructPath(const v8::FunctionCallbackInfo<v8::Value>& args);
29 
30     // Add the Path2DBuilder JS constructor to the global context.
31     static void AddToGlobal(Global* global);
32 
33     // Path2DBuilder JS methods.
34     static void ClosePath(const v8::FunctionCallbackInfo<v8::Value>& args);
35     static void MoveTo(const v8::FunctionCallbackInfo<v8::Value>& args);
36     static void LineTo(const v8::FunctionCallbackInfo<v8::Value>& args);
37     static void QuadraticCurveTo(
38             const v8::FunctionCallbackInfo<v8::Value>& args);
39     static void BezierCurveTo(const v8::FunctionCallbackInfo<v8::Value>& args);
40     static void Arc(const v8::FunctionCallbackInfo<v8::Value>& args);
41     static void Rect(const v8::FunctionCallbackInfo<v8::Value>& args);
42     static void Oval(const v8::FunctionCallbackInfo<v8::Value>& args);
43     static void ConicTo(const v8::FunctionCallbackInfo<v8::Value>& args);
44     static void Finalize(const v8::FunctionCallbackInfo<v8::Value>& args);
45 private:
46     SkPath fSkPath;
47 
48     static Path2DBuilder* Unwrap(const v8::FunctionCallbackInfo<v8::Value>& args);
49 
50     static Global* gGlobal;
51 };
52 
53 #endif
54