1 /* This file is part of the KDE project. 2 3 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 5 This library is free software: you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation, either version 2.1 or 3 of the License. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 #ifndef PHONON_ABSTRACTVIDEORENDERER_H 18 #define PHONON_ABSTRACTVIDEORENDERER_H 19 20 #include "backendnode.h" 21 22 #include <phonon/videowidget.h> 23 24 QT_BEGIN_NAMESPACE 25 26 class QImage; 27 28 #ifndef QT_NO_PHONON_VIDEO 29 30 namespace Phonon 31 { 32 namespace DS9 33 { 34 //this is the interface used by the videorenderer from the VideoWidget class 35 class AbstractVideoRenderer 36 { 37 public: 38 virtual ~AbstractVideoRenderer(); 39 40 virtual void repaintCurrentFrame(QWidget *target, const QRect &rect) = 0; 41 virtual void notifyResize(const QSize&, Phonon::VideoWidget::AspectRatio, Phonon::VideoWidget::ScaleMode) = 0; 42 virtual void applyMixerSettings(qreal brightness, qreal contrast, qreal m_hue, qreal saturation) = 0; 43 44 void setActive(bool); 45 bool isActive() const; 46 47 virtual bool isNative() const = 0; 48 virtual QImage snapshot() const = 0; 49 50 Filter getFilter() const; 51 QSize sizeHint() const; 52 53 protected: 54 virtual QSize videoSize() const = 0; 55 56 AbstractVideoRenderer(); 57 void internalNotifyResize(const QSize &size, const QSize &videoSize, 58 Phonon::VideoWidget::AspectRatio aspectRatio, Phonon::VideoWidget::ScaleMode scaleMode); 59 60 61 Filter m_filter; 62 int m_dstX, m_dstY, m_dstWidth, m_dstHeight; 63 bool m_active; 64 }; 65 } 66 } 67 68 #endif //QT_NO_PHONON_VIDEO 69 70 71 QT_END_NAMESPACE 72 73 #endif 74