blob: 773717d2ccf1b771bb7b1e3860a9862952b75ac1 [file] [log] [blame]
#include "rive/tess/tess_renderer.hpp"
#include <cassert>
using namespace rive;
TessRenderer::TessRenderer() { m_Stack.emplace_back(RenderState()); }
void TessRenderer::projection(const Mat4& value) { m_Projection = value; }
void TessRenderer::save() { m_Stack.push_back(m_Stack.back()); }
void TessRenderer::restore()
{
assert(m_Stack.size() > 1);
RenderState& state = m_Stack.back();
m_Stack.pop_back();
// We can only add clipping paths so if they're still the same, nothing has
// changed.
if (state.clipPaths.size() != m_Stack.back().clipPaths.size())
{
m_IsClippingDirty = true;
}
}
void TessRenderer::transform(const Mat2D& transform)
{
Mat2D& stackMat = m_Stack.back().transform;
stackMat = stackMat * transform;
}
void TessRenderer::clipPath(RenderPath* path)
{
RenderState& state = m_Stack.back();
state.clipPaths.emplace_back(SubPath(path, state.transform));
m_IsClippingDirty = true;
}
void TessRenderer::drawImage(const RenderImage*, BlendMode, float opacity) {}
void TessRenderer::drawImageMesh(const RenderImage*,
rcp<RenderBuffer> vertices_f32,
rcp<RenderBuffer> uvCoords_f32,
rcp<RenderBuffer> indices_u16,
BlendMode,
float opacity)
{}