diff options
author | Mavridis Philippe <mavridisf@gmail.com> | 2021-03-30 13:58:33 +0300 |
---|---|---|
committer | Mavridis Philippe <mavridisf@gmail.com> | 2021-03-30 13:58:33 +0300 |
commit | 74b22318b8df6c1e9355b73a16bb755a5178b8d6 (patch) | |
tree | 538c9e62d606c6718fa64f8c8f2ad42e4aefc1ad /src/komposetaskvisualizer.h | |
download | kompose-74b22318b8df6c1e9355b73a16bb755a5178b8d6.tar.gz kompose-74b22318b8df6c1e9355b73a16bb755a5178b8d6.zip |
Initial commit (KDE3 version)
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'src/komposetaskvisualizer.h')
-rw-r--r-- | src/komposetaskvisualizer.h | 87 |
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 |