/* * 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 sktext_gpu_DistanceFieldAdjustTable_DEFINED #define sktext_gpu_DistanceFieldAdjustTable_DEFINED #include "include/core/SkScalar.h" template class SkNoDestructor; namespace sktext::gpu { // Distance field text needs this table to compute a value for use in the fragment shader. class DistanceFieldAdjustTable { public: static const DistanceFieldAdjustTable* Get(); ~DistanceFieldAdjustTable() { delete[] fTable; delete[] fGammaCorrectTable; } SkScalar getAdjustment(int lum, bool useGammaCorrectTable) const { lum >>= kDistanceAdjustLumShift; return useGammaCorrectTable ? fGammaCorrectTable[lum] : fTable[lum]; } private: DistanceFieldAdjustTable(); static constexpr int kDistanceAdjustLumShift = 5; SkScalar* fTable; SkScalar* fGammaCorrectTable; friend class SkNoDestructor; }; } // namespace sktext::gpu #endif