Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(555)

Unified Diff: gm/colormatrix.cpp

Issue 1217053003: add SkImage::NewFromBitmap (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | include/core/SkImage.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/colormatrix.cpp
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 8dcdf15e50167e2a1d85fb6a1f52b94f8429a5ed..a80f8cb5814ac92cb8b86da34ff66f3270587b02 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; )
-}
« no previous file with comments | « no previous file | include/core/SkImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698