diff --git a/data/fonts/Font-Awesome-5-Regular.otf b/data/fonts/Font-Awesome-5-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..6ed924bb5aa6a694a024f02ebc0333d4c60c661b Binary files /dev/null and b/data/fonts/Font-Awesome-5-Regular.otf differ diff --git a/data/fonts/Font-Awesome-5-Solid.otf b/data/fonts/Font-Awesome-5-Solid.otf new file mode 100644 index 0000000000000000000000000000000000000000..1916c44949b404c10c041ca67a484856134e44a2 Binary files /dev/null and b/data/fonts/Font-Awesome-5-Solid.otf differ diff --git a/data/fonts/Roboto-Bold.ttf b/data/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d3f01ad245b628f386ac95786f53167038720eb2 Binary files /dev/null and b/data/fonts/Roboto-Bold.ttf differ diff --git a/data/fonts/Roboto-Regular.ttf b/data/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2c97eeadffe1a34bd67d3ff1c3887fd53e22c2ca Binary files /dev/null and b/data/fonts/Roboto-Regular.ttf differ diff --git a/extern/glow-extras b/extern/glow-extras index 9375016f32691bd4f268339e98607ec4d3331991..a8e6e907d1ba5fbcb8c9bea476b271cff86f5cbc 160000 --- a/extern/glow-extras +++ b/extern/glow-extras @@ -1 +1 @@ -Subproject commit 9375016f32691bd4f268339e98607ec4d3331991 +Subproject commit a8e6e907d1ba5fbcb8c9bea476b271cff86f5cbc diff --git a/samples/wip/vector-2D/Vector2DSample.cc b/samples/wip/vector-2D/Vector2DSample.cc index 1f415ee15aeea6dbb0692880b9cfd8af216ae513..6c3bdb45785321e8c71dbf0ac9e59c9748d738ad 100644 --- a/samples/wip/vector-2D/Vector2DSample.cc +++ b/samples/wip/vector-2D/Vector2DSample.cc @@ -1,17 +1,28 @@ #include "Vector2DSample.hh" #include <glow/common/scoped_gl.hh> +#include <glow/common/str_utils.hh> +#include <glow-extras/vector/debug.hh> #include <glow-extras/vector/graphics2D.hh> #include <typed-geometry/tg.hh> +static std::string const sDataPath = glow::util::pathOf(__FILE__) + "/../../../data/"; + void Vector2DSample::init() { setGui(GlfwApp::Gui::ImGui); GlfwApp::init(); // call to base! - // TODO + // load fonts + mVectorRenderer.loadFontFromFile("sans", sDataPath + "fonts/Roboto-Regular.ttf"); + mVectorRenderer.loadFontFromFile("sans-bold", sDataPath + "fonts/Roboto-Bold.ttf"); + + mVectorRenderer.loadFontFromFile("fa", sDataPath + "fonts/Font-Awesome-5-Solid.otf"); + mVectorRenderer.loadFontFromFile("fa-regular", sDataPath + "fonts/Font-Awesome-5-Regular.otf"); + + mVectorRenderer.addFallbackFont("sans", "fa"); // if not found in sans, use fa } void Vector2DSample::render(float elapsedSeconds) @@ -37,6 +48,16 @@ void Vector2DSample::render(float elapsedSeconds) ll.set_stroke_width(3); ll.stroke(); + ll.set_fill_color(0, 0, 0, 1); + ll.set_font_face("sans"); + ll.set_font_size(20.f); + ll.text(10, 250, "Hello World!"); + + ll.set_font_face("fa"); + ll.text(10, 200, u8"\uf080 \uf126 \uf382 \uf6d5"); + ll.set_font_face("sans"); + ll.text(10, 225, u8"Hello World! \uf080"); + mVectorRenderer.render(img, getWindowWidth(), getWindowHeight()); } @@ -110,6 +131,22 @@ void Vector2DSample::render(float elapsedSeconds) glow::vector::paint2D::box_gradient({{x - 25, y - 15}, {x + 25, y + 15}}, 5, 8, tg::color4::red, tg::color4::blue)); g.draw(tg::aabb2({x - 40, y - 30}, {x + 40, y + 30}), {0, 0, 0}); next(); + + // text + g.text({x, y}, "I am Text.", "sans"); + next(); + + g.text({x, y}, "I am Centered.", {"sans", 14, glow::vector::text_align::middle_center}); + next(); + + g.text_box({x, y}, 100, "I is automatically wrapped around.", {"sans", 18, glow::vector::text_align::middle_center}); + next(); + + g.text_box({x, y}, 100, "I has\nnew lines\nin me.", {"sans", 18, glow::vector::text_align::middle_center}); + next(); + + g.text_box({x, y}, 100, u8"\uf080 \uf126 \uf382 \uf6d5", {"fa", 28, glow::vector::text_align::middle_center}); + next(); } // TODO: more