Blur and noise adjustment layers, Image Trim, Inner Glow (12.8c)

This commit is contained in:
雷电芽衣 committed 2026-09-28 08:35:59 -04:00
1 parent 7ae263de80
commit 31e2dd3864
60 files changed
+1673 -105

No files matched your search

+31 -6
View File
@@ -10,10 +10,11 @@
#include <optional>
// An adjustment layer's kind, in the Layer menu's order.
enum class AdjustmentKind { hsv, levels, curves, exposure, gradientMap, grain, invert, blackWhite, colorBalance };
inline constexpr std::array allAdjustmentKinds{AdjustmentKind::hsv, AdjustmentKind::levels, AdjustmentKind::curves,
AdjustmentKind::exposure, AdjustmentKind::gradientMap, AdjustmentKind::grain,
AdjustmentKind::invert, AdjustmentKind::blackWhite, AdjustmentKind::colorBalance};
enum class AdjustmentKind { hsv, levels, curves, exposure, gradientMap, grain, addNoise, gaussianBlur, motionBlur, invert, blackWhite, colorBalance };
inline constexpr std::array allAdjustmentKinds{AdjustmentKind::hsv, AdjustmentKind::levels, AdjustmentKind::curves,
AdjustmentKind::exposure, AdjustmentKind::gradientMap, AdjustmentKind::grain,
AdjustmentKind::addNoise, AdjustmentKind::gaussianBlur, AdjustmentKind::motionBlur,
AdjustmentKind::invert, AdjustmentKind::blackWhite, AdjustmentKind::colorBalance};
// Swift's rawValue: the new layer's name and the manifest's word.
QString rawValue(AdjustmentKind kind);
// The kind a manifest names, or none.
@@ -40,6 +41,14 @@ struct LayerAdjustment {
std::optional<GrainSettings> grainSettings = std::nullopt;
std::optional<BlackWhiteSettings> blackWhiteSettings = std::nullopt;
std::optional<ColorBalanceSettings> colorBalanceSettings = std::nullopt;
// Absent in projects from before blur and noise layers.
std::optional<double> blurRadius = std::nullopt;
std::optional<double> motionAngle = std::nullopt;
std::optional<double> motionDistance = std::nullopt;
std::optional<double> noiseAmount = std::nullopt;
std::optional<bool> noiseGaussian = std::nullopt;
std::optional<bool> noiseMonochromatic = std::nullopt;
std::optional<quint32> noiseSeed = std::nullopt;
HueSaturationSettings resolvedHSV() const;
// Swift's computed properties over the optional settings.
ExposureSettings exposure() const;
@@ -52,8 +61,24 @@ struct LayerAdjustment {
void setBlackWhite(const BlackWhiteSettings &value);
ColorBalanceSettings colorBalance() const;
void setColorBalance(const ColorBalanceSettings &value);
double gaussianRadius() const;
void setGaussianRadius(double value);
double resolvedMotionAngle() const;
void setResolvedMotionAngle(double value);
double resolvedMotionDistance() const;
void setResolvedMotionDistance(double value);
double resolvedNoiseAmount() const;
void setResolvedNoiseAmount(double value);
bool resolvedNoiseGaussian() const;
void setResolvedNoiseGaussian(bool value);
bool resolvedNoiseMonochromatic() const;
void setResolvedNoiseMonochromatic(bool value);
quint32 resolvedNoiseSeed() const;
void setResolvedNoiseSeed(quint32 value);
// Document pixels a partial redraw reads past its rect.
double samplingMargin() const;
bool isValid() const;
// `region`: the document `image` covers, whole pixels by default.
QImage apply(const QImage &image, std::optional<QRectF> region = std::nullopt) const;
// Region: the document shown; scale: image pixels a document pixel.
QImage apply(const QImage &image, std::optional<QRectF> region = std::nullopt, double scale = 1) const;
friend bool operator==(const LayerAdjustment &, const LayerAdjustment &) = default;
};