/* * Copyright (c) CompanyNameMagicTag 2025. All rights reserved. * Description: DialBinParserV3 * Author: * Create: 2025-02-06 */ #ifndef GRAPHIC_LITE_DIAL_BIN_PARSER_V3_H #define GRAPHIC_LITE_DIAL_BIN_PARSER_V3_H #include "DialBinParserManager.h" #include "DialModelTime.h" #include "components/ui_abstract_progress.h" #include "DialViewContainer.h" #include "DialDataType.h" #include "DialOHSliceId.h" namespace OHOS { class DialBinParserV3 : public DialBinParserInterface { public: DialBinParserV3(); ~DialBinParserV3() override; bool UpdateDial(const std::string& file, FILE* fp, DialViewGroup* group, DisplayState state) override; bool GetDialPreviewInfo(FILE* fp, DialPreviewInfo* info) override; protected: bool ParseDialHeader(FILE* file); bool ParserDialStaticImg(ContainerInterface &parent); bool ParserDialSequenceImg(ContainerInterface &parent); bool ParserDialRotateImg(ContainerInterface &parent); bool ParserDialOptionImg(ContainerInterface &parent); bool ParserDialDigitalImg(ContainerInterface &parent); bool ParserDialLabel(ContainerInterface &parent); bool ParserDialArcLabel(ContainerInterface &parent); bool ParserDialBoxProgress(ContainerInterface &parent); bool ParserDialArcProgress(ContainerInterface &parent); bool ParserDialVideo(ContainerInterface &parent); bool ParserDialClick(ContainerInterface &parent); bool ParserDialKaleidoscope(ContainerInterface &parent); bool ParserDialContainer(ContainerInterface &parent); bool ParserDialOptions(ContainerInterface &parent); private: void* MallocAndReadBuf(FILE* file, uint32_t readSize); bool SetProgressType(FILE* fp, UIAbstractProgress* view, DialProgressType data); static constexpr uint8_t DIAL_BIN_PARSER_FUNC_NUM = 14; // 14: func max value bool (DialBinParserV3::*funcArray_[DIAL_BIN_PARSER_FUNC_NUM])(ContainerInterface&); void AddToParentWithView(ContainerInterface &parent, uint8_t displayMode, UIView *view); void AddToParentWithDialView(ContainerInterface &parent, uint8_t displayMode, DialView *view, DialDataType bindData, bool isPeriodic); struct { uint8_t *viewType; uint8_t dialViewCount; FILE *file; uint8_t curIndex; } curViewType_; bool ParseTimeIntervals(FILE* fp, uint8_t cnt, TimeChangeListener *listener); bool ParseViewType(uint8_t *viewType, uint8_t dialViewCount, FILE *file); bool ParseContainerSubviews(DialViewContainer *container, uint8_t num); bool ParseOptionsSubviews(ContainerInterface &parent); DialViewGroup* dialGroup_ = nullptr; std::string file_; const uint32_t dirId_ = 0xfef << 20; // 20: offset uint32_t imageOffset_ = 0; DisplayState state_ = DisplayState::NORMAL; }; // class DialBinParserV3 } // namespace OHOS #endif // GRAPHIC_LITE_DIAL_BIN_PARSER_V3_H