summaryrefslogtreecommitdiffstats
path: root/tdecore/kiconeffect.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdecore/kiconeffect.h')
-rw-r--r--tdecore/kiconeffect.h231
1 files changed, 231 insertions, 0 deletions
diff --git a/tdecore/kiconeffect.h b/tdecore/kiconeffect.h
new file mode 100644
index 000000000..a8e7b685e
--- /dev/null
+++ b/tdecore/kiconeffect.h
@@ -0,0 +1,231 @@
+/* vi: ts=8 sts=4 sw=4
+ *
+ * This file is part of the KDE project, module tdecore.
+ * 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 <tqimage.h>
+#include <tqpixmap.h>
+#include <tqcolor.h>
+#include <tqrect.h>
+#include "kdelibs_export.h"
+
+class TQWidget;
+
+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 TQString. 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
+ */
+ 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 KIcon::Group
+ * @param state The icon's state, see KIcon::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 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
+ 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 KIcon::Group
+ * @param state The icon's state, see KIcon::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 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.
+ */
+ 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];
+ KIconEffectPrivate *d;
+};
+
+#endif