diff options
author | Michael Brown | 2016-07-29 16:58:59 +0200 |
---|---|---|
committer | Michael Brown | 2016-07-29 17:04:09 +0200 |
commit | 2afd66eb55996500499eb3bcc39c66ff042679c8 (patch) | |
tree | c7895a8b5b2a4297477a57c5dae68828476899ce /src/core | |
parent | [build] Remove more obsolete explicit object requirements (diff) | |
download | ipxe-2afd66eb55996500499eb3bcc39c66ff042679c8.tar.gz ipxe-2afd66eb55996500499eb3bcc39c66ff042679c8.tar.xz ipxe-2afd66eb55996500499eb3bcc39c66ff042679c8.zip |
[pixbuf] Enable PNG format by default
Enable IMAGE_PNG (but not IMAGE_PNM) by default, and drag in the
relevant objects only when image_pixbuf() is present in the binary.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/image.c | 24 | ||||
-rw-r--r-- | src/core/pixbuf.c | 32 |
2 files changed, 32 insertions, 24 deletions
diff --git a/src/core/image.c b/src/core/image.c index a185b82f..078ce1bb 100644 --- a/src/core/image.c +++ b/src/core/image.c @@ -481,27 +481,3 @@ 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 ( ! ( image->type && 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; -} diff --git a/src/core/pixbuf.c b/src/core/pixbuf.c index c12bd3c0..4742d285 100644 --- a/src/core/pixbuf.c +++ b/src/core/pixbuf.c @@ -30,7 +30,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); */ #include <stdlib.h> +#include <errno.h> #include <ipxe/umalloc.h> +#include <ipxe/image.h> #include <ipxe/pixbuf.h> /** @@ -82,3 +84,33 @@ struct pixel_buffer * alloc_pixbuf ( unsigned int width, unsigned int height ) { err_alloc_pixbuf: return NULL; } + +/** + * 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 ( ! ( image->type && 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; +} + +/* Drag in objects via image_pixbuf() */ +REQUIRING_SYMBOL ( image_pixbuf ); + +/* Drag in pixel buffer image formats */ +REQUIRE_OBJECT ( config_pixbuf ); |