summaryrefslogtreecommitdiffstats
path: root/src/komposetaskvisualizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/komposetaskvisualizer.h')
-rw-r--r--src/komposetaskvisualizer.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/komposetaskvisualizer.h b/src/komposetaskvisualizer.h
new file mode 100644
index 0000000..73419f4
--- /dev/null
+++ b/src/komposetaskvisualizer.h
@@ -0,0 +1,87 @@
+//
+// C++ Interface: %{MODULE}
+//
+// Description:
+//
+//
+// Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef KOMPOSETASKVISUALIZER_H
+#define KOMPOSETASKVISUALIZER_H
+
+#include <qobject.h>
+
+#include "komposetask.h"
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <Imlib2.h>
+
+#ifdef COMPOSITE
+#include <X11/Xatom.h>
+#include <X11/extensions/Xcomposite.h>
+#include <X11/extensions/Xdamage.h>
+#include <X11/extensions/Xrender.h>
+#endif
+
+enum ImageEffect { IEFFECT_NONE, IEFFECT_TITLE, IEFFECT_MINIMIZED, IEFFECT_MINIMIZED_AND_TITLE, IEFFECT_HIGHLIGHT };
+
+class QPixmap;
+class QSize;
+
+/**
+@author Hans Oischinger
+*/
+class KomposeTaskVisualizer : public QObject
+{
+ Q_OBJECT
+public:
+ KomposeTaskVisualizer(KomposeTask *parent, const char *name = 0);
+ ~KomposeTaskVisualizer();
+
+ void renderOnPixmap( QPixmap* pix, int effect );
+
+protected:
+ void applyEffect();
+
+protected slots:
+ void initXComposite();
+ void captureScreenshot_GrabWindow();
+ void updateXCompositeNamedPixmap();
+ void renderScaledScreenshot( QSize size );
+
+ void setScaledScreenshotDirty() { scaledScreenshotDirty = true; }
+ void clearCached();
+ void enablePasvScreenshots();
+
+public slots:
+ void slotTaskActivated();
+ void slotUpdateScreenshot();
+
+private:
+ KomposeTask *task;
+ QPixmap screenshot;
+ QPixmap scaledScreenshot;
+ bool scaledScreenshotDirty;
+ bool screenshotSuspended; // suspend pasv screenshots for this task
+ bool screenshotBlocked; // dis/enable pasv screenshots for this task
+
+ Imlib_Color_Modifier cmHighlight, cmMinimized;
+ int lasteffect; // the effect that has been applied to scaledScreenshot
+
+#ifdef COMPOSITE
+ Pixmap windowBackingPix;
+ bool validBackingPix;
+ Display *dpy;
+ XRenderPictFormat *format;
+ XRenderPictureAttributes pa;
+ bool hasAlpha;
+ Damage damage;
+ bool compositeInit; // true if composite&damage has been initialised
+#endif
+};
+
+#endif