srctree

Robin Linden parent b5267fa3 10756bde
gfx/sfml: Support the bold, underlined, and strikethrough text styles

inlinesplit
gfx/font.h added: 19, removed: 3, total 16
@@ -21,6 +21,9 @@ struct FontSize {
enum class FontStyle {
Normal = 0,
Italic = 1 << 0,
Bold = 1 << 1,
Underlined = 1 << 2,
Strikethrough = 1 << 3,
};
 
constexpr FontStyle operator|(FontStyle lhs, FontStyle rhs) {
 
gfx/font_test.cpp added: 19, removed: 3, total 16
@@ -12,14 +12,24 @@ using etest::expect_eq;
int main() {
etest::test("used as a bitset", [] {
auto style = gfx::FontStyle::Normal;
expect((style & gfx::FontStyle::Bold) != gfx::FontStyle::Bold);
expect((style & gfx::FontStyle::Italic) != gfx::FontStyle::Italic);
 
style |= gfx::FontStyle::Italic;
expect((style & gfx::FontStyle::Bold) != gfx::FontStyle::Bold);
expect((style & gfx::FontStyle::Italic) == gfx::FontStyle::Italic);
 
style |= gfx::FontStyle::Bold;
expect((style & gfx::FontStyle::Bold) == gfx::FontStyle::Bold);
expect((style & gfx::FontStyle::Italic) == gfx::FontStyle::Italic);
 
style &= ~gfx::FontStyle::Italic;
expect((style & gfx::FontStyle::Bold) == gfx::FontStyle::Bold);
expect((style & gfx::FontStyle::Italic) != gfx::FontStyle::Italic);
 
style ^= gfx::FontStyle::Bold;
expect((style & gfx::FontStyle::Bold) != gfx::FontStyle::Bold);
expect((style & gfx::FontStyle::Italic) != gfx::FontStyle::Italic);
expect_eq(style, gfx::FontStyle::Normal);
});
 
 
gfx/sfml_canvas.cpp added: 19, removed: 3, total 16
@@ -89,6 +89,9 @@ sf::Text::Style to_sfml(FontStyle style) {
};
 
transfer_enum_bit.template operator()<FontStyle::Italic, sf::Text::Style::Italic>();
transfer_enum_bit.template operator()<FontStyle::Bold, sf::Text::Style::Bold>();
transfer_enum_bit.template operator()<FontStyle::Underlined, sf::Text::Style::Underlined>();
transfer_enum_bit.template operator()<FontStyle::Strikethrough, sf::Text::Style::StrikeThrough>();
return sf_style;
}