00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef SkColorMatrix_DEFINED
00018 #define SkColorMatrix_DEFINED
00019
00020 #include "SkScalar.h"
00021
00022 class SkColorMatrix {
00023 public:
00024 SkScalar fMat[20];
00025
00026 void setIdentity();
00027 void setScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
00028 SkScalar aScale = SK_Scalar1);
00029 void preScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
00030 SkScalar aScale = SK_Scalar1);
00031 void postScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
00032 SkScalar aScale = SK_Scalar1);
00033
00034 enum Axis {
00035 kR_Axis = 0,
00036 kG_Axis = 1,
00037 kB_Axis = 2
00038 };
00039 void setRotate(Axis, SkScalar degrees);
00040 void setSinCos(Axis, SkScalar sine, SkScalar cosine);
00041 void preRotate(Axis, SkScalar degrees);
00042 void postRotate(Axis, SkScalar degrees);
00043
00044 void setConcat(const SkColorMatrix& a, const SkColorMatrix& b);
00045 void preConcat(const SkColorMatrix& mat) { this->setConcat(*this, mat); }
00046 void postConcat(const SkColorMatrix& mat) { this->setConcat(mat, *this); }
00047
00048 void setSaturation(SkScalar sat);
00049 void setRGB2YUV();
00050 void setYUV2RGB();
00051 };
00052
00053 #endif