| /* | |
| * 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 GrGLPathRange_DEFINED | |
| #define GrGLPathRange_DEFINED | |
| #include "../GrPathRange.h" | |
| #include "GrStyle.h" | |
| #include "gl/GrGLTypes.h" | |
| class GrGLGpu; | |
| /** | |
| * Currently this represents a range of GL_NV_path_rendering Path IDs. If we | |
| * support other GL path extensions then this would have to have a type enum | |
| * and/or be subclassed. | |
| */ | |
| class GrGLPathRange : public GrPathRange { | |
| public: | |
| /** | |
| * Initialize a GL path range from a PathGenerator. This class will allocate | |
| * the GPU path objects and initialize them lazily. | |
| */ | |
| GrGLPathRange(GrGLGpu*, PathGenerator*, const GrStyle&); | |
| /** | |
| * Initialize a GL path range from an existing range of pre-initialized GPU | |
| * path objects. This class assumes ownership of the GPU path objects and | |
| * will delete them when done. | |
| */ | |
| GrGLPathRange(GrGLGpu*, | |
| GrGLuint basePathID, | |
| int numPaths, | |
| size_t gpuMemorySize, | |
| const GrStyle&); | |
| GrGLuint basePathID() const { return fBasePathID; } | |
| bool shouldStroke() const { return fShouldStroke; } | |
| bool shouldFill() const { return fShouldFill; } | |
| protected: | |
| void onInitPath(int index, const SkPath&) const override; | |
| void onRelease() override; | |
| void onAbandon() override; | |
| private: | |
| void init(); | |
| size_t onGpuMemorySize() const override { return fGpuMemorySize; } | |
| const GrStyle fStyle; | |
| GrGLuint fBasePathID; | |
| mutable size_t fGpuMemorySize; | |
| bool fShouldStroke; | |
| bool fShouldFill; | |
| typedef GrPathRange INHERITED; | |
| }; | |
| #endif |