| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkYUVPlanesCache_DEFINED |
| #define SkYUVPlanesCache_DEFINED |
| |
| #include "SkCachedData.h" |
| #include "SkImageInfo.h" |
| |
| class SkResourceCache; |
| |
| class SkYUVPlanesCache { |
| public: |
| /** |
| * The Info struct contains data about the 3 Y, U and V planes of memory stored |
| * contiguously, in that order, as a single block of memory within SkYUVPlanesCache. |
| * |
| * fSize: Width and height of each of the 3 planes (in pixels). |
| * fSizeInMemory: Amount of memory allocated for each plane (may be different from |
| "height * rowBytes", depending on the jpeg decoder's block size). |
| * The sum of these is the total size stored within SkYUVPlanesCache. |
| * fRowBytes: rowBytes for each of the 3 planes (in bytes). |
| * fColorSpace: color space that will be used for the YUV -> RGB conversion. |
| */ |
| struct Info { |
| SkISize fSize[3]; |
| size_t fSizeInMemory[3]; |
| size_t fRowBytes[3]; |
| SkYUVColorSpace fColorSpace; |
| }; |
| /** |
| * On success, return a ref to the SkCachedData that holds the pixels. |
| * |
| * On failure, return nullptr. |
| */ |
| static SkCachedData* FindAndRef(uint32_t genID, Info* info, |
| SkResourceCache* localCache = nullptr); |
| |
| /** |
| * Add a pixelRef ID and its YUV planes data to the cache. |
| */ |
| static void Add(uint32_t genID, SkCachedData* data, Info* info, |
| SkResourceCache* localCache = nullptr); |
| }; |
| |
| #endif |