diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 15:14:33 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 15:14:33 +0000 |
commit | 7112173c3c4cd1b1e7da8cdf971d71f01dd91299 (patch) | |
tree | 854ffd9e48edda9dd70b2f7ad3d788000b8f7def /gm | |
parent | acfb30e5bb797249f4ec41edda4c4d4b86e0e5d0 (diff) |
re-re-land 5578
will follow w/ new .skp files to keep the waterfall green (I hope)
git-svn-id: http://skia.googlecode.com/svn/trunk@5584 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm')
-rw-r--r-- | gm/aaclip.cpp | 39 | ||||
-rw-r--r-- | gm/bitmaprect.cpp | 100 | ||||
-rw-r--r-- | gm/techtalk1.cpp | 24 |
3 files changed, 101 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/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); |