Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
Todo List
Global _blendop_blendif_channel_mask_view (GtkWidget *widget, dt_iop_module_t *module, dt_dev_pixelpipe_display_mask_t mode)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global _blendop_blendif_channel_mask_view_toggle (GtkWidget *widget, dt_iop_module_t *module, dt_dev_pixelpipe_display_mask_t mode)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global _blendop_blendif_enter (GtkWidget *widget, GdkEventCrossing *event, dt_iop_module_t *module)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global _blendop_blendif_leave_delayed (gpointer data)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global _blendop_blendif_showmask_clicked (GtkToggleButton *button, GdkEventButton *event, dt_iop_module_t *module)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global _brush_events_button_pressed (struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, int type, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)

: WTF does that do ?

: map that to context menu

: why do we allow selecting an invalid segment index ???

: handle that in context menu

Global _brush_events_button_released (struct dt_iop_module_t *module, float pzx, float pzy, int which, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
: handle this at the mask.c level
Global _brush_events_post_expose (cairo_t *cr, float zoom_scale, dt_masks_form_gui_t *gui, int index, int nb)
: WTF are we checking there ?
Global _brush_set_hint_message (const dt_masks_form_gui_t *const gui, const dt_masks_form_t *const form, const int opacity, char *const restrict msgbuf, const size_t msgbuf_len)
: check if it would be good idea to have same controls on creation and for selected brush
Global _changes_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip)
: workaround added in order to fix #9908, probably a Gtk issue, remove when fixed upstream
Global _color_picker_proxy_preview_pipe_callback (gpointer instance, gpointer user_data)
: It appears that DT_SIGNAL_DEVELOP_UI_PIPE_FINISHED –
Global _colorchecker_rebuild_patch_list (struct dt_iop_module_t *self)
: why not just use g->patch for everything?
Global _create_library_schema (dt_database_t *db)
: make sure to bump CURRENT_DATABASE_VERSION_LIBRARY and add a
Global _darkroom_pickers_draw (dt_view_t *self, cairo_t *cri, int32_t width, int32_t height, dt_dev_zoom_t zoom, int closeup, float zoom_x, float zoom_y, GSList *samples, gboolean is_primary_sample)

: if an area sample is selected, when selected should fill it with colorpicker color?

: to be really accurate, the colorpicker should render precisely over the nearest pixelpipe pixel, but this gets particularly tricky to do with iop pickers with transformations after them in the pipeline

: instead of going to all this effort to show how error-prone a preview pipe sample can be, just produce a better point sample

: use dt_dev_get_processed_size() for this?

Global _default_process_tiling_ptp (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out, const int in_bpp)

: check if there really can be differences between tiles and take appropriate action (calculate minimum, maximum, average, ...?)

: can we make this more efficient to minimize total overlap between tiles?

Global _default_process_tiling_roi (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out, const int in_bpp)

: can we make this more efficient to minimize total overlap between tiles?

: check if there really can be differences between tiles and take appropriate action (calculate minimum, maximum, average, ...?)

Global _deflicker_prepare_histogram (dt_iop_module_t *self, uint32_t **histogram, dt_dev_histogram_stats_t *histogram_stats)
: get those from rawprepare IOP somehow !!!
Global _develop_ui_pipe_finished_callback (gpointer instance, dt_iop_module_t *self)
: this doesn't seems the right place to update params and GUI ...
Global _develop_ui_pipe_finished_callback (gpointer instance, gpointer user_data)
: this doesn't seems the right place to update params and GUI ...
Global _drag_and_drop_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint target_type, guint time, gpointer data)
redraw the image group
Global _dt_full_locale_name (const char *locale)
: check a way to do above on windows
Global _ellipse_events_mouse_moved (struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
gcc7 false-positive
Global _ensure_rgb_profile (cmsHPROFILE profile)
: we still use prequantized primaries here, we will probably want to rework this
Global _event_dnd_begin (GtkWidget *widget, GdkDragContext *context, dt_lib_module_t *self)
: try to put the anchor point on left bottom corner as for images
Global _event_dnd_end (GtkWidget *widget, GdkDragContext *context, dt_lib_module_t *self)
(see gtk_tree_view_set_drag_dest_row above)
Global _event_dnd_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, const guint target_type, const guint time, gpointer user_data)
: should we add the host?
Global _event_dnd_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, dt_lib_module_t *self)
- no row highlihted... workartound with selection above
Global _exif_decode_exif_data (dt_image_t *img, Exiv2::ExifData &exifData)

: Should the UserComment go into the description? Or do we need an extra field for this?

: "Other" illuminant is currently unsupported

: This is still a workaround

Global _exif_decode_iptc_data (dt_image_t *img, Exiv2::IptcData &iptcData)
: according to http://www.exiv2.org/doc/classExiv2_1_1Metadatum.html#63c2b87249ba96679c29e01218169124
Global _exif_decode_xmp_data (dt_image_t *img, Exiv2::XmpData &xmpData, int version, bool exif_read)
: according to http://www.exiv2.org/doc/classExiv2_1_1Metadatum.html#63c2b87249ba96679c29e01218169124
Global _exif_xmp_read_data (Exiv2::XmpData &xmpData, const int32_t imgid)
: Add tags to IPTC namespace as well
Global _file_chooser_response (GtkDialog *dialog, gint response_id, dt_lib_import_t *d)
: print "pending" message on modal window
Global _file_filters (GtkWidget *file_chooser)
: use dt_supported_extensions list ?
Global _find_closest_handle (struct dt_iop_module_t *module, float pzx, float pzy, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
: why ???
Global _get_base_value (dt_variables_params_t *params, char **variable)
: currently we concatenate all the color labels with a ',' as a separator. Maybe it's better to
Global _gui_delete_callback (GtkButton *button, dt_iop_module_t *module)
: ?????
Global _gui_reset_callback (GtkButton *button, GdkEventButton *event, dt_iop_module_t *module)
: can we stop with all the easter-eggs key modifiers doing undocumented stuff all along ?
Global _half_to_float (uint16_t h)
: use intrinsics when possible
Global _handle_get_property (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer user_data)
: expose the conf? partly? completely?
Global _init_f (dt_mipmap_buffer_t *mipmap_buf, float *buf, uint32_t *width, uint32_t *height, float *iscale, const int32_t imgid)
: do we need that information in this buffer?
Global _iop_validate_params (dt_introspection_field_t *field, gpointer params, gboolean report)
: special case float2
Global _key_pressed (GtkWidget *textview, GdkEventKey *event, dt_lib_module_t *self)
: on Mac, remap Ctrl to Cmd key
Global _lib_geotagging_get_timezones (void)
: Solaris test
Global _lib_history_change_callback (gpointer instance, gpointer user_data)
: is that a memleak ?
Global _lib_history_change_text (dt_introspection_field_t *field, const char *d, gpointer params, gpointer oldpar)
: special case float2
Global _lib_location_parser_start_element (GMarkupParseContext *cxt, const char *element_name, const char **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)
: support holes in POLYGON and several forms in MULTIPOLYGON?
Global _magic_schwalm_offset (dt_develop_t *dev, dt_view_t *self, float *offx, float *offy)
: find out why this is necessary and fix it.
Global _main_do_event_help (GdkEvent *event, gpointer data)
: find a better way to tell the user that the hovered widget has a help link
Global _menuitem_preferences (GtkMenuItem *menuitem, dt_lib_module_t *self)
: NO!!!!!one!
Global _on_drag_begin (GtkWidget *widget, GdkDragContext *context, gpointer user_data)

: this centers the icon on the mouse – instead translate such that the label doesn't jump when mouse down?

: default highlight for the dnd is barely visible

Global _panel_handle_motion_callback (GtkWidget *w, GdkEventButton *e, gpointer user_data)
: can work with the event x,y to skip the gdk_window_get_device_position() call?
Global _pdf_stream_encoder_ASCIIHex (dt_pdf_t *pdf, const unsigned char *data, size_t len)
: maybe OpenMP-ify, it's quite fast already (the fwrite is the slowest part), but wouldn't hurt
Global _print_backup_progress (int remaining, int total)
if we have closing splashpage - this can be used to advance progressbar :)
Global _print_button_clicked (GtkWidget *widget, gpointer user_data)

: getting these from conf as w/prior code, but switch to getting them from ps

: in metadata_view.c, non-printables are filtered, should we do this here?

: getting this from conf as w/prior code, but switch to getting from ps

: ellipsize title/printer as the export completed message is ellipsized

Global _sample_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, const dt_colorpicker_sample_t *sample)
: workaround added in order to fix #9908, probably a Gtk issue, remove when fixed upstream
Global _snap_to_grid (dt_lib_print_settings_t *ps, float *x, float *y)
: should clamp values to page size here?
Global _transform_lab_to_rgb_matrix (const float *const image_in, float *const image_out, const int width, const int height, const dt_iop_order_iccprofile_info_t *const profile_info)
: maybe optimize that path like _transform_matrix_rgb
Global _transform_rgb_to_lab_matrix (const float *const restrict image_in, float *const restrict image_out, const int width, const int height, const dt_iop_order_iccprofile_info_t *const profile_info)
: maybe optimize that path like _transform_matrix_rgb
Global _tree_button_pressed (GtkWidget *treeview, GdkEventButton *event, dt_lib_module_t *self)
??? this SHOULD be named "delete group" but because of string freeze for 3.8
Global _update_darkroom_roi (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, int *x, int *y, int *wd, int *ht, float *scale, float *zoom_x, float *zoom_y)
: That belongs to darkroom GUI code if it's even needed
Global _update_slider (dt_lib_print_settings_t *ps)
: why doesn't this update when units are changed?
Global _variable_get_value (dt_variables_params_t *params, char **variable)

: is there a strstr_len that limits the length of pattern?

: write a dt_util_str_replace that can deal with pattern_length ^^

Global amaze_demosaic_RT (dt_dev_pixelpipe_iop_t *piece, const float *const in, float *out, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out, const int filters)
(darktable): we have the pixel colors interleaved so writing them in blocks using SSE2 is
Global apply_curve (const float *const in, float *const out, const int width, const int height, const int preserve_colors, const float mul, const float *const table, const float *const unbounded_coeffs, const dt_iop_order_iccprofile_info_t *const work_profile)
: Determine if we can get rid of the conditionals within this function in some way to improve performance.
Global bad_opencl_drivers []
: in the future, we may want to also take DRIVER_VERSION into account
Global button_pressed (dt_view_t *self, double x, double y, double pressure, int which, int type, uint32_t state)

: this work is only necessary for left-click in box mode or right-click of point live sample

: here and in mouse move use to dt_lib_colorpicker_set_{box_area,point} interface? – would require a different hack for figuring out base of the drag

: this is a naive implementation, nicer would be to cycle through overlapping samples then reset

: color_pixer_proxy should have an dt_iop_color_picker_clear_area() function for this

: this overlaps with work in dt_dev_get_pointer_zoom_pos() above

Global cleanup (dt_view_t *self)
: it would be nice to cleanly destroy the object, but we are doing this inside expose() so
Global color_picker_helper_bayer_parallel (const dt_iop_buffer_dsc_t *const dsc, const float *const pixel, const dt_iop_roi_t *const roi, const int *const box, dt_aligned_pixel_t picked_color, dt_aligned_pixel_t picked_color_min, dt_aligned_pixel_t picked_color_max)
: convert to use dt_alloc_perthread
Global color_picker_helper_xtrans_parallel (const dt_iop_buffer_dsc_t *const dsc, const float *const pixel, const dt_iop_roi_t *const roi, const int *const box, dt_aligned_pixel_t picked_color, dt_aligned_pixel_t picked_color_min, dt_aligned_pixel_t picked_color_max)
: convert to use dt_alloc_perthread
Global commit_params (struct dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)

: the use of bpc should be userconfigurable either from module or preference pane

: even though this is allowed/works, dt_ioppr_generate_profile_info still complains about these profiles

:

: this is utter shit and should be made into a GUI "mode".

Global create_notebook_page_process (dt_lut_t *self)
: it might make sense to limit this to a smaller range and/or use a slider
Global darktable_t::exiv2_threadsafe
: Is it now ?
Global distort_backtransform (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
: this is just a quick hack. we need a major revamp of this module!
Global distort_mask (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const float *const in, float *const out, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)

: Shall we keep LF_MODIFY_TCA in the modifiers?

: optimize with scanlines and linear steps between?

Global distort_transform (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
: this is just a quick hack. we need a major revamp of this module!
Global dn_weight (const float *c1, const float *c2, const float inv_sigma2)
: this should ideally depend on the image before noise stabilizing transforms!
Global dt_action_button_new (dt_lib_module_t *self, const gchar *label, gpointer callback, gpointer data, const gchar *tooltip, guint accel_key, GdkModifierType mods)
: figure out where to handle that
Global dt_bh_init (DtBauhausWidget *class)
: the common code from bauhaus_widget_init() could go here.
Global dt_box_max (float *const buf, const size_t height, const size_t width, const int ch, const int radius)
: 4ch version if needed
Global dt_box_min (float *const buf, const size_t height, const size_t width, const int ch, const int radius)
: 4ch version if needed
Global DT_COLOR_PICKER_AREA
: s/AREA/BOX/
Global dt_color_picker_helper (const dt_iop_buffer_dsc_t *dsc, const float *const pixel, const dt_iop_roi_t *roi, const int *const box, dt_aligned_pixel_t picked_color, dt_aligned_pixel_t picked_color_min, dt_aligned_pixel_t picked_color_max, const dt_iop_colorspace_type_t image_cst, const dt_iop_colorspace_type_t picker_cst, const dt_iop_order_iccprofile_info_t *const profile)
: alloc in caller
Global dt_colorlabels_to_string (int label)
: XMP uses Red, Green, ... while we use red, green, ... What should this function return?
Global dt_colorspaces_cygm_apply_coeffs_to_rgb (float *out, const float *in, int num, double RGB_to_CAM[4][3], double CAM_to_RGB[3][4], dt_aligned_pixel_t coeffs)
: CRITICAL: why is this function NOT used anywhere ???
Global dt_colorspaces_get_work_profile (const int32_t imgid)
: does this work when using JPEG thumbs and the image was never opened?
Global dt_colorspaces_init ()

: what about display?

: do want to filter out non-RGB profiles for cases besides histogram profile? colorin is OK with RGB or XYZ, print is OK with anything which LCMS likes, otherwise things are more choosey

Global dt_colorspaces_set_display_profile (const dt_colorspaces_color_profile_type_t profile_type)
: benchmark if the try is really needed when moving/resizing the window. Maybe we can just lock it
Global dt_conf_get_var (const char *name)
: why insert garbage?
Global dt_control_add_job_res (struct dt_control_t *s, dt_job_t *job, int32_t res)
: pthread cancel and restart in tough cases?
Global dt_control_cleanup (dt_control_t *s)
: optional?
Global dt_control_crawler_run ()

: decide if we want to remove the flag for images that lost

: allow for a few seconds difference?

: shall we report these?

Global dt_control_crawler_show_image_list (GList *images)
: do we need to free that later ?
Global dt_control_expose (void *voidptr)
: control_expose: only redraw the part not overlapped by temporary control panel show!
Global dt_control_running ()
: when shutdown, run_mutex is not inited anymore!
Global dt_control_t::dev_zoom_x
: move these to some darkroom struct
Global dt_control_t::proxy
: this is unused now, but deleting it makes free(darktable.control)
Global dt_dbus_init ()
Global dt_dev_add_history_item_ext (struct dt_develop_t *dev, struct dt_iop_module_t *module, gboolean enable, gboolean force_new_item, gboolean no_image, gboolean include_masks)
: this copies ALL drawn masks AND masks groups used by all modules to any module history using masks.
Global dt_dev_get_raster_mask (dt_dev_pixelpipe_t *pipe, const dt_iop_module_t *raster_mask_source, const int raster_mask_id, const dt_iop_module_t *target_module, gboolean *free_mask, int *error)
: refactor this mess to limit for/if nesting
Global dt_dev_hash (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
: this should have its own hash
Global dt_dev_init (dt_develop_t *dev, int32_t gui_attached)
: these are uint32_t, setting to -1 is confusing
Global dt_dev_invalidate_history_module (GList *list, struct dt_iop_module_t *module)
: why is that needed ?
Global dt_dev_pixelpipe_create_nodes (dt_dev_pixelpipe_t *pipe, struct dt_develop_t *dev)
: don't add deprecated modules that are not enabled are not added to pipeline.
Global dt_dev_pixelpipe_process_rec (dt_dev_pixelpipe_t *pipe, dt_develop_t *dev, void **output, void **cl_mem_output, dt_iop_buffer_dsc_t **out_format, const dt_iop_roi_t *roi_out, GList *modules, GList *pieces, int pos)
: on CPU path and GPU path with tiling, when 2 modules taking different color spaces are back to back,
Global dt_dev_read_history_ext (struct dt_develop_t *dev, const int32_t imgid, gboolean no_image)
: ask user for confirmation before saving updated history
Global dt_develop_blend_process (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in, const struct dt_iop_roi_t *const roi_out)
: should we skip raster masks?
Global dt_exif_read_blob (uint8_t **blob, const char *path, const int32_t imgid, const int sRGB, const int out_width, const int out_height, const int dng_mode)
: find a nice place for the missing metadata (tags, publisher, colorlabels?). Additionally find out
Global dt_exif_read_from_blob (dt_image_t *img, uint8_t *blob, const int size)
: can this blob also contain xmp and iptc data?
Global dt_exif_xmp_attach_export (const int32_t imgid, const char *filename, void *metadata)
if an element of the list contains a ", " it is not correctly exported
Global dt_exif_xmp_read (dt_image_t *img, const char *filename, const int history_only)
: make this configurable? or remove it altogether?
Global dt_film_open (const int32_t id)
: prefetch to cache using image_open
Global dt_focus_draw_clusters (cairo_t *cr, int width, int height, int32_t imgid, int buffer_width, int buffer_height, dt_focus_cluster_t *focus, int frows, int fcols, float full_zoom, float full_x, float full_y)

: get those from rawprepare IOP somehow !!!

: get those from rawprepare IOP somehow !!!

Global dt_gui_add_help_link (GtkWidget *widget, const char *link)
: should that go to another place than gtk.c?
Global dt_gui_gtk_init (dt_gui_gtk_t *gui)
: make that an user param ?
Global dt_guides_init ()
: make the number of lines configurable with a slider?
Global dt_image_cache_init (dt_image_cache_t *cache)
: actually an independent conf var?
Global dt_image_cache_write_release (dt_image_cache_t *cache, dt_image_t *img, dt_image_cache_write_mode_t mode)

: make this work in relaxed mode, too.

: protect XMP saving from concurrent accesses to DB history

Global dt_image_rename (const int32_t imgid, const int32_t filmid, const gchar *newname)

: several places where string truncation could occur unnoticed

: map that to a background job

Global dt_image_synch_xmp (const int selected)
: if fucking act_on bullshit was only targeting selected files,
Global dt_image_t
: add color labels and such as cacheable
Global dt_image_write_sidecar_file (const int32_t imgid)

: compute hash and don't write if not needed!

: [CRITICAL] should lock the image history at the app level

Global dt_imageio_j2k_read_profile (const char *filename, uint8_t **out)
: how to do it without fully-decoding the whole image?
Global dt_imageio_jpeg_compress (const uint8_t *in, uint8_t *out, const int width, const int height, const int quality)
: find out why this function is not used anymore. Where do we compress ???
Global dt_imageio_large_thumbnail (const char *filename, uint8_t **buffer, int32_t *th_width, int32_t *th_height, dt_colorspaces_color_profile_type_t *color_space, const int width, const int height)
: check if the embedded thumbs have a color space set! currently we assume that it's always sRGB
Global dt_imageio_open_exr (dt_image_t *img, const char *filename, dt_mipmap_buffer_t *buf)

: is this really needed?

open exr cleanup...

Global dt_imageio_open_rawspeed (dt_image_t *img, const char *filename, dt_mipmap_buffer_t *buf)
Global dt_imageio_xcf_gui_t
:
Global dt_init (int argc, char *argv[], const gboolean init_gui, const gboolean load_data, lua_State *L)

: Make a single call to unified GUI API initializing everything graphical at once.

: is this also useful in non-gui mode?

: move there into dt_database_t

Global dt_introspection_type_header_t::so
: use start of parent struct instead?
Global dt_iop_color_picker_is_visible (const dt_develop_t *dev)
: should this be here or perhaps lib.c?
Global dt_iop_copy_image_roi (float *const __restrict__ out, const float *const __restrict__ in, const size_t ch, const dt_iop_roi_t *const __restrict__ roi_in, const dt_iop_roi_t *const __restrict__ roi_out, const int zero_pad)

Global dt_iop_gui_blending_lose_focus (dt_iop_module_t *module)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global dt_iop_gui_update_blendif (dt_iop_module_t *module)
: there are more than 3 functions getting clever about how to setup module->request_mask_display depending on user input.
Global dt_iop_have_required_input_format (const int req_ch, struct dt_iop_module_t *const module, const int ch, const void *const restrict ivoid, void *const restrict ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
: pop up a toast message?
Global dt_iop_tonecurve_draw (GtkWidget *widget, cairo_t *crf, gpointer user_data)
: if darktable becomes HDR-10bits compatible (for output), this needs to be updated
Global dt_iop_useless_type_t
: some build system to support dt-less compilation and translation!
Global dt_key_modifier_state ()
double check correct way of doing this (merge conflict with Input System NG 20210319) GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default()); return gdk_keymap_get_modifier_state(keymap) & gdk_keymap_get_modifier_mask(keymap, GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK);
Global dt_lib_gui_get_expander (dt_lib_module_t *module)
separately define as darkroom widget shortcut/action, because not automatically registered via lib
Global dt_lib_init_module (void *m)

: look for active view. Do we know it at init time ?

: handle the other views

Global dt_lib_presets_popup_menu_show (dt_lib_module_info_t *minfo)
: this doesn't seem to work.
Global dt_lua_gtk_wrap_callback (gpointer data)
: propre stack unwinding
Global dt_masks_calculate_source_pos_value (dt_masks_form_gui_t *gui, const int mask_type, const float initial_xpos, const float initial_ypos, const float xpos, const float ypos, float *px, float *py, const int adding)
: replace individual cases with this generic one (will require passing 'form' through multiple layers...)
Global dt_masks_iop_value_changed_callback (GtkWidget *widget, struct dt_iop_module_t *module)
: these values should use binary enums
Global dt_masks_legacy_params_v1_to_v2 (dt_develop_t *dev, void *params)
: new ones have wrong rotation.
Global dt_masks_point_in_form_near (float x, float y, float *points, int points_start, int points_count, float distance, int *near)
: distance is only evaluated in x, not y...
Global dt_masks_reset_show_masks_icons (void)
: this doesn't look right. Why do we break the while look as soon as one module has no blend_data?
Global dt_metadata_set_import (const int32_t imgid, const char *key, const char *value)
: what does XMP writing preference has to do with anything here ???
Global dt_modifier_is (const GdkModifierType state, const GdkModifierType desired_modifier_mask)
: on Macs, remap the GDK_CONTROL_MASK bit in desired_modifier_mask to be the bit for the Cmd key
Global dt_modifiers_include (const GdkModifierType state, const GdkModifierType desired_modifier_mask)
: on Macs, remap the GDK_CONTROL_MASK bit in desired_modifier_mask to be the bit for the Cmd key
Global dt_noiseprofile_init (const char *alternative)
: shall we cache the content? for now this looks fast enough(TM)
Global dt_pdf_add_image (dt_pdf_t *pdf, const unsigned char *image, int width, int height, int bpp, int icc_id, float border)
: allow setting it from the outside
Global dt_pdf_finish (dt_pdf_t *pdf, dt_pdf_page_t **pages, int n_pages)
find something less necrophilic, maybe hash of image + history? or just of filename + date :)
Global dt_printing_setup_image (dt_images_box *imgs, const int idx, const int32_t imgid, const int32_t width, const int32_t height, const dt_alignment_t alignment)
: broken by design
Global dt_rgb_norm (const float *in, const int norm, const dt_iop_order_iccprofile_info_t *const work_profile)
: unpack work_profile members higher, at loop level, to enable more optimizations
Global dt_set_signal_handlers ()
: what about SIGABRT?
Global DT_SIGNAL_IMAGE_INFO_CHANGED
check if tag and metadata could be included there
Global dt_styles_apply_style_item (dt_develop_t *dev, dt_style_item_t *style_item, GList **modules_used)

: this is copied from dt_dev_read_history_ext(), maybe do a helper with this?

: not sure how to handle this here...

Global dt_styles_import_from_file (const char *style_path)
: ferror?
Global dt_tag_import (const char *filename)
not possible with our db
Global dtgtk_cairo_paint_jzazbz (cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
: change icon to "AzBz" or just "z"
Global dtgtk_cairo_paint_luv (cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
: change icon to "u*v*"
Global expose (dt_view_t *self, cairo_t *cri, int32_t width, int32_t height, int32_t pointerx, int32_t pointery)

: draw picker in gui_post_expose() hook in libs/colorpicker.c – catch would be that live samples would appear over guides, softproof/gamut text overlay would be hidden by picker

: these four dt_control_get_dev_*() calls each lock/unlock global_mutex – consolidate this work

Global extrapolate_lut (const float *const lut, const float v, const int lutsize)
: check if optimization is worthwhile!
Global filmrolls_updated (gpointer instance, gpointer self)
: We should update the count of images here
Global FILTERS_ARE_4BAYER (filters)
: kill this pls.
Global find_closest_corner (point_t *bb, float x, float y)
: only react when the distance < some threshold?
Global flags (dt_imageio_module_data_t *data)
(jinxos): support embedded ICC
Global gauss_reduce (const float *const input, float *const coarse, float *const detail, const size_t wd, const size_t ht)

: we'll need to pad up the image to get a good boundary condition!

: downsampling will not result in an energy conserving pattern (every 4 pixels one sample)

: neither will a mirror boundary condition (mirrors in subsampled values at random density)

: copy laplacian code from local laplacian filters, it's faster.

Global get_autoscale (dt_iop_module_t *self, dt_iop_lensfun_params_t *p, const lfCamera *camera)
: get those from rawprepare IOP somehow !!!
Global get_help_url (GtkWidget *widget)
: this doesn't work for all widgets. the reason being that the GtkEventBox we put libs/iops into catches events.
Global get_params (dt_imageio_module_format_t *self)
: Move to legacy eventually
Global get_params (dt_lib_module_t *self, int *size)

: get this stuff from gui and not from conf, so it will be sanity-checked (you can never delete an

: also the web preset has to be applied twice to be known as preset! (other dimension magic going on

Global get_shade_from_luminance (cairo_t *cr, const float luminance, const float alpha)
: fetch screen gamma from ICC display profile
Global gui_cleanup (dt_lib_module_t *self)
: Make sure we are cleaning up all allocations
Global gui_init (dt_imageio_module_format_t *self)
Global gui_init (struct dt_iop_module_t *self)
: that tooltip goes in the way of the numbers when you hover a node to get a reading
Global gui_init (dt_imageio_module_format_t *self)

: some quality/compression stuff in case "off" is selected

: options for "off"

Global gui_init (dt_view_t *self)
can't use DT_BAUHAUS_COMBOBOX_NEW_FULL because of (unnecessary?) translation context
Global gui_init (dt_imageio_module_format_t *self)
: add more options: subsample dreggn
Global gui_init (struct dt_iop_module_t *self)
: that tooltip goes in the way of the numbers when you hover a node to get a reading
Global gui_init (dt_imageio_module_format_t *self)
: Move to legacy eventually
Global gui_init (dt_lib_module_t *self)

: set digits/increments on all of these by calling _unit_changed() later?

: add labels to x/y/width/height as otherwise are obscure – and there is the horizontal space to do this

Global gui_init (dt_imageio_module_format_t *self)
: some quality/compression stuff?
Global gui_post_expose (struct dt_iop_module_t *self, cairo_t *cr, int32_t width, int32_t height, int32_t pointerx, int32_t pointery)
: For portrait images the overlay is a bit off. The coordinates in mouse_moved seem to be ok though.
Global gui_post_expose (struct dt_lib_module_t *self, cairo_t *cr, int32_t width, int32_t height, int32_t pointerx, int32_t pointery)
: here and elsewhere eliminate hardcoded RGB values – use CSS
Global gui_update (dt_iop_module_t *self)
check why needed
Global gui_update (struct dt_iop_module_t *self)
by hand
Global histogram_helper_cs_Lab_LCh (const dt_dev_histogram_collection_params_t *const histogram_params, const void *pixel, uint32_t *histogram, int j, const dt_iop_order_iccprofile_info_t *const profile_info)
: process aligned pixels with SSE
Global icc_intents ()
: Can this be automated to keep in sync with colorspaces.h?
Global icc_types ()
: Can this be automated to keep in sync with colorspaces.h?
Global init_presets (dt_lib_module_t *self)
: store presets in db:
Global initialize_store_wrapper (struct dt_imageio_module_storage_t *self, dt_imageio_module_data_t *data, dt_imageio_module_format_t **format, dt_imageio_module_data_t **fdata, GList **images, const gboolean high_quality)
: return 0 on success and 1 on error!
Global kmeans (const float *col, const dt_iop_roi_t *const roi, const int n, float2 *mean_out, float2 *var_out)
: check params here:
Global legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version)
: the calling logic needs to be improved to call upgrades from consecutive version in sequence.
Global lerp_lut (const float *const lut, const float v)

: check if optimization is worthwhile!

: check if optimization is worthwhile!

Global levels (dt_imageio_module_data_t *p)
: adapt as soon as this module supports various bitdepths
Global ll_pad_input (const float *const input, const int wd, const int ht, const int max_supp, int *wd2, int *ht2, local_laplacian_boundary_t *b)

: linear interpolation?

: linear interpolation?

: linear interpolation?

: linear interpolation?

Global load_profile_from_dir (const char *subdir)
: add support for grayscale profiles, then remove _ensure_rgb_profile() from here
Global load_xmp_callback (GtkAccelGroup *group, GObject *acceleratable, guint keyval, GdkModifierType mods, gpointer user_data)
: only when needed, check imgid
Class Lock
: check again once we rely on 0.27
Global main (int argc, char *arg[])

: test if file with replaced ext exists

: add a callback to set the bpp without going through the config

: have a parameter in command line to get the export presets

Global main_csv (dt_lut_t *self, int argc, char *argv[])
: add command line options to control what modules to include
Global mat3SSEmul (dt_colormatrix_t dest, const dt_colormatrix_t m1, const dt_colormatrix_t m2)
: see if that refactors with the previous
Global match_color_to_background (cairo_t *cr, const float exposure, const float alpha)
: put that as a preference in anselrc
Global mime (dt_imageio_module_data_t *data)
: revisit this when IANA makes it official.
Global modify_roi_in (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_out, dt_iop_roi_t *roi_in)

: viewport, but changing it to 0 breaks all of the tiling_callback functions with a division by zero

: clamping to 1 leads to a one-pixel visual glitch if the right/bottom border completely fills the

Global mouse_moved (struct dt_iop_module_t *self, double x, double y, double pressure, int which)

: When going over the 1.0 boundary from narrow to wide (>1.0 -> <=1.0) the width slightly

: When going over the 1.0 boundary from wide to narrow (>1.0 -> <=1.0) the height slightly

s further down.

Global name ()
: handle all the branching uniformingly
Global new_color_image (int width, int height, int ch)
: the code consuming color_image doesn't check if we actually allocated the buffer
Global new_gray_image (int width, int height)
: the code consuming gray_image doesn't check if we actually allocated the buffer
Global open_doc_callback (GtkAccelGroup *group, GObject *acceleratable, guint keyval, GdkModifierType mods, gpointer user_data)
: use translated URL when doc gets translated
Global open_donate_callback (GtkAccelGroup *group, GObject *acceleratable, guint keyval, GdkModifierType mods, gpointer user_data)
: use translated URL when doc gets translated
Global post_history_commit (dt_iop_module_t *self)
: share this code with gui_update()
Global process (struct dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
: this returns nan!!
Global process (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
: optimize with scanlines and linear steps between?
Global process (struct dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)

: fixed alloc for data piece at capped resolution?

: optimize with scanlines and linear steps between?

: it could be wise to make this a NOP when picking colors. not sure about that though.

Global process (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
: optimize with scanlines and linear steps between?
Global process_data (dt_lut_t *self, double *target_L, double *target_a, double *target_b, double *colorchecker_Lab, int N, int sparsity)
: is the rank interesting, too?
Global process_lut (struct dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)

comments in apply_curve for more potential performance improvements

, determine what possible data formats and channel

Global rcd_demosaic (dt_dev_pixelpipe_iop_t *piece, float *const restrict out, const float *const restrict in, dt_iop_roi_t *const roi_out, const dt_iop_roi_t *const roi_in, const uint32_t filters)

: CRITICAL: need to handle the case where we couldn't alloc the memory,

: figure out what part of rgb is being accessed without initialization on partial tiles

Global read_history_v2 (Exiv2::XmpData &xmpData, const char *filename)
: support human readable params via introspection with something like this:
Global read_masks (Exiv2::XmpData &xmpData, const char *filename, const int version)
: turn that into something like Xmp.darktable.history!
Global read_masks_v3 (Exiv2::XmpData &xmpData, const char *filename, const int version)
: support human readable params via introspection with something like this:
Global reload_defaults (dt_iop_module_t *module)
: fetch actual exposure in module, don't assume 1.
Global reload_defaults (dt_iop_module_t *self)
: does not work.
Global reload_defaults (dt_iop_module_t *module)
: update the gui when we add/remove the eprofile or ematrix
Global reload_defaults (dt_iop_module_t *self)
: does not work.
Global rt_develop_ui_pipe_finished_callback (gpointer instance, gpointer user_data)
: this doesn't seems the right place to update params and GUI ...
Global rt_process_forms (float *layer, dwt_params_t *const wt_p, const int scale1)
: we get this error when user go back in history, so forms are the same but the array has changed
Global saturation_gui_to_internal (float saturation_percent)
: there is a flaw in conversion of saturation from gui value to
Global scrolled (dt_view_t *self, double x, double y, int up, int state)
: use invalidate_top in the future
Global set_params (dt_imageio_module_storage_t *self, const void *params, const int size)
: store name/hash in kwallet/etc module and get encrypted stuff from there!
Global style_item_gc (lua_State *L)
: Can't we use dt_style_item_free() instead? Or may the pointer itself not be freed?
Global temp2mul (dt_iop_module_t *self, double TempK, double tint, double mul[4])
: This is baaad!
Global temperature_tint_to_XYZ (double TempK, double tint)
: This is baaad!
Global temperature_to_XYZ (double TempK)
: temperature and tint cannot be disjoined! (here it assumes no tint)
Global test_filmic_desaturate_v1 (void **state)
: take 100%
Global test_filmic_spline (void **state)
: write tests for the method test_filmic_spline
Global test_get_pixel_norm (void **state)

s below

: find out how to mock inline functions!

: find out how to mock inline functions!

Global tiling_callback (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_in, const dt_iop_roi_t *roi_out, struct dt_develop_tiling_t *tiling)

the above are worst case values, we might iterate through the dt_iop_retouch_form_data_t to get

: check if that's sufficiently large

Global tree_row_activated_presets (GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data)
: remember which sections were collapsed/expanded and where the view was scrolled to and restore that
Global view_popup_menu_onRemove (GtkWidget *menuitem, gpointer userdata)
:
Global wavelets_process (const float *const restrict in, float *const restrict reconstructed, const float *const restrict clipping_mask, const size_t width, const size_t height, const int scales, float *const restrict HF, float *const restrict LF_odd, float *const restrict LF_even, const diffuse_reconstruct_variant_t variant, const float noise_level, const int salt, const float first_order_factor)
: alloc in caller
Global wavelets_process (const float *const restrict in, float *const restrict reconstructed, const uint8_t *const restrict mask, const size_t width, const size_t height, const dt_iop_diffuse_data_t *const data, const float final_radius, const float zoom, const int scales, const int has_mask, float *const restrict HF[10], float *const restrict LF_odd, float *const restrict LF_even)
: alloc in caller
Global write_image (dt_imageio_module_data_t *data, const char *filename, const void *in, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
Global write_image (dt_imageio_module_data_t *webp, const char *filename, const void *in_tmp, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
(jinxos): these values should be adjusted as needed and ideally determined at runtime.
Global write_image (dt_imageio_module_data_t *data, const char *filename, const void *in, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)

: escape ')' and maybe also '('

Global write_image (dt_imageio_module_data_t *data, const char *filename, const void *ivoid, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
: this needs to be serialized, together with the exif data
Global write_image (lua_State *L)
: expose icc overwrites to the user!
Global write_image (dt_imageio_module_data_t *j2k_tmp, const char *filename, const void *in_tmp, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
: allow other bitdepths!
Global write_image (struct dt_imageio_module_data_t *data, const char *filename, const void *in, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
: workaround; remove when exiv2 implements AVIF write support and update flags()
Global write_image (dt_imageio_module_data_t *data, const char *filename, const void *in, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
: we can't rely on darktable to avoid file overwriting – it doesn't know the filename (extension).
Global write_image (dt_imageio_module_data_t *webp, const char *filename, const void *in_tmp, dt_colorspaces_color_profile_type_t over_type, const char *over_filename, void *exif, int exif_len, int32_t imgid, int num, int total, struct dt_dev_pixelpipe_t *pipe, const gboolean export_masks)
(jinxos): expose more config options in the UI
Global write_image (lua_State *L)
: expose these to the user!
Global xtrans_fdc_interpolate (struct dt_iop_module_t *self, float *out, const float *const in, const dt_iop_roi_t *const roi_out, const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6])
: these constants come from integer math constants in
Global xtrans_markesteijn_interpolate (float *out, const float *const in, const dt_iop_roi_t *const roi_out, const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6], const int passes)
: these constants come from integer math constants in
Global XYZ_to_temperature (cmsCIEXYZ XYZ, float *TempK, float *tint)
: Fix this to move orthogonally to planckian locus