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