Camera Raw panel docked beside the canvas: scope, Light, Color, Effects, canvas tools (12.8b1)

This commit is contained in:
雷电芽衣 committed 2026-09-28 00:22:02 -04:00
1 parent 9d012d325a
commit 56af936a7b
26 files changed
+1794 -34

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
#pragma once
#include <QColor>
#include <QSlider>
#include <functional>
#include <optional>
#include <utility>
// Swift's CameraRawSliderTrack: a coloured track, or the system's.
struct CameraRawSliderTrack {
enum class Kind { plain, temperature, tint, chroma, hue, saturation, luminance };
Kind kind = Kind::plain;
// A family's centre, for hue, saturation and luminance.
double degrees = 0;
// Left and right colours; none keeps the system track.
std::optional<std::pair<QColor, QColor>> colors() const;
};
// Swift's CameraRawSlider: a double click on the knob resets.
class CameraRawSlider : public QSlider {
Q_OBJECT
public:
CameraRawSlider(double low, double high, CameraRawSliderTrack track, const QString &help, std::function<void(double)> change,
std::function<void()> reset, QWidget *parent = nullptr);
// Shows a value, unless a drag holds the knob.
void display(double value);
double shown() const;
bool isOnKnob(QPoint point) const;
protected:
void paintEvent(QPaintEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
private:
const double m_low;
const double m_high;
const CameraRawSliderTrack m_track;
const std::function<void(double)> m_change;
const std::function<void()> m_reset;
};