1e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org/*
2e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org * Copyright 2011 Google Inc.
3e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org *
4e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org * Use of this source code is governed by a BSD-style license that can be
5e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org * found in the LICENSE file.
6e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org */
7e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org
8e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org#ifndef SkArithmeticMode_DEFINED
9e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org#define SkArithmeticMode_DEFINED
10e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org
11c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org#include "SkFlattenable.h"
12c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org#include "SkScalar.h"
13e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org
14c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.orgclass SkXfermode;
15c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org
16c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.orgclass SK_API SkArithmeticMode {
17e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.orgpublic:
18e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org    /**
19e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  result = clamp[k1 * src * dst + k2 * src + k3 * dst + k4]
20e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *
21e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  src and dst are treated as being [0.0 .. 1.0]. The polynomial is
22e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  evaluated on their unpremultiplied components.
23e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *
24e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  k1=k2=k3=0, k4=1.0 results in returning opaque white
25e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  k1=k3=k4=0, k2=1.0 results in returning the src
26e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     *  k1=k2=k4=0, k3=1.0 results in returning the dst
27e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org     */
28e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org    static SkXfermode* Create(SkScalar k1, SkScalar k2,
2951a11b7f2f7c0021022004d0d4b0924a590990f9commit-bot@chromium.org                              SkScalar k3, SkScalar k4,
3051a11b7f2f7c0021022004d0d4b0924a590990f9commit-bot@chromium.org                              bool enforcePMColor = true);
31b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com
329a6eb0e1e8a8de7371cd9604f34619b8f87de66fsenorblanco@chromium.org    SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP();
339a6eb0e1e8a8de7371cd9604f34619b8f87de66fsenorblanco@chromium.org
34b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.comprivate:
35c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org    SkArithmeticMode(); // can't be instantiated
36e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org};
37e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org
38e51755fc64bf5df4bed9d74f4bca4f70897d59a9mike@reedtribe.org#endif
39