// Add several layers to the cache static void create_layers(skiatest::Reporter* reporter, GrLayerCache* cache, const SkPicture& picture, unsigned numToAdd, unsigned idOffset) { for (unsigned i = 0; i < numToAdd; ++i) { unsigned indices[1] = { idOffset+i+1 }; GrCachedLayer* layer = cache->findLayerOrCreate(picture.uniqueID(), idOffset+i+1, idOffset+i+2, SkIRect::MakeEmpty(), SkIRect::MakeEmpty(), SkMatrix::I(), indices, 1, NULL); REPORTER_ASSERT(reporter, layer); GrCachedLayer* temp = TestingAccess::Find(cache, picture.uniqueID(), SkMatrix::I(), indices, 1); REPORTER_ASSERT(reporter, temp == layer); REPORTER_ASSERT(reporter, TestingAccess::NumLayers(cache) == idOffset + i + 1); REPORTER_ASSERT(reporter, picture.uniqueID() == layer->pictureID()); REPORTER_ASSERT(reporter, layer->start() == idOffset + i + 1); REPORTER_ASSERT(reporter, layer->stop() == idOffset + i + 2); REPORTER_ASSERT(reporter, NULL == layer->texture()); REPORTER_ASSERT(reporter, NULL == layer->paint()); REPORTER_ASSERT(reporter, !layer->isAtlased()); } }
// Add several layers to the cache static void create_layers(skiatest::Reporter* reporter, GrLayerCache* cache, const SkPicture& picture, int numToAdd, int idOffset) { for (int i = 0; i < numToAdd; ++i) { GrCachedLayer* layer = cache->findLayerOrCreate(&picture, idOffset+i+1, idOffset+i+2, SkMatrix::I()); REPORTER_ASSERT(reporter, NULL != layer); GrCachedLayer* temp = cache->findLayer(&picture, idOffset+i+1, idOffset+i+2, SkMatrix::I()); REPORTER_ASSERT(reporter, temp == layer); REPORTER_ASSERT(reporter, TestingAccess::NumLayers(cache) == idOffset + i + 1); REPORTER_ASSERT(reporter, picture.uniqueID() == layer->pictureID()); REPORTER_ASSERT(reporter, layer->start() == idOffset + i + 1); REPORTER_ASSERT(reporter, layer->stop() == idOffset + i + 2); REPORTER_ASSERT(reporter, layer->ctm() == SkMatrix::I()); REPORTER_ASSERT(reporter, NULL == layer->texture()); REPORTER_ASSERT(reporter, !layer->isAtlased()); } cache->trackPicture(&picture); }
// fRecord TODO SkPicture::SkPicture(const SkPicture& src) : INHERITED() { this->needsNewGenID(); fWidth = src.fWidth; fHeight = src.fHeight; if (src.fPlayback.get()) { fPlayback.reset(SkNEW_ARGS(SkPicturePlayback, (*src.fPlayback))); fUniqueID = src.uniqueID(); // need to call method to ensure != 0 } }
// Add several layers to the cache static void create_layers(skiatest::Reporter* reporter, GrLayerCache* cache, const SkPicture& picture) { GrCachedLayer* layers[kNumLayers]; for (int i = 0; i < kNumLayers; ++i) { layers[i] = cache->findLayerOrCreate(&picture, i); REPORTER_ASSERT(reporter, NULL != layers[i]); GrCachedLayer* layer = cache->findLayer(&picture, i); REPORTER_ASSERT(reporter, layer == layers[i]); REPORTER_ASSERT(reporter, GetNumLayers::NumLayers(cache) == i+1); REPORTER_ASSERT(reporter, picture.uniqueID() == layers[i]->pictureID()); REPORTER_ASSERT(reporter, layers[i]->layerID() == i); REPORTER_ASSERT(reporter, NULL == layers[i]->texture()); REPORTER_ASSERT(reporter, layers[i]->rect().isEmpty()); } }