aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/colormatrix.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2015-07-07 06:11:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-07-07 06:11:20 -0700
commit5617900063f69754de62b8b12d32f6e36df14104 (patch)
tree07064e2e25565b7b6e4ee2b953ea9b2cde804091 /gm/colormatrix.cpp
parent6f29a3c92c976017608a626d0449dda8b603277a (diff)
add SkImage::NewFromBitmap
Diffstat (limited to 'gm/colormatrix.cpp')
-rw-r--r--gm/colormatrix.cpp120
1 files changed, 47 insertions, 73 deletions
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 8dcdf15e50..a80f8cb581 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -8,60 +8,40 @@
#include "gm.h"
#include "SkColorMatrixFilter.h"
#include "SkGradientShader.h"
+#include "SkImage.h"
#define WIDTH 500
#define HEIGHT 500
-class SkDoOnce {
-public:
- SkDoOnce() : fOnce(false) {};
-
- bool once() const {
- if (fOnce) {
- return false;
- }
- fOnce = true;
- return true;
- }
-
-private:
- mutable bool fOnce;
-};
-
-static void setColorMatrix(SkPaint* paint, const SkColorMatrix& matrix) {
+static void set_color_matrix(SkPaint* paint, const SkColorMatrix& matrix) {
paint->setColorFilter(SkColorMatrixFilter::Create(matrix))->unref();
}
-static void setArray(SkPaint* paint, const SkScalar array[]) {
+static void set_array(SkPaint* paint, const SkScalar array[]) {
paint->setColorFilter(SkColorMatrixFilter::Create(array))->unref();
}
-namespace skiagm {
-
-class ColorMatrixGM : public GM {
- SkDoOnce fOnce;
- void init() {
- if (fOnce.once()) {
- fSolidBitmap = this->createSolidBitmap(64, 64);
- fTransparentBitmap = this->createTransparentBitmap(64, 64);
- }
- }
-
+class ColorMatrixGM : public skiagm::GM {
public:
ColorMatrixGM() {
this->setBGColor(sk_tool_utils::color_to_565(0xFF808080));
}
protected:
- virtual SkString onShortName() {
+ SkString onShortName() override {
return SkString("colormatrix");
}
- virtual SkISize onISize() {
+ SkISize onISize() override {
return SkISize::Make(WIDTH, HEIGHT);
}
+
+ void onOnceBeforeDraw() override {
+ fSolidImg.reset(CreateSolidBitmap(64, 64));
+ fTransparentImg.reset(CreateTransparentBitmap(64, 64));
+ }
- SkBitmap createSolidBitmap(int width, int height) {
+ static SkImage* CreateSolidBitmap(int width, int height) {
SkBitmap bm;
bm.allocN32Pixels(width, height);
SkCanvas canvas(bm);
@@ -74,11 +54,11 @@ protected:
SkIntToScalar(y), SK_Scalar1, SK_Scalar1), paint);
}
}
- return bm;
+ return SkImage::NewFromBitmap(bm);
}
// creates a bitmap with shades of transparent gray.
- SkBitmap createTransparentBitmap(int width, int height) {
+ static SkImage* CreateTransparentBitmap(int width, int height) {
SkBitmap bm;
bm.allocN32Pixels(width, height);
SkCanvas canvas(bm);
@@ -90,58 +70,56 @@ protected:
paint.setShader(SkGradientShader::CreateLinear(pts, colors, NULL, 2,
SkShader::kClamp_TileMode))->unref();
canvas.drawRect(SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height)), paint);
- return bm;
+ return SkImage::NewFromBitmap(bm);
}
- virtual void onDraw(SkCanvas* canvas) {
- this->init();
-
+ void onDraw(SkCanvas* canvas) override {
SkPaint paint;
SkColorMatrix matrix;
paint.setXfermodeMode(SkXfermode::kSrc_Mode);
- const SkBitmap bmps[] = { fSolidBitmap, fTransparentBitmap };
+ const SkImage* bmps[] = { fSolidImg, fTransparentImg };
for (size_t i = 0; i < SK_ARRAY_COUNT(bmps); ++i) {
matrix.setIdentity();
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 0, 0, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 0, 0, &paint);
matrix.setRotate(SkColorMatrix::kR_Axis, 90);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 80, 0, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 80, 0, &paint);
matrix.setRotate(SkColorMatrix::kG_Axis, 90);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 160, 0, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 160, 0, &paint);
matrix.setRotate(SkColorMatrix::kB_Axis, 90);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 240, 0, &paint);
-
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 240, 0, &paint);
+ ///////////////////////////////////////////////
matrix.setSaturation(0.0f);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 0, 80, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 0, 80, &paint);
matrix.setSaturation(0.5f);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 80, 80, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 80, 80, &paint);
matrix.setSaturation(1.0f);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 160, 80, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 160, 80, &paint);
matrix.setSaturation(2.0f);
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 240, 80, &paint);
-
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 240, 80, &paint);
+ ///////////////////////////////////////////////
matrix.setRGB2YUV();
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 0, 160, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 0, 160, &paint);
matrix.setYUV2RGB();
- setColorMatrix(&paint, matrix);
- canvas->drawBitmap(bmps[i], 80, 160, &paint);
+ set_color_matrix(&paint, matrix);
+ canvas->drawImage(bmps[i], 80, 160, &paint);
SkScalar s1 = SK_Scalar1;
SkScalar s255 = SkIntToScalar(255);
@@ -153,22 +131,18 @@ protected:
s1, 0, 0, 0, 0,
};
- setArray(&paint, data);
- canvas->drawBitmap(bmps[i], 160, 160, &paint);
-
+ set_array(&paint, data);
+ canvas->drawImage(bmps[i], 160, 160, &paint);
+ ///////////////////////////////////////////////
canvas->translate(0, 240);
}
}
private:
- SkBitmap fSolidBitmap;
- SkBitmap fTransparentBitmap;
- typedef GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
+ SkAutoTUnref<SkImage> fSolidImg;
+ SkAutoTUnref<SkImage> fTransparentImg;
-static GM* MyFactory(void*) { return new ColorMatrixGM; }
-static GMRegistry reg(MyFactory);
+ typedef skiagm::GM INHERITED;
+};
+DEF_GM( return new ColorMatrixGM; )
-}