本文整理汇总了C++中dt_conf_get_bool函数 的典型用法代码示例。如果您正苦于以下问题:C++ dt_conf_get_bool函数的具体用法?C++ dt_conf_get_bool怎么用?C++ dt_conf_get_bool使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dt_conf_get_bool函数 的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: _metadata_view_update_values
//.........这里部分代码省略.........
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_title], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.creator", NULL)) != NULL)
{
snprintf(value, sizeof(value), "%s", (char *)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_creator], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.rights", NULL)) != NULL)
{
snprintf(value, sizeof(value), "%s", (char *)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_rights], value);
/* geotagging */
/* latitude */
if(isnan(img->latitude))
{
_metadata_update_value(d->metadata[md_geotagging_lat], NODATA_STRING);
}
else
{
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *latitude = dt_util_latitude_str(img->latitude);
_metadata_update_value(d->metadata[md_geotagging_lat], latitude);
g_free(latitude);
}
else
{
gchar NS = img->latitude < 0 ? 'S' : 'N';
snprintf(value, sizeof(value), "%c %09.6f", NS, fabs(img->latitude));
_metadata_update_value(d->metadata[md_geotagging_lat], value);
}
}
/* longitude */
if(isnan(img->longitude))
{
_metadata_update_value(d->metadata[md_geotagging_lon], NODATA_STRING);
}
else
{
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *longitude = dt_util_longitude_str(img->longitude);
_metadata_update_value(d->metadata[md_geotagging_lon], longitude);
g_free(longitude);
}
else
{
gchar EW = img->longitude < 0 ? 'W' : 'E';
snprintf(value, sizeof(value), "%c %010.6f", EW, fabs(img->longitude));
_metadata_update_value(d->metadata[md_geotagging_lon], value);
}
}
开发者ID:CarVac, 项目名称:darktable, 代码行数:67, 代码来源:metadata_view.c
示例2: dt_imageio_export_with_flags
// internal function: to avoid exif blob reading + 8-bit byteorder flag + high-quality override
int dt_imageio_export_with_flags(
const uint32_t imgid,
const char *filename,
dt_imageio_module_format_t *format,
dt_imageio_module_data_t *format_params,
const int32_t ignore_exif,
const int32_t display_byteorder,
const gboolean high_quality,
const int32_t thumbnail_export,
const char *filter,
const gboolean copy_metadata,
dt_imageio_module_storage_t *storage,
dt_imageio_module_data_t *storage_params)
{
dt_develop_t dev;
dt_dev_init(&dev, 0);
dt_mipmap_buffer_t buf;
if(thumbnail_export && dt_conf_get_bool("plugins/lighttable/low_quality_thumbnails"))
dt_mipmap_cache_read_get(darktable.mipmap_cache, &buf, imgid, DT_MIPMAP_F, DT_MIPMAP_BLOCKING);
else
dt_mipmap_cache_read_get(darktable.mipmap_cache, &buf, imgid, DT_MIPMAP_FULL, DT_MIPMAP_BLOCKING);
dt_dev_load_image(&dev, imgid);
const dt_image_t *img = &dev.image_storage;
const int wd = img->width;
const int ht = img->height;
int res = 0;
dt_times_t start;
dt_get_times(&start);
dt_dev_pixelpipe_t pipe;
res = thumbnail_export ? dt_dev_pixelpipe_init_thumbnail(&pipe, wd, ht) : dt_dev_pixelpipe_init_export(&pipe, wd, ht, format->levels(format_params));
if(!res)
{
dt_control_log(_("failed to allocate memory for %s, please lower the threads used for export or buy more memory."), thumbnail_export ? C_("noun", "thumbnail export") : C_("noun", "export"));
dt_dev_cleanup(&dev);
dt_mipmap_cache_read_release(darktable.mipmap_cache, &buf);
return 1;
}
if(!buf.buf)
{
dt_control_log(_("image `%s' is not available!"), img->filename);
dt_mipmap_cache_read_release(darktable.mipmap_cache, &buf);
dt_dev_cleanup(&dev);
return 1;
}
// If a style is to be applied during export, add the iop params into the history
if (!thumbnail_export && format_params->style[0] != '\0')
{
GList *stls;
GList *modules = dev.iop;
dt_iop_module_t *m = NULL;
if ((stls=dt_styles_get_item_list(format_params->style, TRUE, -1)) == 0)
{
dt_control_log(_("cannot find the style '%s' to apply during export."), format_params->style);
dt_dev_cleanup(&dev);
dt_mipmap_cache_read_release(darktable.mipmap_cache, &buf);
return 1;
}
// Add each params
while (stls)
{
dt_style_item_t *s = (dt_style_item_t *) stls->data;
modules = dev.iop;
while (modules)
{
m = (dt_iop_module_t *)modules->data;
// since the name in the style is returned with a possible multi-name, just check the start of the name
if (strncmp(m->op, s->name, strlen(m->op)) == 0)
{
dt_dev_history_item_t *h = malloc(sizeof(dt_dev_history_item_t));
h->params = s->params;
h->blend_params = s->blendop_params;
h->enabled = s->enabled;
h->module = m;
h->multi_priority = 1;
g_strlcpy(h->multi_name, "", sizeof(h->multi_name));
if(m->legacy_params && (s->module_version != m->version()))
{
void *new_params = malloc(m->params_size);
m->legacy_params (m, h->params, s->module_version, new_params, labs(m->version()));
free (h->params);
h->params = new_params;
}
dev.history_end++;
dev.history = g_list_append(dev.history, h);
break;
}
//.........这里部分代码省略.........
开发者ID:PolarFox, 项目名称:darktable, 代码行数:101, 代码来源:imageio.c
示例3: _metadata_view_update_values
//.........这里部分代码省略.........
snprintf(value, sizeof(value), "%d", img->height);
_metadata_update_value(d->metadata[md_exif_height], value);
snprintf(value, sizeof(value), "%d", img->width);
_metadata_update_value(d->metadata[md_exif_width], value);
/* XMP */
GList *res;
if((res = dt_metadata_get(img->id, "Xmp.dc.title", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_title], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.creator", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_creator], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.rights", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_rights], value);
/* geotagging */
/* latitude */
if(isnan(img->latitude))
{
_metadata_update_value(d->metadata[md_geotagging_lat], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *latitude = osd_latitude_str(img->latitude);
_metadata_update_value(d->metadata[md_geotagging_lat], latitude);
g_free(latitude);
}
else
{
#endif
gchar NS = img->latitude<0?'S':'N';
snprintf(value, sizeof(value), "%c %09.6f", NS, fabs(img->latitude));
_metadata_update_value(d->metadata[md_geotagging_lat], value);
#ifdef HAVE_MAP
}
#endif
}
/* longitude */
if(isnan(img->longitude))
{
_metadata_update_value(d->metadata[md_geotagging_lon], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *longitude = osd_longitude_str(img->longitude);
_metadata_update_value(d->metadata[md_geotagging_lon], longitude);
g_free(longitude);
}
else
{
#endif
gchar EW = img->longitude<0?'W':'E';
snprintf(value, sizeof(value), "%c %010.6f", EW, fabs(img->longitude));
_metadata_update_value(d->metadata[md_geotagging_lon], value);
#ifdef HAVE_MAP
}
#endif
}
/* release img */
dt_image_cache_read_release(darktable.image_cache, img);
}
return;
/* reset */
fill_minuses:
for(int k=0; k<md_size; k++)
_metadata_update_value(d->metadata[k],NODATA_STRING);
}
开发者ID:Coshibu, 项目名称:darktable, 代码行数:101, 代码来源:metadata_view.c
示例4: dt_init
//.........这里部分代码省略.........
// send the images to the other instance via dbus
fprintf(stderr, "trying to open the images in the running instance\n");
GDBusConnection *connection = NULL;
for(int i = 1; i < argc; i++)
{
// make the filename absolute ...
if(argv[i] == NULL || *argv[i] == '\0') continue;
gchar *filename = dt_util_normalize_path(argv[i]);
if(filename == NULL) continue;
if(!connection) connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
// ... and send it to the running instance of darktable
image_loaded_elsewhere = g_dbus_connection_call_sync(connection, "org.darktable.service", "/darktable",
"org.darktable.service.Remote", "Open",
g_variant_new("(s)", filename), NULL,
G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL) != NULL;
g_free(filename);
}
if(connection) g_object_unref(connection);
#endif
if(!image_loaded_elsewhere) dt_database_show_error(darktable.db);
return 1;
}
// Initialize the signal system
darktable.signals = dt_control_signal_init();
// Make sure that the database and xmp files are in sync
// We need conf and db to be up and running for that which is the case here.
// FIXME: is this also useful in non-gui mode?
GList *changed_xmp_files = NULL;
if(init_gui && dt_conf_get_bool("run_crawler_on_start"))
{
changed_xmp_files = dt_control_crawler_run();
}
if(init_gui)
{
dt_control_init(darktable.control);
}
else
{
if(dbfilename_from_command && !strcmp(dbfilename_from_command, ":memory:"))
dt_gui_presets_init(); // init preset db schema.
darktable.control->running = 0;
darktable.control->accelerators = NULL;
dt_pthread_mutex_init(&darktable.control->run_mutex, NULL);
}
// initialize collection query
darktable.collection = dt_collection_new(NULL);
/* initialize selection */
darktable.selection = dt_selection_new();
/* capabilities set to NULL */
darktable.capabilities = NULL;
// Initialize the password storage engine
darktable.pwstorage = dt_pwstorage_new();
darktable.guides = dt_guides_init();
#ifdef HAVE_GRAPHICSMAGICK
开发者ID:supertobi, 项目名称:darktable, 代码行数:67, 代码来源:darktable.c
示例5: dt_imageio_export_with_flags
// internal function: to avoid exif blob reading + 8-bit byteorder flag + high-quality override
int dt_imageio_export_with_flags(const uint32_t imgid, const char *filename,
dt_imageio_module_format_t *format, dt_imageio_module_data_t *format_params,
const int32_t ignore_exif, const int32_t display_byteorder,
const gboolean high_quality, const gboolean upscale, const int32_t thumbnail_export,
const char *filter, const gboolean copy_metadata,
dt_colorspaces_color_profile_type_t icc_type, const gchar *icc_filename,
dt_iop_color_intent_t icc_intent,
dt_imageio_module_storage_t *storage,
dt_imageio_module_data_t *storage_params, int num, int total)
{
dt_develop_t dev;
dt_dev_init(&dev, 0);
dt_dev_load_image(&dev, imgid);
const int buf_is_downscaled
= (thumbnail_export && dt_conf_get_bool("plugins/lighttable/low_quality_thumbnails"));
dt_mipmap_buffer_t buf;
if(buf_is_downscaled)
dt_mipmap_cache_get(darktable.mipmap_cache, &buf, imgid, DT_MIPMAP_F, DT_MIPMAP_BLOCKING, 'r');
else
dt_mipmap_cache_get(darktable.mipmap_cache, &buf, imgid, DT_MIPMAP_FULL, DT_MIPMAP_BLOCKING, 'r');
const dt_image_t *img = &dev.image_storage;
if(!buf.buf || !buf.width || !buf.height)
{
fprintf(stderr, "allocation failed???\n");
dt_control_log(_("image `%s' is not available!"), img->filename);
goto error_early;
}
const int wd = img->width;
const int ht = img->height;
const float max_scale = upscale ? 100.0 : 1.0;
int res = 0;
dt_times_t start;
dt_get_times(&start);
dt_dev_pixelpipe_t pipe;
res = thumbnail_export ? dt_dev_pixelpipe_init_thumbnail(&pipe, wd, ht)
: dt_dev_pixelpipe_init_export(&pipe, wd, ht, format->levels(format_params));
if(!res)
{
dt_control_log(
_("failed to allocate memory for %s, please lower the threads used for export or buy more memory."),
thumbnail_export ? C_("noun", "thumbnail export") : C_("noun", "export"));
goto error;
}
// If a style is to be applied during export, add the iop params into the history
if(!thumbnail_export && format_params->style[0] != '\0')
{
GList *style_items = dt_styles_get_item_list(format_params->style, TRUE, -1);
if(!style_items)
{
dt_control_log(_("cannot find the style '%s' to apply during export."), format_params->style);
goto error;
}
// remove everything above history_end
GList *history = g_list_nth(dev.history, dev.history_end);
while(history)
{
GList *next = g_list_next(history);
dt_dev_history_item_t *hist = (dt_dev_history_item_t *)(history->data);
free(hist->params);
free(hist->blend_params);
free(history->data);
dev.history = g_list_delete_link(dev.history, history);
history = next;
}
// Add each params
for(GList *iter = style_items; iter; iter = g_list_next(iter))
{
dt_style_item_t *s = (dt_style_item_t *)iter->data;
for(GList *module = dev.iop; module; module = g_list_next(module))
{
dt_iop_module_t *m = (dt_iop_module_t *)module->data;
if(!strcmp(m->op, s->operation))
{
dt_dev_history_item_t *h = malloc(sizeof(dt_dev_history_item_t));
dt_iop_module_t *style_module = m;
if((format_params->style_append && !(m->flags() & IOP_FLAGS_ONE_INSTANCE)) || m->multi_priority != s->multi_priority)
{
// dt_dev_module_duplicate() doesn't work here, it's trying too hard to be clever
style_module = (dt_iop_module_t *)calloc(1, sizeof(dt_iop_module_t));
if(style_module && !dt_iop_load_module(style_module, m->so, m->dev))
{
style_module->instance = m->instance;
style_module->multi_priority = s->multi_priority;
snprintf(style_module->multi_name, sizeof(style_module->multi_name), "%s", s->name);
dev.iop = g_list_insert_sorted(dev.iop, style_module, sort_plugins);
}
//.........这里部分代码省略.........
开发者ID:CoreyChen922, 项目名称:darktable, 代码行数:101, 代码来源:imageio.c
示例6: views
uint32_t views(dt_lib_module_t *self)
{
uint32_t v = DT_VIEW_LIGHTTABLE | DT_VIEW_MAP | DT_VIEW_TETHERING;
if(dt_conf_get_bool("plugins/darkroom/tagging/visible")) v |= DT_VIEW_DARKROOM;
return v;
}
开发者ID:AdamMajer, 项目名称:darktable, 代码行数:6, 代码来源:tagging.c
示例7: commit_params
void commit_params (struct dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
{
dt_iop_colorout_params_t *p = (dt_iop_colorout_params_t *)p1;
dt_iop_colorout_data_t *d = (dt_iop_colorout_data_t *)piece->data;
gchar *overprofile = dt_conf_get_string("plugins/lighttable/export/iccprofile");
const int overintent = dt_conf_get_int("plugins/lighttable/export/iccintent");
const int high_quality_processing = dt_conf_get_bool("plugins/lighttable/export/force_lcms2");
gchar *outprofile=NULL;
int outintent = 0;
/* cleanup profiles */
if (d->output)
dt_colorspaces_cleanup_profile(d->output);
d->output = NULL;
if (d->softproof_enabled)
dt_colorspaces_cleanup_profile(d->softproof);
d->softproof = NULL;
d->softproof_enabled = p->softproof_enabled;
if(self->dev->gui_attached && self->gui_data != NULL)
{
dt_iop_colorout_gui_data_t *g = (dt_iop_colorout_gui_data_t *)self->gui_data;
g->softproof_enabled = p->softproof_enabled;
}
if (d->xform)
{
cmsDeleteTransform(d->xform);
d->xform = 0;
}
d->cmatrix[0] = NAN;
d->lut[0][0] = -1.0f;
d->lut[1][0] = -1.0f;
d->lut[2][0] = -1.0f;
piece->process_cl_ready = 1;
/* if we are exporting then check and set usage of override profile */
if (pipe->type == DT_DEV_PIXELPIPE_EXPORT)
{
if (overprofile && strcmp(overprofile, "image"))
snprintf(p->iccprofile, DT_IOP_COLOR_ICC_LEN, "%s", overprofile);
if (overintent >= 0)
p->intent = overintent;
outprofile = p->iccprofile;
outintent = p->intent;
}
else
{
/* we are not exporting, using display profile as output */
outprofile = p->displayprofile;
outintent = p->displayintent;
}
/*
* Setup transform flags
*/
uint32_t transformFlags = 0;
/* creating output profile */
d->output = _create_profile(outprofile);
/* creating softproof profile if softproof is enabled */
if (d->softproof_enabled && pipe->type == DT_DEV_PIXELPIPE_FULL)
{
d->softproof = _create_profile(p->softproofprofile);
/* TODO: the use of bpc should be userconfigurable either from module or preference pane */
/* softproof flag and black point compensation */
transformFlags |= cmsFLAGS_SOFTPROOFING|cmsFLAGS_NOCACHE|cmsFLAGS_BLACKPOINTCOMPENSATION;
if(d->softproof_enabled == DT_SOFTPROOF_GAMUTCHECK)
transformFlags |= cmsFLAGS_GAMUTCHECK;
}
/* get matrix from profile, if softproofing or high quality exporting always go xform codepath */
if (d->softproof_enabled || (pipe->type == DT_DEV_PIXELPIPE_EXPORT && high_quality_processing) ||
dt_colorspaces_get_matrix_from_output_profile (d->output, d->cmatrix, d->lut[0], d->lut[1], d->lut[2], LUT_SAMPLES))
{
d->cmatrix[0] = NAN;
piece->process_cl_ready = 0;
d->xform = cmsCreateProofingTransform(d->Lab,
TYPE_Lab_FLT,
d->output,
TYPE_RGB_FLT,
d->softproof,
outintent,
INTENT_RELATIVE_COLORIMETRIC,
transformFlags);
}
// user selected a non-supported output profile, check that:
if (!d->xform && isnan(d->cmatrix[0]))
{
dt_control_log(_("unsupported output profile has been replaced by sRGB!"));
if (d->output)
dt_colorspaces_cleanup_profile(d->output);
d->output = dt_colorspaces_create_srgb_profile();
if (d->softproof_enabled || dt_colorspaces_get_matrix_from_output_profile (d->output, d->cmatrix, d->lut[0], d->lut[1], d->lut[2], LUT_SAMPLES))
//.........这里部分代码省略.........
开发者ID:AntonSh, 项目名称:darktable, 代码行数:101, 代码来源:colorout.c
示例8: dt_image_import
uint32_t dt_image_import(const int32_t film_id, const char *filename, gboolean override_ignore_jpegs)
{
if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR))
return 0;
const char *cc = filename + strlen(filename);
for(; *cc!='.'&&cc>filename; cc--);
if(!strcmp(cc, ".dt")) return 0;
if(!strcmp(cc, ".dttags")) return 0;
if(!strcmp(cc, ".xmp")) return 0;
char *ext = g_ascii_strdown(cc+1, -1);
if(override_ignore_jpegs == FALSE && (!strcmp(ext, "jpg") ||
!strcmp(ext, "jpeg")) && dt_conf_get_bool("ui_last/import_ignore_jpegs"))
return 0;
int supported = 0;
char **extensions = g_strsplit(dt_supported_extensions, ",", 100);
for(char **i=extensions; *i!=NULL; i++)
if(!strcmp(ext, *i))
{
supported = 1;
break;
}
g_strfreev(extensions);
if(!supported)
{
g_free(ext);
return 0;
}
int rc;
uint32_t id = 0;
// select from images; if found => return
gchar *imgfname;
imgfname = g_path_get_basename((const gchar*)filename);
sqlite3_stmt *stmt;
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db),
"select id from images where film_id = ?1 and filename = ?2",
-1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, film_id);
DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, imgfname, strlen(imgfname), SQLITE_STATIC);
if(sqlite3_step(stmt) == SQLITE_ROW)
{
id = sqlite3_column_int(stmt, 0);
g_free(imgfname);
sqlite3_finalize(stmt);
g_free(ext);
const dt_image_t *cimg = dt_image_cache_read_get(darktable.image_cache, id);
dt_image_t *img = dt_image_cache_write_get(darktable.image_cache, cimg);
img->flags &= ~DT_IMAGE_REMOVE;
dt_image_cache_write_release(darktable.image_cache, img, DT_IMAGE_CACHE_RELAXED);
dt_image_cache_read_release(darktable.image_cache, img);
return id;
}
sqlite3_finalize(stmt);
// also need to set the no-legacy bit, to make sure we get the right presets (new ones)
uint32_t flags = dt_conf_get_int("ui_last/import_initial_rating");
if(flags > 5)
{
flags = 1;
dt_conf_set_int("ui_last/import_initial_rating", 1);
}
flags |= DT_IMAGE_NO_LEGACY_PRESETS;
// insert dummy image entry in database
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db),
"insert into images (id, film_id, filename, caption, description, "
"license, sha1sum, flags) values (null, ?1, ?2, '', '', '', '', ?3)",
-1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, film_id);
DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, imgfname, strlen(imgfname),
SQLITE_TRANSIENT);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 3, flags);
rc = sqlite3_step(stmt);
if (rc != SQLITE_DONE) fprintf(stderr, "sqlite3 error %d\n", rc);
sqlite3_finalize(stmt);
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db),
"select id from images where film_id = ?1 and filename = ?2",
-1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, film_id);
DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, imgfname, strlen(imgfname),
SQLITE_STATIC);
if(sqlite3_step(stmt) == SQLITE_ROW) id = sqlite3_column_int(stmt, 0);
sqlite3_finalize(stmt);
// Try to find out if this should be grouped already.
gchar *basename = g_strdup(imgfname);
gchar *cc2 = basename + strlen(basename);
for(; *cc2!='.'&&cc2>basename; cc2--);
*cc2='\0';
gchar *sql_pattern = g_strconcat(basename, ".%", NULL);
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "select group_id from images where film_id = ?1 and filename like ?2 and id != ?3", -1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, film_id);
DT_DEBUG_SQLITE3_BIND_TEXT(stmt, 2, sql_pattern, -1, SQLITE_TRANSIENT);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 3, id);
int group_id;
if(sqlite3_step(stmt) == SQLITE_ROW) group_id = sqlite3_column_int(stmt, 0);
else group_id = id;
sqlite3_finalize(stmt);
DT_DEBUG_SQLITE3_PREPARE_V2(dt_database_get(darktable.db), "update images set group_id = ?1 where id = ?2", -1, &stmt, NULL);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 1, group_id);
DT_DEBUG_SQLITE3_BIND_INT(stmt, 2, id);
//.........这里部分代码省略.........
开发者ID:jcsogo, 项目名称:darktable, 代码行数:101, 代码来源:image.c
示例9: dt_camera_import_job_run
int32_t dt_camera_import_job_run(dt_job_t *job)
{
dt_camera_import_t *t = (dt_camera_import_t *)job->param;
dt_control_log(_("starting to import images from camera"));
// Setup a new filmroll to import images to....
t->film=(dt_film_t*)g_malloc(sizeof(dt_film_t));
dt_film_init(t->film);
gchar* fixed_path = dt_util_fix_path(t->path);
g_free(t->path);
t->path = fixed_path;
dt_variables_expand( t->vp, t->path, FALSE );
sprintf(t->film->dirname,"%s",dt_variables_get_result(t->vp));
dt_pthread_mutex_lock(&t->film->images_mutex);
t->film->ref++;
dt_pthread_mutex_unlock(&t->film->images_mutex);
// Create recursive directories, abort if no access
if( g_mkdir_with_parents(t->film->dirname,0755) == -1 )
{
dt_control_log(_("failed to create import path `%s', import aborted."), t->film->dirname);
return 1;
}
// Import path is ok, lets actually create the filmroll in database..
if(dt_film_new(t->film,t->film->dirname) > 0)
{
int total = g_list_length( t->images );
char message[512]= {0};
sprintf(message, ngettext ("importing %d image from camera", "importing %d images from camera", total), total );
t->bgj = dt_control_backgroundjobs_create(darktable.control, 0, message);
// Switch to new filmroll
dt_film_open(t->film->id);
dt_ctl_switch_mode_to(DT_LIBRARY);
// register listener
dt_camctl_listener_t listener= {0};
listener.data=t;
listener.image_downloaded=_camera_image_downloaded;
listener.request_image_path=_camera_import_request_image_path;
listener.request_image_filename=_camera_import_request_image_filename;
// start download of images
dt_camctl_register_listener(darktable.camctl,&listener);
dt_camctl_import(darktable.camctl,t->camera,t->images,dt_conf_get_bool("plugins/capture/camera/import/delete_originals"));
dt_camctl_unregister_listener(darktable.camctl,&listener);
dt_control_backgroundjobs_destroy(darktable.control, t->bgj);
dt_variables_params_destroy(t->vp);
}
else
dt_control_log(_("failed to create filmroll for camera import, import aborted."));
dt_pthread_mutex_lock(&t->film->images_mutex);
t->film->ref--;
dt_pthread_mutex_unlock(&t->film->images_mutex);
return 0;
}
开发者ID:AntonSh, 项目名称:darktable, 代码行数:61, 代码来源:camera_jobs.c
示例10: dt_mipmap_cache_deallocate_dynamic
void dt_mipmap_cache_deallocate_dynamic(void *data, dt_cache_entry_t *entry)
{
dt_mipmap_cache_t *cache = (dt_mipmap_cache_t *)data;
const dt_mipmap_size_t mip = get_size(entry->key);
if(mip < DT_MIPMAP_F)
{
struct dt_mipmap_buffer_dsc *dsc = (struct dt_mipmap_buffer_dsc *)entry->data;
// don't write skulls:
if(dsc->width > 8 && dsc->height > 8)
{
if(dsc->flags & DT_MIPMAP_BUFFER_DSC_FLAG_INVALIDATE)
{
// also remove jpg backing (always try to do that, in case user just temporarily switched it off,
// to avoid inconsistencies.
// if(dt_conf_get_bool("cache_disk_backend"))
if(cache->cachedir[0])
{
char filename[PATH_MAX] = {0};
snprintf(filename, sizeof(filename), "%s.d/%d/%d.jpg", cache->cachedir, mip, get_imgid(entry->key));
g_unlink(filename);
}
}
else if(cache->cachedir[0] && dt_conf_get_bool("cache_disk_backend"))
{
// serialize to disk
char filename[PATH_MAX] = {0};
snprintf(filename, sizeof(filename), "%s.d/%d", cache->cachedir, mip);
int mkd = g_mkdir_with_parents(filename, 0750);
if(!mkd)
{
snprintf(filename, sizeof(filename), "%s.d/%d/%d.jpg", cache->cachedir, mip, get_imgid(entry->key));
// Don't write existing files as both performance and quality (lossy jpg) suffer
FILE *f = NULL;
if (!g_file_test(filename, G_FILE_TEST_EXISTS) && (f = fopen(filename, "wb")))
{
// first check the disk isn't full
struct statvfs vfsbuf;
if (!statvfs(filename, &vfsbuf))
{
int64_t free_mb = ((vfsbuf.f_frsize * vfsbuf.f_bavail) >> 20);
if (free_mb < 100)
{
fprintf(stderr, "Aborting image write as only %" PRId64 " MB free to write %s\n", free_mb, filename);
goto write_error;
}
}
else
{
fprintf(stderr, "Aborting image write since couldn't determine free space available to write %s\n", filename);
goto write_error;
}
const int cache_quality = dt_conf_get_int("database_cache_quality");
const uint8_t *exif = NULL;
int exif_len = 0;
if(dsc->color_space == DT_COLORSPACE_SRGB)
{
exif = dt_mipmap_cache_exif_data_srgb;
exif_len = dt_mipmap_cache_exif_data_srgb_length;
}
else if(dsc->color_space == DT_COLORSPACE_ADOBERGB)
{
exif = dt_mipmap_cache_exif_data_adobergb;
exif_len = dt_mipmap_cache_exif_data_adobergb_length;
}
if(dt_imageio_jpeg_write(filename, entry->data + sizeof(*dsc), dsc->width, dsc->height, MIN(100, MAX(10, cache_quality)), exif, exif_len))
{
write_error:
g_unlink(filename);
}
}
if(f) fclose(f);
}
开发者ID:pedrocr, 项目名称:darktable, 代码行数:73, 代码来源:mipmap_cache.c
示例11: dt_view_manager_switch
//.........这里部分代码省略.........
{
dt_lib_module_t *plugin = (dt_lib_module_t *)(plugins->data);
if( plugin->views() & nv->view(v) )
{
/* module should be in this view, lets initialize */
plugin->gui_init(plugin);
/* try get the module expander */
GtkWidget *w = NULL;
w = dt_lib_gui_get_expander(plugin);
if(plugin->connect_key_accels)
plugin->connect_key_accels(plugin);
dt_lib_connect_common_accels(plugin);
/* if we dont got an expander lets add the widget */
if (!w)
w = plugin->widget;
/* add module to it's container */
dt_ui_container_add_widget(darktable.gui->ui, plugin->container(), w);
}
/* lets get next plugin */
plugins = g_list_previous(plugins);
}
/* hide/show modules as last config */
plugins = g_list_last(darktable.lib->plugins);
while (plugins)
{
dt_lib_module_t *plugin = (dt_lib_module_t *)(plugins->data);
if(plugin->views() & nv->view(v))
{
/* set expanded if last mode was that */
char var[1024];
gboolean expanded = FALSE;
gboolean visible = dt_lib_is_visible(plugin);
if (plugin->expandable())
{
snprintf(var, 1024, "plugins/lighttable/%s/expanded", plugin->plugin_name);
expanded = dt_conf_get_bool(var);
/* show expander if visible */
if(visible)
{
gtk_widget_show_all(GTK_WIDGET(plugin->expander));
// gtk_widget_show_all(plugin->widget);
}
else
{
gtk_widget_hide(GTK_WIDGET(plugin->expander));
// gtk_widget_hide_all(plugin->widget);
}
dt_lib_gui_set_expanded(plugin, expanded);
}
else
{
/* show/hide plugin widget depending on expanded flag or if plugin
not is expandeable() */
if(visible)
gtk_widget_show_all(plugin->widget);
else
gtk_widget_hide_all(plugin->widget);
}
}
/* lets get next plugin */
plugins = g_list_previous(plugins);
}
/* enter view. crucially, do this before initing the plugins below,
as e.g. modulegroups requires the dr stuff to be inited. */
if(newv >= 0 && nv->enter) nv->enter(nv);
if(newv >= 0 && nv->connect_key_accels)
nv->connect_key_accels(nv);
/* raise view changed signal */
dt_control_signal_raise(darktable.signals, DT_SIGNAL_VIEWMANAGER_VIEW_CHANGED);
/* add endmarkers to left and right center containers */
GtkWidget *endmarker = gtk_drawing_area_new();
dt_ui_container_add_widget(darktable.gui->ui, DT_UI_CONTAINER_PANEL_LEFT_CENTER, endmarker);
g_signal_connect (G_OBJECT (endmarker), "expose-event",
G_CALLBACK (dt_control_expose_endmarker), 0);
gtk_widget_set_size_request(endmarker, -1, 50);
gtk_widget_show(endmarker);
endmarker = gtk_drawing_area_new();
dt_ui_container_add_widget(darktable.gui->ui, DT_UI_CONTAINER_PANEL_RIGHT_CENTER, endmarker);
g_signal_connect (G_OBJECT (endmarker), "expose-event",
G_CALLBACK (dt_control_expose_endmarker), (gpointer)1);
gtk_widget_set_size_request(endmarker, -1, 50);
gtk_widget_show(endmarker);
}
return error;
}
开发者ID:nagyistoce, 项目名称:radhermit-darktable, 代码行数:101, 代码来源:view.c
示例12: dt_mipmap_cache_allocate_dynamic
// callback for the cache backend to initialize payload pointers
void dt_mipmap_cache_allocate_dynamic(void *data, dt_cache_entry_t *entry)
{
dt_mipmap_cache_t *cache = (dt_mipmap_cache_t *)data;
// for full image buffers
struct dt_mipmap_buffer_dsc *dsc = entry->data;
const dt_mipmap_size_t mip = get_size(entry->key);
// alloc mere minimum for the header + broken image buffer:
if(!dsc)
{
if(mip <= DT_MIPMAP_F)
{
// these are fixed-size:
entry->data = dt_alloc_align(16, cache->buffer_size[mip]);
}
else
{
entry->data = dt_alloc_align(16, sizeof(*dsc) + sizeof(float) * 4 * 64);
}
// fprintf(stderr, "[mipmap cache] alloc dynamic for key %u %p\n", key, *buf);
if(!(entry->data))
{
fprintf(stderr, "[mipmap cache] memory allocation failed!\n");
exit(1);
}
dsc = entry->data;
if(mip <= DT_MIPMAP_F)
{
dsc->width = cache->max_width[mip];
dsc->height = cache->max_height[mip];
dsc->size = cache->buffer_size[mip];
dsc->color_space = DT_COLORSPACE_NONE;
}
else
{
dsc->width = 0;
dsc->height = 0;
dsc->color_space = DT_COLORSPACE_NONE;
dsc->size = sizeof(*dsc) + sizeof(float) * 4 * 64;
}
}
assert(dsc->size >= sizeof(*dsc));
int loaded_from_disk = 0;
if(mip < DT_MIPMAP_F)
{
if(cache->cachedir[0] && dt_conf_get_bool("cache_disk_backend"))
{
// try and load from disk, if successful set flag
char filename[PATH_MAX] = {0};
snprintf(filename, sizeof(filename), "%s.d/%d/%d.jpg", cache->cachedir, mip, get_imgid(entry->key));
FILE *f = fopen(filename, "rb");
if(f)
{
long len = 0;
uint8_t *blob = 0;
fseek(f, 0, SEEK_END);
len = ftell(f);
if(len <= 0) goto read_error; // coverity madness
blob = (uint8_t *)malloc(len);
if(!blob) goto read_error;
fseek(f, 0, SEEK_SET);
int rd = fread(blob, sizeof(uint8_t), len, f);
if(rd != len) goto read_error;
dt_colorspaces_color_profile_type_t color_space;
dt_imageio_jpeg_t jpg;
if(dt_imageio_jpeg_decompress_header(blob, len, &jpg)
|| (jpg.width > cache->max_width[mip] || jpg.height > cache->max_height[mip])
|| ((color_space = dt_imageio_jpeg_read_color_space(&jpg)) == DT_COLORSPACE_NONE) // pointless test to keep it in the if clause
|| dt_imageio_jpeg_decompress(&jpg, entry->data + sizeof(*dsc)))
{
fprintf(stderr, "[mipmap_cache] failed to decompress thumbnail for image %d from `%s'!\n", get_imgid(entry->key), filename);
goto read_error;
}
dsc->width = jpg.width;
dsc->height = jpg.height;
dsc->color_space = color_space;
loaded_from_disk = 1;
if(0)
{
read_error:
g_unlink(filename);
}
free(blob);
fclose(f);
}
}
}
if(!loaded_from_disk)
dsc->flags = DT_MIPMAP_BUFFER_DSC_FLAG_GENERATE;
else dsc->flags = 0;
// cost is just flat one for the buffer, as the buffers might have different sizes,
// to make sure quota is meaningful.
if(mip >= DT_MIPMAP_F) entry->cost = 1;
else entry->cost = cache->buffer_size[mip];
}
开发者ID:pedrocr, 项目名称:darktable, 代码行数:98, 代码来源:mipmap_cache.c
示例13: _metadata_view_update_values
//.........这里部分代码省略.........
snprintf(value, sizeof(value), "%d", img->height);
_metadata_update_value(d->metadata[md_exif_height], value);
snprintf(value, sizeof(value), "%d", img->width);
_metadata_update_value(d->metadata[md_exif_width], value);
/* XMP */
GList *res;
if((res = dt_metadata_get(img->id, "Xmp.dc.title", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_title], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.creator", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_creator], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.rights", NULL))!=NULL)
{
snprintf(value, sizeof(value), "%s", (char*)res->data);
_filter_non_printable(value, sizeof(value));
g_list_free_full(res, &g_free);
}
else
snprintf(value, sizeof(value), NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_rights], value);
/* geotagging */
/* latitude */
if(isnan(img->latitude))
{
_metadata_update_value(d->metadata[md_geotagging_lat], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *latitude = osd_latitude_str(img->latitude);
_metadata_update_value(d->metadata[md_geotagging_lat], latitude);
g_free(latitude);
}
else
{
#endif
gchar NS = img->latitude<0?'S':'N';
snprintf(value, sizeof(value), "%c %09.6f", NS, fabs(img->latitude));
_metadata_update_value(d->metadata[md_geotagging_lat], value);
#ifdef HAVE_MAP
}
#endif
}
/* longitude */
if(isnan(img->longitude))
{
_metadata_update_value(d->metadata[md_geotagging_lon], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *longitude = osd_longitude_str(img->longitude);
_metadata_update_value(d->metadata[md_geotagging_lon], longitude);
g_free(longitude);
}
else
{
#endif
gchar EW = img->longitude<0?'W':'E';
snprintf(value, sizeof(value), "%c %010.6f", EW, fabs(img->longitude));
_metadata_update_value(d->metadata[md_geotagging_lon], value);
#ifdef HAVE_MAP
}
#endif
}
/* release img */
dt_image_cache_read_release(darktable.image_cache, img);
}
return;
/* reset */
fill_minuses:
for(int k=0; k<md_size; k++)
_metadata_update_value(d->metadata[k],NODATA_STRING);
}
开发者ID:PolarFox, 项目名称:darktable, 代码行数:101, 代码来源:metadata_view.c
示例14: _metadata_view_update_values
//.........这里部分代码省略.........
_metadata_update_value(d->metadata[md_exif_width], value);
/* XMP */
GList *res;
if((res = dt_metadata_get(img->id, "Xmp.dc.title", NULL))!=NULL)
{
snprintf(value, vl, "%s", (char*)res->data);
_filter_non_printable(value, vl);
g_free(res->data);
g_list_free(res);
}
else
snprintf(value, vl, NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_title], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.creator", NULL))!=NULL)
{
snprintf(value, vl, "%s", (char*)res->data);
_filter_non_printable(value, vl);
g_free(res->data);
g_list_free(res);
}
else
snprintf(value, vl, NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_creator], value);
if((res = dt_metadata_get(img->id, "Xmp.dc.rights", NULL))!=NULL)
{
snprintf(value, vl, "%s", (char*)res->data);
_filter_non_printable(value, vl);
g_free(res->data);
g_list_free(res);
}
else
snprintf(value, vl, NODATA_STRING);
_metadata_update_value(d->metadata[md_xmp_rights], value);
/* geotagging */
/* latitude */
if(isnan(img->latitude))
{
_metadata_update_value(d->metadata[md_geotagging_lat], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *latitude = osd_latitude_str(img->latitude);
_metadata_update_value(d->metadata[md_geotagging_lat], latitude);
g_free(latitude);
}
else
{
#endif
gchar NS = img->latitude<0?'S':'N';
snprintf(value, vl, "%c %09.6f", NS, fabs(img->latitude));
_metadata_update_value(d->metadata[md_geotagging_lat], value);
#ifdef HAVE_MAP
}
#endif
}
/* longitude */
if(isnan(img->longitude))
{
_metadata_update_value(d->metadata[md_geotagging_lon], NODATA_STRING);
}
else
{
#ifdef HAVE_MAP
if(dt_conf_get_bool("plugins/lighttable/metadata_view/pretty_location"))
{
gchar *longitude = osd_longitude_str(img->longitude);
_metadata_update_value(d->metadata[md_geotagging_lon], longitude);
g_free(longitude);
}
else
{
#endif
gchar EW = img->longitude<0?'W':'E';
snprintf(value, vl, "%c %010.6f", EW, fabs(img->longitude));
_metadata_update_value(d->metadata[md_geotagging_lon], value);
#ifdef HAVE_MAP
}
#endif
}
/* release img */
dt_image_cache_read_release(darktable.image_cache, img);
}
return;
/* reset */
fill_minuses:
for(int k=0; k<md_size; k++)
_metadata_update_value(d->metadata[k],NODATA_STRING);
}
开发者ID:chubinou, 项目名称:darktable, 代码行数:101, 代码来源:metadata_view.c
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:19242| 2023-10-27
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:10002| 2022-11-06
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8332| 2022-11-06
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8702| 2022-11-06
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8648| 2022-11-06
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9674| 2022-11-06
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8633| 2022-11-06
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:8007| 2022-11-06
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8670| 2022-11-06
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7541| 2022-11-06
请发表评论