/* vi: ts=8 sts=4 sw=4 * * This file is part of the KDE project, module kdecore. * Copyright (C) 2000 Geert Jansen * Copyright (C) 2007 Daniel M. Duley * with minor additions and based on ideas from * Torsten Rahn * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License version 2 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef KICONEFFECT_H #define KICONEFFECT_H #include #include #include #include class KIconEffectPrivate; /** * Applies effects to icons. * * This class applies effects to icons depending on their state and * group. For example, it can be used to make all disabled icons * in a toolbar gray. * * \image html kiconeffect-apply.png "Various Effects applied to an image" * * @see KIcon */ class KDEUI_EXPORT KIconEffect { public: /** * Create a new KIconEffect. * You will most likely never have to use this to create a new KIconEffect * yourself, as you can use the KIconEffect provided by the global KIconLoader * (which itself is accessible by KIconLoader::global()) through its * iconEffect() function. */ KIconEffect(); ~KIconEffect(); /** * This is the enumeration of all possible icon effects. * Note that 'LastEffect' is no valid icon effect but only * used internally to check for invalid icon effects. * * @li NoEffect: Don't apply any icon effect * @li ToGray: Tints the icon gray * @li Colorize: Tints the icon with an other color * @li ToGamma: Change the gamma value of the icon * @li DeSaturate: Reduce the saturation of the icon * @li ToMonochrome: Produces a monochrome icon */ enum Effects { NoEffect, ToGray, Colorize, ToGamma, DeSaturate, ToMonochrome, LastEffect }; /** * Rereads configuration. */ void init(); /** * Tests whether an effect has been configured for the given icon group. * @param group the group to check, see KIconLoader::Group * @param state the state to check, see KIconLoader::States * @returns true if an effect is configured for the given @p group * in @p state, otherwise false. * @see KIconLoader::Group * KIconLoader::States */ bool hasEffect(int group, int state) const; /** * Returns a fingerprint for the effect by encoding * the given @p group and @p state into a QString. This * is useful for caching. * @param group the group, see KIconLoader::Group * @param state the state, see KIconLoader::States * @return the fingerprint of the given @p group+@p state */ QString fingerprint(int group, int state) const; /** * Applies an effect to an image. The effect to apply depends on the * @p group and @p state parameters, and is configured by the user. * @param src The image. * @param group The group for the icon, see KIconLoader::Group * @param state The icon's state, see KIconLoader::States * @return An image with the effect applied. */ QImage apply(const QImage &src, int group, int state) const; /** * Applies an effect to an image. * @param src The image. * @param effect The effect to apply, one of KIconEffect::Effects. * @param value Strength of the effect. 0 <= @p value <= 1. * @param rgb Color parameter for effects that need one. * @param trans Add Transparency if trans = true. * @return An image with the effect applied. */ static QImage apply(const QImage &src, int effect, float value, const QColor &rgb, bool trans); static QImage apply(const QImage &src, int effect, float value, const QColor &rgb, const QColor &rgb2, bool trans); /** * Applies an effect to a pixmap. * @param src The pixmap. * @param group The group for the icon, see KIconLoader::Group * @param state The icon's state, see KIconLoader::States * @return A pixmap with the effect applied. */ QPixmap apply(const QPixmap &src, int group, int state) const; /** * Applies an effect to a pixmap. * @param src The pixmap. * @param effect The effect to apply, one of KIconEffect::Effects. * @param value Strength of the effect. 0 <= @p value <= 1. * @param rgb Color parameter for effects that need one. * @param trans Add Transparency if trans = true. * @return A pixmap with the effect applied. */ static QPixmap apply(const QPixmap &src, int effect, float value, const QColor &rgb, bool trans); static QPixmap apply(const QPixmap &src, int effect, float value, const QColor &rgb, const QColor &rgb2, bool trans); /** * Tints an image gray. * * @param image The image * @param value Strength of the effect. 0 <= @p value <= 1 */ static void toGray(QImage &image, float value); /** * Colorizes an image with a specific color. * * @param image The image * @param col The color with which the @p image is tinted * @param value Strength of the effect. 0 <= @p value <= 1 */ static void colorize(QImage &image, const QColor &col, float value); /** * Produces a monochrome icon with a given foreground and background color * * @param image The image * @param white The color with which the white parts of @p image are painted * @param black The color with which the black parts of @p image are painted * @param value Strength of the effect. 0 <= @p value <= 1 */ static void toMonochrome(QImage &image, const QColor &black, const QColor &white, float value); /** * Desaturates an image. * * @param image The image * @param value Strength of the effect. 0 <= @p value <= 1 */ static void deSaturate(QImage &image, float value); /** * Changes the gamma value of an image. * * @param image The image * @param value Strength of the effect. 0 <= @p value <= 1 */ static void toGamma(QImage &image, float value); /** * Renders an image semi-transparent. * * @param image The image */ static void semiTransparent(QImage &image); /** * Renders a pixmap semi-transparent. * * @param pixmap The pixmap */ static void semiTransparent(QPixmap &pixmap); /** * Overlays an image with an other image. * * @param src The image * @param overlay The image to overlay @p src with */ static void overlay(QImage &src, QImage &overlay); /** * Blurs the alpha channel of the image and recolors it to the specified color. * The image must have transparent padding on all sides, or the shadow will be clipped. * * @param image The image * @param radius The radius of the effect * @param color The color with which the alpha parts of @p image are recolored */ static void shadowBlur(QImage &image, float radius, const QColor &color); private: KIconEffectPrivate* const d; }; #endif