The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Graphics::Grid::Viewport - Viewport

VERSION

version 0.001

SYNOPSIS

    use Graphics::Grid::Viewport;
    use Graphics::Grid::GPar;
    
    my $vp = Graphics::Grid::Viewport->new(
            x => 0.6, y => 0.6,
            width => 1, height => 1,
            angle => 45,
            gp => Graphics::Grid::GPar->new(col => "red") );

DESCRIPTION

Viewports describe rectangular regions on a graphics device and define a number of coordinate systems within those regions.

ATTRIBUTES

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.

width

A Grahpics::Grid::Unit object specifying width.

Default to unit(1, "npc").

height

Similar to the width attribute except that it is for height.

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.

gp

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

clip

xscale

A numeric array ref of length two indicating the minimum and maximum on the x-scale. The limits may not be identical.

Default is [0, 1].

yscale

A numeric array ref of length two indicating the minimum and maximum on the y-scale. The limits may not be identical.

Default is [0, 1].

angle

A numeric value indicating the angle of rotation of the viewport. Positive values indicate the amount of rotation, in degrees, anticlockwise from the positive x-axis. Default is 0.

layout

A Graphics::Grid::Layout object which splits the viewport into subregions.

layout_pos_row

Indices of rows occupied by this viewport in its parent's layout.

layout_pos_col

Indices of columns occupied by this viewport in its parent's layout.

name

A string to uniquely identify the viewport once it has been pushed onto the viewport tree. If not specified, it would be assigned automatically.

SEE ALSO

Graphics::Grid

Graphics::Grid::ViewportLike

AUTHOR

Stephan Loyd <sloyd@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018-2023 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.