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_Path2D_DEFINED
11#define SkV8Example_Path2D_DEFINED
12
13#include <v8.h>
14
15#include "SkPath.h"
16#include "SkTypes.h"
17
18class Global;
19
20class Path2D : SkNoncopyable {
21public:
22    Path2D() : fSkPath() {}
23    virtual ~Path2D() {}
24
25    const SkPath& getSkPath() { return fSkPath; }
26
27    // The JS Path2D constuctor implementation.
28    static void ConstructPath(const v8::FunctionCallbackInfo<v8::Value>& args);
29
30    // Add the Path2D JS constructor to the global context.
31    static void AddToGlobal(Global* global);
32
33    // Path2D 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);
44private:
45    SkPath fSkPath;
46
47    static Path2D* Unwrap(const v8::FunctionCallbackInfo<v8::Value>& args);
48
49    static Global* gGlobal;
50};
51
52#endif
53