Mercurial > repos > dereeper > sniploid2
diff GD/Image.pm @ 0:e94de0ea3351 draft default tip
Uploaded
author | dereeper |
---|---|
date | Wed, 11 Sep 2013 09:08:15 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GD/Image.pm Wed Sep 11 09:08:15 2013 -0400 @@ -0,0 +1,200 @@ +# DO NOT EDIT! THIS FILE IS AUTOGENERATED BY GD/Image.pm.PLS +package GD::Image; + +use strict; +use GD; +use Symbol 'gensym','qualify_to_ref'; +use vars '$VERSION'; +$VERSION = '2.38'; + +=head1 NAME + +GD::Image - Image class for the GD image library + +=head1 SYNOPSIS + +See L<GD> + +=head1 DESCRIPTION + +See L<GD> + +=head1 AUTHOR + +The GD.pm interface is copyright 1995-2005, Lincoln D. Stein. It is +distributed under the same terms as Perl itself. See the "Artistic +License" in the Perl source code distribution for licensing terms. + +The latest versions of GD.pm are available on CPAN: + + http://www.cpan.org + +=head1 SEE ALSO + +L<GD> +L<GD::Polyline>, +L<GD::SVG>, +L<GD::Simple>, +L<Image::Magick> + +=cut + +# Copyright 1995 Lincoln D. Stein. See accompanying README file for +# usage information + +*stringTTF = \&GD::Image::stringFT; + +sub _make_filehandle { + shift; # get rid of class + no strict 'refs'; + my $thing = shift; + return $thing if defined(fileno $thing); + + # otherwise try qualifying it into caller's package + my $fh; + { + local $^W = 0; # to avoid uninitialized variable warning from Symbol.pm + $fh = qualify_to_ref($thing,caller(2)); + } + return $fh if defined(fileno $fh); + + # otherwise treat it as a file to open + $fh = gensym; + open($fh,$thing) || return; + return $fh; +} + +sub new { + my $pack = shift; + if (@_ == 1) { + if (my $type = _image_type($_[0])) { + my $method = "newFrom${type}Data"; + return unless $pack->can($method); + return $pack->$method($_[0]); + } + return unless my $fh = $pack->_make_filehandle($_[0]); + my $magic; + return unless read($fh,$magic,4); + return unless my $type = _image_type($magic); + seek($fh,0,0); + my $method = "newFrom${type}"; + return $pack->$method($fh); + } + return $pack->_new(@_); +} + +sub newTrueColor { + my $pack = shift; + return $pack->_new(@_, 1); +} + +sub newPalette { + my $pack = shift; + return $pack->_new(@_, 0); +} + +sub newFromGd { + croak("Usage: newFromGd(class,filehandle)") unless @_==2; + my($class,$f) = @_; + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromGd($fh); +} + +sub newFromGd2 { + croak("Usage: newFromGd2(class,filehandle)") unless @_==2; + my($class,$f) = @_; + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromGd2($fh); +} + +sub newFromGd2Part { + croak("Usage: newFromGd2(class,filehandle,srcX,srcY,width,height)") unless @_==6; + my($class,$f) = splice(@_,0,2); + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromGd2Part($fh,@_); +} + +sub ellipse ($$$$$) { + my ($self,$cx,$cy,$width,$height,$color) = @_; + $self->arc($cx,$cy,$width,$height,0,360,$color); +} + +# draws closed polygon with the specified color +sub polygon { + my $self = shift; + my($p,$c) = @_; + $self->openPolygon($p, $c); + $self->line( @{$p->{'points'}->[0]}, + @{$p->{'points'}->[$p->{'length'}-1]}, $c); +} + +sub width { + my $self = shift; + my @bounds = $self->getBounds; + $bounds[0]; +} + +sub height { + my $self = shift; + my @bounds = $self->getBounds; + $bounds[1]; +} + +sub _image_type { + my $data = shift; + my $magic = substr($data,0,4); + return 'Png' if $magic eq "\x89PNG"; + return 'Jpeg' if $magic eq "\377\330\377\340"; + return 'Jpeg' if $magic eq "\377\330\377\341"; + return 'Jpeg' if $magic eq "\377\330\377\355"; + return 'Jpeg' if $magic eq "\377\330\377\356"; + return 'Gif' if $magic eq "GIF8"; + return 'Gd2' if $magic eq "gd2\000"; + return 'Xpm' if substr($data,0,9) eq "/* XPM */"; + return; +} + + +sub clone { + croak("Usage: clone(\$image)") unless @_ == 1; + my $self = shift; + my ($x,$y) = $self->getBounds; + my $new = $self->new($x,$y); + return unless $new; + $new->copy($self,0,0,0,0,$x,$y); + return $new; +} + +sub newFromPng { + croak("Usage: newFromPng(class,filehandle,[truecolor])") unless @_>=2; + my($class) = shift; + my($f) = shift; + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromPng($fh,@_); +} + +sub newFromJpeg { + croak("Usage: newFromJpeg(class,filehandle,[truecolor])") unless @_>=2; + my($class) = shift; + my($f) = shift; + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromJpeg($fh,@_); +} + +sub newFromGif { + croak("Usage: newFromGif(class,filehandle,[truecolor])") unless @_>=2; + my($class) = shift; + my($f) = shift; + my $fh = $class->_make_filehandle($f); + binmode($fh); + $class->_newFromGif($fh,@_); +} + +# Autoload methods go after __END__, and are processed by the autosplit program. +1; +__END__