1/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrGLPath_DEFINED
9#define GrGLPath_DEFINED
10
11#include "include/gpu/gl/GrGLTypes.h"
12#include "src/gpu/GrPath.h"
13
14class GrGLGpu;
15class GrStyle;
16
17/**
18 * Currently this represents a path built using GL_NV_path_rendering. If we
19 * support other GL path extensions then this would have to have a type enum
20 * and/or be subclassed.
21 */
22
23class GrGLPath : public GrPath {
24public:
25 static bool InitPathObjectPathDataCheckingDegenerates(GrGLGpu*,
26 GrGLuint pathID,
27 const SkPath&);
28 static void InitPathObjectPathData(GrGLGpu*,
29 GrGLuint pathID,
30 const SkPath&);
31 static void InitPathObjectStroke(GrGLGpu*, GrGLuint pathID, const SkStrokeRec&);
32
33 static void InitPathObjectEmptyPath(GrGLGpu*, GrGLuint pathID);
34
35
36 GrGLPath(GrGLGpu*, const SkPath&, const GrStyle&);
37 GrGLuint pathID() const { return fPathID; }
38
39 bool shouldStroke() const { return fShouldStroke; }
40 bool shouldFill() const { return fShouldFill; }
41protected:
42 void onRelease() override;
43 void onAbandon() override;
44
45private:
46 // TODO: Figure out how to get an approximate size of the path in Gpu memory.
47 size_t onGpuMemorySize() const override { return 100; }
48
49 GrGLuint fPathID;
50 bool fShouldStroke;
51 bool fShouldFill;
52
53 typedef GrPath INHERITED;
54};
55
56#endif
57