diff --git a/autotest/data/themes/color/color.html b/autotest/data/themes/color/color.html --- a/autotest/data/themes/color/color.html +++ b/autotest/data/themes/color/color.html @@ -3,6 +3,7 @@ RGBA: {{ pal.button|colorCssRgba }} Color lighter: {{ pal.button|colorLighter:150|colorHexRgb }} Color darker: {{ pal.button|colorDarker:150|colorHexRgb }} +Color set alpha: {{ pal.button|colorSetAlpha:42|colorCssRgba }} Active: {{ pal.activeBase|colorHexRgb }} Inactive: {{ pal.inactiveBase|colorHexRgb }} diff --git a/autotest/data/themes/color/color_expected.html b/autotest/data/themes/color/color_expected.html --- a/autotest/data/themes/color/color_expected.html +++ b/autotest/data/themes/color/color_expected.html @@ -4,6 +4,7 @@ RGBA: rgba(255, 0, 0, 1) Color lighter: #ff7f7f Color darker: #aa0000 +Color set alpha: rgba(255, 0, 0, 0.164706) Active: #ff0000 Inactive: #00ff00 diff --git a/src/plugin/color.h b/src/plugin/color.h --- a/src/plugin/color.h +++ b/src/plugin/color.h @@ -82,6 +82,21 @@ QVariant doFilter(const QVariant &input, const QVariant &arg, bool autoescape) const override; }; +/** + * @name colorSetAlpha filter + * @brief Provides colorSetAlpha filter for setting a fixed alpha value on the given color. + * + * The syntax is: + * @code + * {{ myColor|colorSetAlpha: }} + * @endcode + */ +class ColorSetAlphaFilter : public Grantlee::Filter +{ +public: + QVariant doFilter(const QVariant &input, const QVariant &arg, bool autoescape) const override; +}; + /** * @name colorMix tag * @brief Provides {% colorMix %} tag for mixing two colors diff --git a/src/plugin/color.cpp b/src/plugin/color.cpp --- a/src/plugin/color.cpp +++ b/src/plugin/color.cpp @@ -101,6 +101,14 @@ return color.darker(factor); } +QVariant ColorSetAlphaFilter::doFilter(const QVariant& input, const QVariant& arg, bool autoescape) const +{ + Q_UNUSED(autoescape) + + auto color = inputToColor(input); + color.setAlpha(arg.toInt()); + return color; +} ColorMixTag::ColorMixTag(QObject *parent) : Grantlee::AbstractNodeFactory(parent) diff --git a/src/plugin/kdegrantleeplugin.cpp b/src/plugin/kdegrantleeplugin.cpp --- a/src/plugin/kdegrantleeplugin.cpp +++ b/src/plugin/kdegrantleeplugin.cpp @@ -55,5 +55,6 @@ filters.insert(QStringLiteral("colorCssRgba"), new ColorCssRgbaFilter()); filters.insert(QStringLiteral("colorLighter"), new ColorLighterFilter()); filters.insert(QStringLiteral("colorDarker"), new ColorDarkerFilter()); + filters.insert(QStringLiteral("colorSetAlpha"), new ColorSetAlphaFilter()); return filters; }