The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Graphics::Grid::Grob::Text - Text grob

VERSION

version 0.0000_03

SYNOPSIS

    use Graphics::Grid::Grob::Text;
    use Graphics::Grid::GPar;
    my $text = Graphics::Grid::Grob::Text->new(
            label => "SOMETHING NICE AND BIG",
            x => 0.5, y => 0.5, rot => 45,
            gp => Graphics::Grid::GPar->new(fontsize => 20, col => "grey"));

    # or use the function interface
    use Graphics::Grid::Functions qw(:all);
    my $text = text_grob(%params);

DESCRIPTION

This class represents a text graphical object.

ATTRIBUTES

label

A single string or an array ref of strings. If a an array ref of strings is specified, these multiple strings will be drawn.

x

A Grahpics::Grid::Unit object specifying x-location.

Default to unit(0.5, "npc").

y

A Grahpics::Grid::Unit object specifying y-location.

Default to unit(0.5, "npc").

The reference point is the left-bottom of parent viewport.

just

The justification of the object, which consumes this role, relative to its (x, y) location.

The value is an arrayref in the form of [$hjust, $vjust], where $hjust and $vjust are two numbers for horizontal and vertical justification respectively. Each number is usually from 0 to 1, but can also beyond hat range. 0 means left alignment and 1 means right alighment.

Default is [0.5, 0.5], which means the object's center is aligned to its (x, y) position.

For example, for a rectangle which has $width and $height, and positioned at ($x, $y), the position of its left-bottom corner can be calculated in this way,

    $left   = $x - $hjust * $width;
    $bottom = $y - $vjust * $height;

This attribute also supports some string values. They map to numeric values like below.

    string                          numeric
    ---------------------------     ------------
    left                            [ 0,   0.5 ]
    top                             [ 0.5, 1   ]
    right                           [ 1,   0.5 ]
    bottom                          [ 0.5, 0   ]
    center | centre                 [ 0.5, 0.5 ]
    bottom_left | left_bottom       [ 0,   0   ]
    top_left | left_top             [ 0,   1   ]
    bottom_right | right_bottom     [ 1,   0   ]
    top_right | right_top           [ 1,   1   ]

hjust

A reader accessor for the horizontal justification.

vjust

A reader accessor for vertical justification.

rot

The angle to rotate the text.

gp

An object of Graphics::Grid::GPar. Default is an empty gpar object.

vp

A viewport object. When drawing a grob, if the grob has this attribute, the viewport would be temporily pushed onto the global viewport stack before drawing takes place, and be poped after drawing. If the grob does not have this attribute set, it would be drawn on the existing current viewport in the global viewport stack.

elems

Get number of sub-elements in the grob.

Grob classes shall implement a _build_elems() method to support this attribute.

For this module elems returns the number of texts in label.

SEE ALSO

Graphics::Grid::Grob

AUTHOR

Stephan Loyd <sloyd@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Stephan Loyd.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.