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_TO_STRING_OVERRIDE() 32 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLerpXfermode) 33 34 protected: 35 SkLerpXfermode(SkReadBuffer&); 36 virtual void flatten(SkWriteBuffer&) 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