#include "rive/text/text_style_axis.hpp"
#include "rive/text/text_style.hpp"
#include "rive/container_component.hpp"

using namespace rive;

StatusCode TextStyleAxis::onAddedDirty(CoreContext* context)
{
  StatusCode code = Super::onAddedDirty(context);
#ifndef WITH_RIVE_EDITOR
  // Runtime-only; editor build registers via editorParentChanged.
  if (code == StatusCode::Ok)
  {
    if (!parent()->is<TextStyle>())
    {
      return StatusCode::InvalidObject;
    }
    auto style = parent()->as<TextStyle>();
    style->addVariation(this);
  }
#endif
  return code;
}

void TextStyleAxis::tagChanged()
{
  parent()->addDirt(ComponentDirt::TextShape);
}

void TextStyleAxis::axisValueChanged()
{
  parent()->addDirt(ComponentDirt::TextShape);
}