diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/image.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/core/image.c b/src/core/image.c index d9d91013e..ec4480238 100644 --- a/src/core/image.c +++ b/src/core/image.c @@ -456,3 +456,29 @@ int image_set_trust ( int require_trusted, int permanent ) { return 0; } + +/** + * Create pixel buffer from image + * + * @v image Image + * @v pixbuf Pixel buffer to fill in + * @ret rc Return status code + */ +int image_pixbuf ( struct image *image, struct pixel_buffer **pixbuf ) { + int rc; + + /* Check that this image can be used to create a pixel buffer */ + if ( ( rc = image_probe ( image ) ) != 0 ) + return rc; + if ( ! image->type->pixbuf ) + return -ENOTSUP; + + /* Try creating pixel buffer */ + if ( ( rc = image->type->pixbuf ( image, pixbuf ) ) != 0 ) { + DBGC ( image, "IMAGE %s could not create pixel buffer: %s\n", + image->name, strerror ( rc ) ); + return rc; + } + + return 0; +} |
