Artwork

Artwork — Data structure to store iPod artwork (cover and photos)

Synopsis




            Itdb_Artwork;
            Itdb_Thumb;
enum        ItdbThumbType;
Itdb_Artwork* itdb_artwork_new              (void);
Itdb_Artwork* itdb_artwork_duplicate        (Itdb_Artwork *artwork);
void        itdb_artwork_free               (Itdb_Artwork *artwork);
gboolean    itdb_artwork_add_thumbnail      (Itdb_Artwork *artwork,
                                             ItdbThumbType type,
                                             const gchar *filename);
void        itdb_artwork_remove_thumbnail   (Itdb_Artwork *artwork,
                                             Itdb_Thumb *thumb);
void        itdb_artwork_remove_thumbnails  (Itdb_Artwork *artwork);
Itdb_Thumb* itdb_artwork_get_thumb_by_type  (Itdb_Artwork *artwork,
                                             ItdbThumbType type);
gpointer    itdb_thumb_get_gdk_pixbuf       (Itdb_Device *device,
                                             Itdb_Thumb *thumb);
Itdb_Thumb* itdb_thumb_duplicate            (Itdb_Thumb *thumb);
void        itdb_thumb_free                 (Itdb_Thumb *thumb);
Itdb_Thumb* itdb_thumb_new                  (void);
gchar*      itdb_thumb_get_filename         (Itdb_Device *device,
                                             Itdb_Thumb *thumb);

Description

Details

Itdb_Artwork

typedef struct {
    GList *thumbnails;    /* list of Itdb_Thumbs */
    guint32 artwork_size; /* Size in bytes of the original source image */
    guint32 id;           /* Artwork id used by photoalbums, starts at
			   * 0x40... libgpod will set this on sync. */
    gint32 creation_date; /* Date the image was created */
    /* below is for use by application */
    guint64 usertype;
    gpointer userdata;
    /* function called to duplicate userdata */
    ItdbUserDataDuplicateFunc userdata_duplicate;
    /* function called to free userdata */
    ItdbUserDataDestroyFunc userdata_destroy;
} Itdb_Artwork;


Itdb_Thumb

typedef struct {
    ItdbThumbType type;
    gchar *filename;
    guchar *image_data;      /* holds the thumbnail data of
				non-transfered thumbnails when
				filename == NULL */
    gsize  image_data_len;   /* length of data */
    guint32 offset;
    guint32 size;
    gint16 width;
    gint16 height;
    gint16 horizontal_padding;
    gint16 vertical_padding;
} Itdb_Thumb;


enum ItdbThumbType

typedef enum { 
    ITDB_THUMB_COVER_SMALL,
    ITDB_THUMB_COVER_LARGE,
    ITDB_THUMB_PHOTO_SMALL,
    ITDB_THUMB_PHOTO_LARGE,
    ITDB_THUMB_PHOTO_FULL_SCREEN,
    ITDB_THUMB_PHOTO_TV_SCREEN
} ItdbThumbType;


itdb_artwork_new ()

Itdb_Artwork* itdb_artwork_new              (void);

Creates a new Itdb_Artwork

Returns : a new Itdb_Artwork to be freed with itdb_artwork_free() when no longer needed

itdb_artwork_duplicate ()

Itdb_Artwork* itdb_artwork_duplicate        (Itdb_Artwork *artwork);

Duplicates artwork

artwork : an Itdb_Artwork
Returns : a new copy of artwork

itdb_artwork_free ()

void        itdb_artwork_free               (Itdb_Artwork *artwork);

Frees memory used by artwork

artwork : an Itdb_Artwork

itdb_artwork_add_thumbnail ()

gboolean    itdb_artwork_add_thumbnail      (Itdb_Artwork *artwork,
                                             ItdbThumbType type,
                                             const gchar *filename);

Appends a thumbnail of type type to existing thumbnails in artwork. No data is read from filename yet, the file will be when artwork is saved to disk. filename must still exist when that happens.

artwork : an Itdb_Thumbnail
type : thumbnail size
filename : image file to use to create the thumbnail
Returns : TRUE if the thumbnail could be successfully added, FALSE otherwise

itdb_artwork_remove_thumbnail ()

void        itdb_artwork_remove_thumbnail   (Itdb_Artwork *artwork,
                                             Itdb_Thumb *thumb);

Removes thumb from artwork. The memory used by thumb isn't freed.

artwork : an Itdb_Artwork
thumb : an Itdb_Thumb

itdb_artwork_remove_thumbnails ()

void        itdb_artwork_remove_thumbnails  (Itdb_Artwork *artwork);

Removes all thumbnails from artwork

artwork : an Itdb_Artwork

itdb_artwork_get_thumb_by_type ()

Itdb_Thumb* itdb_artwork_get_thumb_by_type  (Itdb_Artwork *artwork,
                                             ItdbThumbType type);

Searches artwork for an Itdb_Thumb of type type.

artwork : an Itdb_Artwork
type : type of the Itdb_Thumb to retrieve
Returns : an Itdb_Thumb of type type, or NULL if such a thumbnail couldn't be found

itdb_thumb_get_gdk_pixbuf ()

gpointer    itdb_thumb_get_gdk_pixbuf       (Itdb_Device *device,
                                             Itdb_Thumb *thumb);

Converts thumb to a GdkPixbuf. Since we want to have gdk-pixbuf dependency optional, a generic gpointer is returned which you have to cast to a GdkPixbuf using GDK_PIXBUF() yourself.

device : an Itdb_Device
thumb : an Itdb_Thumb
Returns : a GdkPixbuf that must be unreffed with gdk_pixbuf_unref() after use, or NULL if the creation of the gdk-pixbuf failed or if libgpod was compiled without gdk-pixbuf support.

itdb_thumb_duplicate ()

Itdb_Thumb* itdb_thumb_duplicate            (Itdb_Thumb *thumb);

Duplicates the data contained in thumb

thumb : an Itdb_Thumb
Returns : a newly allocated copy of thumb to be freed with itdb_thumb_free() after use

itdb_thumb_free ()

void        itdb_thumb_free                 (Itdb_Thumb *thumb);

Frees the memory used by thumb

thumb : an Itdb_Thumb

itdb_thumb_new ()

Itdb_Thumb* itdb_thumb_new                  (void);

Creates a new Itdb_Thumb

Returns : newly allocated Itdb_Thumb to be freed with itdb_thumb_free() after use

itdb_thumb_get_filename ()

gchar*      itdb_thumb_get_filename         (Itdb_Device *device,
                                             Itdb_Thumb *thumb);

Get filename of thumbnail. If it's a thumbnail on the iPod, return the full path to the ithmb file. Otherwise return the full path to the original file.

device : an Itdb_Device
thumb : an Itdb_Thumb
Returns : newly allocated string containing the absolute path to the thumbnail file.