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:47:20 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-18 13:47:20 +0000
commiteab16dea1ce249dc8e4dc635cd76b6b1b7d0cc98 (patch)
treed0fd60679fb3392a35ce0c50a10692ceb104ddca /gm
parentc75c36a14b5dcc0dd5a82651d41792278cb27326 (diff)
re-land 5578 w/ pipe fix
git-svn-id: http://skia.googlecode.com/svn/trunk@5580 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/gmmain.cpp1
-rw-r--r--gm/techtalk1.cpp24
4 files changed, 102 insertions, 62 deletions
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index ef73614c6b..f67ac17a9f 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -9,43 +9,6 @@
#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());
@@ -182,7 +145,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
new file mode 100644
index 0000000000..0e6c074e83
--- /dev/null
+++ b/gm/bitmaprect.cpp
@@ -0,0 +1,100 @@
+
+/*
+ * 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/gmmain.cpp b/gm/gmmain.cpp
index c4ed298efa..06a41958cc 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -1106,6 +1106,7 @@ int main(int argc, char * const argv[]) {
if ((ERROR_NONE == testErrors) && doPipe &&
!(gmFlags & GM::kSkipPipe_Flag)) {
+ SkDebugf("test_pipe\n");
testErrors |= test_pipe_playback(gm, config,
forwardRenderedBitmap,
readPath, diffPath);
diff --git a/gm/techtalk1.cpp b/gm/techtalk1.cpp
index acfea90fb5..00c49569c0 100644
--- a/gm/techtalk1.cpp
+++ b/gm/techtalk1.cpp
@@ -8,7 +8,6 @@
#include "gm.h"
#include "SkColorPriv.h"
-#include "SkGradientShader.h"
#include "SkGeometry.h"
#include "SkShader.h"
@@ -312,25 +311,6 @@ 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;
@@ -340,7 +320,6 @@ static const struct {
{ draw_oval, "Ovals" },
{ draw_image, "Images" },
{ draw_text, "Text" },
- { draw_grad, "Gradient" },
};
class TalkGM : public skiagm::GM {
@@ -414,9 +393,6 @@ 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);