diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 14:04:54 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-09-18 14:04:54 +0000 |
commit | 10f9f4a844c8d5260c0a02df94b940b6abf66b0d (patch) | |
tree | 3a844486daa7132fc317ac76e7ff8ed5b09e7db9 /gm | |
parent | eab16dea1ce249dc8e4dc635cd76b6b1b7d0cc98 (diff) |
revert 5580
git-svn-id: http://skia.googlecode.com/svn/trunk@5581 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/gmmain.cpp | 1 | ||||
-rw-r--r-- | gm/techtalk1.cpp | 24 |
4 files changed, 62 insertions, 102 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/gmmain.cpp b/gm/gmmain.cpp index 06a41958cc..c4ed298efa 100644 --- a/gm/gmmain.cpp +++ b/gm/gmmain.cpp @@ -1106,7 +1106,6 @@ 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 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); |