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     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscreteMapper)
     24 
     25 protected:
     26     SkDiscreteMapper(SkFlattenableReadBuffer& );
     27     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
     28 
     29 private:
     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 */
     39 class SkCosineMapper : public SkUnitMapper {
     40 public:
     41     SkCosineMapper() {}
     42     // override from SkUnitMapper
     43     virtual uint16_t mapUnit16(uint16_t x);
     44 
     45     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCosineMapper)
     46 
     47 protected:
     48     SkCosineMapper(SkFlattenableReadBuffer&);
     49 
     50 private:
     51 
     52     typedef SkUnitMapper INHERITED;
     53 };
     54 
     55 #endif
     56