1 /* 2 * Copyright 2006 The Android Open Source Project 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 SkTableMaskFilter_DEFINED 9 #define SkTableMaskFilter_DEFINED 10 11 #include "include/core/SkScalar.h" 12 #include "include/core/SkTypes.h" 13 14 #include <cstdint> 15 16 class SkMaskFilter; 17 18 /** \class SkTableMaskFilter 19 20 Applies a table lookup on each of the alpha values in the mask. 21 Helper methods create some common tables (e.g. gamma, clipping) 22 */ 23 class SK_API SkTableMaskFilter { 24 public: 25 /** Utility that sets the gamma table 26 */ 27 static void MakeGammaTable(uint8_t table[256], SkScalar gamma); 28 29 /** Utility that creates a clipping table: clamps values below min to 0 30 and above max to 255, and rescales the remaining into 0..255 31 */ 32 static void MakeClipTable(uint8_t table[256], uint8_t min, uint8_t max); 33 34 static SkMaskFilter* Create(const uint8_t table[256]); 35 static SkMaskFilter* CreateGamma(SkScalar gamma); 36 static SkMaskFilter* CreateClip(uint8_t min, uint8_t max); 37 38 SkTableMaskFilter() = delete; 39 }; 40 41 #endif 42