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::Simple -- a simple , device-independent graphics API for Perl

SYNOPSIS

        use Graphics::Simple;

        line 100,100,200,200;
        circle 50,50,25;
        stop(); clear(); # Wait for a button press, clear the page

DESCRIPTION

Ever had a Commodore C-64 or Vic-20 or some other of the machines of that era? Where doing graphics was as simple as

        line 20,20,50,30;

and you didn't have to go through things like XOpenDisplay etc.

This module tries to bring back the spirit of that era in a modern environment: this module presents a simple, unified API to several different graphics devices - currently X (using Gtk and Gnome) and PostScript.

The interface is primarily made easy-to-use, starting from the idea that the above line command must work. Therefore, it exports most of the primitives by default (you can turn this off).

However, everything is not sacrificed in the name of simplicity: believing in "simple things simple, complicated things possible", this module also allows multiple windows (all the primitives also work as methods of window objects) as well as raw access to the underlying devices - although the device-independence is then lost. In future plans are some sort of interactions with the devices with which it is possible as well as the addition of more devices.

line [$win_to], [$name], $x1, $y1, $x2, $y2, ...

Draws a line through the points given.

line_to [$win], [$name], $x1, $y1, $x2, $y2, ...

Called several times in a sequence, starts and continues adding points to a line. If called with no coordinates, finishes the current line. This is just a convenient wrapper over a line call with all the parameters given - a faster way would just be to collect your parameters to an array.

circle [$win], [$name], $x, $y, $radius

Duh.

ellipse [$win], [$name], $x1, $y1, $x2, $y2

The ellipse enclosed in the rectangle given by its two corners

text [$win], [$name], $x, $y, $string

Duh...

clear, stop

        stop [$win]
        clear [$win]

clear removes all the drawn elements from the window. <wait> waits for a button press. These are usually coupled:

        stop; clear;

set_window, get_window

See the source - undocumented and potentially changing api

push_window, pop_window

Graphics::Simple maintains a simple window stack so that subroutines can easily use

        push_window $win;
        line ...
        pop_window();

to avoid having too many method calls.

color $color;

Set the current color to $color. Currently, the colors known are

        red green blue black white

as well as any RGB color with the X syntax:

        color '#FFFF00';

is yellow. You can also give an array ref of three numbers between 0 and 1 for RGB colors.

BUGS

This is an alpha proof-of-principle version - the API may still change wildly.

AUTHOR

Copyright(C) Tuomas J. Lukka 1999. All rights reserved. This software may be distributed under the same conditions as Perl itself.