865b7185044453026f6d7cd989692a046b337556
[harmattan/cameraplus] / lib / qtcamviewfinderrenderergeneric.h
1 // -*- c++ -*-
2
3 #ifndef QT_CAM_VIEWFINDER_RENDERER_GENERIC_H
4 #define QT_CAM_VIEWFINDER_RENDERER_GENERIC_H
5
6 #include "qtcamviewfinderrenderer.h"
7 #include <QImage>
8 #include <QMutex>
9
10 class QtCamViewfinderRendererGeneric : public QtCamViewfinderRenderer {
11   Q_OBJECT
12
13 public:
14   Q_INVOKABLE QtCamViewfinderRendererGeneric(QtCamConfig *config, QObject *parent = 0);
15
16   ~QtCamViewfinderRendererGeneric();
17
18   virtual void paint(QPainter *painter);
19   virtual void resize(const QSizeF& size);
20   virtual void reset();
21   virtual GstElement *sinkElement();
22
23 private:
24   static void on_gst_buffer(GstElement *element, GstBuffer *buf, GstPad *pad,
25                             QtCamViewfinderRendererGeneric *q);
26
27   static void sink_notify(QtCamViewfinderRendererGeneric *q, GObject *object,
28                           gboolean is_last_ref);
29
30   GstElement *m_elem;
31   GstElement *m_sink;
32   QImage m_image;
33   QMutex m_mutex;
34   QSizeF m_size;
35   unsigned long m_id;
36 };
37
38 #endif /* QT_CAM_VIEWFINDER_RENDERER_GENERIC_H */