summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/phonon/videowidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/phonon/phonon/videowidget.h')
-rw-r--r--src/3rdparty/phonon/phonon/videowidget.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/src/3rdparty/phonon/phonon/videowidget.h b/src/3rdparty/phonon/phonon/videowidget.h
new file mode 100644
index 0000000..804e61a
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/videowidget.h
@@ -0,0 +1,220 @@
+/* This file is part of the KDE project
+ Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+#ifndef Phonon_VIDEOWIDGET_H
+#define Phonon_VIDEOWIDGET_H
+
+#include "phonon_export.h"
+#include "phonondefs.h"
+#include "abstractvideooutput.h"
+#include <QtGui/QWidget>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+class QString;
+
+#ifndef QT_NO_PHONON_VIDEO
+
+namespace Phonon
+{
+class AbstractVideoOutput;
+ class VideoWidgetPrivate;
+ /** \class VideoWidget videowidget.h Phonon/VideoWidget
+ * \short Widget to display video.
+ *
+ * This widget shows the video signal.
+ *
+ * \code
+ * MediaObject *media = new MediaObject(parent);
+ * VideoWidget *vwidget = new VideoWidget(parent);
+ * Phonon::createPath(media, vwidget);
+ * \endcode
+ *
+ * \ingroup PhononVideo
+ * \ingroup PhononWidgets
+ * \author Matthias Kretz <kretz@kde.org>
+ */
+ class PHONON_EXPORT VideoWidget : public QWidget, public Phonon::AbstractVideoOutput
+ {
+ K_DECLARE_PRIVATE(VideoWidget)
+ Q_OBJECT
+ Q_ENUMS(AspectRatio ScaleMode)
+ /**
+ * This property holds whether the video is shown using the complete
+ * screen.
+ *
+ * The property differs from QWidget::fullScreen in that it is
+ * writeable.
+ *
+ * By default the widget is not shown in fullScreen.
+ *
+ * \warning When switching the video to fullscreen using setFullScreen
+ * your application loses control over the widget that actually shows
+ * the video (which is then shown as a toplevel window while your
+ * application still uses this widget). If you only need to capture key
+ * events the event forwarding done internally should suffice for your
+ * needs. If you need to map mouse coordinates or add widgets (that are
+ * not overlays) you should probably handle fullscreen yourself.
+ */
+ Q_PROPERTY(bool fullScreen READ isFullScreen WRITE setFullScreen)
+ /**
+ *
+ * Defaults to AspectRatioAuto.
+ *
+ * \see AspectRatio
+ */
+ Q_PROPERTY(AspectRatio aspectRatio READ aspectRatio WRITE setAspectRatio)
+
+ /**
+ * If the size of the widget and the size of the video are not equal.
+ * The video will be zoomed to fit the widget. The smaller zoom
+ * (AddBarsScaleMode) adds black bars at the left/right or top/bottom to
+ * make all of the image visible (default). The bigger zoom (ExpandMode)
+ * fills the widget completely, keeping all information in one direction
+ * and leaving parts of the image outside of the widget in the other
+ * direction.
+ */
+ Q_PROPERTY(ScaleMode scaleMode READ scaleMode WRITE setScaleMode)
+
+ /**
+ * This property holds brightness of the video.
+ *
+ * Default is 0. Acceptable values are in range of -1, 1.
+ */
+ Q_PROPERTY(qreal brightness READ brightness WRITE setBrightness)
+ /**
+ * This property holds the contrast of the video.
+ *
+ * Default is 0. Acceptable values are in range of -1, 1.
+ */
+ Q_PROPERTY(qreal contrast READ contrast WRITE setContrast)
+ /**
+ * This property holds the hue of the video.
+ *
+ * Default is 0. Acceptable values are in range of -1, 1.
+ */
+ Q_PROPERTY(qreal hue READ hue WRITE setHue)
+ /**
+ * This property holds saturation of the video.
+ *
+ * Default is 0. Acceptable values are in range of -1, 1.
+ */
+ Q_PROPERTY(qreal saturation READ saturation WRITE setSaturation)
+
+ public:
+ /**
+ * Defines the width:height to be used for the video.
+ */
+ enum AspectRatio
+ {
+ /**
+ * Let the decoder find the aspect ratio automatically from the
+ * media file (this is the default).
+ */
+ AspectRatioAuto = 0,
+ /**
+ * Fits the video into the widget making the aspect ratio depend
+ * solely on the size of the widget. This way the aspect ratio
+ * is freely resizeable by the user.
+ */
+ AspectRatioWidget = 1,
+ /**
+ * Make width/height == 4/3, which is the old TV size and
+ * monitor size (1024/768 == 4/3). (4:3)
+ */
+ AspectRatio4_3 = 2,
+ /**
+ * Make width/height == 16/9, which is the size of most current
+ * media. (16:9)
+ */
+ AspectRatio16_9 = 3
+//X /**
+//X * Assume that every pixel of the video image needs to be displayed with the same
+//X * physical width and height. (1:1 image pixels, not imagewidth
+//X * = imageheight)
+//X */
+//X AspectRatioSquare = 4,
+ };
+
+ enum ScaleMode {
+ FitInView = 0,
+ ScaleAndCrop = 1
+ };
+
+ /**
+ * Constructs a new video widget with a \p parent.
+ */
+ VideoWidget(QWidget *parent = 0);
+
+ AspectRatio aspectRatio() const;
+ ScaleMode scaleMode() const;
+
+ qreal brightness() const;
+ qreal contrast() const;
+ qreal hue() const;
+ qreal saturation() const;
+ QImage snapshot() const;
+
+ //TODO: bar colors property
+ public Q_SLOTS:
+ void setFullScreen(bool fullscreen);
+
+ /**
+ * Convenience slot, calling setFullScreen(false)
+ */
+ void exitFullScreen();
+
+ /**
+ * Convenience slot, calling setFullScreen(true)
+ */
+ void enterFullScreen();
+
+ void setAspectRatio(AspectRatio);
+ void setScaleMode(ScaleMode);
+
+ void setBrightness(qreal value);
+ void setContrast(qreal value);
+ void setHue(qreal value);
+ void setSaturation(qreal value);
+
+ protected:
+ /**
+ * \internal
+ *
+ * Constructs a new video widget with private data pointer \p d and
+ * a \p parent.
+ */
+ VideoWidget(VideoWidgetPrivate &d, QWidget *parent);
+
+ void mouseMoveEvent(QMouseEvent *);
+ bool event(QEvent *);
+ };
+
+} //namespace Phonon
+
+#endif //QT_NO_PHONON_VIDEO
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+// vim: sw=4 ts=4 tw=80
+#endif // Phonon_VIDEOWIDGET_H