From e3a41da5a0a3d70ac53591f2b66144f2be2b3871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Sun, 7 Nov 2021 02:02:45 +0300 Subject: Initial commit. Almost functional but still missing features and lacking testing. --- include/components.h | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 include/components.h (limited to 'include/components.h') diff --git a/include/components.h b/include/components.h new file mode 100644 index 0000000..ba5c866 --- /dev/null +++ b/include/components.h @@ -0,0 +1,82 @@ +#ifndef REVELA_COMPONENTS_H +#define REVELA_COMPONENTS_H + +#include +#include +#include + +#include "config.h" +#include "hashmap.h" + +#define PHOTO_THUMB_SUFFIX "_thumb" + +struct image { + /* The path to the source image file */ + char *source; + /* Points to the basename in source */ + const char *basename; + /* Points to the extension in source */ + const char *ext; + /* The "url" to the dir where index.html for this image will be located */ + char *url; + /* The "url" to the image file */ + char *url_image; + /* The "url" to the thumbnail image file */ + char *url_thumb; + /* Pointers to the relative urls in their respective urls */ + const char *dst; + const char *dst_image; + const char *dst_thumb; + /* The "raw" exif data extracted from the original file */ + ExifData *exif_data; + /* Last modified time of source file */ + struct timespec modtime; + /* The datetime this image was taken in human friendly form */ + char datestr[24]; + /* Same as date but in seconds for easier comparison. See image_set_date() */ + time_t tstamp; + struct album *album; + /* Hashmap with values to be passed to the image template */ + struct hashmap *map; + /* Hashmap with values to be passed to thumbs and previews vectors */ + struct hashmap *thumb; +}; + +struct album { + struct album_config *config; + /* The path to the source directory */ + char *source; + /* The full url that will be used in the template */ + char *url; + /* Pointer to the slug part in url that will be used for the new dir */ + const char *slug; + /* Pointer to the human readable date of the earliest image */ + const char *datestr; + /* The year of this album in human readable form; used to categorize */ + char year[8]; + /* The date of the album is the date of the earliest image */ + time_t tstamp; + struct bstree *images; + /* Hashmap with values to be passed to the template */ + struct hashmap *map; + /* Vector with hashmaps of images to be passed to the templates */ + struct vector *thumbs; + struct vector *previews; +}; + +struct image *image_new(char *src, const struct stat *, struct album *); + +int image_cmp(const void *a, const void *b); + +void image_destroy(void *data); + +struct album *album_new(struct album_config *, struct site_config *, + const char *src, const char *rsrc, const struct stat *); + +int album_cmp(const void *a, const void *b); + +void album_add_image(struct album *, struct image *); + +void album_destroy(void *data); + +#endif -- cgit v1.2.3