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 "GrStrokeInfo.h" 14#include "gl/GrGLTypes.h" 15 16class GrGLGpu; 17 18/** 19 * Currently this represents a range of GL_NV_path_rendering Path IDs. If we 20 * support other GL path extensions then this would have to have a type enum 21 * and/or be subclassed. 22 */ 23 24class GrGLPathRange : public GrPathRange { 25public: 26 /** 27 * Initialize a GL path range from a PathGenerator. This class will allocate 28 * the GPU path objects and initialize them lazily. 29 */ 30 GrGLPathRange(GrGLGpu*, PathGenerator*, const GrStrokeInfo&); 31 32 /** 33 * Initialize a GL path range from an existing range of pre-initialized GPU 34 * path objects. This class assumes ownership of the GPU path objects and 35 * will delete them when done. 36 */ 37 GrGLPathRange(GrGLGpu*, 38 GrGLuint basePathID, 39 int numPaths, 40 size_t gpuMemorySize, 41 const GrStrokeInfo&); 42 43 GrGLuint basePathID() const { return fBasePathID; } 44 45 bool shouldStroke() const { return fShouldStroke; } 46 bool shouldFill() const { return fShouldFill; } 47 48protected: 49 void onInitPath(int index, const SkPath&) const override; 50 51 void onRelease() override; 52 void onAbandon() override; 53 54private: 55 void init(); 56 size_t onGpuMemorySize() const override { return fGpuMemorySize; } 57 58 const GrStrokeInfo fStroke; 59 GrGLuint fBasePathID; 60 mutable size_t fGpuMemorySize; 61 bool fShouldStroke; 62 bool fShouldFill; 63 64 typedef GrPathRange INHERITED; 65}; 66 67#endif 68