#! perl

use v5.26;
use Object::Pad;
use utf8;
use Carp;

role Text::Layout::ElementRole;

# Implementors of this role must provide the following methods:

method parse( $ctx, $el, $atts );
#
# $ctx:  context (current values for font, size, etc.)
# $el :  the elemant name, e.g. "img"
# $atts: anything that follows the tag, presumably atributes
#
# If the element is "<foo blar blech/>" then $el = "foo"
# and $atts = "bar blech".
#
# Should return a hash reference with whatever is useful.

method render( $hash, $gfx, $x, $y );
#
# $hash: the hash as delivered by the parser
# $gfx : PDF graphics context
# $x   : $x origin
# $y   : $y origin
#
# Should return the advance box (array ref).

method bbox( $hash );
#
# $hash: the hash as delivered by the parser
#
# Should return a hash ref with
#  bbox : the bounding box of the image
#  bb   : the bounding box after scaling/displacement
#  abox : the advance box

1;