49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
#ifndef U_CORE_FONTCONFIG_H
|
|
#define U_CORE_FONTCONFIG_H
|
|
|
|
#include <string>
|
|
#include <ostream>
|
|
#include <boost/serialization/nvp.hpp>
|
|
|
|
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<class Archive>
|
|
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
|