/* * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. * Description: heartRate view * Author: * Create: 2021-07-26 */ #ifndef HEART_RATE_VIEW_H #define HEART_RATE_VIEW_H #include "View.h" #include "components/ui_image_animator.h" #include "components/ui_chart.h" #include "wearable_log.h" #include "ohos_types.h" #include "components/ui_card_page.h" #include "HeartModel.h" namespace OHOS { #define HEART_AVE_NUM 360 #define HEART_RATE_LIMIT_UPPER 200 #define HEART_RATE_LIMIT_LOWER 0 #define INVALID_HEART_VALUE ((int16)0xFFFF) #define NUM_1 1 #define NUM_2 2 #define NUM_3 3 #define NUM_4 4 #define NUM_5 5 #define NUM_7 7 #define NUM_16 16 #define NUM_99 99 class HeartRateView : public UICardPage { public: HeartRateView(); ~HeartRateView() override; static HeartRateView *GetInstance(void); bool InitView(void); void PreLoad(void) override; void UnLoad(void) override; int32_t SetHeartRateData(Point *rateData, uint32 rateDataSize); // 设置心率数据,用于画心率曲线 void RefreshElectrocardiogram(void); // 刷新心率曲线 void ClearElectrocardiogram(void); // 清空心率曲线 void RefreshHeartRatePerSec(uint16_t value); // 刷新每秒心率 void RefreshHeartRateMax(uint16_t max); // 刷新心率最大值 void RefreshHeartRateMin(uint16_t min); // 刷新心率最小值 void RefreshRestHeartRate(uint16_t value); // 刷新静息心率 void HeartbeatImageAnimatorStart(void); // 心形动画启动 void HeartbeatImageAnimatorStop(void); // 心形动画停止 void InitRefreshInterface(void); private: typedef struct { uint8_t fontSize; int16 x; int16 y; int16 width; int16 height; } LabelInfo; int32_t InitHeartRateData(void); void SetLabel(UILabel *label, LabelInfo labelInfo); void HeartRateLabelDisplay(void); void HeartRateCoordinate(void); void HeartRateElectrocardiogram(void); void InsertTopAndBottomRateImage(void); void UpdataTopAndBottomRate(void); void ElectrocardiogramOnePoint(Point *rateData, uint16_t index); void ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume); int32_t HeartRateDataProc(void); void HeartbeatImageAnimator(void); private: Point heartRateData[HEART_AVE_NUM]; Point rateDataTmp[HEART_AVE_NUM]; bool viewiInitStatus{false}; bool resLoadStatus{false}; UIChartPolyline *chart{nullptr}; uint16_t dataNume; // 心率曲线记录数据总个数 uint16_t currIndex; // 当前已显示心率曲线心率个数 UIChartDataSerial *dataSerial[HEART_AVE_NUM]{nullptr}; UIChartDataSerial *dataTopAndbottom{nullptr}; UIImageView *imageViewTop{nullptr}; UIImageView *imageViewBottom{nullptr}; uint16_t serialIndex; UIImageAnimatorView *imageAnimator{nullptr}; UIImageView *imageViewCoordinate{nullptr}; UILabel *topRate{nullptr}; UILabel *bottomRate{nullptr}; UILabel *ratePerSec{nullptr}; UILabel *ratePerSecText{nullptr}; UILabel *restRate{nullptr}; UILabel *restRateText1{nullptr}; UILabel *restRateText2{nullptr}; uint16_t maxRate; uint16_t minRate; }; } // namespace OHOS #endif // HEART_RATE_VIEW_H