OpenShot Library | libopenshot  0.7.0
VideoRenderer.cpp
Go to the documentation of this file.
1 
9 // Copyright (c) 2008-2019 OpenShot Studios, LLC
10 //
11 // SPDX-License-Identifier: LGPL-3.0-or-later
12 
13 #include "VideoRenderer.h"
14 #include <QtCore/QMetaObject>
15 #include <QtWidgets/QWidget>
16 
18  : QObject(parent), override_widget(nullptr)
19 {
20 }
21 
23 {
24 }
25 
27 void VideoRenderer::OverrideWidget(uintptr_t qwidget_address)
28 {
29  if (override_present_connection)
30  QObject::disconnect(override_present_connection);
31 
32  // re-cast QWidget pointer (long) as an actual QWidget
33  override_widget = reinterpret_cast<QWidget*>(qwidget_address);
34  if (!override_widget)
35  return;
36 
37  override_present_connection = QObject::connect(
39  override_widget,
40  [widget = override_widget](const QImage &image) {
41  QMetaObject::invokeMethod(
42  widget, "present",
43  Qt::DirectConnection,
44  Q_ARG(QImage, image)
45  );
46  },
47  Qt::QueuedConnection
48  );
49 }
50 
51 void VideoRenderer::render(std::shared_ptr<QImage> image)
52 {
53  if (!image)
54  return;
55 
56  emit present(*image);
57 }
VideoRenderer::VideoRenderer
VideoRenderer(QObject *parent=0)
Definition: VideoRenderer.cpp:17
VideoRenderer.h
Header file for Video Renderer class.
VideoRenderer::render
void render(std::shared_ptr< QImage > image)
Definition: VideoRenderer.cpp:51
VideoRenderer::present
void present(const QImage &image)
VideoRenderer::~VideoRenderer
~VideoRenderer()
Definition: VideoRenderer.cpp:22
VideoRenderer::OverrideWidget
void OverrideWidget(uintptr_t qwidget_address)
Override QWidget which needs to be painted.
Definition: VideoRenderer.cpp:27