diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/src/gpu/GrSurface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/src/gpu/GrSurface.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,48 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "GrSurface.h" + +#include "SkBitmap.h" +#include "SkGr.h" +#include "SkImageEncoder.h" +#include + +void GrSurface::asImageInfo(SkImageInfo* info) const { + if (!GrPixelConfig2ColorType(this->config(), &info->fColorType)) { + sk_throw(); + } + info->fWidth = this->width(); + info->fHeight = this->height(); + info->fAlphaType = kPremul_SkAlphaType; +} + +bool GrSurface::savePixels(const char* filename) { + SkBitmap bm; + if (!bm.allocPixels(SkImageInfo::MakeN32Premul(this->width(), + this->height()))) { + return false; + } + + 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; +}