Projet ROV'NET  0.1
BTS SN 2019
Tests/camera/camera.h
Aller à la documentation de ce fichier.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the examples of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 ** * Redistributions of source code must retain the above copyright
15 ** notice, this list of conditions and the following disclaimer.
16 ** * Redistributions in binary form must reproduce the above copyright
17 ** notice, this list of conditions and the following disclaimer in
18 ** the documentation and/or other materials provided with the
19 ** distribution.
20 ** * Neither the name of The Qt Company Ltd nor the names of its
21 ** contributors may be used to endorse or promote products derived
22 ** from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40 
41 #ifndef CAMERA_H
42 #define CAMERA_H
43 
44 #include <QCamera>
45 #include <QCameraImageCapture>
46 #include <QMediaRecorder>
47 
48 #include <QMainWindow>
49 
50 QT_BEGIN_NAMESPACE
51 namespace Ui { class Camera; }
52 QT_END_NAMESPACE
53 
54 class Camera : public QMainWindow
55 {
56  Q_OBJECT
57 
58 public:
59  Camera(QWidget *parent = 0);
60  ~Camera();
61 
62 private slots:
63  void setCamera(const QCameraInfo &cameraInfo);
64 
65  void startCamera();
66  void stopCamera();
67 
68  void record();
69  void pause();
70  void stop();
71  void setMuted(bool);
72 
73  void toggleLock();
74  void takeImage();
75  void displayCaptureError(int, QCameraImageCapture::Error, const QString &errorString);
76 
77  void configureCaptureSettings();
78  void configureVideoSettings();
79  void configureImageSettings();
80 
81  void displayRecorderError();
82  void displayCameraError();
83 
84  void updateCameraDevice(QAction *action);
85 
86  void updateCameraState(QCamera::State);
87  void updateCaptureMode();
88  void updateRecorderState(QMediaRecorder::State state);
89  void setExposureCompensation(int index);
90 
91  void updateRecordTime();
92 
93  void processCapturedImage(int requestId, const QImage &img);
94  void updateLockStatus(QCamera::LockStatus, QCamera::LockChangeReason);
95 
96  void displayViewfinder();
97  void displayCapturedImage();
98 
99  void readyForCapture(bool ready);
100  void imageSaved(int id, const QString &fileName);
101 
102 protected:
103  void keyPressEvent(QKeyEvent *event);
104  void keyReleaseEvent(QKeyEvent *event);
105  void closeEvent(QCloseEvent *event);
106 
107 private:
108  Ui::Camera *ui;
109 
110  QCamera *camera;
111  QCameraImageCapture *imageCapture;
112  QMediaRecorder* mediaRecorder;
113 
114  QImageEncoderSettings imageSettings;
115  QAudioEncoderSettings audioSettings;
116  QVideoEncoderSettings videoSettings;
120 };
121 
122 #endif
Ui::Camera * ui
Definition: Tests/camera/camera.h:108
Definition: Tests/camera/camera.h:51
Gère la reception du flux video et la prise de photo.
Definition: camera.h:24
QString videoContainerFormat
Definition: Tests/camera/camera.h:117
bool isCapturingImage
Definition: Tests/camera/camera.h:118
QMediaRecorder * mediaRecorder
Definition: Tests/camera/camera.h:112
QImageEncoderSettings imageSettings
Definition: Tests/camera/camera.h:114
QCameraImageCapture * imageCapture
Definition: Tests/camera/camera.h:111
QVideoEncoderSettings videoSettings
Definition: Tests/camera/camera.h:116
QAudioEncoderSettings audioSettings
Definition: Tests/camera/camera.h:115
bool applicationExiting
Definition: Tests/camera/camera.h:119