typedef void image_loaded_cb(sp_image *image, void *userdata) |
The type of a callback used to notify the application that an image is done loading.
enum sp_imageformat |
Image format
void sp_image_add_load_callback | ( | sp_image * | image, | |
image_loaded_cb * | callback, | |||
void * | userdata | |||
) |
Add a callback that will be invoked when the image is loaded
If an image is loaded, and loading fails, the image will behave like an empty image.
Here is a snippet from track.c:
g_image = sp_image_create(session, image_id); if (!g_image) { fprintf(stderr, "The cover image could not be loaded!\n"); logout(session); return; } sp_image_add_load_callback(g_image, &print_cover, session);
[in] | image | Image object |
[in] | callback | Callback that will be called when image has been fetched. |
[in] | userdata | Opaque pointer passed to callback |
void sp_image_add_ref | ( | sp_image * | image | ) |
Increase the reference count of an image
[in] | image | The image object |
sp_image* sp_image_create | ( | sp_session * | session, | |
const byte | image_id[20] | |||
) |
Create an image object
Here is a snippet from track.c:
image_id = sp_album_cover(album); if (!image_id) { fprintf(stderr, "No album coverart!\n"); logout(session); return; } g_image = sp_image_create(session, image_id); if (!g_image) { fprintf(stderr, "The cover image could not be loaded!\n"); logout(session); return; }
[in] | session | Session |
[in] | image_id | Spotify image ID |
Check if image retrieval returned an error code.
[in] | image | Image object |
sp_imageformat sp_image_format | ( | sp_image * | image | ) |
Get image format
[in] | image | Image object |
int sp_image_height | ( | sp_image * | image | ) |
Get image height
[in] | image | Image object |
const byte* sp_image_image_id | ( | sp_image * | image | ) |
Get image ID
[in] | image | Image object |
bool sp_image_is_loaded | ( | sp_image * | image | ) |
Check if an image is loaded. Before the image is loaded, the rest of the methods will behave as if the image is empty.
[in] | image | Image object |
void* sp_image_lock_pixels | ( | sp_image * | image, | |
int * | pitch | |||
) |
Lock pixels and return a pointer to the pixel data.
You call sp_image_lock_pixels to obtain a pointer to the pixel buffer. Then you call sp_image_unlock_pixels() when you are done. After you have called sp_image_unlock_pixels() the pointer returned from sp_image_lock_pixels is not valid anymore, and libspotify may move the image in memory or delete it or compress it in any way it likes.
Here is a snippet from track.c:
data = sp_image_lock_pixels(image, &pitch); for (y = 0; y < height; ++y) { byte *p = (byte *) (data + y * pitch); for (x = 0; x < width; ++x) { if (reverse) { bsum += *p++; gsum += *p++; rsum += *p++; } else { rsum += *p++; gsum += *p++; bsum += *p++; } if (alpha) p++; } } printf("Cover %d x %d %s image. Average RGB color %d, %d, %d.\n", width, height, format, rsum / width / height, gsum / width / height, bsum / width / height); sp_image_unlock_pixels(image);
[in] | image | Image object |
[out] | pitch | Offset in bytes between consecutive lines in pixel data. |
void sp_image_release | ( | sp_image * | image | ) |
void sp_image_remove_load_callback | ( | sp_image * | image, | |
image_loaded_cb * | callback, | |||
void * | userdata | |||
) |
Remove an image load callback previously added with sp_image_add_load_callback()
[in] | image | Image object |
[in] | callback | Callback that will not be called when image has been fetched. |
[in] | userdata | Opaque pointer passed to callback |
void sp_image_unlock_pixels | ( | sp_image * | image | ) |
Unlock pixels.
After this call it is no longer safe to assume that the pointer returned by sp_image_lock_pixels() is safe to dereference.
[in] | image | Image object |
int sp_image_width | ( | sp_image * | image | ) |
Get image width
[in] | image | Image object |