Home | History | Annotate | Download | only in effects
      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 SkTableColorFilter_DEFINED
      9 #define SkTableColorFilter_DEFINED
     10 
     11 #include "SkColorFilter.h"
     12 
     13 class SK_API SkTableColorFilter {
     14 public:
     15     /**
     16      *  Create a table colorfilter, copying the table into the filter, and
     17      *  applying it to all 4 components.
     18      *      a' = table[a];
     19      *      r' = table[r];
     20      *      g' = table[g];
     21      *      b' = table[b];
     22      *  Compoents are operated on in unpremultiplied space. If the incomming
     23      *  colors are premultiplied, they are temporarily unpremultiplied, then
     24      *  the table is applied, and then the result is remultiplied.
     25      */
     26     static sk_sp<SkColorFilter> Make(const uint8_t table[256]);
     27 
     28     /**
     29      *  Create a table colorfilter, with a different table for each
     30      *  component [A, R, G, B]. If a given table is NULL, then it is
     31      *  treated as identity, with the component left unchanged. If a table
     32      *  is not null, then its contents are copied into the filter.
     33      */
     34     static sk_sp<SkColorFilter> MakeARGB(const uint8_t tableA[256],
     35                                          const uint8_t tableR[256],
     36                                          const uint8_t tableG[256],
     37                                          const uint8_t tableB[256]);
     38 
     39     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
     40 };
     41 
     42 #endif
     43