Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[image] Add image_pixbuf() to create pixel buffer from image
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Nov 27, 2013
1 parent 2c16128 commit 09f31e9
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
26 changes: 26 additions & 0 deletions src/core/image.c
Expand Up @@ -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;
}
17 changes: 14 additions & 3 deletions src/include/ipxe/image.h
Expand Up @@ -16,6 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <ipxe/refcnt.h>

struct uri;
struct pixel_buffer;
struct image_type;

/** An executable image */
Expand Down Expand Up @@ -74,9 +75,10 @@ struct image {
struct image_type {
/** Name of this image type */
char *name;
/** Probe image
/**
* Probe image
*
* @v image Executable image
* @v image Image
* @ret rc Return status code
*
* Return success if the image is of this image type.
Expand All @@ -85,10 +87,18 @@ struct image_type {
/**
* Execute image
*
* @v image Executable image
* @v image Image
* @ret rc Return status code
*/
int ( * exec ) ( struct image *image );
/**
* Create pixel buffer from image
*
* @v image Image
* @v pixbuf Pixel buffer to fill in
* @ret rc Return status code
*/
int ( * pixbuf ) ( struct image *image, struct pixel_buffer **pixbuf );
};

/**
Expand Down Expand Up @@ -159,6 +169,7 @@ extern int image_replace ( struct image *replacement );
extern int image_select ( struct image *image );
extern struct image * image_find_selected ( void );
extern int image_set_trust ( int require_trusted, int permanent );
extern int image_pixbuf ( struct image *image, struct pixel_buffer **pixbuf );

/**
* Increment reference count on an image
Expand Down

0 comments on commit 09f31e9

Please sign in to comment.