aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/srcmode.cpp
diff options
context:
space:
mode:
authorGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-11-16 02:23:10 +0000
committerGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-11-16 02:23:10 +0000
commit92aa756c861e81c92f0f14b253012461e4090d4d (patch)
tree990157a073fba0a415be5249f57cae47cc09d48d /gm/srcmode.cpp
parent884e60be30e20f38b3466a4697081187d2f1f814 (diff)
use gpu surface to match canvas
change gm to reset shader when we start antialiasing git-svn-id: http://skia.googlecode.com/svn/trunk@6448 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/srcmode.cpp')
-rw-r--r--gm/srcmode.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp
index 1cda7c2ee3..1e4ce13910 100644
--- a/gm/srcmode.cpp
+++ b/gm/srcmode.cpp
@@ -10,12 +10,17 @@
#include "SkGradientShader.h"
#include "SkSurface.h"
+#include "SkGpuDevice.h"
+
#define W SkIntToScalar(80)
#define H SkIntToScalar(60)
typedef void (*PaintProc)(SkPaint*);
-static void identity_paintproc(SkPaint* paint) {}
+static void identity_paintproc(SkPaint* paint) {
+ paint->setShader(NULL);
+}
+
static void gradient_paintproc(SkPaint* paint) {
const SkColor colors[] = { SK_ColorGREEN, SK_ColorBLUE };
const SkPoint pts[] = { { 0, 0 }, { W, H } };
@@ -115,6 +120,13 @@ protected:
SkImage::kPMColor_ColorType,
SkImage::kPremul_AlphaType
};
+
+ SkDevice* dev = canvas->getDevice();
+ if (dev->accessRenderTarget()) {
+ SkGpuDevice* gd = (SkGpuDevice*)dev;
+ GrContext* ctx = gd->context();
+ return SkSurface::NewRenderTarget(ctx, info, 0);
+ }
return SkSurface::NewRaster(info);
}
@@ -123,7 +135,6 @@ protected:
surf->getCanvas()->drawColor(SK_ColorWHITE);
this->drawContent(surf->getCanvas());
surf->draw(canvas, 0, 0, NULL);
-
}
private: