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