|
45 | 45 | function imgui_control_item(imctx::Ptr, item::Knob) |
46 | 46 | label = item.label |
47 | 47 | value_p = Ref{Cfloat}(item.value) |
48 | | - v_min = minimum(item.range) |
49 | | - v_max = maximum(item.range) |
50 | | - fac = v_max |
51 | | - sz = 20 |
52 | | - thickness = 4 |
| 48 | + if item.range isa AbstractRange |
| 49 | + v_min, v_max = minimum(item.range), maximum(item.range) |
| 50 | + else |
| 51 | + v_min, v_max = item.range |
| 52 | + end |
| 53 | + num_segments = _get_item_props(item, :num_segments, 16) |
| 54 | + thickness = _get_item_props(item, :thickness, 4) |
53 | 55 |
|
54 | | - window_pos = CImGui.GetCursorScreenPos() |
| 56 | + frame = _get_item_props(item, :frame, (width=20,)) |
| 57 | + radio = frame.width |
55 | 58 |
|
56 | | - radio = sz |
| 59 | + fac = v_max |
| 60 | + window_pos = CImGui.GetCursorScreenPos() |
57 | 61 | center = ImVec2(window_pos.x + radio, window_pos.y + radio) |
58 | 62 |
|
59 | 63 | ANGLE_MIN = pi * 0.75 |
@@ -118,17 +122,15 @@ function imgui_control_item(imctx::Ptr, item::Knob) |
118 | 122 |
|
119 | 123 | if is_active |
120 | 124 | col32idx = CImGui.ImGuiCol_FrameBgActive |
| 125 | + elseif is_hovered |
| 126 | + col32idx = CImGui.ImGuiCol_FrameBgHovered |
121 | 127 | else |
122 | | - if is_hovered |
123 | | - col32idx = CImGui.ImGuiCol_FrameBgHovered |
124 | | - else |
125 | | - col32idx = CImGui.ImGuiCol_FrameBg |
126 | | - end |
| 128 | + col32idx = CImGui.ImGuiCol_FrameBg |
127 | 129 | end |
128 | 130 | col32 = CImGui.igGetColorU32(col32idx, 1) |
129 | 131 | col32line = CImGui.igGetColorU32(CImGui.ImGuiCol_SliderGrabActive, 1) |
130 | 132 | draw_list = CImGui.GetWindowDrawList() |
131 | | - CImGui.AddCircleFilled(draw_list, center, radio, col32, 16) |
| 133 | + CImGui.AddCircleFilled(draw_list, center, radio, col32, num_segments) |
132 | 134 | CImGui.AddLine(draw_list, center, ImVec2(x2, y2), col32line, thickness) |
133 | 135 | CImGui.SameLine() |
134 | 136 |
|
|
0 commit comments