// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include namespace gui { class RawFont; /// Simple font interface for FontManager && RawFont class Font { public: enum class Weight { Light, Regular, Bold }; public: Font(const std::string &name, unsigned size, Weight weight = Weight::Regular); explicit Font(unsigned size, Weight weight = Weight::Regular); explicit Font(RawFont *font); auto setFont(std::string name, unsigned size, Weight weight = Weight::Regular) -> void; auto setFont(unsigned size, Weight weight = Weight::Regular) -> void; auto setSize(unsigned size) -> void; auto setWeight(Weight weight) -> void; auto raw() -> RawFont *; [[nodiscard]] auto getSize() const { return size; } [[nodiscard]] auto getWeight() const { return weight; } [[nodiscard]] auto getName() const { return name; } private: RawFont *font = nullptr; std::string name; unsigned size = 0; Weight weight = Weight::Regular; [[nodiscard]] auto toWeight(const std::string &val) -> Font::Weight; }; } // namespace gui inline auto c_str(enum gui::Font::Weight w) -> const char * { switch (w) { case gui::Font::Weight::Light: return "light"; case gui::Font::Weight::Regular: return "regular"; case gui::Font::Weight::Bold: return "bold"; } return ""; }