SkLerpXfermode.h revision b83cb9bf89d26b40e4db83db1b9782437d2adba7
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 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 34protected: 35 SkLerpXfermode(SkFlattenableReadBuffer&); 36 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 37 38private: 39 SkLerpXfermode(unsigned scale256); 40 41 unsigned fScale256; // 0..256 42 43 typedef SkXfermode INHERITED; 44}; 45 46#endif 47