michael@0: /* michael@0: * Copyright 2011 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #ifndef SkArithmeticMode_DEFINED michael@0: #define SkArithmeticMode_DEFINED michael@0: michael@0: #include "SkFlattenable.h" michael@0: #include "SkScalar.h" michael@0: michael@0: class SkXfermode; michael@0: michael@0: class SK_API SkArithmeticMode { michael@0: public: michael@0: /** michael@0: * result = clamp[k1 * src * dst + k2 * src + k3 * dst + k4] michael@0: * michael@0: * src and dst are treated as being [0.0 .. 1.0]. The polynomial is michael@0: * evaluated on their unpremultiplied components. michael@0: * michael@0: * k1=k2=k3=0, k4=1.0 results in returning opaque white michael@0: * k1=k3=k4=0, k2=1.0 results in returning the src michael@0: * k1=k2=k4=0, k3=1.0 results in returning the dst michael@0: */ michael@0: static SkXfermode* Create(SkScalar k1, SkScalar k2, michael@0: SkScalar k3, SkScalar k4); michael@0: michael@0: SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP(); michael@0: michael@0: private: michael@0: SkArithmeticMode(); // can't be instantiated michael@0: }; michael@0: michael@0: #endif