Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2013 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkLerpXfermode_DEFINED
      9 #define SkLerpXfermode_DEFINED
     10 
     11 #include "SkXfermode.h"
     12 
     13 class SK_API SkLerpXfermode : public SkXfermode {
     14 public:
     15     /**
     16      *  result = scale * src + (1 - scale) * dst
     17      *
     18      *  When scale == 1, this is the same as kSrc_Mode
     19      *  When scale == 0, this is the same as kDst_Mode
     20      */
     21     static SkXfermode* Create(SkScalar scale);
     22 
     23     // overrides from SkXfermode
     24     virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
     25                         const SkAlpha aa[]) const SK_OVERRIDE;
     26     virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count,
     27                         const SkAlpha aa[]) const SK_OVERRIDE;
     28     virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
     29                         const SkAlpha aa[]) const SK_OVERRIDE;
     30 
     31     SK_DEVELOPER_TO_STRING()
     32     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLerpXfermode)
     33 
     34 protected:
     35     SkLerpXfermode(SkFlattenableReadBuffer&);
     36     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
     37 
     38 private:
     39     SkLerpXfermode(unsigned scale256);
     40 
     41     unsigned fScale256;  // 0..256
     42 
     43     typedef SkXfermode INHERITED;
     44 };
     45 
     46 #endif
     47