Index: src/gpu/GrSurface.cpp |
diff --git a/src/gpu/GrSurface.cpp b/src/gpu/GrSurface.cpp |
index 47d9959d26723a1e6adf5cd75cabfc59a7e7ef45..f83c72e72bb0c116f82c3fc22f200593990807fb 100644 |
--- a/src/gpu/GrSurface.cpp |
+++ b/src/gpu/GrSurface.cpp |
@@ -7,4 +7,32 @@ |
#include "GrSurface.h" |
+#include "GrDrawState.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); |
bsalomon
2013/09/30 17:39:04
is this cross-platform?
jvanverth1
2013/09/30 17:46:35
It's part of the C standard, so it should be.
|
+ |
+ 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; |
+} |