aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-18 13:20:52 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-18 13:20:52 +0000
commitc75c36a14b5dcc0dd5a82651d41792278cb27326 (patch)
tree3a844486daa7132fc317ac76e7ff8ed5b09e7db9 /gm
parentf1ab723033a186dc53434104a636c2dfac5fc863 (diff)
revert 5578 -- broke pipe
git-svn-id: http://skia.googlecode.com/svn/trunk@5579 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm')
-rw-r--r--gm/aaclip.cpp39
-rw-r--r--gm/bitmaprect.cpp100
-rw-r--r--gm/techtalk1.cpp24
3 files changed, 62 insertions, 101 deletions
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index f67ac17a9f..ef73614c6b 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -9,6 +9,43 @@
#include "SkCanvas.h"
#include "SkPath.h"
+#if 0
+def unpremul(x,alpha):
+assert x <= alpha
+if alpha == 0:
+return 0
+else:
+return math.floor(x*MAXVAL/alpha)
+
+def premul(X,alpha):
+return math.ceil(X*alpha/MAXVAL)
+#endif
+
+static int premul(int r, int a) {
+ SkASSERT(a >= 0 && a <= 255);
+ SkASSERT(r >= 0 && r <= 255);
+ return (int)ceil(r * a / 255.0);
+}
+
+static int unpremul(int r, int a) {
+ SkASSERT(a >= 0 && a <= 255);
+ SkASSERT(r >= 0 && r <= a);
+ if (0 == a) {
+ return 0;
+ }
+ return (int)floor(r * 255.0 / a);
+}
+
+static void test_premul() {
+ for (int a = 0; a <= 255; ++a) {
+ for (int r = 0; r <= a; ++r) {
+ int tmpr = unpremul(r, a);
+ int newr = premul(tmpr, a);
+ SkASSERT(newr == r);
+ }
+ }
+}
+
static SkCanvas* MakeCanvas(const SkIRect& bounds) {
SkBitmap bm;
bm.setConfig(SkBitmap::kARGB_8888_Config, bounds.width(), bounds.height());
@@ -145,7 +182,7 @@ static void draw_rect_tests (SkCanvas* canvas) {
class AAClipGM : public GM {
public:
AAClipGM() {
-
+ test_premul();
}
protected:
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
deleted file mode 100644
index 0e6c074e83..0000000000
--- a/gm/bitmaprect.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-
-/*
- * 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 "gm.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkGraphics.h"
-#include "SkPath.h"
-#include "SkRegion.h"
-#include "SkShader.h"
-
-static void make_bitmap(SkBitmap* bitmap) {
- SkCanvas canvas;
-
- {
- bitmap->setConfig(SkBitmap::kARGB_8888_Config, 64, 64);
- bitmap->allocPixels();
- canvas.setBitmapDevice(*bitmap);
- }
-
- canvas.drawColor(SK_ColorRED);
- SkPaint paint;
- paint.setAntiAlias(true);
- const SkPoint pts[] = { { 0, 0 }, { 64, 64 } };
- const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE };
- paint.setShader(SkGradientShader::CreateLinear(pts, colors, NULL, 2,
- SkShader::kClamp_TileMode))->unref();
- canvas.drawCircle(32, 32, 32, paint);
-}
-
-class DrawBitmapRect2 : public skiagm::GM {
- bool fUseIRect;
-public:
- DrawBitmapRect2(bool useIRect) : fUseIRect(useIRect) {
- }
-
-protected:
- virtual SkString onShortName() SK_OVERRIDE {
- SkString str;
- str.printf("bitmaprect_%s", fUseIRect ? "i" : "s");
- return str;
- }
-
- virtual SkISize onISize() SK_OVERRIDE {
- return SkISize::Make(640, 480);
- }
-
- virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
- canvas->drawColor(0xFFCCCCCC);
-
- const SkIRect src[] = {
- { 0, 0, 32, 32 },
- { 0, 0, 80, 80 },
- { 32, 32, 96, 96 },
- { -32, -32, 32, 32, }
- };
-
- SkPaint paint;
- paint.setStyle(SkPaint::kStroke_Style);
-// paint.setColor(SK_ColorGREEN);
-
- SkBitmap bitmap;
- make_bitmap(&bitmap);
-
- SkRect dstR = { 0, 200, 128, 380 };
-
- canvas->translate(16, 40);
- for (size_t i = 0; i < SK_ARRAY_COUNT(src); i++) {
- SkRect srcR;
- srcR.set(src[i]);
-
- canvas->drawBitmap(bitmap, 0, 0, &paint);
- if (fUseIRect) {
- canvas->drawBitmapRectToRect(bitmap, &srcR, dstR, &paint);
- } else {
- canvas->drawBitmapRect(bitmap, &src[i], dstR, &paint);
- }
-
- canvas->drawRect(dstR, paint);
- canvas->drawRect(srcR, paint);
-
- canvas->translate(160, 0);
- }
- }
-
-private:
- typedef skiagm::GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-static skiagm::GM* MyFactory0(void*) { return new DrawBitmapRect2(false); }
-static skiagm::GM* MyFactory1(void*) { return new DrawBitmapRect2(true); }
-
-static skiagm::GMRegistry reg0(MyFactory0);
-static skiagm::GMRegistry reg1(MyFactory1);
diff --git a/gm/techtalk1.cpp b/gm/techtalk1.cpp
index 00c49569c0..acfea90fb5 100644
--- a/gm/techtalk1.cpp
+++ b/gm/techtalk1.cpp
@@ -8,6 +8,7 @@
#include "gm.h"
#include "SkColorPriv.h"
+#include "SkGradientShader.h"
#include "SkGeometry.h"
#include "SkShader.h"
@@ -311,6 +312,25 @@ static void draw_text(SkCanvas* canvas, bool showGL, int flags) {
}
}
+static void draw_grad(SkCanvas* canvas, bool showGL, int) {
+ SkPoint gradient_bounds[2];
+ gradient_bounds[0].iset(0, 0);
+ gradient_bounds[1].iset(0, 480);
+
+ SkColor colors[2];
+ colors[0] = 0xFFAB3300; // top
+ colors[1] = 0xFF4F0000; // bottom
+
+ SkShader* shader = SkGradientShader::CreateLinear(gradient_bounds,
+ colors, NULL, 2, SkShader::kClamp_TileMode, NULL);
+
+ SkPaint paint;
+ paint.setShader(shader)->unref();
+ paint.setDither(showGL);
+
+ canvas->drawPaint(paint);
+}
+
static const struct {
DrawProc fProc;
const char* fName;
@@ -320,6 +340,7 @@ static const struct {
{ draw_oval, "Ovals" },
{ draw_image, "Images" },
{ draw_text, "Text" },
+ { draw_grad, "Gradient" },
};
class TalkGM : public skiagm::GM {
@@ -393,6 +414,9 @@ ADD_GM(TalkGM, (3, true))
ADD_GM(TalkGM, (4, false))
ADD_GM(TalkGM, (4, true))
+ADD_GM(TalkGM, (5, false))
+ADD_GM(TalkGM, (5, true))
+
//static GM* MyFactory(void*) { return new TalkGM(0, false); }
//static GMRegistry reg(MyFactory);