commit 988697aa9ae5867089dc37f1d56e88411f12a630
parent eeff3c5d208b6e078ab6f9d4b2c37b2a7635aa34
Author: Oli Larkin <olilarkin@googlemail.com>
Date: Wed, 3 May 2023 07:53:15 +0200
Improve rotated knob (#234)
Diffstat:
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp
@@ -70,17 +70,22 @@ public:
: IVKnobControl(bounds, paramIdx, label, style)
, IBitmapBase(bitmap)
{
+ mInnerPointerFrac = 0.6;
}
void DrawWidget(IGraphics& g) override
{
float widgetRadius = GetRadius();
const float cx = mWidgetBounds.MW(), cy = mWidgetBounds.MH();
- IRECT knobHandleBounds = mWidgetBounds.GetCentredInside((widgetRadius - mTrackToHandleDistance) * 2.f);
+ IRECT knobHandleBounds = mWidgetBounds.GetCentredInside((widgetRadius - mTrackToHandleDistance) * 2.5f);
const float angle = mAngle1 + (static_cast<float>(GetValue()) * (mAngle2 - mAngle1));
- g.FillEllipse(GetColor(mMouseIsOver ? kX3 : kX1), knobHandleBounds, &mBlend);
DrawIndicatorTrack(g, angle, cx, cy, widgetRadius);
- g.DrawRotatedBitmap(mBitmap, mRECT.MW(), mRECT.MH(), angle);
+ g.DrawBitmap(mBitmap, knobHandleBounds.GetTranslated(4, 3), 0, 0);
+ float data[2][2];
+ RadialPoints(angle, cx + 1, cy, mInnerPointerFrac * widgetRadius, mInnerPointerFrac * widgetRadius, 2, data);
+ g.PathCircle(data[1][0], data[1][1], 3);
+ g.PathFill(IPattern::CreateRadialGradient(data[1][0], data[1][1], 4.0f, {{GetColor(mMouseIsOver ? kX3 : kX1), 0.f}, {GetColor(mMouseIsOver ? kX3 : kX1), 0.8f}, {COLOR_TRANSPARENT, 1.0f}}), {}, &mBlend);
+ g.DrawCircle(COLOR_BLACK.WithOpacity(0.5f), data[1][0], data[1][1], 3, &mBlend);
}
};
diff --git a/NeuralAmpModeler/resources/img/SkinEHeritage_Knob.png b/NeuralAmpModeler/resources/img/SkinEHeritage_Knob.png
Binary files differ.
diff --git a/NeuralAmpModeler/resources/img/SkinEHeritage_Knob@2x.png b/NeuralAmpModeler/resources/img/SkinEHeritage_Knob@2x.png
Binary files differ.