[minor] Add lift/gamma/gain colour wheels - #515
Merged
Merged
Conversation
ColorWheel is a colour-grading trackball: the angle of the handle is a hue, its distance from the centre a strength, with a master slider underneath for luminance. LiftGammaGain draws the usual three side by side. Drags are relative, Shift is fine adjustment, and a double-click resets the ball or the slider on its own. ColorWheelValue.ToRgbOffset turns a wheel into a per-channel offset; applying it is left to the caller. The drag rules live in ColorWheelState, which has no ImGui dependency and is unit-tested on its own. Closes #511 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HEAQ6ynUNXdf4LpFq8o8MX
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HEAQ6ynUNXdf4LpFq8o8MX
Keeps both the Waveform section from main and the colour wheels section from this branch. The two extracted section classes pushed ImGuiWidgetsDemo over the CA1506 coupling limit, so the extracted sections now go through SectionDemos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DpVgY5FC9FuBkBuBAzXZJ6
Keeps both sides: the spectrum analyzer from main and the colour wheels here. SectionDemos now shows main's SignalDemos (waveform, spectrum) ahead of the colour wheels and diff view sections. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HEAQ6ynUNXdf4LpFq8o8MX
|
This was referenced Sep 29, 2026
This was referenced Sep 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Requested by Matt · project thread
Before:
ktsu.ImGui.Widgetshad no colour-grading control. A caller who wanted lift/gamma/gain wheels had to build them fromXYPadand draw lists.After:
ImGuiWidgets.ColorWheeldraws one grading wheel. It's a trackball ringed by the hues: the handle's angle is the hue, its distance from the centre is the strength, and a master luminance slider sits underneath.ImGuiWidgets.LiftGammaGaindraws the usual three side by side, each with a caption. The widgets edit aColorWheelValue(Hue, Strength, Master).ToRgbOffset()turns that into a per-channel offset, and applying the offset is left to the caller.Behaviour:
ktsu.Semantics.Color(Hsv→Srgb) and are converted at the ImGui seam throughImGui.Color.How: the drag rules and the geometry live in
ColorWheelState, which has no ImGui dependency and is unit-tested on its own (ColorWheelStateTests).ColorWheelTestsinImGui.Widgets.UITestsdrives the widgets headlessly. The widgets demo has a new "Color wheels" section that grades a grey ramp, and it has its own demo UI test. The README and CLAUDE.md widget lists are updated.Testing:
ImGui.Widgets.Tests: all 360 pass.ImGui.Widgets.UITests: all 397 pass.examples/ImGuiWidgetsDemo/ktsu.pngwas checked out as a Git LFS pointer. This change doesn't touch that file.Closes #511
🤖 Generated with Claude Code
https://claude.ai/code/session_01HEAQ6ynUNXdf4LpFq8o8MX
Generated by Claude Code