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 #include "SkYUVAIndex.h"
     14 #include "SkYUVASizeInfo.h"
     15 
     16 class SkResourceCache;
     17 
     18 class SkYUVPlanesCache {
     19 public:
     20     /**
     21      * The Info struct contains data about the 4 Y, U, V, and A planes of memory stored
     22      * contiguously, in that order, as a single block of memory within SkYUVPlanesCache.
     23      *
     24      * fSizeInfo: fWidth, fHeight, and fWidthBytes of each of the Y, U, V, and A planes.
     25      * fColorSpace: color space that will be used for the YUV -> RGB conversion.
     26      */
     27     struct Info {
     28         SkYUVASizeInfo  fSizeInfo;
     29         SkYUVAIndex     fYUVAIndices[SkYUVAIndex::kIndexCount];
     30         SkYUVColorSpace fColorSpace;
     31     };
     32     /**
     33      * On success, return a ref to the SkCachedData that holds the pixels.
     34      *
     35      * On failure, return nullptr.
     36      */
     37     static SkCachedData* FindAndRef(uint32_t genID, Info* info,
     38                                     SkResourceCache* localCache = nullptr);
     39 
     40     /**
     41      * Add a pixelRef ID and its YUV planes data to the cache.
     42      */
     43     static void Add(uint32_t genID, SkCachedData* data, Info* info,
     44                     SkResourceCache* localCache = nullptr);
     45 };
     46 
     47 #endif
     48