#ifndef U_CORE_FONTCONFIG_H #define U_CORE_FONTCONFIG_H #include #include #include namespace uLib { /** * @struct FontConfig * @brief Basic font configuration for text properties. */ struct FontConfig { std::string family; int size; bool bold; bool italic; FontConfig() : family("Arial"), size(10), bold(false), italic(false) {} FontConfig(const std::string& fam, int sz, bool b = false, bool i = false) : family(fam), size(sz), bold(b), italic(i) {} bool operator==(const FontConfig& other) const { return family == other.family && size == other.size && bold == other.bold && italic == other.italic; } bool operator!=(const FontConfig& other) const { return !(*this == other); } template void serialize(Archive& ar, const unsigned int version) { ar & boost::serialization::make_nvp("family", family); ar & boost::serialization::make_nvp("size", size); ar & boost::serialization::make_nvp("bold", bold); ar & boost::serialization::make_nvp("italic", italic); } }; inline std::ostream& operator<<(std::ostream& os, const FontConfig& f) { os << f.family << " " << f.size; if (f.bold) os << " Bold"; if (f.italic) os << " Italic"; return os; } } // namespace uLib #endif // U_CORE_FONTCONFIG_H