blob: ac88602b3c63b7de6e0a9ffcf0e06654492bbe3d [file] [log] [blame]
#include "rive/shapes/paint/shape_paint_mutator.hpp"
#include "rive/component.hpp"
#include "rive/shapes/paint/shape_paint.hpp"
using namespace rive;
StatusCode ShapePaintMutator::initPaintMutator(Component* component)
{
m_flags = Flags::translucent | Flags::visible;
auto parent = component->parent();
m_component = component;
if (parent->is<ShapePaint>())
{
if (parent->as<ShapePaint>()->renderPaint() != nullptr)
{
DEBUG_PRINT(
"ShapePaintMutator::initPaintMutator - ShapePaint has already "
"been asigned a mutator. Does this file have multiple solid "
"color/gradients in one single fill/stroke?");
return StatusCode::InvalidObject;
}
// Set this object as the mutator for the shape paint and get a
// reference to the paint we'll be mutating.
m_renderPaint = parent->as<ShapePaint>()->initRenderPaint(this);
return StatusCode::Ok;
}
return StatusCode::MissingObject;
}
void ShapePaintMutator::renderOpacity(float value)
{
if (m_renderOpacity == value)
{
return;
}
m_renderOpacity = value;
renderOpacityChanged();
}
bool ShapePaintMutator::isTranslucent() const
{
return (m_flags & Flags::translucent) == Flags::translucent;
}
bool ShapePaintMutator::isVisible() const
{
return (m_flags & Flags::visible) == Flags::visible;
}