IOP Color EQ : Add interactive editing mode for color adjustments in image#21397
IOP Color EQ : Add interactive editing mode for color adjustments in image#21397Christian-Bouhon wants to merge 3 commits into
Conversation
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
|
Hmm, just did a first test. This does work only when used with "default scheduling profile" (this is very likely just one trigger for the issue), otherwise code after is never reached. So how is
|
|
Hmm, I think you're right. 😉 |
|
Hello,
Bottom line: non-default scheduling profiles are now safe, image zoom on scroll is never triggered, and the graph keeps its node-weighted behavior. Thanks again for taking the time, this is a much more solid implementation because of your feedback. |
|
I did some fresh testing, i think it works now as you intended! The way you change the nodes seems good to me too. Don't take me wrong but personally i don't think the strategy "if mouse is in main canvas use scrolling for CE changes" is a good one (knowing hat TE also does it like this ...) . One simple reason is, i miss zooming in/out using the scroll wheel a lot. I would prefer it to be bound to the picker. That would also mean,
|
You can press 'a' while zooming/panning to pass the events to the canvas. But you certainly know that. |
|
I dont have a strong opinion. I thought, if the picker is active, that could be checked and your modify-nodes from hue could step in. No? |
|
There is some irritating effect.
I think we need some marker as it would be very surprising if you hover over green but change reds. Another argument to go via the picker. The TE has a much easier job here going for blurred luminance. |
|
Hello, A new button has been added to allow direct adjustments to the image when it is activated. If this doesn’t work for you, I can always revert the changes with Friendly regards, |
92ce9de to
80dc653
Compare
|
Hello, You're right, it isn't very stable. I've reverted to the previous version, which is consistent with TE. 2026-06-27.13-34-52.mp4A little fresh air from the Luberon, 🍷 |
|
Please shar your test-image ... |
|
@Christian-Bouhon after commenting in #20626 about dt caching i thought again about your code here (and why i don't like the way of caching at all). It simply should not be necessary in the vast majority of use cases as a) all you do here only happens if the CE moduly is the active module and b) we already make sure the input data of the active module is available in the pipe cache for CPU and OpenCL code. So we just need some extra pixelpipe stuff to get access to preview pipe input (and possibly output) data of the active module. that might help in a lot of situations, here for your new feature but also for in-module histograms or stats... I would implement that. |
|
Hi, Best regards, |
|
Hello, I saved this as a draft because I’ve received feedback from users of my experimental fork saying that the module is no longer working as it did before. There are two possible causes, in order:
I’ll look into it and get back to you. Greetings from the Luberon, |
|
How does the preview pipe write the cache if processed on GPU? |
Hello, You're right, it wasn't writing it, that was the bug. With the latest commit, the module is working. |
|
Just being curious; is there a good reason to use data after processing the module? Changing the hue at a certain location results in slightly different access to nodes |
|
hello, |
|
Indeed, from reading the diffs i spotted it wrongly. |





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 degreesmouse_leave()– invalidates the hue when the mouse leaves the imagegui_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 withreturn 1_area_scrolled_callback()rewritten: dual mode (classic if no picker, Gaussian otherwise)_get_param_ptr()– direct access to parameters viaoffsetof(), used by the Gaussian loopHere is the forum discussion on pixls.us; I haven’t changed the user interface,
Greetings from the Luberon,
Christian