SkColorMatrix.h revision 6806fe87e0b39e283291c1a1c7d1d864230aa2aa
1/*
2 * Copyright 2007 The Android Open Source Project
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkColorMatrix_DEFINED
9#define SkColorMatrix_DEFINED
10
11#include "SkScalar.h"
12
13class SK_API SkColorMatrix {
14public:
15    SkScalar    fMat[20];
16
17    void setIdentity();
18    void setScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
19                  SkScalar aScale = SK_Scalar1);
20    void preScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
21                  SkScalar aScale = SK_Scalar1);
22    void postScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
23                   SkScalar aScale = SK_Scalar1);
24
25    enum Axis {
26        kR_Axis = 0,
27        kG_Axis = 1,
28        kB_Axis = 2
29    };
30    void setRotate(Axis, SkScalar degrees);
31    void setSinCos(Axis, SkScalar sine, SkScalar cosine);
32    void preRotate(Axis, SkScalar degrees);
33    void postRotate(Axis, SkScalar degrees);
34
35    void setConcat(const SkColorMatrix& a, const SkColorMatrix& b);
36    void preConcat(const SkColorMatrix& mat) { this->setConcat(*this, mat); }
37    void postConcat(const SkColorMatrix& mat) { this->setConcat(mat, *this); }
38
39    void setSaturation(SkScalar sat);
40    void setRGB2YUV();
41    void setYUV2RGB();
42};
43
44#endif
45