aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-27 19:28:37 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-08-27 19:28:37 +0000
commit3c9b2a4a0e4f57db23640e85959ee78b86634628 (patch)
treeed5f297f3dbc1d4d6703846c11c2a4f0c5174b9d /samplecode
parent2a4d1ff189ef8df14ec40499125b01f406cb442b (diff)
expand SkShader's flag kConstInY to 16 and 32 variants, allowing a shader
(like gradients) to support predithering. If they do, then they would suppress kConstInY16, since they no longer are const. The blitters now check for each flag separately, so we don't have to give up const-in-Y in the 32bit case, since in that mode we don't care about dithering. git-svn-id: http://skia.googlecode.com/svn/trunk@339 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleDitherBitmap.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/samplecode/SampleDitherBitmap.cpp b/samplecode/SampleDitherBitmap.cpp
index e859cdaf44..1000fdfaa0 100644
--- a/samplecode/SampleDitherBitmap.cpp
+++ b/samplecode/SampleDitherBitmap.cpp
@@ -1,9 +1,35 @@
#include "SampleCode.h"
#include "SkColorPriv.h"
+#include "SkGradientShader.h"
#include "SkView.h"
#include "SkCanvas.h"
#include "SkUtils.h"
+static void draw_rect(SkCanvas* canvas, const SkRect& r, const SkPaint& p) {
+ canvas->drawRect(r, p);
+
+ SkPaint frame(p);
+ frame.setShader(NULL);
+ frame.setStyle(SkPaint::kStroke_Style);
+ canvas->drawRect(r, frame);
+}
+
+static void draw_gradient(SkCanvas* canvas) {
+ SkRect r = { 0, 0, SkIntToScalar(256), SkIntToScalar(32) };
+ SkPoint pts[] = { r.fLeft, r.fTop, r.fRight, r.fTop };
+ SkColor colors[] = { 0xFF000000, 0xFFFF0000 };
+ SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+ SkShader::kClamp_TileMode);
+
+ SkPaint p;
+ p.setShader(s)->unref();
+ draw_rect(canvas, r, p);
+
+ canvas->translate(0, SkIntToScalar(40));
+ p.setDither(true);
+ draw_rect(canvas, r, p);
+}
+
static void test_pathregion() {
SkPath path;
SkRegion region;
@@ -103,6 +129,9 @@ protected:
draw2(canvas, fBM8);
canvas->translate(0, SkIntToScalar(fBM8.height() *3));
draw2(canvas, fBM32);
+
+ canvas->translate(0, SkIntToScalar(fBM8.height() *3));
+ draw_gradient(canvas);
}
private: