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