Home | History | Annotate | Download | only in gpu
      1 /*
      2  * Copyright 2012 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "GrSurface.h"
      9 
     10 #include "SkBitmap.h"
     11 #include "SkGr.h"
     12 #include "SkImageEncoder.h"
     13 #include <stdio.h>
     14 
     15 void GrSurface::asImageInfo(SkImageInfo* info) const {
     16     if (!GrPixelConfig2ColorType(this->config(), &info->fColorType)) {
     17         sk_throw();
     18     }
     19     info->fWidth = this->width();
     20     info->fHeight = this->height();
     21     info->fAlphaType = kPremul_SkAlphaType;
     22 }
     23 
     24 bool GrSurface::savePixels(const char* filename) {
     25     SkBitmap bm;
     26     bm.setConfig(SkBitmap::kARGB_8888_Config, this->width(), this->height());
     27     bm.allocPixels();
     28 
     29     bool result = readPixels(0, 0, this->width(), this->height(), kSkia8888_GrPixelConfig,
     30                              bm.getPixels());
     31     if (!result) {
     32         SkDebugf("------ failed to read pixels for %s\n", filename);
     33         return false;
     34     }
     35 
     36     // remove any previous version of this file
     37     remove(filename);
     38 
     39     if (!SkImageEncoder::EncodeFile(filename, bm, SkImageEncoder::kPNG_Type, 100)) {
     40         SkDebugf("------ failed to encode %s\n", filename);
     41         remove(filename);   // remove any partial file
     42         return false;
     43     }
     44 
     45     return true;
     46 }
     47