summaryrefslogtreecommitdiffstats
path: root/twin-styles/glow/glowbutton.h
diff options
context:
space:
mode:
Diffstat (limited to 'twin-styles/glow/glowbutton.h')
-rw-r--r--twin-styles/glow/glowbutton.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/twin-styles/glow/glowbutton.h b/twin-styles/glow/glowbutton.h
new file mode 100644
index 00000000..d2e83beb
--- /dev/null
+++ b/twin-styles/glow/glowbutton.h
@@ -0,0 +1,129 @@
+/***************************************************************************
+ glowbutton.h - description
+ -------------------
+ begin : Thu Sep 14 2001
+ copyright : (C) 2001 by Henning Burchardt
+ email : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef GLOW_BUTTON_H
+#define GLOW_BUTTON_H
+
+#include <vector>
+#include <tqmap.h>
+#include <tqbutton.h>
+
+class TQPixmap;
+class TQBitmap;
+class TQTimer;
+class TQString;
+
+namespace Glow
+{
+
+class PixmapCache
+{
+public:
+ static const TQPixmap* find(const TQString& key);
+ static void insert(const TQString& key, const TQPixmap *pixmap);
+ static void erase(const TQString& key);
+ static void clear();
+private:
+ static TQMap<TQString, const TQPixmap*> m_pixmapMap;
+};
+
+
+//-----------------------------------------------------------------------------
+
+class GlowButton : public TQButton
+{
+ Q_OBJECT
+ TQ_OBJECT
+
+public:
+ GlowButton(TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns);
+ ~GlowButton();
+
+ void setTipText( const TQString& tip );
+
+ TQString getPixmapName() const;
+ ButtonState lastButton() const;
+
+ /** Sets the name of the pixmap in the pixmap cache.
+ * If no background pixmap is wanted use TQString() as name. */
+ void setPixmapName(const TQString& pixmapName);
+
+protected:
+ virtual void paintEvent( TQPaintEvent * );
+ virtual void enterEvent( TQEvent * );
+ virtual void leaveEvent( TQEvent * );
+ virtual void mousePressEvent( TQMouseEvent * );
+ virtual void mouseReleaseEvent( TQMouseEvent * );
+
+protected slots:
+ void slotTimeout();
+
+private:
+ enum TimertqStatus { Run, Stop };
+
+ int m_updateTime;
+ int _steps;
+ TQString m_pixmapName;
+
+ TQTimer *m_timer;
+ int m_pos;
+ TimertqStatus m_timertqStatus;
+
+ int m_realizeButtons;
+ ButtonState _last_button;
+};
+
+//-----------------------------------------------------------------------------
+
+class GlowButtonFactory
+{
+public:
+ GlowButtonFactory();
+
+ int getSteps();
+
+ /**
+ * Sets the number of pixmaps used to create the glow effect of the
+ * glow buttons.
+ */
+ void setSteps(int steps);
+
+ /**
+ * Creates a background pixmap for a glow button.
+ * The pixmap will consist of sub pixmaps of the size of the button which
+ * are placed one below the other. Each sub pixmap is copied on the button
+ * in succession to create the glow effect. The last sub pixmap is used
+ * when the button is pressed.
+ */
+ TQPixmap * createGlowButtonPixmap(
+ const TQImage & bg_image,
+// const TQImage & bg_alpha_image,
+ const TQImage & fg_image,
+ const TQImage & glow_image,
+ const TQColor & color,
+ const TQColor & glow_color);
+
+ GlowButton* createGlowButton(
+ TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns = Qt::LeftButton);
+
+private:
+ int _steps;
+};
+
+} // namespace
+
+#endif