NAME

Image::Base::Prima::Drawable -- draw into Prima window, image, etc

SYNOPSIS

use Image::Base::Prima::Drawable;
my $image = Image::Base::Prima::Drawable->new
              (-drawable => $d);
$image->line (0,0, 99,99, '#FF00FF');
$image->rectangle (10,10, 20,15, 'white');

CLASS HIERARCHY

Image::Base::Prima::Drawable is a subclass of Image::Base,

Image::Base
  Image::Base::Prima::Drawable

DESCRIPTION

Image::Base::Prima::Drawable extends Image::Base to draw into a Prima::Drawable drawable, meaning a widget window, off-screen image, printer, postscript accumulator, etc.

The native Prima drawing has many more features, but this module can point some Image::Base style code at a Prima image etc.

X,Y coordinates are the usual Image::Base style 0,0 at the top-left corner. Prima works from 0,0 as the bottom-left but Image::Base::Prima::Drawable converts. No attention is paid to the Prima translate() origin change, which ends up meaning the top-left shifts up etc with the translate. That seems reasonably logical, is it the best way though?

None of the drawing functions here do a $drawable->begin_paint() or a $drawable->begin_doc() (for Prima::PS::Drawable). That's left to the application. A begin_paint() of course happens automatically in an onPaint handler call. The symptom of forgetting a begin_paint() is generally that lines, rectangles and ellipses don't draw anything, though xy() might come out because it uses $drawable->pixel() (but don't rely on that). Forgetting a begin_doc() for PS output may cause various warnings about undef.

Colours

Colour names for drawing are

Blue             Prima colour constants cl::Blue etc
#RRGGBB          hex
#RRRRGGGGBBBB    hex

Internally Prima works in 8-bit RGB components and drawables with less than 24-bits per pixel then reduce further. See "Color space" in Prima::Drawable for details and the cl:: colour constant names.

FUNCTIONS

See "FUNCTIONS" in Image::Base for the behaviour common to all Image-Base classes.

$image = Image::Base::Prima::Drawable->new (key=>value,...)

Create and return a new image object. A Prima::Drawable object must be given.

$image = Image::Base::Prima::Drawable->new
           (-drawable => $d);
$colour = $image->xy ($x, $y)
$image->xy ($x, $y, $colour)

Get or set the pixel at $x,$y.

Currently colours returned by a get are always 2-digit hex #RRGGBB. Would names "Blue" for cl::Blue etc be better for those particular colours?

ATTRIBUTES

-drawable (Prima::Drawable object)

The target drawable.

-width (integer)
-height (integer)

The width and height of the underlying drawable. Setting these resizes the drawable (as per $drawable->size, see "Other properties" in Prima::Drawable).

SEE ALSO

Image::Base, Prima::Drawable, Image::Base::Prima::Image

Image::Base::Gtk2::Gdk::Drawable, Image::Base::X11::Protocol::Drawable

HOME PAGE

http://user42.tuxfamily.org/image-base-prima/index.html

LICENSE

Image-Base-Prima is Copyright 2010, 2011, 2012, 2015 Kevin Ryde

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

Image-Base-Prima 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with Image-Base-Prima. If not, see <http://www.gnu.org/licenses/>.