1 2/* 3 * Copyright 2014 Google Inc. 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#ifndef GrGLPathRange_DEFINED 10#define GrGLPathRange_DEFINED 11 12#include "../GrPathRange.h" 13#include "gl/GrGLFunctions.h" 14 15class GrGLGpu; 16 17/** 18 * Currently this represents a range of GL_NV_path_rendering Path IDs. 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 GrGLPathRange : public GrPathRange { 24public: 25 /** 26 * Initialize a GL path range from a PathGenerator. This class will allocate 27 * the GPU path objects and initialize them lazily. 28 */ 29 GrGLPathRange(GrGLGpu*, PathGenerator*, const SkStrokeRec&); 30 31 /** 32 * Initialize a GL path range from an existing range of pre-initialized GPU 33 * path objects. This class assumes ownership of the GPU path objects and 34 * will delete them when done. 35 */ 36 GrGLPathRange(GrGLGpu*, 37 GrGLuint basePathID, 38 int numPaths, 39 size_t gpuMemorySize, 40 const SkStrokeRec&); 41 42 GrGLuint basePathID() const { return fBasePathID; } 43 44protected: 45 void onInitPath(int index, const SkPath&) const override; 46 47 void onRelease() override; 48 void onAbandon() override; 49 50private: 51 size_t onGpuMemorySize() const override { return fGpuMemorySize; } 52 53 GrGLuint fBasePathID; 54 mutable size_t fGpuMemorySize; 55 56 typedef GrPathRange INHERITED; 57}; 58 59#endif 60