Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2015 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 #ifndef SkYUVPlanesCache_DEFINED
      9 #define SkYUVPlanesCache_DEFINED
     10 
     11 #include "SkCachedData.h"
     12 #include "SkImageInfo.h"
     13 
     14 class SkResourceCache;
     15 
     16 class SkYUVPlanesCache {
     17 public:
     18     /**
     19      * The Info struct contains data about the 3 Y, U and V planes of memory stored
     20      * contiguously, in that order, as a single block of memory within SkYUVPlanesCache.
     21      *
     22      * fSize: Width and height of each of the 3 planes (in pixels).
     23      * fSizeInMemory: Amount of memory allocated for each plane (may be different from
     24                       "height * rowBytes", depending on the jpeg decoder's block size).
     25      *                The sum of these is the total size stored within SkYUVPlanesCache.
     26      * fRowBytes: rowBytes for each of the 3 planes (in bytes).
     27      * fColorSpace: color space that will be used for the YUV -> RGB conversion.
     28      */
     29     struct Info {
     30         SkISize fSize[3];
     31         size_t  fSizeInMemory[3];
     32         size_t  fRowBytes[3];
     33         SkYUVColorSpace fColorSpace;
     34     };
     35     /**
     36      * On success, return a ref to the SkCachedData that holds the pixels.
     37      *
     38      * On failure, return nullptr.
     39      */
     40     static SkCachedData* FindAndRef(uint32_t genID, Info* info,
     41                                     SkResourceCache* localCache = nullptr);
     42 
     43     /**
     44      * Add a pixelRef ID and its YUV planes data to the cache.
     45      */
     46     static void Add(uint32_t genID, SkCachedData* data, Info* info,
     47                     SkResourceCache* localCache = nullptr);
     48 };
     49 
     50 #endif
     51