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-2011 Henrik Andersson.
4 Copyright (C) 2010-2012 johannes hanika.
5 Copyright (C) 2010 Pascal de Bruijn.
6 Copyright (C) 2012 Ivan Tarozzi.
7 Copyright (C) 2012 José Carlos García Sogo.
8 Copyright (C) 2012 Richard Wonka.
9 Copyright (C) 2012-2013 Simon Spannagel.
10 Copyright (C) 2012, 2014, 2016-2017 Tobias Ellinghaus.
11 Copyright (C) 2013 Dennis Gnad.
12 Copyright (C) 2013 Jérémy Rosen.
13 Copyright (C) 2016 Roman Lebedev.
14 Copyright (C) 2017, 2019, 2021 luzpaz.
15 Copyright (C) 2019 Edgardo Hoszowski.
16 Copyright (C) 2019-2021 Philippe Weyland.
17 Copyright (C) 2020 Aldric Renaudin.
18 Copyright (C) 2020-2021 Pascal Obry.
19 Copyright (C) 2021 Hubert Kowalski.
20 Copyright (C) 2022 Martin Bařinka.
21 Copyright (C) 2022 Miloš Komarčević.
22 Copyright (C) 2025 Alynx Zhou.
23 Copyright (C) 2025-2026 Aurélien PIERRE.
24
25 darktable is free software: you can redistribute it and/or modify
26 it under the terms of the GNU General Public License as published by
27 the Free Software Foundation, either version 3 of the License, or
28 (at your option) any later version.
29
30 darktable is distributed in the hope that it will be useful,
31 but WITHOUT ANY WARRANTY; without even the implied warranty of
32 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 GNU General Public License for more details.
34
35 You should have received a copy of the GNU General Public License
36 along with darktable. If not, see <http://www.gnu.org/licenses/>.
37*/
38
39#pragma once
40
41#include <glib.h>
42#include <sqlite3.h>
43#include <stdint.h>
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49typedef struct dt_tag_t
50{
51 guint id;
52 gchar *tag;
53 gchar *leave;
54 gchar *synonym;
55 guint count;
56 guint select;
57 gint flags;
59
60typedef enum dt_tag_flags_t
61{
63 DT_TF_CATEGORY = 1 << 0, // this tag (or path) is not a keyword to be exported
64 DT_TF_PRIVATE = 1 << 1, // this tag is private. Will be exported only on demand
65 DT_TF_ORDER_SET = 1 << 2, // set if the tag has got an images order
66 DT_TF_DESCENDING = 1U << 31,
68
69#define DT_TF_ALL (DT_TF_CATEGORY | DT_TF_PRIVATE | DT_TF_ORDER_SET)
70
72{
73 DT_TS_NO_IMAGE = 0, // no selection or no tag not attached
74 DT_TS_SOME_IMAGES, // tag attached on some selected images
75 DT_TS_ALL_IMAGES // tag attached on all selected images
77
81gboolean dt_tag_new(const char *name, guint *tagid);
82
87gboolean dt_tag_new_from_gui(const char *name, guint *tagid);
88
89// read/import tags from a txt file as written by Lightroom. returns the number of imported tags
90// or -1 if an error occurred.
91ssize_t dt_tag_import(const char *filename);
92
93// export all tags to a txt file as written by Lightroom. returns the number of exported tags
94// or -1 if an error occurred.
95ssize_t dt_tag_export(const char *filename);
96
98gchar *dt_tag_get_name(const guint tagid);
99
102guint dt_tag_remove(const guint tagid, gboolean final);
103
105guint dt_tag_remove_list(GList *tag_list);
106
108void dt_tag_rename(const guint tagid, const gchar *new_tagname);
109
111gboolean dt_tag_exists(const char *name, guint *tagid);
112
115gboolean dt_tag_attach_images(const guint tagid, const GList *img, const gboolean undo_on);
118gboolean dt_tag_attach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on);
119
121gboolean dt_is_tag_attached(const guint tagid, const int32_t imgid);
122
126gboolean dt_tag_set_tags(const GList *tags, const GList *img, const gboolean ignore_dt_tags,
127 const gboolean clear_on, const gboolean undo_on);
128
131gboolean dt_tag_attach_string_list(const gchar *tags, const GList *img, const gboolean undo_on);
132
135gboolean dt_tag_detach_images(const guint tagid, const GList *img, const gboolean undo_on);
138gboolean dt_tag_detach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on);
139
141gboolean dt_tag_detach_by_string(const char *name, const int32_t imgid, const gboolean undo_on,
142 const gboolean group_on);
143
145uint32_t dt_tag_get_attached(const int32_t imgid, GList **result, const gboolean ignore_dt_tags);
146
148GList *dt_sort_tag(GList *tags, gboolean byname);
149
153GList *dt_tag_get_list(int32_t imgid);
154
157GList *dt_tag_get_list_export(int32_t imgid, int32_t flags);
158
161GList *dt_tag_get_hierarchical(int32_t imgid);
162
165GList *dt_tag_get_hierarchical_export(int32_t imgid, int32_t flags);
166
168GList *dt_tag_get_tags(const int32_t imgid, const gboolean ignore_dt_tags);
169
171GList *dt_tag_get_images(const gint tagid);
172
174GList *dt_tag_get_images_from_list(const GList *img, const gint tagid);
175
179uint32_t dt_tag_get_suggestions(GList **result);
180
183void dt_tag_count_tags_images(const gchar *keyword, int *tag_count, int *img_count);
184
187void dt_tag_get_tags_images(const gchar *keyword, GList **tag_list, GList **img_list);
188
192uint32_t dt_tag_get_with_usage(GList **result);
193
195gchar *dt_tag_get_synonyms(gint tagid);
196
198void dt_tag_set_synonyms(gint tagid, gchar *synonyms);
199
201gint dt_tag_get_flags(gint tagid);
202
204void dt_tag_set_flags(gint tagid, gint flags);
205
208uint32_t dt_tag_get_recent_used(GList **result);
209
211void dt_tag_free_result(GList **result);
212
214uint32_t dt_tag_images_count(gint tagid);
215
217char *dt_tag_get_subtags(const int32_t imgid, const char *category, const int level);
218
220gboolean dt_tag_get_tag_order_by_id(const uint32_t tagid, uint32_t *sort,
221 gboolean *descending);
222
224void dt_tag_set_tag_order_by_id(const uint32_t tagid, const uint32_t sort,
225 const gboolean descending);
226
228uint32_t dt_tag_get_tag_id_by_name(const char * const name);
229
232
234void dt_tags_cleanup(void);
235
236#ifdef __cplusplus
237}
238#endif
239
240// clang-format off
241// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
242// vim: shiftwidth=2 expandtab tabstop=2 cindent
243// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
244// clang-format on
char * name
Definition common/metadata.c:61
GList * dt_tag_get_images_from_list(const GList *img, const gint tagid)
Definition common/tags.c:1107
GList * dt_tag_get_images(const gint tagid)
Definition common/tags.c:1084
GList * dt_tag_get_list_export(int32_t imgid, int32_t flags)
Definition common/tags.c:963
void dt_tag_get_tags_images(const gchar *keyword, GList **tag_list, GList **img_list)
Definition common/tags.c:1302
guint dt_tag_remove_list(GList *tag_list)
Definition common/tags.c:294
gboolean dt_tag_attach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on)
Definition common/tags.c:485
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:506
uint32_t dt_tag_get_suggestions(GList **result)
Definition common/tags.c:1141
char * dt_tag_get_subtags(const int32_t imgid, const char *category, const int level)
Definition common/tags.c:1788
uint32_t dt_tag_get_attached(const int32_t imgid, GList **result, const gboolean ignore_dt_tags)
Definition common/tags.c:635
gboolean dt_tag_attach_images(const guint tagid, const GList *img, const gboolean undo_on)
Definition common/tags.c:463
void dt_set_darktable_tags()
Definition common/tags.c:618
ssize_t dt_tag_export(const char *filename)
Definition common/tags.c:1716
gchar * dt_tag_get_synonyms(gint tagid)
Definition common/tags.c:1464
gboolean dt_tag_detach(const guint tagid, const int32_t imgid, const gboolean undo_on, const gboolean group_on)
Definition common/tags.c:593
gint dt_tag_get_flags(gint tagid)
Definition common/tags.c:1498
dt_tag_selection_t
Definition common/tags.h:72
@ DT_TS_ALL_IMAGES
Definition common/tags.h:75
@ DT_TS_NO_IMAGE
Definition common/tags.h:73
@ DT_TS_SOME_IMAGES
Definition common/tags.h:74
gboolean dt_tag_attach_string_list(const gchar *tags, const GList *img, const gboolean undo_on)
Definition common/tags.c:526
uint32_t dt_tag_images_count(gint tagid)
Definition common/tags.c:1359
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:608
gboolean dt_is_tag_attached(const guint tagid, const int32_t imgid)
Definition common/tags.c:1067
gboolean dt_tag_new(const char *name, guint *tagid)
Definition common/tags.c:179
void dt_tag_set_tag_order_by_id(const uint32_t tagid, const uint32_t sort, const gboolean descending)
Definition common/tags.c:1878
gboolean dt_tag_get_tag_order_by_id(const uint32_t tagid, uint32_t *sort, gboolean *descending)
Definition common/tags.c:1830
void dt_tag_rename(const guint tagid, const gchar *new_tagname)
Definition common/tags.c:340
dt_tag_flags_t
Definition common/tags.h:61
@ DT_TF_NONE
Definition common/tags.h:62
@ DT_TF_ORDER_SET
Definition common/tags.h:65
@ DT_TF_DESCENDING
Definition common/tags.h:66
@ DT_TF_CATEGORY
Definition common/tags.h:63
@ DT_TF_PRIVATE
Definition common/tags.h:64
gchar * dt_tag_get_name(const guint tagid)
Definition common/tags.c:325
void dt_tags_cleanup(void)
Definition common/tags.c:1899
GList * dt_tag_get_list(int32_t imgid)
Definition common/tags.c:850
GList * dt_tag_get_hierarchical_export(int32_t imgid, int32_t flags)
Definition common/tags.c:1043
void dt_tag_set_flags(gint tagid, gint flags)
Definition common/tags.c:1516
guint dt_tag_remove(const guint tagid, gboolean final)
Definition common/tags.c:236
gboolean dt_tag_detach_images(const guint tagid, const GList *img, const gboolean undo_on)
Definition common/tags.c:570
GList * dt_tag_get_hierarchical(int32_t imgid)
Definition common/tags.c:894
GList * dt_tag_get_tags(const int32_t imgid, const gboolean ignore_dt_tags)
Definition common/tags.c:950
void dt_tag_free_result(GList **result)
Definition common/tags.c:1559
gboolean dt_tag_exists(const char *name, guint *tagid)
Definition common/tags.c:356
GList * dt_sort_tag(GList *tags, gboolean byname)
void dt_tag_set_synonyms(gint tagid, gchar *synonyms)
Definition common/tags.c:1482
ssize_t dt_tag_import(const char *filename)
Definition common/tags.c:1581
uint32_t dt_tag_get_tag_id_by_name(const char *const name)
Definition common/tags.c:1858
gboolean dt_tag_new_from_gui(const char *name, guint *tagid)
Definition common/tags.c:228
uint32_t dt_tag_get_recent_used(GList **result)
Definition common/tags.c:1568
void dt_tag_count_tags_images(const gchar *keyword, int *tag_count, int *img_count)
Definition common/tags.c:1254
uint32_t dt_tag_get_with_usage(GList **result)
Definition common/tags.c:1377
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
Definition common/tags.h:50
gchar * synonym
Definition common/tags.h:54
gchar * tag
Definition common/tags.h:52
guint id
Definition common/tags.h:51
guint count
Definition common/tags.h:55
gchar * leave
Definition common/tags.h:53
guint select
Definition common/tags.h:56
gint flags
Definition common/tags.h:57