Replace some macros with inline functions.
-readability-magic-numbers,
-readability-named-parameter,
-readability-qualified-auto,
- -readability-simplify-boolean-expr,
ExtraArgs: [-Wno-unknown-warning-option, -Wno-unused-lambda-capture, -Wno-unused-but-set-variable]
WarningsAsErrors: "*"
longitude = metadata_read_GPS_coord(fd, "Xmp.exif.GPSLongitude", 0);
compass = metadata_read_GPS_direction(fd, "Xmp.exif.GPSImgDirection", 1000);
- if (!(latitude == 0 && longitude == 0))
+ if (latitude != 0 || longitude != 0)
{
pgd->num_added++;
{
gchar *origin;
- if (!(sd->undo_src_list && sd->undo_dest_list)) return;
+ if (!sd->undo_src_list || !sd->undo_dest_list) return;
switch (sd->undo_action)
{
ed->flags = editor->flags;
ed->flags = static_cast<EditorFlags>(ed->flags | editor_command_parse(editor, list, TRUE, &command));
- ok = !EDITOR_ERRORS(ed->flags);
+ ok = !editor_errors(ed->flags);
if (ok)
{
g_free(command);
- return static_cast<EditorFlags>(EDITOR_ERRORS(ed->flags));
+ return static_cast<EditorFlags>(editor_errors(ed->flags));
}
static EditorFlags editor_command_next_start(EditorData *ed)
switch (cont)
{
case EDITOR_CB_SUSPEND:
- return static_cast<EditorFlags>(EDITOR_ERRORS(ed->flags));
+ return static_cast<EditorFlags>(editor_errors(ed->flags));
case EDITOR_CB_SKIP:
return editor_command_done(ed);
}
ed->count = 0;
- flags = static_cast<EditorFlags>(EDITOR_ERRORS(ed->flags));
+ flags = static_cast<EditorFlags>(editor_errors(ed->flags));
if (!ed->vd) editor_data_free(ed);
EditorData *ed;
EditorFlags flags = editor->flags;
- if (EDITOR_ERRORS(flags)) return static_cast<EditorFlags>(EDITOR_ERRORS(flags));
+ if (editor_errors(flags)) return static_cast<EditorFlags>(editor_errors(flags));
ed = g_new0(EditorData, 1);
ed->list = filelist_copy(list);
editor_command_next_start(ed);
/* errors from editor_command_next_start will be handled via callback */
- return static_cast<EditorFlags>(EDITOR_ERRORS(flags));
+ return static_cast<EditorFlags>(editor_errors(flags));
}
gboolean is_valid_editor_command(const gchar *key)
error = editor_command_parse(editor, list, TRUE, nullptr);
- if (EDITOR_ERRORS(error)) return error;
+ if (editor_errors(error)) return error;
error = static_cast<EditorFlags>(error | editor_command_start(editor, editor->name, list, working_directory, cb, data));
- if (EDITOR_ERRORS(error))
+ if (editor_errors(error))
{
gchar *text = g_strdup_printf(_("%s\n\"%s\""), editor_get_error_str(error), editor->file);
g_free(text);
}
- return static_cast<EditorFlags>(EDITOR_ERRORS(error));
+ return static_cast<EditorFlags>(editor_errors(error));
}
EditorFlags start_editor_from_filelist(const gchar *key, GList *list)
gboolean disabled; /**< display disabled by user */
};
-#define EDITOR_ERRORS(flags) ((flags) & EDITOR_ERROR_MASK)
-#define EDITOR_ERRORS_BUT_SKIPPED(flags) (!!(((flags) & EDITOR_ERROR_MASK) && !((flags) & EDITOR_ERROR_SKIPPED)))
+inline gint editor_errors(EditorFlags flags) { return flags & EDITOR_ERROR_MASK; }
+inline gboolean editor_errors_but_skipped(EditorFlags flags) { return !!(editor_errors(flags) && !(flags & EDITOR_ERROR_SKIPPED)); }
/**
{
auto buf = static_cast<gchar *>(work->data);
- if (!(g_str_has_prefix(buf, ".") && !newpath))
+ if (!g_str_has_prefix(buf, ".") || newpath)
{
if (strcmp(buf, oldpath) == 0)
{
lw = layout_find_by_image(imd);
- if (!(options->image.fit_window_to_image && lw && (lw->options.tools_float || lw->options.tools_hidden))) window = nullptr;
+ if (!options->image.fit_window_to_image || !lw || (!lw->options.tools_float && !lw->options.tools_hidden)) window = nullptr;
pixbuf_renderer_set_parent(reinterpret_cast<PixbufRenderer *>(imd->pr), reinterpret_cast<GtkWindow *>(window));
action = gtk_action_group_get_action(lw->action_group, "ConnectZoomMenu");
gtk_action_set_sensitive(action, lw->split_mode != SPLIT_NONE);
+ // @todo `which` is deprecated, use command -v
+ gboolean is_write_rotation = !runcmd("which exiftran >/dev/null 2>&1")
+ && !runcmd("which mogrify >/dev/null 2>&1")
+ && !options->metadata.write_orientation;
action = gtk_action_group_get_action(lw->action_group, "WriteRotation");
- gtk_action_set_sensitive(action, !(runcmd("which exiftran >/dev/null 2>&1") ||
- runcmd("which mogrify >/dev/null 2>&1") || options->metadata.write_orientation));
+ gtk_action_set_sensitive(action, is_write_rotation);
action = gtk_action_group_get_action(lw->action_group, "WriteRotationKeepDate");
- gtk_action_set_sensitive(action, !(runcmd("which exiftran >/dev/null 2>&1") ||
- runcmd("which mogrify >/dev/null 2>&1") || options->metadata.write_orientation));
+ gtk_action_set_sensitive(action, is_write_rotation);
action = gtk_action_group_get_action(lw->action_group, "StereoAuto");
gtk_radio_action_set_current_value(GTK_RADIO_ACTION(action), layout_image_stereo_pixbuf_get(lw));
work = work->next;
gboolean active = TRUE;
- if (fd_list && EDITOR_ERRORS(editor_command_parse(editor, fd_list, FALSE, nullptr)))
+ if (fd_list && editor_errors(editor_command_parse(editor, fd_list, FALSE, nullptr)))
active = FALSE;
if (active)
struct ExifData;
+namespace
+{
+
enum MetadataKey {
MK_NONE,
MK_KEYWORDS,
/**
* @brief Tags that will be written to all files in a group - selected by: options->metadata.sync_grouped_files, Preferences/Metadata/Write The Same Description Tags To All Grouped Sidecars
*/
-static const gchar *group_keys[] = {
+// @todo Use std::array
+const gchar *group_keys[] = {
"Xmp.dc.title",
"Xmp.photoshop.Urgency",
"Xmp.photoshop.Category",
"Xmp.dc.rights",
"Xmp.dc.description",
"Xmp.photoshop.CaptionWriter",
- nullptr};
+ nullptr
+};
+
+inline gboolean is_keywords_separator(gchar c)
+{
+ return c == ','
+ || c == ';'
+ || c == '\n'
+ || c == '\r'
+ || c == '\b';
+}
+
+} // namespace
static gboolean metadata_write_queue_idle_cb(gpointer data);
static gboolean metadata_legacy_write(FileData *fd);
return find_string_in_list_utf8nocase(list, string);
}
-#define KEYWORDS_SEPARATOR(c) ((c) == ',' || (c) == ';' || (c) == '\n' || (c) == '\r' || (c) == '\b')
-
GList *string_to_keywords_list(const gchar *text)
{
GList *list = nullptr;
const gchar *begin;
gint l = 0;
- while (KEYWORDS_SEPARATOR(*ptr)) ptr++;
+ while (is_keywords_separator(*ptr)) ptr++;
begin = ptr;
- while (*ptr != '\0' && !KEYWORDS_SEPARATOR(*ptr))
+ while (*ptr != '\0' && !is_keywords_separator(*ptr))
{
ptr++;
l++;
{
cairo_t *cr;
- if (pr->func_post_process && !(pr->post_process_slow && fast))
+ if (pr->func_post_process && (!pr->post_process_slow || !fast))
pr->func_post_process(pr, &it->pixbuf, x, y, w, h, pr->post_process_user_data);
cr = cairo_create(it->surface);
ud->resume_data = resume_data;
- if (EDITOR_ERRORS_BUT_SKIPPED(flags))
+ if (editor_errors_but_skipped(flags))
{
GString *msg = g_string_new(editor_get_error_str(flags));
GenericDialog *d;
auto fd = static_cast<FileData *>(list->data);
list = list->next;
- if (!EDITOR_ERRORS(flags)) /* files were successfully deleted, call the maint functions */
+ if (!editor_errors(flags)) /* files were successfully deleted, call the maint functions */
{
if (ud->with_sidecars)
file_data_sc_apply_ci(fd);
static gint file_util_perform_ci_dir_cb(gpointer, EditorFlags flags, GList *, gpointer data)
{
auto ud = static_cast<UtilityData *>(data);
- file_util_perform_ci_dir(ud, FALSE, !EDITOR_ERRORS_BUT_SKIPPED(flags));
+ file_util_perform_ci_dir(ud, FALSE, !editor_errors_but_skipped(flags));
return EDITOR_CB_CONTINUE; /* does not matter, there was just single directory */
}
}
}
- if (EDITOR_ERRORS(flags))
+ if (editor_errors(flags))
{
gchar *text = g_strdup_printf(_("%s\nUnable to start external command.\n"), editor_get_error_str(flags));
file_util_warning_dialog(ud->messages.fail, text, GQ_ICON_DIALOG_ERROR, nullptr);