blob: 0316a5fb604c6036e7e199b728228fc5cd38e7f6 [file] [log] [blame] [edit]
/*
* Copyright 2024 Rive
*/
#include "gm.hpp"
#include "gmutils.hpp"
#ifdef WITH_RIVE_TEXT
#include "assets/roboto_flex.ttf.hpp"
#include "assets/montserrat.ttf.hpp"
#include "common/testing_window.hpp"
#include "rive/text/font_hb.hpp"
#include "rive/text/raw_text.hpp"
using namespace rivegm;
constexpr static char LOREM_IPSUM[] =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam lorem "
"magna, pharetra at eros a, malesuada vehicula ante. Cras pharetra metus "
"eu augue venenatis, sed semper justo vulputate. Suspendisse a velit "
"neque. In massa odio, auctor ac tincidunt ac, cursus sit amet sapien. "
"Donec in sem vitae nisi commodo feugiat. Lorem ipsum dolor sit amet, "
"consectetur adipiscing elit.";
class FeatherTextGM : public GM
{
public:
FeatherTextGM(rive::Span<uint8_t> fontBytes) :
GM(1600, 1840), m_text(TestingWindow::Get()->factory())
{
m_paint->color(0xff000000);
m_text.maxWidth(720);
m_text.sizing(rive::TextSizing::fixed);
m_text.append(LOREM_IPSUM,
ref_rcp(m_paint.get()),
HBFont::Decode(fontBytes),
40.0f);
}
void updateFrameOptions(TestingWindow::FrameOptions* options) const override
{
// Force the RawText to clockwise.
options->clockwiseFillOverride = true;
}
void onDraw(rive::Renderer* renderer) override
{
renderer->translate(40, 40);
for (int i = 0; i < 3; ++i)
{
m_paint->feather(powf(2.2f, i * 2 + 0) - .99999f);
m_text.render(renderer);
renderer->translate(800, 0);
m_paint->feather(powf(2.2f, i * 2 + 1) - .99999f);
m_text.render(renderer);
renderer->translate(-800, 600);
}
}
private:
rive::RawText m_text;
Paint m_paint;
};
GMREGISTER(feathertext_roboto,
return new FeatherTextGM(assets::roboto_flex_ttf()))
GMREGISTER(feathertext_montserrat,
return new FeatherTextGM(assets::montserrat_ttf()))
#endif