aboutsummaryrefslogtreecommitdiffstats
path: root/samplecode/SampleTextureDomain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'samplecode/SampleTextureDomain.cpp')
-rwxr-xr-xsamplecode/SampleTextureDomain.cpp42
1 files changed, 39 insertions, 3 deletions
diff --git a/samplecode/SampleTextureDomain.cpp b/samplecode/SampleTextureDomain.cpp
index be000f9..4291468 100755
--- a/samplecode/SampleTextureDomain.cpp
+++ b/samplecode/SampleTextureDomain.cpp
@@ -1,6 +1,14 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
#include "SampleCode.h"
#include "SkCanvas.h"
#include "SkDevice.h"
+#include "SkBlurMaskFilter.h"
namespace {
SkBitmap make_bitmap() {
@@ -31,7 +39,7 @@ protected:
// overrides from SkEventSink
virtual bool onQuery(SkEvent* evt) {
if (SampleCode::TitleQ(*evt)) {
- SampleCode::TitleR(evt, "Texture Domian");
+ SampleCode::TitleR(evt, "Texture Domain");
return true;
}
return this->INHERITED::onQuery(evt);
@@ -54,8 +62,8 @@ protected:
// Note: GPU-backed bitmaps follow a different rendering path
// when copying from one GPU device to another.
SkRefPtr<SkDevice> primaryDevice(canvas->getDevice());
- SkRefPtr<SkDevice> secondDevice(canvas->createDevice(
- SkBitmap::kARGB_8888_Config, 5, 5, true, true));
+ SkRefPtr<SkDevice> secondDevice(canvas->createCompatibleDevice(
+ SkBitmap::kARGB_8888_Config, 5, 5, true));
secondDevice->unref();
SkCanvas secondCanvas(secondDevice.get());
@@ -68,6 +76,34 @@ protected:
srcRect.setXYWH(1, 1, 3, 3);
dstRect.setXYWH(405.0f, 5.0f, 305.0f, 305.0f);
canvas->drawBitmapRect(deviceBitmap, &srcRect, dstRect, &paint);
+
+ // Test that bitmap blurring using a subrect
+ // renders correctly
+ srcRect.setXYWH(1, 1, 3, 3);
+ dstRect.setXYWH(5.0f, 405.0f, 305.0f, 305.0f);
+ SkMaskFilter* mf = SkBlurMaskFilter::Create(
+ 5,
+ SkBlurMaskFilter::kNormal_BlurStyle,
+ SkBlurMaskFilter::kHighQuality_BlurFlag |
+ SkBlurMaskFilter::kIgnoreTransform_BlurFlag);
+ paint.setMaskFilter(mf)->unref();
+ canvas->drawBitmapRect(deviceBitmap, &srcRect, dstRect, &paint);
+
+ // Blur and a rotation + NULL src rect
+ // This should not trigger the texture domain code
+ // but it will test a code path in SkGpuDevice::drawBitmap
+ // that handles blurs with rects transformed to non-
+ // orthogonal rects. It also tests the NULL src rect handling
+ mf = SkBlurMaskFilter::Create(
+ 5,
+ SkBlurMaskFilter::kNormal_BlurStyle,
+ SkBlurMaskFilter::kHighQuality_BlurFlag);
+ paint.setMaskFilter(mf)->unref();
+
+ dstRect.setXYWH(-150.0f, -150.0f, 300.0f, 300.0f);
+ canvas->translate(550, 550);
+ canvas->rotate(45);
+ canvas->drawBitmapRect(fBM, NULL, dstRect, &paint);
}
private:
typedef SkView INHERITED;