Exemplo n.º 1
0
bool rx_load_png(Image& img, std::string filename, bool datapath) {
  
  PNG png;

  if(!png.load(filename, datapath)) {
    return false;
  }
  
  switch(png.getColorType()) {
    case PNG_COLOR_TYPE_GRAY: {
      img.setPixelFormat(RX_FMT_GRAY8);
      break;
    }
    case PNG_COLOR_TYPE_RGB: {
      img.setPixelFormat(RX_FMT_RGB24);
      break;
    }
    case PNG_COLOR_TYPE_RGB_ALPHA: {
      img.setPixelFormat(RX_FMT_RGBA32);
      break;
    }
    default: {
      RX_ERROR(PNG_ERR_UNSUPPORTED_FORMAT);
      return false;
    }
  }

  img.setWidth(png.getWidth());
  img.setHeight(png.getHeight());

  return img.copyPixels(png.getPixels(), png.getWidth(), png.getHeight(), img.getPixelFormat());
}