/******************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2010 by Fredrik Höglund 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 . *********************************************************************/ #ifndef KWIN_LANCZOSFILTER_P_H #define KWIN_LANCZOSFILTER_P_H #include #include #include #include #include namespace KWin { class EffectWindowImpl; class WindowPaintData; class GLTexture; class GLRenderTarget; class GLShader; class LanczosFilter : public QObject { Q_OBJECT public: LanczosFilter(QObject* parent = 0); ~LanczosFilter(); void performPaint( EffectWindowImpl* w, int mask, QRegion region, WindowPaintData& data ); protected: virtual void timerEvent(QTimerEvent*); private: void init(); void updateOffscreenSurfaces(); QVector createKernel(float delta); QVector createOffsets(int count, float width, Qt::Orientation direction); GLTexture *m_offscreenTex; GLRenderTarget *m_offscreenTarget; GLShader *m_shader; QBasicTimer m_timer; bool m_inited; int m_uTexUnit; int m_uOffsets; int m_uKernel; int m_uKernelSize; }; } // namespace #endif // KWIN_LANCZOSFILTER_P_H