/****************************************************************************** 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 #include #include #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 CameraKeys() { return m_cameraesOption.keys(); } QList CameraKeysOrderByIds(); QList CameraWins() { return m_cameraWins; } QMap GetCamShowNames(); bool SaveCameraOption(const TP_CAMERA_OPTION& camOpt); void delCameraOption(const QString& serials); void updateCameraOption(const QString& serials, const TP_CAMERA_OPTION& camOpt); QList 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 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 m_cameraesOption; QZkMutexList 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() #define gGlobalPoolOption gpGlobalCamera->m_optPool #endif