Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
common/tags.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2010-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include <glib.h>
22#include <sqlite3.h>
23#include <stdint.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29typedef struct dt_tag_t
30{
31 guint id;
32 gchar *tag;
33 gchar *leave;
34 gchar *synonym;
35 guint count;
36 guint select;
37 gint flags;
39
40typedef enum dt_tag_flags_t
41{
43 DT_TF_CATEGORY = 1 << 0, // this tag (or path) is not a keyword to be exported
44 DT_TF_PRIVATE = 1 << 1, // this tag is private. Will be exported only on demand
45 DT_TF_ORDER_SET = 1 << 2, // set if the tag has got an images order
46 DT_TF_DESCENDING = 1U << 31,
48
49#define DT_TF_ALL (DT_TF_CATEGORY | DT_TF_PRIVATE | DT_TF_ORDER_SET)
50
52{
53 DT_TS_NO_IMAGE = 0, // no selection or no tag not attached
54 DT_TS_SOME_IMAGES, // tag attached on some selected images
55 DT_TS_ALL_IMAGES // tag attached on all selected images
57
61gboolean dt_tag_new(const char *name, guint *tagid);
62
67gboolean dt_tag_new_from_gui(const char *name, guint *tagid);
68
69// read/import tags from a txt file as written by Lightroom. returns the number of imported tags
70// or -1 if an error occurred.
71ssize_t dt_tag_import(const char *filename);
72
73// export all tags to a txt file as written by Lightroom. returns the number of exported tags
74// or -1 if an error occurred.
75ssize_t dt_tag_export(const char *filename);
76
78gchar *dt_tag_get_name(const guint tagid);
79
82guint dt_tag_remove(const guint tagid, gboolean final);
83
85guint dt_tag_remove_list(GList *tag_list);
86
88void dt_tag_rename(const guint tagid, const gchar *new_tagname);
89
91gboolean dt_tag_exists(const char *name, guint *tagid);
92
95gboolean dt_tag_attach_images(const guint tagid, const GList *img, const gboolean undo_on);
98gboolean dt_tag_attach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on);
99
101gboolean dt_is_tag_attached(const guint tagid, const int32_t imgid);
102
106gboolean dt_tag_set_tags(const GList *tags, const GList *img, const gboolean ignore_dt_tags,
107 const gboolean clear_on, const gboolean undo_on);
108
111gboolean dt_tag_attach_string_list(const gchar *tags, const GList *img, const gboolean undo_on);
112
115gboolean dt_tag_detach_images(const guint tagid, const GList *img, const gboolean undo_on);
118gboolean dt_tag_detach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on);
119
121gboolean dt_tag_detach_by_string(const char *name, const int32_t imgid, const gboolean undo_on,
122 const gboolean group_on);
123
125uint32_t dt_tag_get_attached(const int32_t imgid, GList **result, const gboolean ignore_dt_tags);
126
128GList *dt_sort_tag(GList *tags, gboolean byname);
129
133GList *dt_tag_get_list(int32_t imgid);
134
137GList *dt_tag_get_list_export(int32_t imgid, int32_t flags);
138
141GList *dt_tag_get_hierarchical(int32_t imgid);
142
145GList *dt_tag_get_hierarchical_export(int32_t imgid, int32_t flags);
146
148GList *dt_tag_get_tags(const int32_t imgid, const gboolean ignore_dt_tags);
149
151GList *dt_tag_get_images(const gint tagid);
152
154GList *dt_tag_get_images_from_list(const GList *img, const gint tagid);
155
159uint32_t dt_tag_get_suggestions(GList **result);
160
163void dt_tag_count_tags_images(const gchar *keyword, int *tag_count, int *img_count);
164
167void dt_tag_get_tags_images(const gchar *keyword, GList **tag_list, GList **img_list);
168
172uint32_t dt_tag_get_with_usage(GList **result);
173
175gchar *dt_tag_get_synonyms(gint tagid);
176
178void dt_tag_set_synonyms(gint tagid, gchar *synonyms);
179
181gint dt_tag_get_flags(gint tagid);
182
184void dt_tag_set_flags(gint tagid, gint flags);
185
188uint32_t dt_tag_get_recent_used(GList **result);
189
191void dt_tag_free_result(GList **result);
192
194uint32_t dt_tag_images_count(gint tagid);
195
197char *dt_tag_get_subtags(const int32_t imgid, const char *category, const int level);
198
200gboolean dt_tag_get_tag_order_by_id(const uint32_t tagid, uint32_t *sort,
201 gboolean *descending);
202
204void dt_tag_set_tag_order_by_id(const uint32_t tagid, const uint32_t sort,
205 const gboolean descending);
206
208uint32_t dt_tag_get_tag_id_by_name(const char * const name);
209
212
213#ifdef __cplusplus
214}
215#endif
216
217// clang-format off
218// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
219// vim: shiftwidth=2 expandtab tabstop=2 cindent
220// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
221// clang-format on
char * name
Definition common/metadata.c:41
GList * dt_tag_get_images_from_list(const GList *img, const gint tagid)
Definition common/tags.c:1005
GList * dt_tag_get_images(const gint tagid)
Definition common/tags.c:982
GList * dt_tag_get_list_export(int32_t imgid, int32_t flags)
Definition common/tags.c:861
void dt_tag_get_tags_images(const gchar *keyword, GList **tag_list, GList **img_list)
Definition common/tags.c:1200
guint dt_tag_remove_list(GList *tag_list)
Definition common/tags.c:262
gboolean dt_tag_attach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on)
Definition common/tags.c:453
gboolean dt_tag_set_tags(const GList *tags, const GList *img, const gboolean ignore_dt_tags, const gboolean clear_on, const gboolean undo_on)
Definition common/tags.c:472
uint32_t dt_tag_get_suggestions(GList **result)
Definition common/tags.c:1039
char * dt_tag_get_subtags(const int32_t imgid, const char *category, const int level)
Definition common/tags.c:1684
uint32_t dt_tag_get_attached(const int32_t imgid, GList **result, const gboolean ignore_dt_tags)
Definition common/tags.c:598
gboolean dt_tag_attach_images(const guint tagid, const GList *img, const gboolean undo_on)
Definition common/tags.c:432
void dt_set_darktable_tags()
Definition common/tags.c:581
ssize_t dt_tag_export(const char *filename)
Definition common/tags.c:1612
gchar * dt_tag_get_synonyms(gint tagid)
Definition common/tags.c:1362
gboolean dt_tag_detach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on)
Definition common/tags.c:557
gint dt_tag_get_flags(gint tagid)
Definition common/tags.c:1396
dt_tag_selection_t
Definition common/tags.h:52
@ DT_TS_ALL_IMAGES
Definition common/tags.h:55
@ DT_TS_NO_IMAGE
Definition common/tags.h:53
@ DT_TS_SOME_IMAGES
Definition common/tags.h:54
gboolean dt_tag_attach_string_list(const gchar *tags, const GList *img, const gboolean undo_on)
Definition common/tags.c:492
uint32_t dt_tag_images_count(gint tagid)
Definition common/tags.c:1257
gboolean dt_tag_detach_by_string(const char *name, const int32_t imgid, const gboolean undo_on, const gboolean group_on)
Definition common/tags.c:571
gboolean dt_is_tag_attached(const guint tagid, const int32_t imgid)
Definition common/tags.c:965
gboolean dt_tag_new(const char *name, guint *tagid)
Definition common/tags.c:147
void dt_tag_set_tag_order_by_id(const uint32_t tagid, const uint32_t sort, const gboolean descending)
Definition common/tags.c:1774
gboolean dt_tag_get_tag_order_by_id(const uint32_t tagid, uint32_t *sort, gboolean *descending)
Definition common/tags.c:1726
void dt_tag_rename(const guint tagid, const gchar *new_tagname)
Definition common/tags.c:309
dt_tag_flags_t
Definition common/tags.h:41
@ DT_TF_NONE
Definition common/tags.h:42
@ DT_TF_ORDER_SET
Definition common/tags.h:45
@ DT_TF_DESCENDING
Definition common/tags.h:46
@ DT_TF_CATEGORY
Definition common/tags.h:43
@ DT_TF_PRIVATE
Definition common/tags.h:44
gchar * dt_tag_get_name(const guint tagid)
Definition common/tags.c:294
GList * dt_tag_get_list(int32_t imgid)
Definition common/tags.c:748
GList * dt_tag_get_hierarchical_export(int32_t imgid, int32_t flags)
Definition common/tags.c:941
void dt_tag_set_flags(gint tagid, gint flags)
Definition common/tags.c:1414
guint dt_tag_remove(const guint tagid, gboolean final)
Definition common/tags.c:204
gboolean dt_tag_detach_images(const guint tagid, const GList *img, const gboolean undo_on)
Definition common/tags.c:535
GList * dt_tag_get_hierarchical(int32_t imgid)
Definition common/tags.c:792
GList * dt_tag_get_tags(const int32_t imgid, const gboolean ignore_dt_tags)
Definition common/tags.c:848
void dt_tag_free_result(GList **result)
Definition common/tags.c:1457
gboolean dt_tag_exists(const char *name, guint *tagid)
Definition common/tags.c:325
GList * dt_sort_tag(GList *tags, gboolean byname)
void dt_tag_set_synonyms(gint tagid, gchar *synonyms)
Definition common/tags.c:1380
ssize_t dt_tag_import(const char *filename)
Definition common/tags.c:1478
uint32_t dt_tag_get_tag_id_by_name(const char *const name)
Definition common/tags.c:1754
gboolean dt_tag_new_from_gui(const char *name, guint *tagid)
Definition common/tags.c:196
uint32_t dt_tag_get_recent_used(GList **result)
Definition common/tags.c:1465
void dt_tag_count_tags_images(const gchar *keyword, int *tag_count, int *img_count)
Definition common/tags.c:1152
uint32_t dt_tag_get_with_usage(GList **result)
Definition common/tags.c:1275
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
Definition common/tags.h:30
gchar * synonym
Definition common/tags.h:34
gchar * tag
Definition common/tags.h:32
guint id
Definition common/tags.h:31
guint count
Definition common/tags.h:35
gchar * leave
Definition common/tags.h:33
guint select
Definition common/tags.h:36
gint flags
Definition common/tags.h:37