All pastes #922090 Raw Edit

Mine

public text v1 · immutable
#922090 ·published 2008-02-28 16:13 UTC
rendered paste body
Index: videowidget.cpp
===================================================================
--- videowidget.cpp     (revision 771149)
+++ videowidget.cpp     (working copy)
@@ -1,5 +1,5 @@
 /*  This file is part of the KDE project
-    Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org>
+    Copyright (C) 2005-2008 Matthias Kretz <kretz@kde.org>

     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -18,16 +18,20 @@
 */

 #include "videowidget.h"
+#include "phonondefs_p.h"
 #include "videowidget_p.h"
 #include "videowidgetinterface.h"
 #include "factory.h"
-#include "phonondefs_p.h"
 #include "phononnamespace_p.h"

 #include <QtGui/QAction>

-#define PHONON_INTERFACENAME VideoWidgetInterface
+#define IFACES42 VideoWidgetInterface
+#define IFACES41 IFACES42
+#define IFACES40 IFACES41, VideoWidgetInterface40

+#define PHONON_INTERFACENAME IFACES40
+
 namespace Phonon
 {

@@ -89,6 +93,15 @@
 PHONON_INTERFACE_GETTER(qreal, saturation, d->saturation)
 PHONON_INTERFACE_SETTER(setSaturation, saturation, qreal)

+void VideoWidget::requestSnapshot() const
+{
+    K_D(const VideoWidget);
+    ConstIface<IFACES42> iface(d);
+    if (iface) {
+        iface->requestSnapshot();
+    }
+}
+
 void VideoWidget::setFullScreen(bool newFullScreen)
 {
     pDebug() << Q_FUNC_INFO << newFullScreen;
@@ -139,6 +152,7 @@
     pDebug() << "calling setAspectRatio on the backend " << aspectRatio;
     pINTERFACE_CALL(setAspectRatio(aspectRatio));
     pINTERFACE_CALL(setScaleMode(scaleMode));
+    QObject::connect(m_backendObject, SIGNAL(snapshotReady(const QImage &)), q, SIGNAL(snapshotReady(const QImage &)));

     QWidget *w = pINTERFACE_CALL(widget());
     if (w) {
Index: videowidget.h
===================================================================
--- videowidget.h       (revision 771149)
+++ videowidget.h       (working copy)
@@ -1,5 +1,5 @@
 /*  This file is part of the KDE project
-    Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org>
+    Copyright (C) 2005-2008 Matthias Kretz <kretz@kde.org>

     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -190,6 +190,30 @@
             void setHue(qreal value);
             void setSaturation(qreal value);

+            /**
+             * Requests a QImage of the latest video frame in the original frame
+             * dimensions (i.e. not scaled like the video widget and without
+             * aspect ratio correction).
+             *
+             * The image is returned asynchronously via snapshotReady.
+             *
+             * \since KDE 4.1
+             */
+            void requestSnapshot() const;
+
+        Q_SIGNALS:
+            /**
+             * Passes a QImage of the latest video frame in the original frame
+             * dimensions (i.e. not scaled like the video widget and without
+             * aspect ratio correction)
+             *
+             * This signal only gets emitted once per requestSnapshot call and
+             * only if the backend implements the Phonon 4.2 interface.
+             *
+             * \since KDE 4.1
+             */
+            void snapshotReady(const QImage &snapshot);
+
         protected:
             /**
              * \internal
Index: videowidgetinterface.h
===================================================================
--- videowidgetinterface.h      (revision 771149)
+++ videowidgetinterface.h      (working copy)
@@ -1,5 +1,6 @@
 /*  This file is part of the KDE project
     Copyright (C) 2007 Trolltech ASA. <thierry.bastian@trolltech.com>
+    Copyright (C) 2008 Matthias Kretz <kretz@kde.org>

     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -27,10 +28,10 @@

 namespace Phonon
 {
-class VideoWidgetInterface
+class VideoWidgetInterface40
 {
     public:
-        virtual ~VideoWidgetInterface() {}
+        virtual ~VideoWidgetInterface40() {}

         virtual Phonon::VideoWidget::AspectRatio aspectRatio() const = 0;
         virtual void setAspectRatio(Phonon::VideoWidget::AspectRatio) = 0;
@@ -48,10 +49,20 @@
 //X        virtual int overlayCapabilities() const = 0;
 //X        virtual bool createOverlay(QWidget *widget, int type) = 0;
 };
+
+class VideoWidgetInterface : public VideoWidgetInterface40
+{
+    public:
+        virtual void requestSnapshot() const = 0;
+};
 }

-Q_DECLARE_INTERFACE(Phonon::VideoWidgetInterface, "VideoWidgetInterface3.phonon.kde.org")
+// added in libphonon.so.4.0
+Q_DECLARE_INTERFACE(Phonon::VideoWidgetInterface40, "VideoWidgetInterface3.phonon.kde.org")

+// added in libphonon.so.4.2
+Q_DECLARE_INTERFACE(Phonon::VideoWidgetInterface, "VideoWidgetInterface4.phonon.kde.org")
+
 QT_END_NAMESPACE
 QT_END_HEADER