1b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com/* 2b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * Copyright 2013 Google Inc. 3b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * 4b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * Use of this source code is governed by a BSD-style license that can be 5b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * found in the LICENSE file. 6b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com */ 7b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 8b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com#ifndef SkLerpXfermode_DEFINED 9b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com#define SkLerpXfermode_DEFINED 10b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 11b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com#include "SkXfermode.h" 12b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 13b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.comclass SK_API SkLerpXfermode : public SkXfermode { 14b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.compublic: 15b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com /** 16b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * result = scale * src + (1 - scale) * dst 17b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * 18b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * When scale == 1, this is the same as kSrc_Mode 19b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com * When scale == 0, this is the same as kDst_Mode 20b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com */ 21b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com static SkXfermode* Create(SkScalar scale); 22b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 23b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com // overrides from SkXfermode 24b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count, 25b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com const SkAlpha aa[]) const SK_OVERRIDE; 26b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count, 27b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com const SkAlpha aa[]) const SK_OVERRIDE; 28b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count, 29b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com const SkAlpha aa[]) const SK_OVERRIDE; 30b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 310f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org SK_TO_STRING_OVERRIDE() 32b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLerpXfermode) 33b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 34b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.comprotected: 359fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 368b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org SkLerpXfermode(SkReadBuffer&); 379fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 388b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 39b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 40b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.comprivate: 41b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com SkLerpXfermode(unsigned scale256); 42b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 43b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com unsigned fScale256; // 0..256 44b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 45b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com typedef SkXfermode INHERITED; 46b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com}; 47b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com 48b83cb9bf89d26b40e4db83db1b9782437d2adba7reed@google.com#endif 49