11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SkArithmeticMode_DEFINED 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SkArithmeticMode_DEFINED 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "SkXfermode.h" 121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkArithmeticMode : public SkXfermode { 141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * result = clamp[k1 * src * dst + k2 * src + k3 * dst + k4] 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * src and dst are treated as being [0.0 .. 1.0]. The polynomial is 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * evaluated on their unpremultiplied components. 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * k1=k2=k3=0, k4=1.0 results in returning opaque white 221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * k1=k3=k4=0, k2=1.0 results in returning the src 231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * k1=k2=k4=0, k3=1.0 results in returning the dst 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static SkXfermode* Create(SkScalar k1, SkScalar k2, 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SkScalar k3, SkScalar k4); 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 31