Home | History | Annotate | Download | only in utils
      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 */
     17 class SkDiscreteMapper : public SkUnitMapper {
     18 public:
     19     SkDiscreteMapper(int segments);
     20     // override from SkUnitMapper
     21     virtual uint16_t mapUnit16(uint16_t x);
     22 
     23 protected:
     24     SkDiscreteMapper(SkFlattenableReadBuffer& );
     25     // overrides from SkFlattenable
     26     virtual void flatten(SkFlattenableWriteBuffer& );
     27     virtual Factory getFactory();
     28 private:
     29     int     fSegments;
     30     SkFract fScale;    // computed from fSegments
     31 
     32     static SkFlattenable* Create(SkFlattenableReadBuffer& buffer);
     33 
     34     typedef SkUnitMapper INHERITED;
     35 };
     36 
     37 /** This returns cos(x), to simulate lighting a sphere, where 0 maps to the
     38     center of the sphere, and 1 maps to the edge.
     39 */
     40 class SkCosineMapper : public SkUnitMapper {
     41 public:
     42     SkCosineMapper() {}
     43     // override from SkUnitMapper
     44     virtual uint16_t mapUnit16(uint16_t x);
     45 
     46 protected:
     47     SkCosineMapper(SkFlattenableReadBuffer&);
     48     // overrides from SkFlattenable
     49     virtual Factory getFactory();
     50 
     51 private:
     52     static SkFlattenable* Create(SkFlattenableReadBuffer&);
     53 
     54     typedef SkUnitMapper INHERITED;
     55 };
     56 
     57 #endif
     58 
     59