Line data Source code
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 "../GrPath.h"
12 : #include "gl/GrGLTypes.h"
13 :
14 : class GrGLGpu;
15 : class 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 :
23 0 : class GrGLPath : public GrPath {
24 : public:
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 0 : GrGLuint pathID() const { return fPathID; }
38 :
39 0 : bool shouldStroke() const { return fShouldStroke; }
40 0 : bool shouldFill() const { return fShouldFill; }
41 : protected:
42 : void onRelease() override;
43 : void onAbandon() override;
44 :
45 : private:
46 : // TODO: Figure out how to get an approximate size of the path in Gpu memory.
47 0 : 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
|