diff options
Diffstat (limited to 'core/SkColorShader.h')
-rw-r--r-- | core/SkColorShader.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/core/SkColorShader.h b/core/SkColorShader.h new file mode 100644 index 0000000..c379068 --- /dev/null +++ b/core/SkColorShader.h @@ -0,0 +1,69 @@ + +/* + * Copyright 2007 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkColorShader_DEFINED +#define SkColorShader_DEFINED + +#include "SkShader.h" + +/** \class SkColorShader + A Shader that represents a single color. In general, this effect can be + accomplished by just using the color field on the paint, but if an + actual shader object is needed, this provides that feature. +*/ +class SK_API SkColorShader : public SkShader { +public: + /** Create a ColorShader that will inherit its color from the Paint + at draw time. + */ + SkColorShader(); + + /** Create a ColorShader that ignores the color in the paint, and uses the + specified color. Note: like all shaders, at draw time the paint's alpha + will be respected, and is applied to the specified color. + */ + SkColorShader(SkColor c); + + virtual ~SkColorShader(); + + virtual uint32_t getFlags() SK_OVERRIDE; + virtual uint8_t getSpan16Alpha() const SK_OVERRIDE; + virtual bool isOpaque() const SK_OVERRIDE; + virtual bool setContext(const SkBitmap& device, const SkPaint& paint, + const SkMatrix& matrix) SK_OVERRIDE; + virtual void shadeSpan(int x, int y, SkPMColor span[], int count) SK_OVERRIDE; + virtual void shadeSpan16(int x, int y, uint16_t span[], int count) SK_OVERRIDE; + virtual void shadeSpanAlpha(int x, int y, uint8_t alpha[], int count) SK_OVERRIDE; + + // we return false for this, use asAGradient + virtual BitmapType asABitmap(SkBitmap* outTexture, + SkMatrix* outMatrix, + TileMode xy[2]) const SK_OVERRIDE; + + virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE; + + SK_DEVELOPER_TO_STRING() + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader) + +protected: + SkColorShader(SkFlattenableReadBuffer&); + virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + +private: + + SkColor fColor; // ignored if fInheritColor is true + SkPMColor fPMColor; // cached after setContext() + uint32_t fFlags; // cached after setContext() + uint16_t fColor16; // cached after setContext() + SkBool8 fInheritColor; + + typedef SkShader INHERITED; +}; + +#endif |