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

Unified Diff: tests/ARGBImageEncoderTest.cpp

Issue 14267031: ARGB image encoder for checksums. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Something which can actually be checked in. Created 7 years, 8 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 | « src/utils/SkSHA1.h ('k') | tests/BitmapTransformerTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/ARGBImageEncoderTest.cpp
===================================================================
--- tests/ARGBImageEncoderTest.cpp (working copy)
+++ tests/ARGBImageEncoderTest.cpp (working copy)
@@ -1,4 +1,3 @@
-
/*
* Copyright 2012 Google Inc.
*
@@ -6,92 +5,74 @@
* found in the LICENSE file.
*/
-/**
- * Tests for SkBitmapTransformer.h and SkBitmapTransformer.cpp
- */
+/** Tests for ARGBImageEncoder. */
#include "Test.h"
#include "SkBitmap.h"
-#include "SkBitmapTransformer.h"
+#include "SkCanvas.h"
+#include "SkImageEncoder.h"
+#include "SkStream.h"
namespace skiatest {
- class BitmapTransformerTestClass : public Test {
- public:
- static Test* Factory(void*) {return SkNEW(BitmapTransformerTestClass); }
- protected:
- virtual void onGetName(SkString* name) { name->set("BitmapTransformer"); }
- virtual void onRun(Reporter* reporter) {
- this->fReporter = reporter;
- RunTest();
- }
- private:
- void RunTest() {
- SkBitmap bitmap;
- SkBitmap::Config supportedConfig = SkBitmap::kARGB_8888_Config;
- SkBitmap::Config unsupportedConfig = SkBitmap::kARGB_4444_Config;
- SkBitmapTransformer::PixelFormat supportedPixelFormat =
- SkBitmapTransformer::kARGB_8888_Premul_PixelFormat;
- const int kWidth = 55;
- const int kHeight = 333;
- // Transformations that we know are unsupported:
- {
- bitmap.setConfig(unsupportedConfig, kWidth, kHeight);
- SkBitmapTransformer transformer = SkBitmapTransformer(bitmap, supportedPixelFormat);
- REPORTER_ASSERT(fReporter, !transformer.isValid());
- }
+class BitmapTransformerTestClass : public Test {
+public:
+ static Test* Factory(void*) { return SkNEW(BitmapTransformerTestClass); }
+protected:
+ virtual void onGetName(SkString* name) SK_OVERRIDE { name->set("ARGBImageEncoder"); }
+ virtual void onRun(Reporter* reporter) SK_OVERRIDE;
+};
- // Valid transformations:
- {
- // Bytes we expect to get:
- const int kWidth = 3;
- const int kHeight = 5;
- const unsigned char comparisonBuffer[] = {
- // kHeight rows, each with kWidth pixels, premultiplied ARGB for each pixel
- 0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00, // red
- 0xff,0x00,0xff,0x00, 0xff,0x00,0xff,0x00, 0xff,0x00,0xff,0x00, // green
- 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
- 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
- 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
- };
+static SkBitmap::Config configs[] = {
+ SkBitmap::kRGB_565_Config,
+ SkBitmap::kARGB_4444_Config,
+ SkBitmap::kARGB_8888_Config,
+};
- // A bitmap that should generate the above bytes:
- bitmap.setConfig(supportedConfig, kWidth, kHeight);
- REPORTER_ASSERT(fReporter, bitmap.allocPixels());
- bitmap.setIsOpaque(true);
- bitmap.eraseColor(SK_ColorBLUE);
- bitmap.lockPixels();
- // Change rows [0,1] from blue to [red,green].
- SkColor oldColor = SK_ColorBLUE;
- SkColor newColors[] = {SK_ColorRED, SK_ColorGREEN};
- for (int y = 0; y <= 1; y++) {
- for (int x = 0; x < kWidth; x++) {
- REPORTER_ASSERT(fReporter, bitmap.getColor(x, y) == oldColor);
- SkPMColor* pixel = static_cast<SkPMColor *>(bitmap.getAddr(x, y));
- *pixel = SkPreMultiplyColor(newColors[y]);
- REPORTER_ASSERT(fReporter, bitmap.getColor(x, y) == newColors[y]);
- }
- }
- bitmap.unlockPixels();
+void BitmapTransformerTestClass::onRun(Reporter* reporter) {
+ // Bytes we expect to get:
+ const int kWidth = 3;
+ const int kHeight = 5;
+ const unsigned char comparisonBuffer[] = {
+ // kHeight rows, each with kWidth pixels, premultiplied ARGB for each pixel
+ 0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00, // red
+ 0xff,0x00,0xff,0x00, 0xff,0x00,0xff,0x00, 0xff,0x00,0xff,0x00, // green
+ 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
+ 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
+ 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, 0xff,0x00,0x00,0xff, // blue
+ };
- // Transform the bitmap and confirm we got the expected results.
- SkBitmapTransformer transformer = SkBitmapTransformer(bitmap, supportedPixelFormat);
- REPORTER_ASSERT(fReporter, transformer.isValid());
- REPORTER_ASSERT(fReporter, transformer.bytesNeededPerRow() == kWidth * 4);
- REPORTER_ASSERT(fReporter, transformer.bytesNeededTotal() == kWidth * kHeight * 4);
- int bufferSize = transformer.bytesNeededTotal();
- SkAutoMalloc pixelBufferManager(bufferSize);
- char *pixelBuffer = static_cast<char *>(pixelBufferManager.get());
- REPORTER_ASSERT(fReporter,
- transformer.copyBitmapToPixelBuffer(pixelBuffer, bufferSize));
- REPORTER_ASSERT(fReporter, bufferSize == sizeof(comparisonBuffer));
- REPORTER_ASSERT(fReporter, memcmp(pixelBuffer, comparisonBuffer, bufferSize) == 0);
- }
-
+ SkAutoTDelete<SkImageEncoder> enc(CreateARGBImageEncoder());
+ for (size_t configIndex = 0; configIndex < SK_ARRAY_COUNT(configs); ++configIndex) {
+ // A bitmap that should generate the above bytes:
+ SkBitmap bitmap;
+ {
+ bitmap.setConfig(configs[configIndex], kWidth, kHeight);
+ REPORTER_ASSERT(reporter, bitmap.allocPixels());
+ bitmap.setIsOpaque(true);
+ bitmap.eraseColor(SK_ColorBLUE);
+ // Change rows [0,1] from blue to [red,green].
+ SkCanvas canvas(bitmap);
+ SkPaint paint;
+ paint.setColor(SK_ColorRED);
+ canvas.drawIRect(SkIRect::MakeLTRB(0, 0, kWidth, 1), paint);
+ paint.setColor(SK_ColorGREEN);
+ canvas.drawIRect(SkIRect::MakeLTRB(0, 1, kWidth, 2), paint);
}
- Reporter* fReporter;
- };
+ // Transform the bitmap.
+ int bufferSize = bitmap.width() * bitmap.height() * 4;
+ SkAutoMalloc pixelBufferManager(bufferSize);
+ char *pixelBuffer = static_cast<char *>(pixelBufferManager.get());
+ SkMemoryWStream out(pixelBuffer, bufferSize);
+ REPORTER_ASSERT(reporter, enc->encodeStream(&out, bitmap, SkImageEncoder::kDefaultQuality));
- static TestRegistry gReg(BitmapTransformerTestClass::Factory);
+ // Confirm we got the expected results.
+ REPORTER_ASSERT(reporter, bufferSize == sizeof(comparisonBuffer));
+ REPORTER_ASSERT(reporter, memcmp(pixelBuffer, comparisonBuffer, bufferSize) == 0);
+ }
}
+
+static TestRegistry gReg(BitmapTransformerTestClass::Factory);
+
+}
« no previous file with comments | « src/utils/SkSHA1.h ('k') | tests/BitmapTransformerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698