GrGLPathRange.cpp revision 5672da0fa54f31c9727568e9dd5fe82c6e1585bc
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#include "GrGLPathRange.h" 10#include "GrGLPath.h" 11#include "GrGLPathRendering.h" 12#include "GrGpuGL.h" 13 14GrGLPathRange::GrGLPathRange(GrGpuGL* gpu, size_t size, const SkStrokeRec& stroke) 15 : INHERITED(gpu, size, stroke), 16 fBasePathID(gpu->pathRendering()->genPaths(fSize)), 17 fNumDefinedPaths(0) { 18} 19 20GrGLPathRange::~GrGLPathRange() { 21 this->release(); 22} 23 24void GrGLPathRange::initAt(size_t index, const SkPath& skPath) { 25 GrGpuGL* gpu = static_cast<GrGpuGL*>(this->getGpu()); 26 if (NULL == gpu) { 27 return; 28 } 29 30 // Make sure the path at this index hasn't been initted already. 31 SkASSERT(GR_GL_FALSE == gpu->pathRendering()->isPath(fBasePathID + index)); 32 33 GrGLPath::InitPathObject(gpu, fBasePathID + index, skPath, fStroke); 34 ++fNumDefinedPaths; 35 this->didChangeGpuMemorySize(); 36} 37 38void GrGLPathRange::onRelease() { 39 SkASSERT(NULL != this->getGpu()); 40 41 if (0 != fBasePathID && !this->isWrapped()) { 42 static_cast<GrGpuGL*>(this->getGpu())->pathRendering()->deletePaths(fBasePathID, fSize); 43 fBasePathID = 0; 44 } 45 46 INHERITED::onRelease(); 47} 48 49void GrGLPathRange::onAbandon() { 50 fBasePathID = 0; 51 52 INHERITED::onAbandon(); 53} 54