|
@@ -137,26 +137,15 @@ love::image::ImageData *Canvas::newImageData(love::image::Image *module, int sli
|
|
|
if (gfx != nullptr && gfx->isCanvasActive(this))
|
|
|
throw love::Exception("Canvas:newImageData cannot be called while that Canvas is currently active.");
|
|
|
|
|
|
- PixelFormat dataformat;
|
|
|
- switch (getPixelFormat())
|
|
|
- {
|
|
|
- case PIXELFORMAT_RGB10A2: // FIXME: Conversions aren't supported in GLES
|
|
|
- dataformat = PIXELFORMAT_RGBA16;
|
|
|
- break;
|
|
|
- case PIXELFORMAT_R16F:
|
|
|
- case PIXELFORMAT_RG16F:
|
|
|
- case PIXELFORMAT_RGBA16F:
|
|
|
- case PIXELFORMAT_RG11B10F: // FIXME: Conversions aren't supported in GLES
|
|
|
- dataformat = PIXELFORMAT_RGBA16F;
|
|
|
- break;
|
|
|
- case PIXELFORMAT_R32F:
|
|
|
- case PIXELFORMAT_RG32F:
|
|
|
- case PIXELFORMAT_RGBA32F:
|
|
|
- dataformat = PIXELFORMAT_RGBA32F;
|
|
|
- break;
|
|
|
- default:
|
|
|
+ PixelFormat dataformat = getPixelFormat();
|
|
|
+ if (dataformat == PIXELFORMAT_sRGBA8)
|
|
|
dataformat = PIXELFORMAT_RGBA8;
|
|
|
- break;
|
|
|
+
|
|
|
+ if (!image::ImageData::validPixelFormat(dataformat))
|
|
|
+ {
|
|
|
+ const char *formatname = "unknown";
|
|
|
+ love::getConstant(dataformat, formatname);
|
|
|
+ throw love::Exception("ImageData with the '%s' pixel format is not supported.", formatname);
|
|
|
}
|
|
|
|
|
|
return module->newImageData(r.w, r.h, dataformat);
|