You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/kdecore/kiconeffect.h

232 lines
7.1 KiB

/* vi: ts=8 sts=4 sw=4
*
* This file is part of the KDE project, module kdecore.
* Copyright (C) 2000 Geert Jansen <jansen@kde.org>
* with minor additions and based on ideas from
* Torsten Rahn <torsten@kde.org>
*
* 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 __KIconEffect_h_Included__
#define __KIconEffect_h_Included__
#include <qimage.h>
#include <qpixmap.h>
#include <qcolor.h>
#include <qrect.h>
#include "kdelibs_export.h"
class QWidget;
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.
* @see KIcon
*/
class KDECORE_EXPORT KIconEffect
{
public:
/**
* Create a new KIconEffect.
*/
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, ///< @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 KIcon::Group
* @param state the state to check, see KIcon::States
* @returns true if an effect is configured for the given @p group
* in @p state, otherwise false.
* @see KIcon::Group
* KIcon::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 KIcon::Group
* @param state the state, see KIcon::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 KIcon::Group
* @param state The icon's state, see KIcon::States
* @return An image with the effect applied.
*/
QImage apply(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.
*/
// KDE4: make them references
QImage apply(QImage src, int effect, float value, const QColor rgb, bool trans) const;
/**
* @since 3.4
*/
QImage apply(QImage src, int effect, float value, const QColor rgb, const QColor rgb2, bool trans) const;
/**
* Applies an effect to a pixmap.
* @param src The pixmap.
* @param group The group for the icon, see KIcon::Group
* @param state The icon's state, see KIcon::States
* @return A pixmap with the effect applied.
*/
QPixmap apply(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.
*/
QPixmap apply(QPixmap src, int effect, float value, const QColor rgb, bool trans) const;
/**
* @since 3.4
*/
QPixmap apply(QPixmap src, int effect, float value, const QColor rgb, const QColor rgb2, bool trans) const;
/**
* Returns an image twice as large, consisting of 2x2 pixels.
* @param src the image.
* @return the scaled image.
*/
QImage doublePixels(QImage 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(QWidget *widget, QRect rect);
static void visualActivate(QWidget *widget, QRect rect, QPixmap *pixmap);
/**
* 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
* @since 3.4
*/
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);
private:
int mEffect[6][3];
float mValue[6][3];
QColor mColor[6][3];
bool mTrans[6][3];
KIconEffectPrivate *d;
};
#endif