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 15 class 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 23 class GrGLPathRange : public GrPathRange { 24 public: 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 basePathID()42 GrGLuint basePathID() const { return fBasePathID; } 43 44 protected: 45 void onInitPath(int index, const SkPath&) const override; 46 47 void onRelease() override; 48 void onAbandon() override; 49 50 private: onGpuMemorySize()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