ZKCameraView.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * ZKCameraView.h
  3. *
  4. * Created on: Mar 10, 2018
  5. * Author: guoxs
  6. */
  7. #ifndef _CONTROL_ZKCAMERAVIEW_H_
  8. #define _CONTROL_ZKCAMERAVIEW_H_
  9. #include "ZKBase.h"
  10. typedef enum {
  11. E_CAMERA_STATUS_CODE_OK = 0,
  12. E_CAMERA_STATUS_CODE_DEV_NOT_EXIST,
  13. E_CAMERA_STATUS_CODE_DEV_OPEN_FAILED,
  14. E_CAMERA_STATUS_CODE_TAKE_PIC_FAILED,
  15. E_CAMERA_STATUS_CODE_NO_SIGNAL,
  16. E_CAMERA_STATUS_CODE_HAS_SIGNAL,
  17. E_CAMERA_STATUS_CODE_UNKNOWN_ERRORNO
  18. } ECameraStatusCode;
  19. typedef enum {
  20. E_MIRROR_NORMAL = 0, // 正常镜像
  21. E_MIRROR_UPPER_LOWER, // 上下镜像
  22. E_MIRROR_LEFT_RIGHT // 左右镜像
  23. } EMirror;
  24. typedef enum {
  25. E_ROTATION_0 = 0,
  26. E_ROTATION_90,
  27. E_ROTATION_180,
  28. E_ROTATION_270
  29. } ERotation;
  30. class ZKCameraViewPrivate;
  31. class ZKCamera;
  32. /**
  33. * @brief 摄像头控件
  34. */
  35. class ZKCameraView : public ZKBase {
  36. ZK_DECLARE_PRIVATE(ZKCameraView)
  37. public:
  38. ZKCameraView(ZKBase *pParent);
  39. virtual ~ZKCameraView();
  40. /**
  41. * @brief 设置分辨率大小
  42. */
  43. void setFormatSize(int width, int height);
  44. /**
  45. * @brief 开始预览
  46. */
  47. ECameraStatusCode startPreview();
  48. /**
  49. * @brief 停止预览
  50. */
  51. ECameraStatusCode stopPreview();
  52. /**
  53. * @brief 是否预览中
  54. */
  55. bool isPreviewing() const;
  56. /**
  57. * @brief 拍照
  58. */
  59. ECameraStatusCode takePicture();
  60. void setPosition(const LayoutPosition &position);
  61. void setCropPosition(const LayoutPosition &position);
  62. void setRotation(ERotation rotation);
  63. void setMirror(EMirror mirror);
  64. /* 设置亮度 */
  65. bool setBrightness(int brightness);
  66. /* 设置对比度 */
  67. bool setContrast(int contrast);
  68. /* 设置饱和度 */
  69. bool setSaturation(int saturation);
  70. /* 设置色调 */
  71. bool setHue(int hue);
  72. /* 设置伽马值 */
  73. bool setGamma(int gamma);
  74. public:
  75. class IPictureCallback {
  76. public:
  77. virtual ~IPictureCallback() { }
  78. virtual void onPictureTakenStarted() { }
  79. virtual void onPictureTakenEnd() { }
  80. virtual void onPictureTakenError() { }
  81. virtual const char* onPictureSavePath() = 0;
  82. };
  83. class IErrorCodeCallback {
  84. public:
  85. virtual ~IErrorCodeCallback() { }
  86. virtual void onErrorCode(int error) = 0;
  87. };
  88. void setPictureCallback(IPictureCallback *pCallback);
  89. void setErrorCodeCallback(IErrorCodeCallback *pCallback);
  90. protected:
  91. ZKCameraView(ZKBase *pParent, ZKBasePrivate *pBP);
  92. virtual void onBeforeCreateWindow(const Json::Value &json);
  93. virtual void onAfterCreateWindow(const Json::Value &json);
  94. virtual const char* getClassName() const { return ZK_CAMERAVIEW; }
  95. virtual void onDraw(ZKCanvas *pCanvas);
  96. private:
  97. void parseCameraViewAttributeFromJson(const Json::Value &json);
  98. private:
  99. ZKCamera *mCameraPtr;
  100. };
  101. #endif /* _CONTROL_ZKCAMERAVIEW_H_ */