/usr/include/kwinxrenderutils.h is in kde-workspace-dev 4:4.8.4-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | /********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 2008 Lubos Lunak <l.lunak@kde.org>
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.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
#ifndef KWIN_XRENDERUTILS_H
#define KWIN_XRENDERUTILS_H
#include <kwinconfig.h>
#ifdef KWIN_HAVE_XRENDER_COMPOSITING
#include <QtCore/QSharedData>
#include <QtGui/QColor>
#include <ksharedptr.h>
#include <kwinglobals.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/Xrender.h>
/** @addtogroup kwineffects */
/** @{ */
namespace KWin
{
/**
* Convert QRegion to XserverRegion.
*/
KWIN_EXPORT XserverRegion toXserverRegion(QRegion region);
/**
* draws a round box on the renderscene
*/
KWIN_EXPORT void xRenderRoundBox(Picture pict, const QRect &rect, int round, const QColor &c);
/**
* dumps a QColor into a XRenderColor
*/
KWIN_EXPORT XRenderColor preMultiply(const QColor &c, float opacity = 1.0);
/** @internal */
class KWIN_EXPORT XRenderPictureData
: public QSharedData
{
public:
XRenderPictureData(Picture pic = None);
~XRenderPictureData();
Picture value();
private:
Picture picture;
Q_DISABLE_COPY(XRenderPictureData)
};
/**
* @short Wrapper around XRender Picture.
*
* This class wraps XRender's Picture, providing proper initialization,
* convenience constructors and freeing of resources.
* It should otherwise act exactly like the Picture type.
*/
class KWIN_EXPORT XRenderPicture
{
public:
XRenderPicture(Picture pic = None);
XRenderPicture(QPixmap pix);
XRenderPicture(Pixmap pix, int depth);
operator Picture();
private:
KSharedPtr< XRenderPictureData > d;
};
inline
XRenderPictureData::XRenderPictureData(Picture pic)
: picture(pic)
{
}
inline
XRenderPictureData::~XRenderPictureData()
{
if (picture != None)
XRenderFreePicture(display(), picture);
}
inline
Picture XRenderPictureData::value()
{
return picture;
}
inline
XRenderPicture::XRenderPicture(Picture pic)
: d(new XRenderPictureData(pic))
{
}
inline
XRenderPicture::operator Picture()
{
return d->value();
}
/**
* Static 1x1 picture used to deliver a black pixel with given opacity (for blending performance)
* Call and Use, the PixelPicture will stay, but may change it's opacity meanwhile. It's NOT threadsafe either
*/
KWIN_EXPORT XRenderPicture xRenderBlendPicture(double opacity);
/**
* Creates a 1x1 Picture filled with c
*/
KWIN_EXPORT XRenderPicture xRenderFill(const XRenderColor *c);
KWIN_EXPORT XRenderPicture xRenderFill(const QColor &c);
/**
* Allows to render a window into a (transparent) pixmap
* NOTICE: the result can be queried as xRenderWindowOffscreenTarget()
* NOTICE: it may be 0
* NOTICE: when done call setXRenderWindowOffscreen(false) to continue normal render process
*/
KWIN_EXPORT void setXRenderOffscreen(bool b);
/**
* Allows to define a persistent effect member as render target
* The window (including shadows) is rendered into the top left corner
* NOTICE: do NOT call setXRenderOffscreen(true) in addition!
* NOTICE: do not forget to xRenderPopTarget once you're done to continue the normal render process
*/
KWIN_EXPORT void xRenderPushTarget(XRenderPicture *pic);
KWIN_EXPORT void xRenderPopTarget();
/**
* Whether windows are currently rendered into an offscreen target buffer
*/
KWIN_EXPORT bool xRenderOffscreen();
/**
* The offscreen buffer as set by the renderer because of setXRenderWindowOffscreen(true)
*/
KWIN_EXPORT QPixmap *xRenderOffscreenTarget();
/**
* NOTICE: HANDS OFF!!!
* scene_setXRenderWindowOffscreenTarget() is ONLY to be used by the renderer - DO NOT TOUCH!
*/
KWIN_EXPORT void scene_setXRenderOffscreenTarget(QPixmap *pix);
/**
* scene_xRenderWindowOffscreenTarget() is used by the scene to figure the target set by an effect
*/
KWIN_EXPORT XRenderPicture *scene_xRenderOffscreenTarget();
} // namespace
#endif
/** @} */
#endif
|