Skip to content

IOP Color EQ : Add interactive editing mode for color adjustments in image#21397

Open
Christian-Bouhon wants to merge 1 commit into
darktable-org:masterfrom
Christian-Bouhon:colorequal
Open

IOP Color EQ : Add interactive editing mode for color adjustments in image#21397
Christian-Bouhon wants to merge 1 commit into
darktable-org:masterfrom
Christian-Bouhon:colorequal

Conversation

@Christian-Bouhon

Copy link
Copy Markdown

Hello,

Here’s an old idea that’s resurfaced in my mind: an adaptation of the color equalizer module inspired by the tone equalizer module.

I’ve implemented the ability to correct a color by selecting it directly on the photo, on the fly. Needless to say, the AI has been a big help.

New Features

  • mouse_moved() – reads the UCS hue from the preview pipe and converts it to GUI degrees
  • mouse_leave() – invalidates the hue when the mouse leaves the image
  • gui_post_expose() – draws a color circle at the cursor (black + RGB fill)
  • scrolled() – scroll wheel on the image → applies a Gaussian weighting (σ=35°) to the nodes of the active channel, locks zooming with return 1
  • _area_scrolled_callback() rewritten: dual mode (classic if no picker, Gaussian otherwise)
  • _get_param_ptr() – direct access to parameters via offsetof(), used by the Gaussian loop

Here is the forum discussion on pixls.us; I haven’t changed the user interface,

Greetings from the Luberon,
Christian

@Christian-Bouhon Christian-Bouhon changed the title Add interactive editing mode for hue adjustments in image IOP Color EQ : Add interactive editing mode for color adjustments in image Jun 22, 2026
It allows you to directly adjust the 8 nodes (saturation, hue, or brightness) directly from the image
New Features
- mouse_moved() – reads the UCS hue from the preview pipe and converts it to GUI degrees
- mouse_leave() – invalidates the hue when the mouse leaves the image
- gui_post_expose() – draws a color circle at the cursor (black + RGB fill)
- scrolled() – scroll wheel on the image → applies a Gaussian weighting (σ=35°) to the nodes of the active channel, locks zooming with `return 1`
- _area_scrolled_callback() rewritten: dual mode (classic if no picker, Gaussian otherwise)
- _get_param_ptr() – direct access to parameters via `offsetof()`, used by the Gaussian loop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant