SvgText.java

package pro.verron.asciidoc.converters.svg;

import java.util.List;

/// SVG {@code <text>} element model.
///
/// @param x        x coordinate
/// @param y        y coordinate
/// @param fontSize font size
/// @param fill     fill color
/// @param content  text content
/// @param opts     additional SVG attributes
public record SvgText(
        String x,
        String y,
        String fontSize,
        String fill,
        String content,
        SvgAttributes opts
)
        implements SvgElement {

    /// Constructs an [SvgText] element with variable attributes.
    ///
    /// @param x        x coordinate
    /// @param y        y coordinate
    /// @param fontSize font size
    /// @param fill     fill color
    /// @param content  text content
    /// @param opts     additional SVG attributes
    public SvgText(
            String x,
            String y,
            String fontSize,
            String fill,
            String content,
            SvgAttribute... opts
    ) {
        this(x, y, fontSize, fill, content, new SvgAttributes(opts));
    }

    @Override
    public String markup() {
        return "text";
    }

    @Override
    public SvgAttributes attributes() {
        var attrs = new SvgAttributes();
        attrs.add("x", x());
        attrs.add("y", y());
        attrs.add("font-size", fontSize());
        attrs.add("fill", fill());
        attrs.addAll(opts);
        return attrs;
    }

    @Override
    public List<SvgElement> children() {
        return List.of(new SvgContent(content()));
    }
}