mirror of
https://github.com/xcat2/xNBA.git
synced 2025-02-23 05:50:00 +00:00
[image] Add image_pixbuf() to create pixel buffer from image
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
2c161283d5
commit
09f31e9fc4
@ -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;
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
#include <ipxe/refcnt.h>
|
||||
|
||||
struct uri;
|
||||
struct pixel_buffer;
|
||||
struct image_type;
|
||||
|
||||
/** An executable image */
|
||||
@ -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.
|
||||
@ -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 );
|
||||
};
|
||||
|
||||
/**
|
||||
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user