| #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) |
| {} |