You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.8 KiB
C++

/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:globalCamera.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/07
History:7:4:2015 8:53
*******************************************************************************/
#ifndef __GLOBAL_CAMERA_H_20150407
#define __GLOBAL_CAMERA_H_20150407
#include "icamera.h"
#include "iCameraObject.h"
#include "QZkJsonParser.h"
#include <QtCore/QHash>
#include <QtCore/QJsonArray>
#include <QtCore/QMutexLocker>
#include "QZkMutexMap.h"
#include "QZkMutexList.h"
class CGlobalCamera
{
public:
CGlobalCamera(const CAMERA_IN_PARAM* pInParam);
~CGlobalCamera();
bool CameraOption(const QString& serials, TP_CAMERA_OPTION& camOpt);
bool CameraOptionByKey(const QString& sKey, TP_CAMERA_OPTION& camOpt);
bool SetCameraOption(const QString& sKey, const TP_CAMERA_OPTION& camOpt);
TP_CAMERA_OPTION* CameraOption(const QString& serials) {
return m_cameraesOption.value(serials, NULL);
}
QList<QString> CameraKeys() {
return m_cameraesOption.keys();
}
QList<QString> CameraKeysOrderByIds();
QList<TP_CAMERA_WIN*> CameraWins() {
return m_cameraWins;
}
QMap<QString, QString> GetCamShowNames();
bool SaveCameraOption(const TP_CAMERA_OPTION& camOpt);
void delCameraOption(const QString& serials);
void updateCameraOption(const QString& serials, const TP_CAMERA_OPTION& camOpt);
QList<QString> camWinKeys();
bool camWinByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt);
bool addCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew);
bool delCamWin(const QString& strKey);
public:
TP_GLOBAL_DATA* m_pGlobalData;
ICameraCallback* m_pCallback;
// QHash<QString, TP_CAMERA_OPTION*> m_cfgCameraes;
TP_CAMERAPOOL_OPTION m_optPool;
private:
void readConfig();
void releaseConfig(const QString& key = NULL);
void checkFolder(QString& sFolder);
void readSerials();
QJsonObject getAppJsonUser();
static void releaseCameraOption(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData);
static bool copyCameraOptionBySerial(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData);
static void copyCameraOptionByKey(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData);
static bool optionCompare(TP_CAMERA_OPTION* op1, TP_CAMERA_OPTION* op2);
static void releaseCameraWin(tagTP_CAMERA_WIN*& pWin, void* pData);
private:
QMutex m_mtxCam;
const static char cs_szCfgName[];
QZkMutexMap<QString, TP_CAMERA_OPTION*> m_cameraesOption;
QZkMutexList<TP_CAMERA_WIN*> m_cameraWins;
QJsonObject m_jsonCamera;
QStringList m_serialsList;
};
//const char CGlobalCamera::m_szCfgFile[] = "camera";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//***inline functions***
extern class CGlobalCamera* gpGlobalCameraZZZ;
#define gpGlobalCamera gpGlobalCameraZZZ
//#define gpMainPath gpGlobalCamera->m_pszMainPath
#define gpGlobalData gpGlobalCamera->m_pGlobalData
#define gpGlobalCamCallback gpGlobalCamera->m_pCallback
#define callCamCallback(fc, defaultReturn, ...) (NULL != gpGlobalCamCallback) ? gpGlobalCamCallback->##fc##(__VA_ARGS__) : defaultReturn
// #define callGlobalCamera(fc, dValue, ...) (NULL != gpGlobalCamera ) ? gpGlobalCamera->##fc##(__VA_ARGS__) : dValue
// #define callGlobalCameraNoP(fc, dValue) (NULL != gpGlobalCamera ) ? gpGlobalCamera->##fc##() : dValue
//#define gpCameraesHash() (NULL != gpGlobalCamera) ? gpGlobalCamera->m_cfgCameraes : QHash<QString, TP_CAMERA_OPTION*>()
#define gGlobalPoolOption gpGlobalCamera->m_optPool
#endif