OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "cc/test/picture_cache_model.h" |
| 6 |
| 7 #include "base/logging.h" |
| 8 #include "third_party/skia/include/core/SkData.h" |
| 9 #include "third_party/skia/include/core/SkPicture.h" |
| 10 #include "third_party/skia/include/core/SkRefCnt.h" |
| 11 #include "third_party/skia/include/core/SkStream.h" |
| 12 |
| 13 class SkPixelSerializer; |
| 14 |
| 15 namespace cc { |
| 16 namespace { |
| 17 |
| 18 sk_sp<SkPicture> CopySkPicture(const SkPicture* picture) { |
| 19 SkDynamicMemoryWStream write_stream; |
| 20 picture->serialize(&write_stream, nullptr); |
| 21 DCHECK_GT(write_stream.bytesWritten(), 0u); |
| 22 |
| 23 sk_sp<SkData> data(write_stream.copyToData()); |
| 24 |
| 25 SkMemoryStream read_stream(data); |
| 26 return SkPicture::MakeFromStream(&read_stream, nullptr); |
| 27 } |
| 28 |
| 29 } // namespace |
| 30 |
| 31 PictureCacheModel::PictureCacheModel() = default; |
| 32 |
| 33 PictureCacheModel::~PictureCacheModel() = default; |
| 34 |
| 35 void PictureCacheModel::AddPicture(const SkPicture* picture) { |
| 36 sk_sp<SkPicture> picture_copy = CopySkPicture(picture); |
| 37 pictures_.insert(std::make_pair(picture->uniqueID(), picture_copy)); |
| 38 } |
| 39 |
| 40 sk_sp<const SkPicture> PictureCacheModel::GetPicture(uint32_t unique_id) { |
| 41 if (pictures_.find(unique_id) == pictures_.end()) |
| 42 return nullptr; |
| 43 |
| 44 return pictures_.find(unique_id)->second; |
| 45 } |
| 46 |
| 47 } // namespace cc |
OLD | NEW |