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