1 2/* 3 * Copyright 2008 The Android Open Source Project 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 10#ifndef SkUnitMappers_DEFINED 11#define SkUnitMappers_DEFINED 12 13#include "SkUnitMapper.h" 14 15/** This discretizes the range [0...1) into N discret values. 16*/ 17class SkDiscreteMapper : public SkUnitMapper { 18public: 19 SkDiscreteMapper(int segments); 20 // override from SkUnitMapper 21 virtual uint16_t mapUnit16(uint16_t x); 22 23 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscreteMapper) 24 25protected: 26 SkDiscreteMapper(SkFlattenableReadBuffer& ); 27 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 28 29private: 30 int fSegments; 31 SkFract fScale; // computed from fSegments 32 33 typedef SkUnitMapper INHERITED; 34}; 35 36/** This returns cos(x), to simulate lighting a sphere, where 0 maps to the 37 center of the sphere, and 1 maps to the edge. 38*/ 39class SkCosineMapper : public SkUnitMapper { 40public: 41 SkCosineMapper() {} 42 // override from SkUnitMapper 43 virtual uint16_t mapUnit16(uint16_t x); 44 45 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCosineMapper) 46 47protected: 48 SkCosineMapper(SkFlattenableReadBuffer&); 49 50private: 51 52 typedef SkUnitMapper INHERITED; 53}; 54 55#endif 56