/* vi: ts=8 sts=4 sw=4 * * This file is part of the KDE project, module tdecore. * Copyright (C) 2000 Geert Jansen * with minor additions and based on ideas from * Torsten Rahn * * This is free software; it comes under the GNU Library General * Public License, version 2. See the file "COPYING.LIB" for the * exact licensing terms. */ #ifndef __TDEIconEffect_h_Included__ #define __TDEIconEffect_h_Included__ #include #include #include #include #include "tdelibs_export.h" class TQWidget; class TDEIconEffectPrivate; /** * 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. * @see TDEIcon */ class TDECORE_EXPORT TDEIconEffect { public: /** * Create a new TDEIconEffect. */ TDEIconEffect(); ~TDEIconEffect(); /** * 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, ///< @since 3.4 LastEffect }; /** * Rereads configuration. */ void init(); /** * Tests whether an effect has been configured for the given icon group. * @param group the group to check, see TDEIcon::Group * @param state the state to check, see TDEIcon::States * @returns true if an effect is configured for the given @p group * in @p state, otherwise false. * @see TDEIcon::Group * TDEIcon::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 TQString. This * is useful for caching. * @param group the group, see TDEIcon::Group * @param state the state, see TDEIcon::States * @return the fingerprint of the given @p group+@p state */ TQString 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 TDEIcon::Group * @param state The icon's state, see TDEIcon::States * @return An image with the effect applied. */ TQImage apply(TQImage src, int group, int state) const; /** * Applies an effect to an image. * @param src The image. * @param effect The effect to apply, one of TDEIconEffect::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. */ // KDE4: make them references TQImage apply(TQImage src, int effect, float value, const TQColor rgb, bool trans) const; /** * @since 3.4 */ TQImage apply(TQImage src, int effect, float value, const TQColor rgb, const TQColor rgb2, bool trans) const; /** * Applies an effect to a pixmap. * @param src The pixmap. * @param group The group for the icon, see TDEIcon::Group * @param state The icon's state, see TDEIcon::States * @return A pixmap with the effect applied. */ TQPixmap apply(TQPixmap src, int group, int state) const; /** * Applies an effect to a pixmap. * @param src The pixmap. * @param effect The effect to apply, one of TDEIconEffect::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. */ TQPixmap apply(TQPixmap src, int effect, float value, const TQColor rgb, bool trans) const; /** * @since 3.4 */ TQPixmap apply(TQPixmap src, int effect, float value, const TQColor rgb, const TQColor rgb2, bool trans) const; /** * Returns an image twice as large, consisting of 2x2 pixels. * @param src the image. * @return the scaled image. */ TQImage doublePixels(TQImage src) const; /** * Provides visual feedback to show activation of an icon on a widget. * * Not strictly an 'icon effect', but in practice that's what it looks * like. * * This method does nothing if the global 'Visual feedback on activation' * option is not activated (See kcontrol/Peripherals/Mouse). * * @param widget The widget on which the effect should be painted * @param rect This rectangle defines the effect's borders */ static void visualActivate(TQWidget *widget, TQRect rect); static void visualActivate(TQWidget *widget, TQRect rect, TQPixmap *pixmap); /** * Tints an image gray. * * @param image The image * @param value Strength of the effect. 0 <= @p value <= 1 */ static void toGray(TQImage &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(TQImage &image, const TQColor &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 * @since 3.4 */ static void toMonochrome(TQImage &image, const TQColor &black, const TQColor &white, float value); /** * Desaturates an image. * * @param image The image * @param value Strength of the effect. 0 <= @p value <= 1 */ static void deSaturate(TQImage &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(TQImage &image, float value); /** * Renders an image semi-transparent. * * @param image The image */ static void semiTransparent(TQImage &image); /** * Renders a pixmap semi-transparent. * * @param pixmap The pixmap */ static void semiTransparent(TQPixmap &pixmap); /** * Overlays an image with an other image. * * @param src The image * @param overlay The image to overlay @p src with */ static void overlay(TQImage &src, TQImage &overlay); private: int mEffect[6][3]; float mValue[6][3]; TQColor mColor[6][3]; bool mTrans[6][3]; TDEIconEffectPrivate *d; }; #endif