/*
 * Copyright 2022 Rive
 */

#include "rive/factory.hpp"
#include "rive/math/aabb.hpp"
#include "rive/math/raw_path.hpp"
#ifdef WITH_RIVE_TEXT
#include "rive/text/font_hb.hpp"
#endif

using namespace rive;

rcp<RenderPath> Factory::makeRenderPath(const AABB& r)
{
    RawPath rawPath;
    rawPath.addRect(r);
    return makeRenderPath(rawPath, FillRule::nonZero);
}

rcp<Font> Factory::decodeFont(Span<const uint8_t> span)
{
#ifdef WITH_RIVE_TEXT
    return HBFont::Decode(span);
#else
    return nullptr;
#endif
}

rcp<AudioSource> Factory::decodeAudio(Span<const uint8_t> span)
{
#ifdef WITH_RIVE_AUDIO
    return rcp<AudioSource>(new AudioSource(SimpleArray<uint8_t>(span.data(), span.size())));
#else
    return nullptr;
#endif
}
