summaryrefslogtreecommitdiff
path: root/core/SkColorShader.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/SkColorShader.h')
-rw-r--r--core/SkColorShader.h69
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