/* | Copyright (C) 2002-2007 Jorg Schuler | Part of the gtkpod project. | | URL: http://www.gtkpod.org/ | URL: http://gtkpod.sourceforge.net/ | | Most of the code in this file has been ported from the perl | script "mktunes.pl" (part of the gnupod-tools collection) written | by Adrian Ulrich . | | gnupod-tools: http://www.blinkenlights.ch/cgi-bin/fm.pl?get=ipod | | The code contained in this file is free software; you can redistribute | it and/or modify it under the terms of the GNU Lesser General Public | License as published by the Free Software Foundation; either version | 2.1 of the License, or (at your option) any later version. | | This file is distributed in the hope that it will be useful, | but WITHOUT ANY WARRANTY; without even the implied warranty of | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | Lesser General Public License for more details. | | You should have received a copy of the GNU Lesser General Public | License along with this code; if not, write to the Free Software | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | iTunes and iPod are trademarks of Apple | | This product is not supported/written/published by Apple! | | $Id$ */ #ifndef __ITDB_DEVICE_H__ #define __ITDB_DEVICE_H__ #ifdef HAVE_CONFIG_H # include #endif #include "itdb.h" #include "itdb_sysinfo_extended_parser.h" #include G_BEGIN_DECLS typedef enum _ItdbThumbFormat ItdbThumbFormat; enum _ItdbThumbFormat { THUMB_FORMAT_UYVY_LE, THUMB_FORMAT_UYVY_BE, THUMB_FORMAT_I420_LE, THUMB_FORMAT_I420_BE, THUMB_FORMAT_RGB565_LE, THUMB_FORMAT_RGB565_LE_90, THUMB_FORMAT_RGB565_BE, THUMB_FORMAT_RGB565_BE_90, THUMB_FORMAT_RGB555_LE, THUMB_FORMAT_RGB555_LE_90, THUMB_FORMAT_RGB555_BE, THUMB_FORMAT_RGB555_BE_90, THUMB_FORMAT_REC_RGB555_LE, THUMB_FORMAT_REC_RGB555_LE_90, THUMB_FORMAT_REC_RGB555_BE, THUMB_FORMAT_REC_RGB555_BE_90, THUMB_FORMAT_RGB888_LE, THUMB_FORMAT_RGB888_LE_90, THUMB_FORMAT_RGB888_BE, THUMB_FORMAT_RGB888_BE_90, THUMB_FORMAT_EXPERIMENTAL_LE, THUMB_FORMAT_EXPERIMENTAL_BE, }; /** * Itdb_Device: * @mountpoint: The mountpoint of the iPod * @musicdirs: The number of /iPod_Control/Music/F.. dirs * @byte_order: G_LITTLE_ENDIAN "regular" endianness G_BIG_ENDIAN * "reversed" endianness (e.g. mobile phone iTunesDBs) * @sysinfo: A hash with key/value pairs of all entries in * Device/SysInfo * @sysinfo_extended: The parsed content of SysInfoExtended, which can be NULL * @sysinfo_changed: True if the sysinfo hash been changed by the user, false * otherwise. (see itdb_set_sysinfo()) * @timezone_shift: The difference in seconds between the current timezone * and UTC * * Structure representing an iPod device * * Since: 0.4.0 */ struct _Itdb_Device { gchar *mountpoint; gint musicdirs; guint byte_order; GHashTable *sysinfo; SysInfoIpodProperties *sysinfo_extended; gboolean sysinfo_changed; gint timezone_shift; }; /** * Itdb_ArtworkFormat: * @format_id: Unique ID for the format (generally a 4 digit int) * @width: Width of the thumbnail * @height: Height of the thumbnail * @format: Pixel format of the thumbnail (RGB, YUV, ...) * @padding: Number of bytes of padding to add after the thumbnail * (not found in SysInfoExtended -- added for * compatibility with hardcoded artwork formats) * @crop: Indicates if the thumbnail is to be cropped * @rotation: Degrees to rotate the thumbnail * @back_color: Background color for the thumbnail * @display_width: Width at which the thumbnail will be displayed * (not currently used) * @interlaced: If TRUE, the thumbnails are interlaced * (not currently used) * @align_row_bytes: If TRUE, each pixel row must be aligned a 2-byte boundary * @color_adjustment: Color adjustment for the thumbnails * (not currently used) * @gamma: Gamma value for the thumbails * (not currently used) * @associated_format: Unknown (not currently used) * * Structure representing the characteristics of the thumbnails to * write to a given .ithmb file. The format of the structure is based * on the way artwork formats are written to SysInfoExtended. */ struct _Itdb_ArtworkFormat { gint format_id; gint width; gint height; ItdbThumbFormat format; gint32 padding; gboolean crop; gint rotation; guchar back_color[4]; gint display_width; gboolean interlaced; gboolean align_row_bytes; gint color_adjustment; gdouble gamma; gint associated_format; }; /* Error domain */ #define ITDB_DEVICE_ERROR itdb_device_error_quark () GQuark itdb_device_error_quark (void); G_GNUC_INTERNAL GList *itdb_device_get_photo_formats (const Itdb_Device *device); G_GNUC_INTERNAL GList *itdb_device_get_cover_art_formats (const Itdb_Device *device); G_GNUC_INTERNAL gint itdb_device_musicdirs_number (Itdb_Device *device); G_GNUC_INTERNAL void itdb_device_autodetect_endianess (Itdb_Device *device); G_GNUC_INTERNAL guint64 itdb_device_get_firewire_id (const Itdb_Device *device); G_GNUC_INTERNAL gboolean itdb_device_supports_sparse_artwork (const Itdb_Device *device); G_GNUC_INTERNAL gboolean itdb_device_get_storage_info (Itdb_Device *device, guint64 *capacity, guint64 *free); G_END_DECLS #endif