aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/lumamode.cpp
diff options
context:
space:
mode:
authorGravatar fmalita@google.com <fmalita@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-23 18:13:00 +0000
committerGravatar fmalita@google.com <fmalita@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-23 18:13:00 +0000
commitcbddc114197928b99cbe968504d82a2623e746c4 (patch)
tree72c37cadb850628b3dd93838dcde7cd9ee367ee0 /gm/lumamode.cpp
parentf9a0a660ecbb18cf552631ae91c31dec233e612b (diff)
Revert "Updated SkLumaXfermode GM."
Win compile warnings. Review URL: https://codereview.chromium.org/22831042 git-svn-id: http://skia.googlecode.com/svn/trunk@10894 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/lumamode.cpp')
-rw-r--r--gm/lumamode.cpp129
1 files changed, 33 insertions, 96 deletions
diff --git a/gm/lumamode.cpp b/gm/lumamode.cpp
index adb7792d9d..ddafc7c351 100644
--- a/gm/lumamode.cpp
+++ b/gm/lumamode.cpp
@@ -7,65 +7,48 @@
#include "gm.h"
#include "SkCanvas.h"
-#include "SkGradientShader.h"
#include "SkLumaXfermode.h"
-static unsigned kSize = 80;
-static unsigned kInset = 10;
-static SkColor kColor1 = SkColorSetARGB(0xff, 0xff, 0xff, 0);
-static SkColor kColor2 = SkColorSetARGB(0xff, 0x80, 0xff, 0);
-
-static void draw_label(SkCanvas* canvas, const char* label,
- const SkPoint& offset) {
- SkPaint paint;
- size_t len = strlen(label);
-
- SkScalar width = paint.measureText(label, len);
- canvas->drawText(label, len, offset.x() - width / 2, offset.y(),
- paint);
-}
-
-static void draw_scene(SkCanvas* canvas, SkXfermode* mode, bool aa,
- SkShader* s1, SkShader* s2) {
+static void show_scene(SkCanvas* canvas, SkXfermode* mode, const char* label) {
SkPaint paint;
- paint.setAntiAlias(aa);
- SkRect r, c, bounds = SkRect::MakeWH(kSize, kSize);
+ paint.setAntiAlias(true);
+ SkRect r, c, bounds = { 10, 10, 110, 110 };
c = bounds;
c.fRight = bounds.centerX();
- canvas->drawRect(bounds, paint);
+ r = bounds;
+ r.fBottom = bounds.centerY();
+ canvas->drawRect(r, paint);
+
+ SkScalar tw = paint.measureText(label, strlen(label));
+ canvas->drawText(label, strlen(label), bounds.centerX() - tw / 2,
+ bounds.bottom() + 15, paint);
canvas->saveLayer(&bounds, NULL);
r = bounds;
- r.inset(kInset, 0);
- paint.setShader(s1);
- paint.setColor(s1 ? SK_ColorBLACK : SkColorSetA(kColor1, 0x80));
+ r.inset(20, 0);
+ paint.setColor(0x80FFFF00);
canvas->drawOval(r, paint);
- if (!s1) {
- canvas->save();
- canvas->clipRect(c);
- paint.setColor(s1 ? SK_ColorBLACK : kColor1);
- canvas->drawOval(r, paint);
- canvas->restore();
- }
+ canvas->save();
+ canvas->clipRect(c);
+ paint.setColor(0xFFFFFF00);
+ canvas->drawOval(r, paint);
+ canvas->restore();
SkPaint xferPaint;
xferPaint.setXfermode(mode);
canvas->saveLayer(&bounds, &xferPaint);
r = bounds;
- r.inset(0, kInset);
- paint.setShader(s2);
- paint.setColor(s2 ? SK_ColorBLACK : SkColorSetA(kColor2, 0x80));
+ r.inset(0, 20);
+ paint.setColor(0x8080FF00);
canvas->drawOval(r, paint);
- if (!s2) {
- canvas->save();
- canvas->clipRect(c);
- paint.setColor(s2 ? SK_ColorBLACK : kColor2);
- canvas->drawOval(r, paint);
- canvas->restore();
- }
+ canvas->save();
+ canvas->clipRect(c);
+ paint.setColor(0xFF80FF00);
+ canvas->drawOval(r, paint);
+ canvas->restore();
canvas->restore();
canvas->restore();
@@ -73,27 +56,7 @@ static void draw_scene(SkCanvas* canvas, SkXfermode* mode, bool aa,
class LumaXfermodeGM : public skiagm::GM {
public:
- LumaXfermodeGM() {
- fSrcInXfer.reset(SkLumaMaskXfermode::Create(SkXfermode::kSrcIn_Mode));
- fDstInXfer.reset(SkLumaMaskXfermode::Create(SkXfermode::kDstIn_Mode));
-
- SkColor g1Colors[] = { kColor1, SkColorSetA(kColor1, 0x20) };
- SkColor g2Colors[] = { kColor2, SkColorSetA(kColor2, 0x20) };
- SkPoint g1Points[] = { {0, 0}, {0, 100} };
- SkPoint g2Points[] = { {0, 0}, {kSize, 0} };
- SkScalar pos[] = { 0.2f, 1.0f };
-
- fGr1.reset(SkGradientShader::CreateLinear(g1Points,
- g1Colors,
- pos,
- SK_ARRAY_COUNT(g1Colors),
- SkShader::kClamp_TileMode));
- fGr2.reset(SkGradientShader::CreateLinear(g2Points,
- g2Colors,
- pos,
- SK_ARRAY_COUNT(g2Colors),
- SkShader::kClamp_TileMode));
- }
+ LumaXfermodeGM() {}
protected:
virtual SkString onShortName() SK_OVERRIDE {
@@ -101,46 +64,20 @@ protected:
}
virtual SkISize onISize() SK_OVERRIDE {
- return SkISize::Make(600, 420);
+ return SkISize::Make(450, 140);
}
virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
- SkXfermode* modes[] = { NULL, fSrcInXfer, fDstInXfer };
- struct {
- SkShader* fShader1;
- SkShader* fShader2;
- } shaders[] = {
- { NULL, NULL },
- { NULL, fGr2 },
- { fGr1, NULL },
- { fGr1, fGr2 },
- };
-
- draw_label(canvas, "SrcOver",
- SkPoint::Make(kSize + 2 * kInset, 20));
- draw_label(canvas, "SrcInLuma",
- SkPoint::Make(3 * (kSize + 2 * kInset), 20));
- draw_label(canvas, "DstInLuma",
- SkPoint::Make(5 * (kSize + 2 * kInset), 20));
- for (size_t i = 0; i < SK_ARRAY_COUNT(shaders); ++i) {
- canvas->save();
- canvas->translate(kInset, 30 + i * (kSize + 2 * kInset));
- for (size_t m = 0; m < SK_ARRAY_COUNT(modes); ++m) {
- draw_scene(canvas, modes[m], true, shaders[i].fShader1,
- shaders[i].fShader2);
- canvas->translate(kSize + 2 * kInset, 0);
- draw_scene(canvas, modes[m], false, shaders[i].fShader1,
- shaders[i].fShader2);
- canvas->translate(kSize + 2 * kInset, 0);
- }
- canvas->restore();
- }
+ show_scene(canvas, NULL, "SrcOver");
+ canvas->translate(150, 0);
+ SkAutoTUnref<SkXfermode> src_in(SkLumaMaskXfermode::Create(SkXfermode::kSrcIn_Mode));
+ show_scene(canvas, src_in.get(), "SrcInLuma");
+ canvas->translate(150, 0);
+ SkAutoTUnref<SkXfermode> dst_in(SkLumaMaskXfermode::Create(SkXfermode::kDstIn_Mode));
+ show_scene(canvas, dst_in.get(), "DstInLuma");
}
private:
- SkAutoTUnref<SkShader> fGr1, fGr2;
- SkAutoTUnref<SkXfermode> fSrcInXfer, fDstInXfer;
-
typedef skiagm::GM INHERITED;
};