]> git.sesse.net Git - nageru/blob - jpeg_frame_view.cpp
Make the JPEG frames update on demand.
[nageru] / jpeg_frame_view.cpp
1 #include "jpeg_frame_view.h"
2
3 #include "post_to_main_thread.h"
4
5 #include <QGraphicsPixmapItem>
6 #include <QPixmap>
7
8 using namespace std;
9
10 string filename_for_frame(unsigned stream_idx, int64_t pts);
11
12 JPEGFrameView::JPEGFrameView(QWidget *parent)
13         : QGraphicsView(parent) {
14         scene.addItem(&item);
15         setScene(&scene);
16         setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
17         setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
18 }
19
20 void JPEGFrameView::update_frame()
21 {
22         dirty = true;
23         post_to_main_thread([this]{
24                 hide();
25                 show();
26         });
27 }
28
29 void JPEGFrameView::resizeEvent(QResizeEvent *event)
30 {
31         fitInView(&item, Qt::KeepAspectRatio);
32 }
33
34 void JPEGFrameView::paintEvent(QPaintEvent *event)
35 {
36         if (dirty) {
37                 dirty = false;
38                 item.setPixmap(QPixmap(QString::fromStdString(filename_for_frame(stream_idx, pts))));
39                 fitInView(&item, Qt::KeepAspectRatio);
40         }
41         QGraphicsView::paintEvent(event);
42 }