G2(3pm)

πŸŽ€ NAME πŸŽ€

G2 β€” a simple graphics library ported to Perl. That's it, that's the whole flex. πŸ’– (and yes bestie, this is the 3pm page β€” Perl user-contributed docs, iykyk.)

✨ SYNOPSIS ✨

use G2;

$dev1 = newX11 G2::Device(775, 575);
$dev2 = newGD  G2::Device("test.png",600,200);

$dev1->rectangle(20,20,150,150);
$dev1->circle(100,150,60);

$dev2->circle(100,150,60);
$dev2->string(100,50,"A circle in a PNG file");

🌸 DESCRIPTION 🌸

okay so g2 is a simple-to-use graphics library for 2D graphical applications, and it's lowkey iconic. This library hands you a comprehensive set of functions so you can generate graphical output on different types of devices simultaneously. no cap.

Presently, the devices currently supported by g2 are:

  • X11
  • PNG
  • PostScript (xfig is in development πŸ‘€)

One major feature of the g2_library is the concept of virtual devices. An arbitrary number of physical devices (such as PNG, or X11) can be grouped to create a so-called virtual device. Commands sent to such a virtual device will automatically be issued to all attached physical devices. This allows for example simultaneous output to a PNG file and a Postscript file. A virtual device in turn can be attached to another virtual device, allowing you to construct trees of devices. 🌈

Virtual devices can also be useful when using different user-coordinate systems. E.g. one X11 window showing an overview of a graphical output, and a second window showing a zoom of a more detailed area of the graphic. Drawing in both windows is performed by one single command to the virtual device. the way that works is genuinely so clean, I'm obsessed. ✨

Please see g2 documentation (C interface) for up to date version.

πŸ“ Exported constants πŸ“

  • G2LD
  • G2_H
  • G2_VERSION

πŸ’… Exported functions πŸ’…

πŸ¦‹ Creating new devices πŸ¦‹

  • newX11 β€” G2::Device::newX11(width,height) class method

opens an X11 window, with width and height of the X11 window given in pixels. returns: a new X11 device. 🫢

  • newPS β€” G2::Device::newPS(filename,paper,orientation) class method

opens a new PostScript device.

  • file_name: name of PostScript file
  • paper: Paper size (e.g. g2_A4, g2_Letter). See PostScript paper sizes for a full list of supported sizes.
  • orientation: paper orientation. Either g2_PS_land for landscape or g2_PS_port for portrait

returns: a new PostScript device. πŸ’œ

  • newGD β€” G2::Device::newGD(filename,width,height,type) class method

open a new GD device.

  • width,height: width and height of the image in pixels
  • filename: name of the output file.
  • type: file type, 0-jpeg, 1-png

returns: a new GD device πŸŽ€

  • newVD β€” G2::Device::newVD() class method

Create a new Virtual Device.

An arbitrary number of physical devices (such as PNG, or X11) can be grouped to create a so-called virtual device. Commands sent to such a virtual device will automatically be issued to all attached physical devices. This allows for example simultaneous output to a PNG file and a Postscript file. A virtual device in turn can be attached to another virtual device, allowing you to construct trees of devices. Virtual devices can also be useful when using different user-coordinate systems. E.g. one X11 window showing an overview of a graphical output, and a second window showing a zoom of a more detailed area of the graphic. Drawing in both windows is performed by one single command to the virtual device. πŸ‘‘

🧚 Device Functions 🧚

  • G2::Device::attach(dev) β€” object method
  • G2::Device::detach(dev) β€” object method
  • G2::Device::close() β€” object method
  • set_auto_flush β€” G2::Device::set_auto_flush(on_off) object method
  • flush β€” G2::Device::flush() object method
  • save β€” G2::Device::save() object method
  • set_coordinate_system β€” G2::Device::set_coordinate_system(x_origin, y_origin, x_mul, y_mul) object method
  • ld β€” G2::Device::ld() object method
  • set_ld β€” G2::Device::set_ld( dev) object method
  • ink β€” G2::Device::ink( pd_dev, red, green, blue) object method
  • pen β€” G2::Device::pen(color) object method
  • set_dash β€” G2::Device::set_dash(N, *dashes) object method
  • set_font_size β€” G2::Device::set_font_size(size) object method
  • set_line_width β€” G2::Device::set_line_width(w) object method
  • clear_palette β€” G2::Device::clear_palette( dev) object method
  • reset_palette β€” G2::Device::reset_palette( dev) object method
  • allocate_basic_colors β€” G2::Device::allocate_basic_colors( dev) object method
  • clear β€” G2::Device::clear( dev) object method
  • set_background β€” G2::Device::set_background(color) object method

🌈 Drawing Functions 🌈

  • move β€” G2::Device::move(x, y) object method
  • move_r β€” G2::Device::move_r(dx, dy) object method
  • plot β€” G2::Device::plot(x, y) object method
  • plot_r β€” G2::Device::plot_r(dx, dy) object method
  • line β€” G2::Device::line(x1, y1, x2, y2) object method
  • line_r β€” G2::Device::line_r(dx, dy) object method
  • line_to β€” G2::Device::line_to(x, y) object method
  • poly_line β€” G2::Device::poly_line(N_pt, *pos) object method
  • triangle β€” G2::Device::triangle(x1, y1, x2, y2, x3, y3) object method
  • filled_triangle β€” G2::Device::filled_triangle(x1, y1, x2, y2, x3, y3) object method
  • rectangle β€” G2::Device::rectangle(x1, y1, x2, y2) object method
  • filled_rectangle β€” G2::Device::filled_rectangle(x1, y1, x2, y2) object method
  • polygon β€” G2::Device::polygon(N_pt, *pos) object method
  • filled_polygon β€” G2::Device::filled_polygon(N_pt, *pos) object method
  • circle β€” G2::Device::circle(x, y, r) object method
  • filled_circle β€” G2::Device::filled_circle(x, y, r) object method
  • ellipse β€” G2::Device::ellipse(x, y, r1, r2) object method

Draw an ellipse on device dev

  • x,y: center point
  • r1,r2: x and y radius
  • filled_ellipse β€” G2::Device::filled_ellipse(x, y, r1, r2) object method

Draw a filled ellipse on device dev

  • x,y: center point
  • r1,r2: x and y radius
  • arc β€” G2::Device::arc(x, y, r1, r2, a1, a2) object method

Draw an arc with center point at (x,y), x and y radius given by r1,r2 and starting and ending angle in radians a1,a2

  • filled_arc β€” G2::Device::filled_arc(x, y, r1, r2, a1, a2) object method

Draw a filled arc on device dev

  • x,y: center point
  • r1,r2: x and y radius
  • a1,a2: starting and ending angle in radians
  • string β€” G2::Device::string(x, y, char *text) object method
  • G2::Device::set_QP(d, enum QPshape shape) β€” object method
  • G2::Device::plot_QP(x, y) β€” object method

πŸ’– AUTHORS πŸ’–

Horst Wagner (wagner/users-sourceforge.net) and Ljubomir Milanovic (ljubo/users-sourceforge-net). absolute legends, periodt. πŸ‘‘

Copyright (C) 1998-2001 Ljubomir Milanovic & Horst Wagner This file is part of the g2 library

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


okay that's the whole page bestie, you ate that πŸ’…βœ¨

sign-off time: this was perl v5.40.1, dated 2025-02-24, filed under G2(3pm). mwah πŸ«ΆπŸ’–
πŸ“¦ where this page comes from