ADTF Qt5
Loading...
Searching...
No Matches
interface_clients.h
Go to the documentation of this file.
1
7
8/*
9 * This file depends on Qt which is licensed under LGPLv3.
10 * See ADTF_DIR/3rdparty/qt5 and doc/license for detailed information.
11 */
12#pragma once
13#include "error_handling.h"
14#include <adtffiltersdk/graph_object.h>
15
17#include <plugins/recorder_intf.h>
18#include <plugins/player_intf.h>
19
20#include <QObject>
21#include <QJSEngine>
22
23namespace adtf
24{
25
26namespace javascript
27{
28
29namespace scripting
30{
31
38class cScriptRecorderClient : public QObject
39{
40 Q_OBJECT
42 Q_PROPERTY(bool connected READ isConnected)
43
44public:
45 cScriptRecorderClient(filter::interface_client<services::ant::IRecorder> oClient, QJSEngine& oEngine):
46 m_oClient(oClient), m_oEngine(oEngine)
47 {
48 }
50
54 Q_INVOKABLE void start(const QString& strFileName = "")
55 {
56 SCRIPT_ERROR_IF_FAILED(m_oClient->Start(strFileName.toLocal8Bit().data()));
57 }
58
62 Q_INVOKABLE void split(const QString& strFileName = "")
63 {
64 SCRIPT_ERROR_IF_FAILED(m_oClient->Split(strFileName.toLocal8Bit().data()));
65 }
66
70 Q_INVOKABLE void stop(const QString& strFileName = "")
71 {
72 SCRIPT_ERROR_IF_FAILED(m_oClient->Stop(strFileName.toLocal8Bit().data()));
73 }
74
78 Q_INVOKABLE void addMarker(double fTimeStamp, const QString& strName = "", const QString& strAdditional = "")
79 {
80 SCRIPT_ERROR_IF_FAILED(ucom::ucom_cast<services::IRecorder*>(&m_oClient.Get())
81 ->AddMarker(static_cast<tTimeStamp>(fTimeStamp), strName.toStdString().c_str(),
82 strAdditional.toStdString().c_str()));
83 }
84
88 Q_INVOKABLE void dropHistory()
89 {
90 SCRIPT_ERROR_IF_FAILED(ucom::ucom_cast<services::IRecorder*>(&m_oClient.Get())->DropHistory());
91 }
92
94private:
95 bool isConnected()
96 {
97 return m_oClient.IsValid();
98 }
99
100 filter::interface_client<services::ant::IRecorder> m_oClient;
101 QJSEngine& m_oEngine;
103};
104
111class cScriptPlayerClient : public QObject
112{
113 Q_OBJECT
114
115public:
117 cScriptPlayerClient(QJSEngine& oEngine): m_oEngine(oEngine)
118 {
119 THROW_IF_FAILED_DESC(_runtime->GetObject(m_pClient), "Unable to aquire player interface");
120 }
122
126 Q_INVOKABLE void open(const QString& strFileNames, bool bLoadReferencedFiles)
127 {
128 SCRIPT_ERROR_IF_FAILED(m_pClient->Open(strFileNames.toLocal8Bit().data(), bLoadReferencedFiles));
129 }
130
134 Q_INVOKABLE void close()
135 {
136 SCRIPT_ERROR_IF_FAILED(m_pClient->Close());
137 }
138
142 Q_INVOKABLE void play()
143 {
144 SCRIPT_ERROR_IF_FAILED(m_pClient->Play());
145 }
146
150 Q_INVOKABLE void pause()
151 {
152 SCRIPT_ERROR_IF_FAILED(m_pClient->Pause());
153 }
154
158 Q_INVOKABLE void reset()
159 {
160 SCRIPT_ERROR_IF_FAILED(m_pClient->Reset());
161 }
162
166 Q_INVOKABLE QVariantList getTimeRange()
167 try
168 {
169 tTimeStamp tmStart;
170 tTimeStamp tmEnd;
171 THROW_IF_FAILED(m_pClient->GetTimeRange(tmStart, tmEnd));
172 QVariantList oReturnValue;
173 oReturnValue.push_back(static_cast<qint64>(base::duration_cast<base::tNanoSeconds>(tmStart).nCount));
174 oReturnValue.push_back(static_cast<qint64>(base::duration_cast<base::tNanoSeconds>(tmEnd).nCount));
175 return oReturnValue;
176 }
178
182 Q_INVOKABLE qint64 getCurrentTime()
183 {
184 return base::duration_cast<base::tNanoSeconds>(m_pClient->GetCurrentTime()).nCount;
185 }
186
190 Q_INVOKABLE void seekToTime(qint64 tmTime)
191 {
192 SCRIPT_ERROR_IF_FAILED(m_pClient->SeekToTime(base::duration_cast<tTimeStamp>(base::tNanoSeconds{tmTime})));
193 }
194
195private:
197 ucom::object_ptr<services::ant::IPlayer> m_pClient;
198 QJSEngine& m_oEngine;
200};
201
212class cScriptQtSharedClient : public QObject
213{
214 Q_OBJECT
216 Q_PROPERTY(bool connected READ isConnected)
217
218public:
219 cScriptQtSharedClient(filter::interface_client<ui::giant::IQtShared> oClient, QJSEngine& oEngine):
220 m_oClient(oClient), m_oEngine(oEngine)
221 {
222 }
224
230 Q_INVOKABLE QObject* getObject(const QString& strName = "")
231 try
232 {
233 QObject* pObject;
234 THROW_IF_FAILED(m_oClient->GetObject(strName.toLocal8Bit().data(), pObject));
235 return pObject;
236 }
238
239private:
241 bool isConnected()
242 {
243 return m_oClient.IsValid();
244 }
245
246 filter::interface_client<ui::giant::IQtShared> m_oClient;
247 QJSEngine& m_oEngine;
249};
250
251} // namespace scripting
252} // namespace javascript
253} // namespace adtf
Definition interface_clients.h:112
Q_INVOKABLE qint64 getCurrentTime()
Definition interface_clients.h:182
Q_INVOKABLE void open(const QString &strFileNames, bool bLoadReferencedFiles)
Definition interface_clients.h:126
Q_INVOKABLE void reset()
Definition interface_clients.h:158
Q_INVOKABLE void pause()
Definition interface_clients.h:150
Q_INVOKABLE void seekToTime(qint64 tmTime)
Definition interface_clients.h:190
Q_INVOKABLE void close()
Definition interface_clients.h:134
Q_INVOKABLE QVariantList getTimeRange()
Definition interface_clients.h:166
Q_INVOKABLE void play()
Definition interface_clients.h:142
Definition interface_clients.h:213
#define EXCEPTION_TO_SCRIPT_ERROR(__return_value)
Converts an exception to an error code.
Definition error_handling.h:24
#define SCRIPT_ERROR_IF_FAILED(__exp)
Throws an error/exception in case of error in script.
Definition error_handling.h:32
Definition clock.h:25
Namespace for the ADTF JavaScript Filter SDK.
Definition clock.h:22
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtfui_pkg.h:13