/* Cataract - Static web photo gallery generator * Copyright (C) 2008 Tomas Bzatek * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __CGG__ITEMS_H__ #define __CGG__ITEMS_H__ #include G_BEGIN_DECLS typedef enum { GALLERY_TYPE_INDEX = 1 << 0, GALLERY_TYPE_ALBUM = 1 << 1 } TGalleryType; typedef enum { INDEX_ITEM_TYPE_PICTURE = 1 << 0, INDEX_ITEM_TYPE_SEPARATOR = 1 << 1, INDEX_ITEM_TYPE_INTERSPACE = 1 << 2 } TIndexItemType; typedef enum { AUTH_TYPE_NONE, AUTH_TYPE_BASIC } TAuthType; typedef enum { CROP_HINT_UNDEFINED = 0, CROP_HINT_CENTER, CROP_HINT_LEFT, CROP_HINT_RIGHT, CROP_HINT_TOP, CROP_HINT_BOTTOM } TCropHint; typedef struct { TGalleryType type; gchar *ID; gchar *title; gchar *desc; gchar *footnote; GPtrArray *items; void *parent_index; /* pointer to the parent TAlbum structure */ int parent_item_index; /* item index in the parent album */ int quality; unsigned long landscape_width; unsigned long landscape_height; unsigned long portrait_width; unsigned long portrait_height; gchar *border_style; gchar *meta_author; gchar *meta_description; gchar *meta_keywords; gboolean nofullsize; gboolean fullsize; gchar **extra_files; gchar *auth_realm; gchar *auth_username; gchar *auth_passwd; TAuthType auth_type; int metadata_tz_shift; /* minutes */ time_t metadata_fake_datetime; TCropHint thumbnail_crop_hint; } TAlbum; typedef struct { gchar *path; gchar *title; gchar *title_description; gchar *thumbnail; gchar *preview; int quality; unsigned long width; unsigned long height; gboolean force_nofullsize; gboolean force_fullsize; gchar *border_style; TIndexItemType type; gboolean hidden; gchar *metadata_external_exif; int metadata_tz_shift; /* minutes */ time_t metadata_fake_datetime; TCropHint thumbnail_crop_hint; } TIndexItem; typedef struct { gchar *templates_root; /* relative or absolute path of design templates directory */ gchar *source_root; /* relative or absolute path of the source root */ gchar *dest_root; /* relative or absolute path of the output directory */ gchar *src_dir; /* album source directory */ gchar *dest_dir; /* album output directory */ gchar *album_path; /* current path in the gallery hierarchy, starting with '/' */ } TPathInfo; /* * GET_ITEM_TARGET_FILENAME: get target item filename */ #define GET_ITEM_TARGET_FILENAME(i) g_path_get_basename ((i->path == NULL && i->preview) ? i->preview : i->path); /* * parse_album_xml: XML parser for gallery index.xml files */ TAlbum * parse_album_xml (const gchar *filename, TPathInfo *path_info); /* * free_album_data: free allocated album data */ void free_album_data (TAlbum *index); /* * get_album_info: retrieve number of items and protected status in the specified album */ void get_album_info (const gchar *filename, int *objects_count, gboolean *is_protected); /* * get_album_titles: retrieve title, description and first thumbnail from specified album */ void get_album_titles (const gchar *filename, gchar **title, gchar **description, gchar **thumbnail); /* * get_child_gallery_type: retrieve gallery type from the source XML file */ TGalleryType get_child_gallery_type (const gchar *filename); /* * free_path_info: free allocated pathinfo data */ void free_path_info (TPathInfo *path_info); /* * dup_index_item: duplicates the item structure or returns NULL if item == NULL */ TIndexItem *dup_index_item (TIndexItem *item); /* * free_index_item: frees all memory used by item */ void free_index_item (TIndexItem *item); G_END_DECLS #endif /* __CGG__ITEMS_H__ */