1/* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "GrPathRange.h" 9#include "SkPath.h" 10 11GrPathRange::GrPathRange(GrGpu* gpu, 12 PathGenerator* pathGenerator) 13 : INHERITED(gpu, kCached_LifeCycle), 14 fPathGenerator(SkRef(pathGenerator)), 15 fNumPaths(fPathGenerator->getNumPaths()) { 16 const int numGroups = (fNumPaths + kPathsPerGroup - 1) / kPathsPerGroup; 17 fGeneratedPaths.reset((numGroups + 7) / 8); // 1 bit per path group. 18 memset(&fGeneratedPaths.front(), 0, fGeneratedPaths.count()); 19} 20 21GrPathRange::GrPathRange(GrGpu* gpu, 22 int numPaths) 23 : INHERITED(gpu, kCached_LifeCycle), 24 fNumPaths(numPaths) { 25} 26 27void GrPathRange::loadPathsIfNeeded(const void* indices, PathIndexType indexType, int count) const { 28 switch (indexType) { 29 case kU8_PathIndexType: 30 return this->loadPathsIfNeeded(reinterpret_cast<const uint8_t*>(indices), count); 31 case kU16_PathIndexType: 32 return this->loadPathsIfNeeded(reinterpret_cast<const uint16_t*>(indices), count); 33 case kU32_PathIndexType: 34 return this->loadPathsIfNeeded(reinterpret_cast<const uint32_t*>(indices), count); 35 default: 36 SkFAIL("Unknown path index type"); 37 } 38} 39 40#ifdef SK_DEBUG 41 42void GrPathRange::assertPathsLoaded(const void* indices, PathIndexType indexType, int count) const { 43 switch (indexType) { 44 case kU8_PathIndexType: 45 return this->assertPathsLoaded(reinterpret_cast<const uint8_t*>(indices), count); 46 case kU16_PathIndexType: 47 return this->assertPathsLoaded(reinterpret_cast<const uint16_t*>(indices), count); 48 case kU32_PathIndexType: 49 return this->assertPathsLoaded(reinterpret_cast<const uint32_t*>(indices), count); 50 default: 51 SkFAIL("Unknown path index type"); 52 } 53} 54 55#endif 56