diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kdeui/ksharedpixmap.h | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdeui/ksharedpixmap.h')
-rw-r--r-- | kdeui/ksharedpixmap.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/kdeui/ksharedpixmap.h b/kdeui/ksharedpixmap.h new file mode 100644 index 000000000..49e5da667 --- /dev/null +++ b/kdeui/ksharedpixmap.h @@ -0,0 +1,115 @@ +/* vi: ts=8 sts=4 sw=4 + * + * $Id$ + * + * This file is part of the KDE libraries. + * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + */ + +#ifndef __KSharedPixmap_h_Included__ +#define __KSharedPixmap_h_Included__ + +#include <kpixmap.h> + +#ifdef Q_WS_X11 + +#include <qstring.h> +#include <qpixmap.h> +#include <qwidget.h> + +class KSharedPixmapPrivate; + +/** + * Shared pixmap client. + * + * A shared pixmap is a pixmap that resides on the X server, is referenced + * by a global id string, and can be accessed by all X clients. + * + * This class is a client class to shared pixmaps in KDE. You can use it + * to copy (a part of) a shared pixmap into. KSharedPixmap inherits KPixmap + * for that purpose. + * + * The server part of shared pixmaps is not implemented here. + * That part is provided by KPixmapServer, in the source file: + * kdebase/kdesktop/pixmapserver.cc. + * + * An example: copy from a shared pixmap: + * \code + * KSharedPixmap *pm = new KSharedPixmap; + * connect(pm, SIGNAL(done(bool)), SLOT(slotDone(bool))); + * pm->loadFromShared("My Pixmap"); + * \endcode + * + * @author Geert Jansen <jansen@kde.org> + * @version $Id$ + * + */ +class KDEUI_EXPORT KSharedPixmap: + public QWidget, + public KPixmap +{ + Q_OBJECT + +public: + + /** + * Construct an empty pixmap. + */ + KSharedPixmap(); + + /** + * Destroys the pixmap. + */ + ~KSharedPixmap(); + + /** + * Load from a shared pixmap reference. The signal done() is emitted + * when the operation has finished. + * + * @param name The shared pixmap name. + * @param rect If you pass a nonzero rectangle, a tile is generated which + * is able to fill up the specified rectangle completely. This is solely + * for optimization: in some cases the tile will be much smaller than the + * original pixmap. It reflects KSharedPixmap's original use: sharing + * of the desktop background to achieve pseudo transparency. + * @return True if the shared pixmap exists and loading has started + * successfully, false otherwise. + */ + bool loadFromShared(const QString & name, const QRect & rect=QRect()); + + /** + * Check whether a shared pixmap is available. + * + * @param name The shared pixmap name. + * @return True if the shared pixmap is available, false otherwise. + */ + bool isAvailable(const QString & name) const; + +signals: + /** + * This signal is raised when a pixmap load operation has finished. + * + * @param success True if successful, false otherwise. + */ + void done(bool success); + +protected: + bool x11Event(XEvent *); + +private: + bool copy(const QString & id, const QRect & rect); + void init(); + + KSharedPixmapPrivate *d; +}; +#else // WIN32, Qt Embedded +// Let's simply assume KPixmap will do for now. Yes, I know that's broken. +#define KSharedPixmap KPixmap +#endif + +#endif |