// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "ImageMap.hpp" #include #include #include #include namespace gui { class ImageManager { private: std::map specifierMap = {{ImageTypeSpecifier::None, "None"}, {ImageTypeSpecifier::W_G, "_W_G"}, {ImageTypeSpecifier::B_G, "_B_G"}, {ImageTypeSpecifier::W_M, "_W_M"}, {ImageTypeSpecifier::B_M, "_B_M"}}; std::string checkAndAddSpecifierToName(const std::string &name, ImageTypeSpecifier specifier); ImageMap *createFallbackImage(); std::uint32_t fallbackImageId{0}; protected: std::string mapFolder; std::vector imageMaps; auto getImageMapList(std::string ext1, std::string ext2) -> std::pair, std::vector>; ImageMap *loadPixMap(std::string filename); ImageMap *loadVecMap(std::string filename); void addFallbackImage(); void loadImageMaps(std::string baseDirectory); ImageManager(); public: ImageManager(const ImageManager &) = delete; void operator=(const ImageManager &) = delete; bool init(std::string baseDirectory); static ImageManager &getInstance(); virtual ~ImageManager(); ImageMap *getImageMap(uint32_t id); uint32_t getImageMapID(const std::string &name, ImageTypeSpecifier specifier = ImageTypeSpecifier::None); void clear(); }; } /* namespace gui */