11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2008 The Android Open Source Project 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkUnitMappers_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkUnitMappers_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkUnitMapper.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** This discretizes the range [0...1) into N discret values. 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/ 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDiscreteMapper : public SkUnitMapper { 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDiscreteMapper(int segments); 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // override from SkUnitMapper 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual uint16_t mapUnit16(uint16_t x); 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected: 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDiscreteMapper(SkFlattenableReadBuffer& ); 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // overrides from SkFlattenable 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void flatten(SkFlattenableWriteBuffer& ); 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Factory getFactory(); 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int fSegments; 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkFract fScale; // computed from fSegments 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static SkFlattenable* Create(SkFlattenableReadBuffer& buffer); 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkUnitMapper INHERITED; 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** This returns cos(x), to simulate lighting a sphere, where 0 maps to the 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project center of the sphere, and 1 maps to the edge. 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/ 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkCosineMapper : public SkUnitMapper { 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkCosineMapper() {} 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // override from SkUnitMapper 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual uint16_t mapUnit16(uint16_t x); 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected: 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkCosineMapper(SkFlattenableReadBuffer&); 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // overrides from SkFlattenable 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Factory getFactory(); 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static SkFlattenable* Create(SkFlattenableReadBuffer&); 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkUnitMapper INHERITED; 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 59