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 13class SK_API SkLerpXfermode : public SkXfermode { 14public: 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 override; 26 virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count, 27 const SkAlpha aa[]) const override; 28 virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count, 29 const SkAlpha aa[]) const override; 30 31 SK_TO_STRING_OVERRIDE() 32 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLerpXfermode) 33 34protected: 35 void flatten(SkWriteBuffer&) const override; 36 37private: 38 SkLerpXfermode(unsigned scale256); 39 40 unsigned fScale256; // 0..256 41 42 typedef SkXfermode INHERITED; 43}; 44 45#endif 46