Index: src/gpu/GrSurface.cpp |
diff --git a/src/gpu/GrSurface.cpp b/src/gpu/GrSurface.cpp |
index 47d9959d26723a1e6adf5cd75cabfc59a7e7ef45..e14987f083c483e00bb315aca994dbbbd9b529d5 100644 |
--- a/src/gpu/GrSurface.cpp |
+++ b/src/gpu/GrSurface.cpp |
@@ -7,4 +7,31 @@ |
#include "GrSurface.h" |
+#include "SkBitmap.h" |
+#include "SkImageEncoder.h" |
+ |
SK_DEFINE_INST_COUNT(GrSurface) |
+ |
+bool GrSurface::savePixels(const char* filename) { |
+ SkBitmap bm; |
+ bm.setConfig(SkBitmap::kARGB_8888_Config, this->width(), this->height()); |
+ bm.allocPixels(); |
+ |
+ bool result = readPixels(0, 0, this->width(), this->height(), kSkia8888_GrPixelConfig, |
+ bm.getPixels()); |
+ if (!result) { |
+ SkDebugf("------ failed to read pixels for %s\n", filename); |
+ return false; |
+ } |
+ |
+ // remove any previous version of this file |
+ remove(filename); |
+ |
+ if (!SkImageEncoder::EncodeFile(filename, bm, SkImageEncoder::kPNG_Type, 100)) { |
+ SkDebugf("------ failed to encode %s\n", filename); |
+ remove(filename); // remove any partial file |
+ return false; |
+ } |
+ |
+ return true; |
+} |