1
2#
3# GENERATED WITH PDL::PP! Don't modify!
4#
5package PDL::IO::GD;
6
7@EXPORT_OK  = qw( PDL::PP write_png PDL::PP write_png_ex PDL::PP write_true_png PDL::PP write_true_png_ex  write_png_best write_true_png_best  recompress_png_best  load_lut read_png read_true_png PDL::PP _read_true_png PDL::PP _read_png PDL::PP _gd_image_to_pdl_true PDL::PP _gd_image_to_pdl PDL::PP _pdl_to_gd_image_true PDL::PP _pdl_to_gd_image_lut  read_png_lut PDL::PP _read_png_lut PDL::PP _gdImageColorAllocates PDL::PP _gdImageColorAllocateAlphas PDL::PP _gdImageSetPixels PDL::PP _gdImageLines PDL::PP _gdImageDashedLines PDL::PP _gdImageRectangles PDL::PP _gdImageFilledRectangles PDL::PP _gdImageFilledArcs PDL::PP _gdImageArcs PDL::PP _gdImageFilledEllipses  gdAlphaBlend   gdTrueColor   gdTrueColorAlpha   gdFree   gdFontGetLarge   gdFontGetSmall   gdFontGetMediumBold   gdFontGetGiant   gdFontGetTiny  );
8%EXPORT_TAGS = (Func=>[@EXPORT_OK]);
9
10use PDL::Core;
11use PDL::Exporter;
12use DynaLoader;
13
14
15
16
17   @ISA    = ( 'PDL::Exporter','DynaLoader' );
18   push @PDL::Core::PP, __PACKAGE__;
19   bootstrap PDL::IO::GD ;
20
21
22
23
24=head1 NAME
25
26PDL::IO::GD - Interface to the GD image library.
27
28=head1 SYNOPSIS
29
30 my $pdl = sequence(byte, 30, 30);
31 write_png($pdl, load_lut($lutfile), "test.png");
32
33 write_true_png(sequence(100, 100, 3), "test_true.png");
34
35 my $image = read_png("test.png");
36
37 my $image = read_true_png("test_true_read.png");
38 write_true_png($image, "test_true_read.out.png");
39
40 my $lut = read_png_lut("test.png");
41
42 $pdl = sequence(byte, 30, 30);
43 write_png_ex($pdl, load_lut($lutfile), "test_nocomp.png", 0);
44 write_png_ex($pdl, load_lut($lutfile), "test_bestcomp1.png", 9);
45 write_png_best($pdl, load_lut($lutfile), "test_bestcomp2.png");
46
47 $pdl = sequence(100, 100, 3);
48 write_true_png_ex($pdl, "test_true_nocomp.png", 0);
49 write_true_png_ex($pdl, "test_true_bestcomp1.png", 9);
50 write_true_png_best($pdl, "test_true_bestcomp2.png");
51
52 recompress_png_best("test_recomp_best.png");
53
54=head1 DESCRIPTION
55
56This is the "General Interface" for the PDL::IO::GD library, and is actually several
57years old at this point (read: stable). If you're feeling frisky, try the new OO
58interface described below.
59
60The general version just provides several image IO utility functions you can use with
61piddle variables. It's deceptively useful, however.
62
63=cut
64
65
66
67
68
69
70
71
72=head1 FUNCTIONS
73
74
75
76=cut
77
78
79
80
81
82
83=head2 write_png
84
85=for sig
86
87  Signature: (byte img(x,y); byte lut(i,j); char* filename)
88
89Writes a 2-d PDL variable out to a PNG file, using the supplied color look-up-table piddle
90(hereafter referred to as a LUT).
91
92The LUT contains a line for each value 0-255 with a corresponding R, G, and B value.
93
94
95=for bad
96
97write_png does not process bad values.
98It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.
99
100
101=cut
102
103
104
105
106
107
108*write_png = \&PDL::write_png;
109
110
111
112
113
114=head2 write_png_ex
115
116=for sig
117
118  Signature: (img(x,y); lut(i,j); char* filename; int level)
119
120=for ref
121
122Same as write_png(), except you can specify the compression level (0-9) as the last argument.
123
124
125=for bad
126
127write_png_ex does not process bad values.
128It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.
129
130
131=cut
132
133
134
135
136
137
138*write_png_ex = \&PDL::write_png_ex;
139
140
141
142
143
144=head2 write_true_png
145
146=for sig
147
148  Signature: (img(x,y,z); char* filename)
149
150Writes an (x, y, z(3)) PDL variable out to a PNG file, using a true color format.
151
152This means a larger file on disk, but can contain more than 256 colors.
153
154
155=for bad
156
157write_true_png does not process bad values.
158It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.
159
160
161=cut
162
163
164
165
166
167
168*write_true_png = \&PDL::write_true_png;
169
170
171
172
173
174=head2 write_true_png_ex
175
176=for sig
177
178  Signature: (img(x,y,z); char* filename; int level)
179
180=for ref
181
182Same as write_true_png(), except you can specify the compression level (0-9) as the last argument.
183
184
185=for bad
186
187write_true_png_ex does not process bad values.
188It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.
189
190
191=cut
192
193
194
195
196
197
198*write_true_png_ex = \&PDL::write_true_png_ex;
199
200
201
202
203=head2 write_png_best( $img(piddle), $lut(piddle), $filename )
204
205Like write_png(), but it assumes the best PNG compression (9).
206
207=cut
208
209
210sub write_png_best
211{
212    my $img = shift;
213    my $lut = shift;
214    my $filename = shift;
215    return write_png_ex( $img, $lut, $filename, 9 );
216} # End of write_png_best()...
217
218=head2 write_true_png_best( $img(piddle), $filename )
219
220Like write_true_png(), but it assumes the best PNG compression (9).
221
222=cut
223
224
225sub write_true_png_best
226{
227    my $img = shift;
228    my $filename = shift;
229    return write_true_png_ex( $img, $filename, 9 );
230} # End of write_true_png_best()...
231
232
233
234
235
236
237=head2 load_lut( $filename )
238
239Loads a color look up table from an ASCII file. returns a piddle
240
241=cut
242
243
244sub load_lut
245{
246    return xchg(byte(cat(rcols(shift))), 0, 1);
247} # end of load_lut()...
248
249=head2 read_png( $filename )
250
251Reads a (palette) PNG image into a (new) PDL variable.
252
253=cut
254
255
256sub read_png
257{
258    my $filename = shift;
259
260    # Get the image dims...
261    my $x = _get_png_xs($filename);
262    my $y = _get_png_ys($filename);
263    #print "\$x=$x\t\$y=$y\n";
264
265    my $temp = zeroes(long, $x, $y);
266    _read_png($temp, $filename);
267    return byte($temp);
268} # End of read_png()...
269
270=head2 read_png_true( $filename )
271
272Reads a true color PNG image into a (new) PDL variable.
273
274=cut
275
276
277sub read_true_png
278{
279    my $filename = shift;
280
281    # Get the image dims...
282    my $x = _get_png_xs($filename);
283    my $y = _get_png_ys($filename);
284    #print "\$x=$x\t\$y=$y\n";
285
286
287    my $temp = zeroes(long, $x, $y, 3);
288    _read_true_png($temp, $filename);
289    return byte($temp);
290} # End of read_png()...
291
292
293
294
295
296
297*_read_true_png = \&PDL::_read_true_png;
298
299
300
301
302
303*_read_png = \&PDL::_read_png;
304
305
306
307
308
309*_gd_image_to_pdl_true = \&PDL::_gd_image_to_pdl_true;
310
311
312
313
314
315*_gd_image_to_pdl = \&PDL::_gd_image_to_pdl;
316
317
318
319
320
321*_pdl_to_gd_image_true = \&PDL::_pdl_to_gd_image_true;
322
323
324
325
326
327*_pdl_to_gd_image_lut = \&PDL::_pdl_to_gd_image_lut;
328
329
330
331
332=head2 my $lut = read_png_lut( $filename )
333
334Reads a color LUT from an already-existing palette PNG file.
335
336=cut
337
338
339sub read_png_lut
340{
341    my $filename = shift;
342    my $lut = zeroes(byte, 3, 256);
343    _read_png_lut($lut, $filename);
344    return $lut;
345} # End of read_png_lut()...
346
347
348
349
350*_read_png_lut = \&PDL::_read_png_lut;
351
352
353
354
355
356*_gdImageColorAllocates = \&PDL::_gdImageColorAllocates;
357
358
359
360
361
362*_gdImageColorAllocateAlphas = \&PDL::_gdImageColorAllocateAlphas;
363
364
365
366
367
368*_gdImageSetPixels = \&PDL::_gdImageSetPixels;
369
370
371
372
373
374*_gdImageLines = \&PDL::_gdImageLines;
375
376
377
378
379
380*_gdImageDashedLines = \&PDL::_gdImageDashedLines;
381
382
383
384
385
386*_gdImageRectangles = \&PDL::_gdImageRectangles;
387
388
389
390
391
392*_gdImageFilledRectangles = \&PDL::_gdImageFilledRectangles;
393
394
395
396
397
398*_gdImageFilledArcs = \&PDL::_gdImageFilledArcs;
399
400
401
402
403
404*_gdImageArcs = \&PDL::_gdImageArcs;
405
406
407
408
409
410*_gdImageFilledEllipses = \&PDL::_gdImageFilledEllipses;
411
412
413
414;
415
416
417=head1 OO INTERFACE
418
419Object Oriented interface to the GD image library.
420
421=head1 SYNOPSIS
422
423 # Open an existing file:
424 #
425 my $gd = PDL::IO::GD->new( { filename => "test.png" } );
426
427 # Query the x and y sizes:
428 my $x = $gd->SX();
429 my $y = $gd->SY();
430
431 # Grab the PDL of the data:
432 my $pdl = $gd->to_pdl();
433
434 # Kill this thing:
435 $gd->DESTROY();
436
437 # Create a new object:
438 #
439 my $im = PDL::IO::GD->new( { x => 300, y => 300 } );
440
441 # Allocate some colors:
442 #
443 my $black = $im->ColorAllocate( 0, 0, 0 );
444 my $red = $im->ColorAllocate( 255, 0, 0 );
445 my $green = $im->ColorAllocate( 0, 255, 0 );
446 my $blue = $im->ColorAllocate( 0, 0, 255 );
447
448 # Draw a rectangle:
449 $im->Rectangle( 10, 10, 290, 290, $red );
450
451 # Add some text:
452 $im->String( gdFontGetLarge(), 20, 20, "Test Large Font!", $green );
453
454 # Write the output file:
455 $im->write_Png( "test2.png" );
456
457=head1 DESCRIPTION
458
459This is the Object-Oriented interface from PDL to the GD image library.
460
461See L<http://www.boutell.com/gd/> for more information on the GD library and how it works.
462
463=head2 IMPLEMENTATION NOTES
464
465Surprisingly enough, this interface has nothing to do with the other Perl->GD interface module,
466aka 'GD' (as in 'use GD;'). This is done from scratch over the years.
467
468Requires at least version 2.0.22 of the GD library, but it's only been thoroughly tested with
469gd-2.0.33, so it would be best to use that. The 2.0.22 requirement has to do with a change in
470GD's font handling functions, so if you don't use those, then don't worry about it.
471
472I should also add, the statement about "thoroughly tested" above is mostly a joke. This OO
473interface is very young, and it has I<barely> been tested at all, so if something
474breaks, email me and I'll get it fixed ASAP (for me).
475
476Functions that manipulate and query the image objects generally have a 'gdImage' prefix on the
477function names (ex: gdImageString()). I've created aliases here for all of those member
478functions so you don't have to keep typing 'gdImage' in your code, but the long version are in
479there as well.
480
481=head1 METHODS
482
483=cut
484
485use PDL;
486use PDL::Slices;
487use PDL::IO::Misc;
488
489#
490# Some helper functions:
491#
492sub _pkg_name
493    { return "PDL::IO::GD::" . (shift) . "()"; }
494
495# ID a file type from it's filename:
496sub _id_image_file
497{
498    my $filename = shift;
499
500    return 'png'
501        if( $filename =~ /\.png$/ );
502
503    return 'jpg'
504        if( $filename =~ /\.jpe?g$/ );
505
506    return 'wbmp'
507        if( $filename =~ /\.w?bmp$/ );
508
509    return 'gd'
510        if( $filename =~ /\.gd$/ );
511
512    return 'gd2'
513        if( $filename =~ /\.gd2$/ );
514
515    return 'gif'
516        if( $filename =~ /\.gif$/ );
517
518    return 'xbm'
519        if( $filename =~ /\.xbm$/ );
520
521    return undef;
522} # End of _id_image_file()...
523
524# Load a new file up (don't read it yet):
525sub _img_ptr_from_file
526{
527    my $filename = shift;
528    my $type = shift;
529
530    return _gdImageCreateFromPng( $filename )
531        if( $type eq 'png' );
532
533    return _gdImageCreateFromJpeg( $filename )
534        if( $type eq 'jpg' );
535
536    return _gdImageCreateFromWBMP( $filename )
537        if( $type eq 'wbmp' );
538
539    return _gdImageCreateFromGd( $filename )
540        if( $type eq 'gd' );
541
542    return _gdImageCreateFromGd2( $filename )
543        if( $type eq 'gd2' );
544
545    return _gdImageCreateFromGif( $filename )
546        if( $type eq 'gif' );
547
548    return _gdImageCreateFromXbm( $filename )
549        if( $type eq 'xbm' );
550
551    return undef;
552} # End of _img_ptr_from_file()...
553
554# ID a file type from it's "magic" header in the image data:
555sub _id_image_data
556{
557    my $data = shift;
558    my $magic = substr($data,0,4);
559
560    return 'png'
561        if( $magic eq "\x89PNG" );
562
563    return 'jpg'
564        if( $magic eq "\377\330\377\340" );
565    return 'jpg'
566        if( $magic eq "\377\330\377\341" );
567    return 'jpg'
568        if( $magic eq "\377\330\377\356" );
569
570    return 'gif'
571        if( $magic eq "GIF8" );
572
573    return 'gd2'
574        if( $magic eq "gd2\000" );
575
576    # Still need filters for WBMP and .gd!
577
578    return undef;
579} # End of _id_image_data()...
580
581
582# Load a new data scalar up:
583sub _img_ptr_from_data
584{
585    my $data = shift;
586    my $type = shift;
587
588    return _gdImageCreateFromPngPtr( $data )
589        if( $type eq 'png' );
590
591    return _gdImageCreateFromJpegPtr( $data )
592        if( $type eq 'jpg' );
593
594    return _gdImageCreateFromWBMPPtr( $data )
595        if( $type eq 'wbmp' );
596
597    return _gdImageCreateFromGdPtr( $data )
598        if( $type eq 'gd' );
599
600    return _gdImageCreateFromGd2Ptr( $data )
601        if( $type eq 'gd2' );
602
603    return _gdImageCreateFromGifPtr( $data )
604        if( $type eq 'gif' );
605
606    return undef;
607} # End of _img_ptr_from_data()...
608
609
610=head2 new
611
612Creates a new PDL::IO::GD object.
613
614Accepts a hash describing how to create the object. Accepts a single hash ( with
615curly braces ), an inline hash (the same, but without the braces) or a single
616string interpreted as a filename. Thus the following are all equivalent:
617
618 PDL::IO::GD->new( {filename => 'image.png'} );
619 PDL::IO::GD->new( filename => 'image.png' );
620 PDL::IO::GD->new( 'image.png' );
621
622If the hash has:
623
624 pdl => $pdl_var (lut => $lut_piddle)
625    Then a new GD is created from that PDL variable.
626
627 filename => $file
628    Then a new GD is created from the image file.
629
630 x => $num, y => $num
631    Then a new GD is created as a palette image, with size x, y
632
633 x => $num, y => $num, true_color => 1
634    Then a new GD is created as a true color image, with size x, y
635
636 data => $scalar (type => $typename)
637    Then a new GD is created from the file data stored in $scalar.
638    If no type is given, then it will try to guess the type of the data, but
639        this will not work for WBMP and gd image types. For those types, you
640        _must_ specify the type of the data, or the operation will fail.
641    Valid types are: 'jpg', 'png', 'gif', 'gd', 'gd2', 'wbmp'.
642
643Example:
644
645 my $gd = PDL::IO::GD->new({ pdl => $pdl_var });
646
647 my $gd = PDL::IO::GD->new({ pdl => $pdl_var, lut => $lut_piddle });
648
649 my $gd = PDL::IO::GD->new({ filename => "image.png" });
650
651 my $gd = PDL::IO::GD->new({ x => 100, y => 100 });
652
653 my $gd = PDL::IO::GD->new({ x => 100, y => 100, true_color => 1 });
654
655 my $gd = PDL::IO::GD->new({ data => $imageData });
656
657 my $gd = PDL::IO::GD->new({ data => $imageData, type => 'wbmp' });
658
659=cut
660
661sub new
662{
663    my $proto = shift;
664    my $class = ref($proto) || $proto;
665    #my $self  = $class->SUPER::new( @_ );
666    my $self = {};
667
668    my $sub = _pkg_name( "new" );
669
670    # Figure out our options:
671
672    # I want a single hash. I handle several cases here
673    my $options;
674    if( @_ == 1 && ref $_[0] eq 'HASH' ) {
675      # single hash argument. Just take it
676      $options = shift;
677    }
678    elsif( @_ == 1 && ! ref $_[0] ) {
679      # single scalar argument. Treat it as a filename by default
680      my $filename = shift;
681      $options = { filename => $filename };
682    }
683    else {
684      # the only other acceptable option is an inline hash. This is valid if I
685      # have an even number of arguments, and the even-indexed ones (the keys)
686      # are scalars
687      if( @_ % 2 == 0 ) {
688        my @pairs = @_;
689        my $Npairs = scalar(@pairs)/2;
690
691        use List::MoreUtils 'none';
692        if( List::MoreUtils::none { ref $pairs[2*$_] } 0..$Npairs-1 ) {
693          # treat the arguments as a hash
694          $options = { @pairs }
695        }
696      }
697    }
698
699    if( !defined $options ) {
700      die <<EOF;
701PDL::IO::GD::new couldn't parse its arguments.
702Expected a hash-ref or an inline hash or just a filename
703EOF
704    }
705
706
707
708    if( defined( $options->{pdl} ) )
709    {   # Create it from a PDL variable:
710        my $pdl = $options->{pdl};
711        $pdl->make_physical();
712        my $num_dims = scalar( $pdl->dims() );
713        if( $num_dims == 2 )
714        {
715            if( defined( $options->{lut} ) )
716            {
717                my $ptr = zeroes( longlong, 1 );
718                my $lut = $options->{lut};
719                _pdl_to_gd_image_lut( $pdl, $lut, $ptr );
720#		print STDERR "in new (with lut), setting IMG_PTR to " . $ptr->at(0) . "\n";
721                $self->{IMG_PTR} = $ptr->at(0);
722                $ptr = null;
723                die "$sub: _pdl_to_gd_image_lut() failed!\n"
724                    if( $self->{IMG_PTR} == 0 );
725            }
726            else
727            {
728                my $ptr = zeroes( longlong, 1 );
729                my $lut = sequence(byte, 255)->slice("*3,:");
730                _pdl_to_gd_image_lut( $pdl, $lut, $ptr );
731#		print STDERR "in new (no lut), setting IMG_PTR to " . $ptr->at(0) . "\n";
732                $self->{IMG_PTR} = $ptr->at(0);
733                $ptr = null;
734                die "$sub: _pdl_to_gd_image_lut() failed!\n"
735                    if( $self->{IMG_PTR} == 0 );
736            }
737        }
738        elsif( $num_dims == 3 )
739        {
740            my $ptr = zeroes( longlong, 1 );
741            _pdl_to_gd_image_true( $pdl, $ptr );
742#	    print STDERR "in new (ndims=3), setting IMG_PTR to " . $ptr->at(0) . "\n";
743            $self->{IMG_PTR} = $ptr->at(0);
744            $ptr = null;
745            die "$sub: _pdl_to_gd_image_true() failed!\n"
746                if( $self->{IMG_PTR} == 0 );
747        }
748        else
749        {
750            die "Can't create a PDL::IO::GD from a PDL with bad dims!\n";
751        }
752    }
753    elsif( exists( $options->{filename} ) )
754    {   # Create it from a file:
755
756        if( !defined $options->{filename} ) {
757          die "PDL::IO::GD::new got an undefined filename. Giving up.\n";
758        }
759
760        # Figure out what type of file it is:
761        $self->{input_type} = _id_image_file( $options->{filename} )
762            or die "$sub: Can't determine image type of filename => \'$options->{filename}\'!\n";
763
764        # Read in the file:
765        $self->{IMG_PTR} = _img_ptr_from_file( $options->{filename}, $self->{input_type} )
766            or die "$sub: Can't read in the input file!\n";
767    }
768    elsif( defined( $options->{x} ) && defined( $options->{y} ) )
769    {   # Create an empty image:
770        my $done = 0;
771        if( defined( $options->{true_color} ) )
772        {
773            if( $options->{true_color} )
774            {   # Create an empty true color image:
775                $self->{IMG_PTR} = _gdImageCreateTrueColor( $options->{x}, $options->{y} );
776                die "$sub: _gdImageCreateTrueColor() failed!\n"
777                    if( $self->{IMG_PTR} == 0 );
778                $done = 1;
779            }
780        }
781        unless( $done )
782        {   # Create an empty palette image:
783            $self->{IMG_PTR} = _gdImageCreatePalette( $options->{x}, $options->{y} );
784            die "$sub: _gdImageCreatePalette() failed!\n"
785                if( $self->{IMG_PTR} == 0 );
786        }
787    }
788    elsif( defined( $options->{data} ) )
789    {   # Create an image from the given image data:
790
791        # Figure out what type of file it is:
792        if( defined( $options->{type} ) &&
793            (      $options->{type} eq 'jpg'
794                || $options->{type} eq 'png'
795                || $options->{type} eq 'gif'
796                || $options->{type} eq 'wbmp'
797                || $options->{type} eq 'gd'
798                || $options->{type} eq 'gd2' ) )
799        {
800            $self->{input_type} = $options->{type};
801        }
802        else
803        {
804            $self->{input_type} = _id_image_data( $options->{data} )
805                or die "$sub: Can't determine image type given data!\n";
806        }
807
808        # Load the data:
809        $self->{IMG_PTR} = _img_ptr_from_data( $options->{data}, $self->{input_type} )
810            or die "$sub: Can't load the input image data!\n";
811    }
812
813    # Bless and return:
814    #
815    bless ($self, $class);
816    return $self;
817} # End of new()...
818
819=head2 to_pdl
820
821When you're done playing with your GDImage and want a piddle back, use this function to return one.
822
823=cut
824
825
826sub to_pdl
827{
828    my $self = shift;
829
830    my $sub = _pkg_name( "to_pdl" );
831
832    my $x = $self->gdImageSX();
833    my $y = $self->gdImageSY();
834
835    if( $self->gdImageTrueColor() )
836    {
837        my $pdl = zeroes(byte, $x, $y, 3);
838        _gd_image_to_pdl_true( $pdl, $self->{IMG_PTR} );
839        return $pdl;
840    }
841
842    my $pdl = zeroes(byte, $x, $y);
843    _gd_image_to_pdl( $pdl, $self->{IMG_PTR} );
844    return $pdl;
845} # End of to_pdl()...
846
847=head2 apply_lut( $lut(piddle) )
848
849Does a $im->ColorAllocate() for and entire LUT piddle at once.
850
851The LUT piddle format is the same as for the general interface above.
852
853=cut
854
855
856sub apply_lut
857{
858    my $self = shift;
859    my $lut = shift;
860
861    # Let the PDL threading engine sort this out:
862    $self->ColorAllocates( $lut->slice("(0),:"), $lut->slice("(1),:"), $lut->slice("(2),:") );
863} # End of apply_lut()...
864
865sub DESTROY
866{
867    my $self = shift;
868    my $sub = _pkg_name( "DESTROY" );
869
870    #print STDERR sprintf("$sub: destroying gdImagePtr: 0x%p (%d) (%ld) (%lld)!\n", $self->{IMG_PTR}, $self->{IMG_PTR},$self->{IMG_PTR},$self->{IMG_PTR});
871
872    if( defined( $self->{IMG_PTR} ) )
873    {
874        _gdImageDestroy( $self->{IMG_PTR} );
875        delete( $self->{IMG_PTR} );
876    }
877} # End of DESTROY()...
878
879=head2 WARNING:
880
881All of the docs below this point are auto-generated (not to mention the actual code),
882so read with a grain of salt, and B<always> check the main GD documentation about how
883that function works and what it does.
884
885=cut
886
887
888
889=head2 write_Png
890
891$image->write_Png( $filename )
892
893=cut
894
895
896sub write_Png
897{
898    my $self = shift;
899    return _gdImagePng ( $self->{IMG_PTR}, @_ );
900} # End of write_Png()...
901
902
903=head2 write_PngEx
904
905$image->write_PngEx( $filename, $level )
906
907=cut
908
909
910sub write_PngEx
911{
912    my $self = shift;
913    return _gdImagePngEx ( $self->{IMG_PTR}, @_ );
914} # End of write_PngEx()...
915
916
917=head2 write_WBMP
918
919$image->write_WBMP( $fg, $filename )
920
921=cut
922
923
924sub write_WBMP
925{
926    my $self = shift;
927    return _gdImageWBMP ( $self->{IMG_PTR}, @_ );
928} # End of write_WBMP()...
929
930
931=head2 write_Jpeg
932
933$image->write_Jpeg( $filename, $quality )
934
935=cut
936
937
938sub write_Jpeg
939{
940    my $self = shift;
941    return _gdImageJpeg ( $self->{IMG_PTR}, @_ );
942} # End of write_Jpeg()...
943
944
945=head2 write_Gd
946
947$image->write_Gd( $filename )
948
949=cut
950
951
952sub write_Gd
953{
954    my $self = shift;
955    return _gdImageGd ( $self->{IMG_PTR}, @_ );
956} # End of write_Gd()...
957
958
959=head2 write_Gd2
960
961$image->write_Gd2( $filename, $cs, $fmt )
962
963=cut
964
965
966sub write_Gd2
967{
968    my $self = shift;
969    return _gdImageGd2 ( $self->{IMG_PTR}, @_ );
970} # End of write_Gd2()...
971
972
973=head2 write_Gif
974
975$image->write_Gif( $filename )
976
977=cut
978
979
980sub write_Gif
981{
982    my $self = shift;
983    return _gdImageGif ( $self->{IMG_PTR}, @_ );
984} # End of write_Gif()...
985
986
987=head2 get_Png_data
988
989$image->get_Png_data(  )
990
991=cut
992
993
994sub get_Png_data
995{
996    my $self = shift;
997    return _gdImagePngPtr ( $self->{IMG_PTR}, @_ );
998} # End of get_Png_data()...
999
1000
1001=head2 get_PngEx_data
1002
1003$image->get_PngEx_data( $level )
1004
1005=cut
1006
1007
1008sub get_PngEx_data
1009{
1010    my $self = shift;
1011    return _gdImagePngPtrEx ( $self->{IMG_PTR}, @_ );
1012} # End of get_PngEx_data()...
1013
1014
1015=head2 get_WBMP_data
1016
1017$image->get_WBMP_data( $fg )
1018
1019=cut
1020
1021
1022sub get_WBMP_data
1023{
1024    my $self = shift;
1025    return _gdImageWBMPPtr ( $self->{IMG_PTR}, @_ );
1026} # End of get_WBMP_data()...
1027
1028
1029=head2 get_Jpeg_data
1030
1031$image->get_Jpeg_data( $quality )
1032
1033=cut
1034
1035
1036sub get_Jpeg_data
1037{
1038    my $self = shift;
1039    return _gdImageJpegPtr ( $self->{IMG_PTR}, @_ );
1040} # End of get_Jpeg_data()...
1041
1042
1043=head2 get_Gd_data
1044
1045$image->get_Gd_data(  )
1046
1047=cut
1048
1049
1050sub get_Gd_data
1051{
1052    my $self = shift;
1053    return _gdImageGdPtr ( $self->{IMG_PTR}, @_ );
1054} # End of get_Gd_data()...
1055
1056
1057=head2 get_Gd2_data
1058
1059$image->get_Gd2_data( $cs, $fmt )
1060
1061=cut
1062
1063
1064sub get_Gd2_data
1065{
1066    my $self = shift;
1067    return _gdImageGd2Ptr ( $self->{IMG_PTR}, @_ );
1068} # End of get_Gd2_data()...
1069
1070
1071=head2 SetPixel
1072
1073$image->SetPixel( $x, $y, $color )
1074
1075Alias for gdImageSetPixel.
1076
1077=cut
1078
1079
1080sub SetPixel
1081{
1082    return gdImageSetPixel ( @_ );
1083} # End of SetPixel()...
1084
1085
1086=head2 gdImageSetPixel
1087
1088$image->gdImageSetPixel( $x, $y, $color )
1089
1090=cut
1091
1092
1093sub gdImageSetPixel
1094{
1095    my $self = shift;
1096    return _gdImageSetPixel ( $self->{IMG_PTR}, @_ );
1097} # End of gdImageSetPixel()...
1098
1099
1100=head2 GetPixel
1101
1102$image->GetPixel( $x, $y )
1103
1104Alias for gdImageGetPixel.
1105
1106=cut
1107
1108
1109sub GetPixel
1110{
1111    return gdImageGetPixel ( @_ );
1112} # End of GetPixel()...
1113
1114
1115=head2 gdImageGetPixel
1116
1117$image->gdImageGetPixel( $x, $y )
1118
1119=cut
1120
1121
1122sub gdImageGetPixel
1123{
1124    my $self = shift;
1125    return _gdImageGetPixel ( $self->{IMG_PTR}, @_ );
1126} # End of gdImageGetPixel()...
1127
1128
1129=head2 AABlend
1130
1131$image->AABlend(  )
1132
1133Alias for gdImageAABlend.
1134
1135=cut
1136
1137
1138sub AABlend
1139{
1140    return gdImageAABlend ( @_ );
1141} # End of AABlend()...
1142
1143
1144=head2 gdImageAABlend
1145
1146$image->gdImageAABlend(  )
1147
1148=cut
1149
1150
1151sub gdImageAABlend
1152{
1153    my $self = shift;
1154    return _gdImageAABlend ( $self->{IMG_PTR}, @_ );
1155} # End of gdImageAABlend()...
1156
1157
1158=head2 Line
1159
1160$image->Line( $x1, $y1, $x2, $y2, $color )
1161
1162Alias for gdImageLine.
1163
1164=cut
1165
1166
1167sub Line
1168{
1169    return gdImageLine ( @_ );
1170} # End of Line()...
1171
1172
1173=head2 gdImageLine
1174
1175$image->gdImageLine( $x1, $y1, $x2, $y2, $color )
1176
1177=cut
1178
1179
1180sub gdImageLine
1181{
1182    my $self = shift;
1183    return _gdImageLine ( $self->{IMG_PTR}, @_ );
1184} # End of gdImageLine()...
1185
1186
1187=head2 DashedLine
1188
1189$image->DashedLine( $x1, $y1, $x2, $y2, $color )
1190
1191Alias for gdImageDashedLine.
1192
1193=cut
1194
1195
1196sub DashedLine
1197{
1198    return gdImageDashedLine ( @_ );
1199} # End of DashedLine()...
1200
1201
1202=head2 gdImageDashedLine
1203
1204$image->gdImageDashedLine( $x1, $y1, $x2, $y2, $color )
1205
1206=cut
1207
1208
1209sub gdImageDashedLine
1210{
1211    my $self = shift;
1212    return _gdImageDashedLine ( $self->{IMG_PTR}, @_ );
1213} # End of gdImageDashedLine()...
1214
1215
1216=head2 Rectangle
1217
1218$image->Rectangle( $x1, $y1, $x2, $y2, $color )
1219
1220Alias for gdImageRectangle.
1221
1222=cut
1223
1224
1225sub Rectangle
1226{
1227    return gdImageRectangle ( @_ );
1228} # End of Rectangle()...
1229
1230
1231=head2 gdImageRectangle
1232
1233$image->gdImageRectangle( $x1, $y1, $x2, $y2, $color )
1234
1235=cut
1236
1237
1238sub gdImageRectangle
1239{
1240    my $self = shift;
1241    return _gdImageRectangle ( $self->{IMG_PTR}, @_ );
1242} # End of gdImageRectangle()...
1243
1244
1245=head2 FilledRectangle
1246
1247$image->FilledRectangle( $x1, $y1, $x2, $y2, $color )
1248
1249Alias for gdImageFilledRectangle.
1250
1251=cut
1252
1253
1254sub FilledRectangle
1255{
1256    return gdImageFilledRectangle ( @_ );
1257} # End of FilledRectangle()...
1258
1259
1260=head2 gdImageFilledRectangle
1261
1262$image->gdImageFilledRectangle( $x1, $y1, $x2, $y2, $color )
1263
1264=cut
1265
1266
1267sub gdImageFilledRectangle
1268{
1269    my $self = shift;
1270    return _gdImageFilledRectangle ( $self->{IMG_PTR}, @_ );
1271} # End of gdImageFilledRectangle()...
1272
1273
1274=head2 SetClip
1275
1276$image->SetClip( $x1, $y1, $x2, $y2 )
1277
1278Alias for gdImageSetClip.
1279
1280=cut
1281
1282
1283sub SetClip
1284{
1285    return gdImageSetClip ( @_ );
1286} # End of SetClip()...
1287
1288
1289=head2 gdImageSetClip
1290
1291$image->gdImageSetClip( $x1, $y1, $x2, $y2 )
1292
1293=cut
1294
1295
1296sub gdImageSetClip
1297{
1298    my $self = shift;
1299    return _gdImageSetClip ( $self->{IMG_PTR}, @_ );
1300} # End of gdImageSetClip()...
1301
1302
1303=head2 GetClip
1304
1305$image->GetClip( $x1P, $y1P, $x2P, $y2P )
1306
1307Alias for gdImageGetClip.
1308
1309=cut
1310
1311
1312sub GetClip
1313{
1314    return gdImageGetClip ( @_ );
1315} # End of GetClip()...
1316
1317
1318=head2 gdImageGetClip
1319
1320$image->gdImageGetClip( $x1P, $y1P, $x2P, $y2P )
1321
1322=cut
1323
1324
1325sub gdImageGetClip
1326{
1327    my $self = shift;
1328    return _gdImageGetClip ( $self->{IMG_PTR}, @_ );
1329} # End of gdImageGetClip()...
1330
1331
1332=head2 BoundsSafe
1333
1334$image->BoundsSafe( $x, $y )
1335
1336Alias for gdImageBoundsSafe.
1337
1338=cut
1339
1340
1341sub BoundsSafe
1342{
1343    return gdImageBoundsSafe ( @_ );
1344} # End of BoundsSafe()...
1345
1346
1347=head2 gdImageBoundsSafe
1348
1349$image->gdImageBoundsSafe( $x, $y )
1350
1351=cut
1352
1353
1354sub gdImageBoundsSafe
1355{
1356    my $self = shift;
1357    return _gdImageBoundsSafe ( $self->{IMG_PTR}, @_ );
1358} # End of gdImageBoundsSafe()...
1359
1360
1361=head2 Char
1362
1363$image->Char( $f, $x, $y, $c, $color )
1364
1365Alias for gdImageChar.
1366
1367=cut
1368
1369
1370sub Char
1371{
1372    return gdImageChar ( @_ );
1373} # End of Char()...
1374
1375
1376=head2 gdImageChar
1377
1378$image->gdImageChar( $f, $x, $y, $c, $color )
1379
1380=cut
1381
1382
1383sub gdImageChar
1384{
1385    my $self = shift;
1386    return _gdImageChar ( $self->{IMG_PTR}, @_ );
1387} # End of gdImageChar()...
1388
1389
1390=head2 CharUp
1391
1392$image->CharUp( $f, $x, $y, $c, $color )
1393
1394Alias for gdImageCharUp.
1395
1396=cut
1397
1398
1399sub CharUp
1400{
1401    return gdImageCharUp ( @_ );
1402} # End of CharUp()...
1403
1404
1405=head2 gdImageCharUp
1406
1407$image->gdImageCharUp( $f, $x, $y, $c, $color )
1408
1409=cut
1410
1411
1412sub gdImageCharUp
1413{
1414    my $self = shift;
1415    return _gdImageCharUp ( $self->{IMG_PTR}, @_ );
1416} # End of gdImageCharUp()...
1417
1418
1419=head2 String
1420
1421$image->String( $f, $x, $y, $s, $color )
1422
1423Alias for gdImageString.
1424
1425=cut
1426
1427
1428sub String
1429{
1430    return gdImageString ( @_ );
1431} # End of String()...
1432
1433
1434=head2 gdImageString
1435
1436$image->gdImageString( $f, $x, $y, $s, $color )
1437
1438=cut
1439
1440
1441sub gdImageString
1442{
1443    my $self = shift;
1444    return _gdImageString ( $self->{IMG_PTR}, @_ );
1445} # End of gdImageString()...
1446
1447
1448=head2 StringUp
1449
1450$image->StringUp( $f, $x, $y, $s, $color )
1451
1452Alias for gdImageStringUp.
1453
1454=cut
1455
1456
1457sub StringUp
1458{
1459    return gdImageStringUp ( @_ );
1460} # End of StringUp()...
1461
1462
1463=head2 gdImageStringUp
1464
1465$image->gdImageStringUp( $f, $x, $y, $s, $color )
1466
1467=cut
1468
1469
1470sub gdImageStringUp
1471{
1472    my $self = shift;
1473    return _gdImageStringUp ( $self->{IMG_PTR}, @_ );
1474} # End of gdImageStringUp()...
1475
1476
1477=head2 String16
1478
1479$image->String16( $f, $x, $y, $s, $color )
1480
1481Alias for gdImageString16.
1482
1483=cut
1484
1485
1486sub String16
1487{
1488    return gdImageString16 ( @_ );
1489} # End of String16()...
1490
1491
1492=head2 gdImageString16
1493
1494$image->gdImageString16( $f, $x, $y, $s, $color )
1495
1496=cut
1497
1498
1499sub gdImageString16
1500{
1501    my $self = shift;
1502    return _gdImageString16 ( $self->{IMG_PTR}, @_ );
1503} # End of gdImageString16()...
1504
1505
1506=head2 StringUp16
1507
1508$image->StringUp16( $f, $x, $y, $s, $color )
1509
1510Alias for gdImageStringUp16.
1511
1512=cut
1513
1514
1515sub StringUp16
1516{
1517    return gdImageStringUp16 ( @_ );
1518} # End of StringUp16()...
1519
1520
1521=head2 gdImageStringUp16
1522
1523$image->gdImageStringUp16( $f, $x, $y, $s, $color )
1524
1525=cut
1526
1527
1528sub gdImageStringUp16
1529{
1530    my $self = shift;
1531    return _gdImageStringUp16 ( $self->{IMG_PTR}, @_ );
1532} # End of gdImageStringUp16()...
1533
1534
1535=head2 Polygon
1536
1537$image->Polygon( $p, $n, $c )
1538
1539Alias for gdImagePolygon.
1540
1541=cut
1542
1543
1544sub Polygon
1545{
1546    return gdImagePolygon ( @_ );
1547} # End of Polygon()...
1548
1549
1550=head2 gdImagePolygon
1551
1552$image->gdImagePolygon( $p, $n, $c )
1553
1554=cut
1555
1556
1557sub gdImagePolygon
1558{
1559    my $self = shift;
1560    return _gdImagePolygon ( $self->{IMG_PTR}, @_ );
1561} # End of gdImagePolygon()...
1562
1563
1564=head2 FilledPolygon
1565
1566$image->FilledPolygon( $p, $n, $c )
1567
1568Alias for gdImageFilledPolygon.
1569
1570=cut
1571
1572
1573sub FilledPolygon
1574{
1575    return gdImageFilledPolygon ( @_ );
1576} # End of FilledPolygon()...
1577
1578
1579=head2 gdImageFilledPolygon
1580
1581$image->gdImageFilledPolygon( $p, $n, $c )
1582
1583=cut
1584
1585
1586sub gdImageFilledPolygon
1587{
1588    my $self = shift;
1589    return _gdImageFilledPolygon ( $self->{IMG_PTR}, @_ );
1590} # End of gdImageFilledPolygon()...
1591
1592
1593=head2 ColorAllocate
1594
1595$image->ColorAllocate( $r, $g, $b )
1596
1597Alias for gdImageColorAllocate.
1598
1599=cut
1600
1601
1602sub ColorAllocate
1603{
1604    return gdImageColorAllocate ( @_ );
1605} # End of ColorAllocate()...
1606
1607
1608=head2 gdImageColorAllocate
1609
1610$image->gdImageColorAllocate( $r, $g, $b )
1611
1612=cut
1613
1614
1615sub gdImageColorAllocate
1616{
1617    my $self = shift;
1618    return _gdImageColorAllocate ( $self->{IMG_PTR}, @_ );
1619} # End of gdImageColorAllocate()...
1620
1621
1622=head2 ColorAllocateAlpha
1623
1624$image->ColorAllocateAlpha( $r, $g, $b, $a )
1625
1626Alias for gdImageColorAllocateAlpha.
1627
1628=cut
1629
1630
1631sub ColorAllocateAlpha
1632{
1633    return gdImageColorAllocateAlpha ( @_ );
1634} # End of ColorAllocateAlpha()...
1635
1636
1637=head2 gdImageColorAllocateAlpha
1638
1639$image->gdImageColorAllocateAlpha( $r, $g, $b, $a )
1640
1641=cut
1642
1643
1644sub gdImageColorAllocateAlpha
1645{
1646    my $self = shift;
1647    return _gdImageColorAllocateAlpha ( $self->{IMG_PTR}, @_ );
1648} # End of gdImageColorAllocateAlpha()...
1649
1650
1651=head2 ColorClosest
1652
1653$image->ColorClosest( $r, $g, $b )
1654
1655Alias for gdImageColorClosest.
1656
1657=cut
1658
1659
1660sub ColorClosest
1661{
1662    return gdImageColorClosest ( @_ );
1663} # End of ColorClosest()...
1664
1665
1666=head2 gdImageColorClosest
1667
1668$image->gdImageColorClosest( $r, $g, $b )
1669
1670=cut
1671
1672
1673sub gdImageColorClosest
1674{
1675    my $self = shift;
1676    return _gdImageColorClosest ( $self->{IMG_PTR}, @_ );
1677} # End of gdImageColorClosest()...
1678
1679
1680=head2 ColorClosestAlpha
1681
1682$image->ColorClosestAlpha( $r, $g, $b, $a )
1683
1684Alias for gdImageColorClosestAlpha.
1685
1686=cut
1687
1688
1689sub ColorClosestAlpha
1690{
1691    return gdImageColorClosestAlpha ( @_ );
1692} # End of ColorClosestAlpha()...
1693
1694
1695=head2 gdImageColorClosestAlpha
1696
1697$image->gdImageColorClosestAlpha( $r, $g, $b, $a )
1698
1699=cut
1700
1701
1702sub gdImageColorClosestAlpha
1703{
1704    my $self = shift;
1705    return _gdImageColorClosestAlpha ( $self->{IMG_PTR}, @_ );
1706} # End of gdImageColorClosestAlpha()...
1707
1708
1709=head2 ColorClosestHWB
1710
1711$image->ColorClosestHWB( $r, $g, $b )
1712
1713Alias for gdImageColorClosestHWB.
1714
1715=cut
1716
1717
1718sub ColorClosestHWB
1719{
1720    return gdImageColorClosestHWB ( @_ );
1721} # End of ColorClosestHWB()...
1722
1723
1724=head2 gdImageColorClosestHWB
1725
1726$image->gdImageColorClosestHWB( $r, $g, $b )
1727
1728=cut
1729
1730
1731sub gdImageColorClosestHWB
1732{
1733    my $self = shift;
1734    return _gdImageColorClosestHWB ( $self->{IMG_PTR}, @_ );
1735} # End of gdImageColorClosestHWB()...
1736
1737
1738=head2 ColorExact
1739
1740$image->ColorExact( $r, $g, $b )
1741
1742Alias for gdImageColorExact.
1743
1744=cut
1745
1746
1747sub ColorExact
1748{
1749    return gdImageColorExact ( @_ );
1750} # End of ColorExact()...
1751
1752
1753=head2 gdImageColorExact
1754
1755$image->gdImageColorExact( $r, $g, $b )
1756
1757=cut
1758
1759
1760sub gdImageColorExact
1761{
1762    my $self = shift;
1763    return _gdImageColorExact ( $self->{IMG_PTR}, @_ );
1764} # End of gdImageColorExact()...
1765
1766
1767=head2 ColorExactAlpha
1768
1769$image->ColorExactAlpha( $r, $g, $b, $a )
1770
1771Alias for gdImageColorExactAlpha.
1772
1773=cut
1774
1775
1776sub ColorExactAlpha
1777{
1778    return gdImageColorExactAlpha ( @_ );
1779} # End of ColorExactAlpha()...
1780
1781
1782=head2 gdImageColorExactAlpha
1783
1784$image->gdImageColorExactAlpha( $r, $g, $b, $a )
1785
1786=cut
1787
1788
1789sub gdImageColorExactAlpha
1790{
1791    my $self = shift;
1792    return _gdImageColorExactAlpha ( $self->{IMG_PTR}, @_ );
1793} # End of gdImageColorExactAlpha()...
1794
1795
1796=head2 ColorResolve
1797
1798$image->ColorResolve( $r, $g, $b )
1799
1800Alias for gdImageColorResolve.
1801
1802=cut
1803
1804
1805sub ColorResolve
1806{
1807    return gdImageColorResolve ( @_ );
1808} # End of ColorResolve()...
1809
1810
1811=head2 gdImageColorResolve
1812
1813$image->gdImageColorResolve( $r, $g, $b )
1814
1815=cut
1816
1817
1818sub gdImageColorResolve
1819{
1820    my $self = shift;
1821    return _gdImageColorResolve ( $self->{IMG_PTR}, @_ );
1822} # End of gdImageColorResolve()...
1823
1824
1825=head2 ColorResolveAlpha
1826
1827$image->ColorResolveAlpha( $r, $g, $b, $a )
1828
1829Alias for gdImageColorResolveAlpha.
1830
1831=cut
1832
1833
1834sub ColorResolveAlpha
1835{
1836    return gdImageColorResolveAlpha ( @_ );
1837} # End of ColorResolveAlpha()...
1838
1839
1840=head2 gdImageColorResolveAlpha
1841
1842$image->gdImageColorResolveAlpha( $r, $g, $b, $a )
1843
1844=cut
1845
1846
1847sub gdImageColorResolveAlpha
1848{
1849    my $self = shift;
1850    return _gdImageColorResolveAlpha ( $self->{IMG_PTR}, @_ );
1851} # End of gdImageColorResolveAlpha()...
1852
1853
1854=head2 ColorDeallocate
1855
1856$image->ColorDeallocate( $color )
1857
1858Alias for gdImageColorDeallocate.
1859
1860=cut
1861
1862
1863sub ColorDeallocate
1864{
1865    return gdImageColorDeallocate ( @_ );
1866} # End of ColorDeallocate()...
1867
1868
1869=head2 gdImageColorDeallocate
1870
1871$image->gdImageColorDeallocate( $color )
1872
1873=cut
1874
1875
1876sub gdImageColorDeallocate
1877{
1878    my $self = shift;
1879    return _gdImageColorDeallocate ( $self->{IMG_PTR}, @_ );
1880} # End of gdImageColorDeallocate()...
1881
1882
1883=head2 TrueColorToPalette
1884
1885$image->TrueColorToPalette( $ditherFlag, $colorsWanted )
1886
1887Alias for gdImageTrueColorToPalette.
1888
1889=cut
1890
1891
1892sub TrueColorToPalette
1893{
1894    return gdImageTrueColorToPalette ( @_ );
1895} # End of TrueColorToPalette()...
1896
1897
1898=head2 gdImageTrueColorToPalette
1899
1900$image->gdImageTrueColorToPalette( $ditherFlag, $colorsWanted )
1901
1902=cut
1903
1904
1905sub gdImageTrueColorToPalette
1906{
1907    my $self = shift;
1908    return _gdImageTrueColorToPalette ( $self->{IMG_PTR}, @_ );
1909} # End of gdImageTrueColorToPalette()...
1910
1911
1912=head2 ColorTransparent
1913
1914$image->ColorTransparent( $color )
1915
1916Alias for gdImageColorTransparent.
1917
1918=cut
1919
1920
1921sub ColorTransparent
1922{
1923    return gdImageColorTransparent ( @_ );
1924} # End of ColorTransparent()...
1925
1926
1927=head2 gdImageColorTransparent
1928
1929$image->gdImageColorTransparent( $color )
1930
1931=cut
1932
1933
1934sub gdImageColorTransparent
1935{
1936    my $self = shift;
1937    return _gdImageColorTransparent ( $self->{IMG_PTR}, @_ );
1938} # End of gdImageColorTransparent()...
1939
1940
1941=head2 FilledArc
1942
1943$image->FilledArc( $cx, $cy, $w, $h, $s, $e, $color, $style )
1944
1945Alias for gdImageFilledArc.
1946
1947=cut
1948
1949
1950sub FilledArc
1951{
1952    return gdImageFilledArc ( @_ );
1953} # End of FilledArc()...
1954
1955
1956=head2 gdImageFilledArc
1957
1958$image->gdImageFilledArc( $cx, $cy, $w, $h, $s, $e, $color, $style )
1959
1960=cut
1961
1962
1963sub gdImageFilledArc
1964{
1965    my $self = shift;
1966    return _gdImageFilledArc ( $self->{IMG_PTR}, @_ );
1967} # End of gdImageFilledArc()...
1968
1969
1970=head2 Arc
1971
1972$image->Arc( $cx, $cy, $w, $h, $s, $e, $color )
1973
1974Alias for gdImageArc.
1975
1976=cut
1977
1978
1979sub Arc
1980{
1981    return gdImageArc ( @_ );
1982} # End of Arc()...
1983
1984
1985=head2 gdImageArc
1986
1987$image->gdImageArc( $cx, $cy, $w, $h, $s, $e, $color )
1988
1989=cut
1990
1991
1992sub gdImageArc
1993{
1994    my $self = shift;
1995    return _gdImageArc ( $self->{IMG_PTR}, @_ );
1996} # End of gdImageArc()...
1997
1998
1999=head2 FilledEllipse
2000
2001$image->FilledEllipse( $cx, $cy, $w, $h, $color )
2002
2003Alias for gdImageFilledEllipse.
2004
2005=cut
2006
2007
2008sub FilledEllipse
2009{
2010    return gdImageFilledEllipse ( @_ );
2011} # End of FilledEllipse()...
2012
2013
2014=head2 gdImageFilledEllipse
2015
2016$image->gdImageFilledEllipse( $cx, $cy, $w, $h, $color )
2017
2018=cut
2019
2020
2021sub gdImageFilledEllipse
2022{
2023    my $self = shift;
2024    return _gdImageFilledEllipse ( $self->{IMG_PTR}, @_ );
2025} # End of gdImageFilledEllipse()...
2026
2027
2028=head2 FillToBorder
2029
2030$image->FillToBorder( $x, $y, $border, $color )
2031
2032Alias for gdImageFillToBorder.
2033
2034=cut
2035
2036
2037sub FillToBorder
2038{
2039    return gdImageFillToBorder ( @_ );
2040} # End of FillToBorder()...
2041
2042
2043=head2 gdImageFillToBorder
2044
2045$image->gdImageFillToBorder( $x, $y, $border, $color )
2046
2047=cut
2048
2049
2050sub gdImageFillToBorder
2051{
2052    my $self = shift;
2053    return _gdImageFillToBorder ( $self->{IMG_PTR}, @_ );
2054} # End of gdImageFillToBorder()...
2055
2056
2057=head2 Fill
2058
2059$image->Fill( $x, $y, $color )
2060
2061Alias for gdImageFill.
2062
2063=cut
2064
2065
2066sub Fill
2067{
2068    return gdImageFill ( @_ );
2069} # End of Fill()...
2070
2071
2072=head2 gdImageFill
2073
2074$image->gdImageFill( $x, $y, $color )
2075
2076=cut
2077
2078
2079sub gdImageFill
2080{
2081    my $self = shift;
2082    return _gdImageFill ( $self->{IMG_PTR}, @_ );
2083} # End of gdImageFill()...
2084
2085
2086=head2 CopyRotated
2087
2088$image->CopyRotated( $dstX, $dstY, $srcX, $srcY, $srcWidth, $srcHeight, $angle )
2089
2090Alias for gdImageCopyRotated.
2091
2092=cut
2093
2094
2095sub CopyRotated
2096{
2097    return gdImageCopyRotated ( @_ );
2098} # End of CopyRotated()...
2099
2100
2101=head2 gdImageCopyRotated
2102
2103$image->gdImageCopyRotated( $dstX, $dstY, $srcX, $srcY, $srcWidth, $srcHeight, $angle )
2104
2105=cut
2106
2107
2108sub gdImageCopyRotated
2109{
2110    my $self = shift;
2111    return _gdImageCopyRotated ( $self->{IMG_PTR}, @_ );
2112} # End of gdImageCopyRotated()...
2113
2114
2115=head2 SetBrush
2116
2117$image->SetBrush(  )
2118
2119Alias for gdImageSetBrush.
2120
2121=cut
2122
2123
2124sub SetBrush
2125{
2126    return gdImageSetBrush ( @_ );
2127} # End of SetBrush()...
2128
2129
2130=head2 gdImageSetBrush
2131
2132$image->gdImageSetBrush(  )
2133
2134=cut
2135
2136
2137sub gdImageSetBrush
2138{
2139    my $self = shift;
2140    return _gdImageSetBrush ( $self->{IMG_PTR}, @_ );
2141} # End of gdImageSetBrush()...
2142
2143
2144=head2 SetTile
2145
2146$image->SetTile(  )
2147
2148Alias for gdImageSetTile.
2149
2150=cut
2151
2152
2153sub SetTile
2154{
2155    return gdImageSetTile ( @_ );
2156} # End of SetTile()...
2157
2158
2159=head2 gdImageSetTile
2160
2161$image->gdImageSetTile(  )
2162
2163=cut
2164
2165
2166sub gdImageSetTile
2167{
2168    my $self = shift;
2169    return _gdImageSetTile ( $self->{IMG_PTR}, @_ );
2170} # End of gdImageSetTile()...
2171
2172
2173=head2 SetAntiAliased
2174
2175$image->SetAntiAliased( $c )
2176
2177Alias for gdImageSetAntiAliased.
2178
2179=cut
2180
2181
2182sub SetAntiAliased
2183{
2184    return gdImageSetAntiAliased ( @_ );
2185} # End of SetAntiAliased()...
2186
2187
2188=head2 gdImageSetAntiAliased
2189
2190$image->gdImageSetAntiAliased( $c )
2191
2192=cut
2193
2194
2195sub gdImageSetAntiAliased
2196{
2197    my $self = shift;
2198    return _gdImageSetAntiAliased ( $self->{IMG_PTR}, @_ );
2199} # End of gdImageSetAntiAliased()...
2200
2201
2202=head2 SetAntiAliasedDontBlend
2203
2204$image->SetAntiAliasedDontBlend( $c, $dont_blend )
2205
2206Alias for gdImageSetAntiAliasedDontBlend.
2207
2208=cut
2209
2210
2211sub SetAntiAliasedDontBlend
2212{
2213    return gdImageSetAntiAliasedDontBlend ( @_ );
2214} # End of SetAntiAliasedDontBlend()...
2215
2216
2217=head2 gdImageSetAntiAliasedDontBlend
2218
2219$image->gdImageSetAntiAliasedDontBlend( $c, $dont_blend )
2220
2221=cut
2222
2223
2224sub gdImageSetAntiAliasedDontBlend
2225{
2226    my $self = shift;
2227    return _gdImageSetAntiAliasedDontBlend ( $self->{IMG_PTR}, @_ );
2228} # End of gdImageSetAntiAliasedDontBlend()...
2229
2230
2231=head2 SetStyle
2232
2233$image->SetStyle( $style, $noOfPixels )
2234
2235Alias for gdImageSetStyle.
2236
2237=cut
2238
2239
2240sub SetStyle
2241{
2242    return gdImageSetStyle ( @_ );
2243} # End of SetStyle()...
2244
2245
2246=head2 gdImageSetStyle
2247
2248$image->gdImageSetStyle( $style, $noOfPixels )
2249
2250=cut
2251
2252
2253sub gdImageSetStyle
2254{
2255    my $self = shift;
2256    return _gdImageSetStyle ( $self->{IMG_PTR}, @_ );
2257} # End of gdImageSetStyle()...
2258
2259
2260=head2 SetThickness
2261
2262$image->SetThickness( $thickness )
2263
2264Alias for gdImageSetThickness.
2265
2266=cut
2267
2268
2269sub SetThickness
2270{
2271    return gdImageSetThickness ( @_ );
2272} # End of SetThickness()...
2273
2274
2275=head2 gdImageSetThickness
2276
2277$image->gdImageSetThickness( $thickness )
2278
2279=cut
2280
2281
2282sub gdImageSetThickness
2283{
2284    my $self = shift;
2285    return _gdImageSetThickness ( $self->{IMG_PTR}, @_ );
2286} # End of gdImageSetThickness()...
2287
2288
2289=head2 Interlace
2290
2291$image->Interlace( $interlaceArg )
2292
2293Alias for gdImageInterlace.
2294
2295=cut
2296
2297
2298sub Interlace
2299{
2300    return gdImageInterlace ( @_ );
2301} # End of Interlace()...
2302
2303
2304=head2 gdImageInterlace
2305
2306$image->gdImageInterlace( $interlaceArg )
2307
2308=cut
2309
2310
2311sub gdImageInterlace
2312{
2313    my $self = shift;
2314    return _gdImageInterlace ( $self->{IMG_PTR}, @_ );
2315} # End of gdImageInterlace()...
2316
2317
2318=head2 AlphaBlending
2319
2320$image->AlphaBlending( $alphaBlendingArg )
2321
2322Alias for gdImageAlphaBlending.
2323
2324=cut
2325
2326
2327sub AlphaBlending
2328{
2329    return gdImageAlphaBlending ( @_ );
2330} # End of AlphaBlending()...
2331
2332
2333=head2 gdImageAlphaBlending
2334
2335$image->gdImageAlphaBlending( $alphaBlendingArg )
2336
2337=cut
2338
2339
2340sub gdImageAlphaBlending
2341{
2342    my $self = shift;
2343    return _gdImageAlphaBlending ( $self->{IMG_PTR}, @_ );
2344} # End of gdImageAlphaBlending()...
2345
2346
2347=head2 SaveAlpha
2348
2349$image->SaveAlpha( $saveAlphaArg )
2350
2351Alias for gdImageSaveAlpha.
2352
2353=cut
2354
2355
2356sub SaveAlpha
2357{
2358    return gdImageSaveAlpha ( @_ );
2359} # End of SaveAlpha()...
2360
2361
2362=head2 gdImageSaveAlpha
2363
2364$image->gdImageSaveAlpha( $saveAlphaArg )
2365
2366=cut
2367
2368
2369sub gdImageSaveAlpha
2370{
2371    my $self = shift;
2372    return _gdImageSaveAlpha ( $self->{IMG_PTR}, @_ );
2373} # End of gdImageSaveAlpha()...
2374
2375
2376=head2 TrueColor
2377
2378$image->TrueColor(  )
2379
2380Alias for gdImageTrueColor.
2381
2382=cut
2383
2384
2385sub TrueColor
2386{
2387    return gdImageTrueColor ( @_ );
2388} # End of TrueColor()...
2389
2390
2391=head2 gdImageTrueColor
2392
2393$image->gdImageTrueColor(  )
2394
2395=cut
2396
2397
2398sub gdImageTrueColor
2399{
2400    my $self = shift;
2401    return _gdImageTrueColor ( $self->{IMG_PTR}, @_ );
2402} # End of gdImageTrueColor()...
2403
2404
2405=head2 ColorsTotal
2406
2407$image->ColorsTotal(  )
2408
2409Alias for gdImageColorsTotal.
2410
2411=cut
2412
2413
2414sub ColorsTotal
2415{
2416    return gdImageColorsTotal ( @_ );
2417} # End of ColorsTotal()...
2418
2419
2420=head2 gdImageColorsTotal
2421
2422$image->gdImageColorsTotal(  )
2423
2424=cut
2425
2426
2427sub gdImageColorsTotal
2428{
2429    my $self = shift;
2430    return _gdImageColorsTotal ( $self->{IMG_PTR}, @_ );
2431} # End of gdImageColorsTotal()...
2432
2433
2434=head2 Red
2435
2436$image->Red( $c )
2437
2438Alias for gdImageRed.
2439
2440=cut
2441
2442
2443sub Red
2444{
2445    return gdImageRed ( @_ );
2446} # End of Red()...
2447
2448
2449=head2 gdImageRed
2450
2451$image->gdImageRed( $c )
2452
2453=cut
2454
2455
2456sub gdImageRed
2457{
2458    my $self = shift;
2459    return _gdImageRed ( $self->{IMG_PTR}, @_ );
2460} # End of gdImageRed()...
2461
2462
2463=head2 Green
2464
2465$image->Green( $c )
2466
2467Alias for gdImageGreen.
2468
2469=cut
2470
2471
2472sub Green
2473{
2474    return gdImageGreen ( @_ );
2475} # End of Green()...
2476
2477
2478=head2 gdImageGreen
2479
2480$image->gdImageGreen( $c )
2481
2482=cut
2483
2484
2485sub gdImageGreen
2486{
2487    my $self = shift;
2488    return _gdImageGreen ( $self->{IMG_PTR}, @_ );
2489} # End of gdImageGreen()...
2490
2491
2492=head2 Blue
2493
2494$image->Blue( $c )
2495
2496Alias for gdImageBlue.
2497
2498=cut
2499
2500
2501sub Blue
2502{
2503    return gdImageBlue ( @_ );
2504} # End of Blue()...
2505
2506
2507=head2 gdImageBlue
2508
2509$image->gdImageBlue( $c )
2510
2511=cut
2512
2513
2514sub gdImageBlue
2515{
2516    my $self = shift;
2517    return _gdImageBlue ( $self->{IMG_PTR}, @_ );
2518} # End of gdImageBlue()...
2519
2520
2521=head2 Alpha
2522
2523$image->Alpha( $c )
2524
2525Alias for gdImageAlpha.
2526
2527=cut
2528
2529
2530sub Alpha
2531{
2532    return gdImageAlpha ( @_ );
2533} # End of Alpha()...
2534
2535
2536=head2 gdImageAlpha
2537
2538$image->gdImageAlpha( $c )
2539
2540=cut
2541
2542
2543sub gdImageAlpha
2544{
2545    my $self = shift;
2546    return _gdImageAlpha ( $self->{IMG_PTR}, @_ );
2547} # End of gdImageAlpha()...
2548
2549
2550=head2 GetTransparent
2551
2552$image->GetTransparent(  )
2553
2554Alias for gdImageGetTransparent.
2555
2556=cut
2557
2558
2559sub GetTransparent
2560{
2561    return gdImageGetTransparent ( @_ );
2562} # End of GetTransparent()...
2563
2564
2565=head2 gdImageGetTransparent
2566
2567$image->gdImageGetTransparent(  )
2568
2569=cut
2570
2571
2572sub gdImageGetTransparent
2573{
2574    my $self = shift;
2575    return _gdImageGetTransparent ( $self->{IMG_PTR}, @_ );
2576} # End of gdImageGetTransparent()...
2577
2578
2579=head2 GetInterlaced
2580
2581$image->GetInterlaced(  )
2582
2583Alias for gdImageGetInterlaced.
2584
2585=cut
2586
2587
2588sub GetInterlaced
2589{
2590    return gdImageGetInterlaced ( @_ );
2591} # End of GetInterlaced()...
2592
2593
2594=head2 gdImageGetInterlaced
2595
2596$image->gdImageGetInterlaced(  )
2597
2598=cut
2599
2600
2601sub gdImageGetInterlaced
2602{
2603    my $self = shift;
2604    return _gdImageGetInterlaced ( $self->{IMG_PTR}, @_ );
2605} # End of gdImageGetInterlaced()...
2606
2607
2608=head2 SX
2609
2610$image->SX(  )
2611
2612Alias for gdImageSX.
2613
2614=cut
2615
2616
2617sub SX
2618{
2619    return gdImageSX ( @_ );
2620} # End of SX()...
2621
2622
2623=head2 gdImageSX
2624
2625$image->gdImageSX(  )
2626
2627=cut
2628
2629
2630sub gdImageSX
2631{
2632    my $self = shift;
2633    return _gdImageSX ( $self->{IMG_PTR}, @_ );
2634} # End of gdImageSX()...
2635
2636
2637=head2 SY
2638
2639$image->SY(  )
2640
2641Alias for gdImageSY.
2642
2643=cut
2644
2645
2646sub SY
2647{
2648    return gdImageSY ( @_ );
2649} # End of SY()...
2650
2651
2652=head2 gdImageSY
2653
2654$image->gdImageSY(  )
2655
2656=cut
2657
2658
2659sub gdImageSY
2660{
2661    my $self = shift;
2662    return _gdImageSY ( $self->{IMG_PTR}, @_ );
2663} # End of gdImageSY()...
2664
2665
2666=head2 ColorAllocates
2667
2668$image->ColorAllocates( $r(pdl), $g(pdl), $b(pdl) )
2669
2670Alias for gdImageColorAllocates.
2671
2672=cut
2673
2674
2675sub ColorAllocates
2676{
2677    return gdImageColorAllocates ( @_ );
2678} # End of ColorAllocates()...
2679
2680
2681=head2 gdImageColorAllocates
2682
2683$image->gdImageColorAllocates( $r(pdl), $g(pdl), $b(pdl) )
2684
2685=cut
2686
2687
2688sub gdImageColorAllocates
2689{
2690    my $self = shift;
2691    return _gdImageColorAllocates ( @_, $self->{IMG_PTR} );
2692} # End of gdImageColorAllocates()...
2693
2694
2695=head2 ColorAllocateAlphas
2696
2697$image->ColorAllocateAlphas( $r(pdl), $g(pdl), $b(pdl), $a(pdl) )
2698
2699Alias for gdImageColorAllocateAlphas.
2700
2701=cut
2702
2703
2704sub ColorAllocateAlphas
2705{
2706    return gdImageColorAllocateAlphas ( @_ );
2707} # End of ColorAllocateAlphas()...
2708
2709
2710=head2 gdImageColorAllocateAlphas
2711
2712$image->gdImageColorAllocateAlphas( $r(pdl), $g(pdl), $b(pdl), $a(pdl) )
2713
2714=cut
2715
2716
2717sub gdImageColorAllocateAlphas
2718{
2719    my $self = shift;
2720    return _gdImageColorAllocateAlphas ( @_, $self->{IMG_PTR} );
2721} # End of gdImageColorAllocateAlphas()...
2722
2723
2724=head2 SetPixels
2725
2726$image->SetPixels( $x(pdl), $y(pdl), $color(pdl) )
2727
2728Alias for gdImageSetPixels.
2729
2730=cut
2731
2732
2733sub SetPixels
2734{
2735    return gdImageSetPixels ( @_ );
2736} # End of SetPixels()...
2737
2738
2739=head2 gdImageSetPixels
2740
2741$image->gdImageSetPixels( $x(pdl), $y(pdl), $color(pdl) )
2742
2743=cut
2744
2745
2746sub gdImageSetPixels
2747{
2748    my $self = shift;
2749    return _gdImageSetPixels ( @_, $self->{IMG_PTR} );
2750} # End of gdImageSetPixels()...
2751
2752
2753=head2 Lines
2754
2755$image->Lines( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2756
2757Alias for gdImageLines.
2758
2759=cut
2760
2761
2762sub Lines
2763{
2764    return gdImageLines ( @_ );
2765} # End of Lines()...
2766
2767
2768=head2 gdImageLines
2769
2770$image->gdImageLines( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2771
2772=cut
2773
2774
2775sub gdImageLines
2776{
2777    my $self = shift;
2778    return _gdImageLines ( @_, $self->{IMG_PTR} );
2779} # End of gdImageLines()...
2780
2781
2782=head2 DashedLines
2783
2784$image->DashedLines( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2785
2786Alias for gdImageDashedLines.
2787
2788=cut
2789
2790
2791sub DashedLines
2792{
2793    return gdImageDashedLines ( @_ );
2794} # End of DashedLines()...
2795
2796
2797=head2 gdImageDashedLines
2798
2799$image->gdImageDashedLines( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2800
2801=cut
2802
2803
2804sub gdImageDashedLines
2805{
2806    my $self = shift;
2807    return _gdImageDashedLines ( @_, $self->{IMG_PTR} );
2808} # End of gdImageDashedLines()...
2809
2810
2811=head2 Rectangles
2812
2813$image->Rectangles( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2814
2815Alias for gdImageRectangles.
2816
2817=cut
2818
2819
2820sub Rectangles
2821{
2822    return gdImageRectangles ( @_ );
2823} # End of Rectangles()...
2824
2825
2826=head2 gdImageRectangles
2827
2828$image->gdImageRectangles( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2829
2830=cut
2831
2832
2833sub gdImageRectangles
2834{
2835    my $self = shift;
2836    return _gdImageRectangles ( @_, $self->{IMG_PTR} );
2837} # End of gdImageRectangles()...
2838
2839
2840=head2 FilledRectangles
2841
2842$image->FilledRectangles( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2843
2844Alias for gdImageFilledRectangles.
2845
2846=cut
2847
2848
2849sub FilledRectangles
2850{
2851    return gdImageFilledRectangles ( @_ );
2852} # End of FilledRectangles()...
2853
2854
2855=head2 gdImageFilledRectangles
2856
2857$image->gdImageFilledRectangles( $x1(pdl), $y1(pdl), $x2(pdl), $y2(pdl), $color(pdl) )
2858
2859=cut
2860
2861
2862sub gdImageFilledRectangles
2863{
2864    my $self = shift;
2865    return _gdImageFilledRectangles ( @_, $self->{IMG_PTR} );
2866} # End of gdImageFilledRectangles()...
2867
2868
2869=head2 FilledArcs
2870
2871$image->FilledArcs( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $s(pdl), $e(pdl), $color(pdl), $style(pdl) )
2872
2873Alias for gdImageFilledArcs.
2874
2875=cut
2876
2877
2878sub FilledArcs
2879{
2880    return gdImageFilledArcs ( @_ );
2881} # End of FilledArcs()...
2882
2883
2884=head2 gdImageFilledArcs
2885
2886$image->gdImageFilledArcs( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $s(pdl), $e(pdl), $color(pdl), $style(pdl) )
2887
2888=cut
2889
2890
2891sub gdImageFilledArcs
2892{
2893    my $self = shift;
2894    return _gdImageFilledArcs ( @_, $self->{IMG_PTR} );
2895} # End of gdImageFilledArcs()...
2896
2897
2898=head2 Arcs
2899
2900$image->Arcs( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $s(pdl), $e(pdl), $color(pdl) )
2901
2902Alias for gdImageArcs.
2903
2904=cut
2905
2906
2907sub Arcs
2908{
2909    return gdImageArcs ( @_ );
2910} # End of Arcs()...
2911
2912
2913=head2 gdImageArcs
2914
2915$image->gdImageArcs( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $s(pdl), $e(pdl), $color(pdl) )
2916
2917=cut
2918
2919
2920sub gdImageArcs
2921{
2922    my $self = shift;
2923    return _gdImageArcs ( @_, $self->{IMG_PTR} );
2924} # End of gdImageArcs()...
2925
2926
2927=head2 FilledEllipses
2928
2929$image->FilledEllipses( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $color(pdl) )
2930
2931Alias for gdImageFilledEllipses.
2932
2933=cut
2934
2935
2936sub FilledEllipses
2937{
2938    return gdImageFilledEllipses ( @_ );
2939} # End of FilledEllipses()...
2940
2941
2942=head2 gdImageFilledEllipses
2943
2944$image->gdImageFilledEllipses( $cx(pdl), $cy(pdl), $w(pdl), $h(pdl), $color(pdl) )
2945
2946=cut
2947
2948
2949sub gdImageFilledEllipses
2950{
2951    my $self = shift;
2952    return _gdImageFilledEllipses ( @_, $self->{IMG_PTR} );
2953} # End of gdImageFilledEllipses()...
2954
2955
2956=head1 CLASS FUNCTIONS
2957
2958=cut
2959
2960
2961
2962
2963=head2 gdImageCopy
2964
2965gdImageCopy ( $dst(PDL::IO::GD), $src(PDL::IO::GD), $dstX, $dstY, $srcX, $srcY, $w, $h )
2966
2967=cut
2968
2969
2970sub gdImageCopy
2971{
2972    my $dst = shift;
2973    my $src = shift;
2974    my $dstX = shift;
2975    my $dstY = shift;
2976    my $srcX = shift;
2977    my $srcY = shift;
2978    my $w = shift;
2979    my $h = shift;
2980
2981    return _gdImageCopy ( $dst->{IMG_PTR}, $src->{IMG_PTR}, $dstX, $dstY, $srcX, $srcY, $w, $h );
2982} # End of gdImageCopy()...
2983
2984
2985=head2 gdImageCopyMerge
2986
2987gdImageCopyMerge ( $dst(PDL::IO::GD), $src(PDL::IO::GD), $dstX, $dstY, $srcX, $srcY, $w, $h, $pct )
2988
2989=cut
2990
2991
2992sub gdImageCopyMerge
2993{
2994    my $dst = shift;
2995    my $src = shift;
2996    my $dstX = shift;
2997    my $dstY = shift;
2998    my $srcX = shift;
2999    my $srcY = shift;
3000    my $w = shift;
3001    my $h = shift;
3002    my $pct = shift;
3003
3004    return _gdImageCopyMerge ( $dst->{IMG_PTR}, $src->{IMG_PTR}, $dstX, $dstY, $srcX, $srcY, $w, $h, $pct );
3005} # End of gdImageCopyMerge()...
3006
3007
3008=head2 gdImageCopyMergeGray
3009
3010gdImageCopyMergeGray ( $dst(PDL::IO::GD), $src(PDL::IO::GD), $dstX, $dstY, $srcX, $srcY, $w, $h, $pct )
3011
3012=cut
3013
3014
3015sub gdImageCopyMergeGray
3016{
3017    my $dst = shift;
3018    my $src = shift;
3019    my $dstX = shift;
3020    my $dstY = shift;
3021    my $srcX = shift;
3022    my $srcY = shift;
3023    my $w = shift;
3024    my $h = shift;
3025    my $pct = shift;
3026
3027    return _gdImageCopyMergeGray ( $dst->{IMG_PTR}, $src->{IMG_PTR}, $dstX, $dstY, $srcX, $srcY, $w, $h, $pct );
3028} # End of gdImageCopyMergeGray()...
3029
3030
3031=head2 gdImageCopyResized
3032
3033gdImageCopyResized ( $dst(PDL::IO::GD), $src(PDL::IO::GD), $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH )
3034
3035=cut
3036
3037
3038sub gdImageCopyResized
3039{
3040    my $dst = shift;
3041    my $src = shift;
3042    my $dstX = shift;
3043    my $dstY = shift;
3044    my $srcX = shift;
3045    my $srcY = shift;
3046    my $dstW = shift;
3047    my $dstH = shift;
3048    my $srcW = shift;
3049    my $srcH = shift;
3050
3051    return _gdImageCopyResized ( $dst->{IMG_PTR}, $src->{IMG_PTR}, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH );
3052} # End of gdImageCopyResized()...
3053
3054
3055=head2 gdImageCopyResampled
3056
3057gdImageCopyResampled ( $dst(PDL::IO::GD), $src(PDL::IO::GD), $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH )
3058
3059=cut
3060
3061
3062sub gdImageCopyResampled
3063{
3064    my $dst = shift;
3065    my $src = shift;
3066    my $dstX = shift;
3067    my $dstY = shift;
3068    my $srcX = shift;
3069    my $srcY = shift;
3070    my $dstW = shift;
3071    my $dstH = shift;
3072    my $srcW = shift;
3073    my $srcH = shift;
3074
3075    return _gdImageCopyResampled ( $dst->{IMG_PTR}, $src->{IMG_PTR}, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH );
3076} # End of gdImageCopyResampled()...
3077
3078
3079=head2 gdImageCompare
3080
3081gdImageCompare ( $im1(PDL::IO::GD), $im2(PDL::IO::GD) )
3082
3083=cut
3084
3085
3086sub gdImageCompare
3087{
3088    my $im1 = shift;
3089    my $im2 = shift;
3090
3091    return _gdImageCompare ( $im1->{IMG_PTR}, $im2->{IMG_PTR} );
3092} # End of gdImageCompare()...
3093
3094
3095=head2 gdImagePaletteCopy
3096
3097gdImagePaletteCopy ( $dst(PDL::IO::GD), $src(PDL::IO::GD) )
3098
3099=cut
3100
3101
3102sub gdImagePaletteCopy
3103{
3104    my $dst = shift;
3105    my $src = shift;
3106
3107    return _gdImagePaletteCopy ( $dst->{IMG_PTR}, $src->{IMG_PTR} );
3108} # End of gdImagePaletteCopy()...
3109
3110
3111=head2 StringTTF
3112
3113$image->StringTTF( $brect, $fg, $fontlist, $ptsize, $angle, $x, $y, $string )
3114
3115Alias for gdImageStringTTF.
3116
3117=cut
3118
3119
3120sub StringTTF
3121{
3122    return gdImageStringTTF ( @_ );
3123} # End of StringTTF()...
3124
3125
3126=head2 gdImageStringTTF
3127
3128$image->gdImageStringTTF( $brect, $fg, $fontlist, $ptsize, $angle, $x, $y, $string )
3129
3130=cut
3131
3132
3133sub gdImageStringTTF
3134{
3135    my $self = shift;
3136    return _gdImageStringTTF ( $self->{IMG_PTR}, @_ );
3137} # End of gdImageStringTTF()...
3138
3139
3140=head2 StringFT
3141
3142$image->StringFT( $brect, $fg, $fontlist, $ptsize, $angle, $x, $y, $string )
3143
3144Alias for gdImageStringFT.
3145
3146=cut
3147
3148
3149sub StringFT
3150{
3151    return gdImageStringFT ( @_ );
3152} # End of StringFT()...
3153
3154
3155=head2 gdImageStringFT
3156
3157$image->gdImageStringFT( $brect, $fg, $fontlist, $ptsize, $angle, $x, $y, $string )
3158
3159=cut
3160
3161
3162sub gdImageStringFT
3163{
3164    my $self = shift;
3165    return _gdImageStringFT ( $self->{IMG_PTR}, @_ );
3166} # End of gdImageStringFT()...
3167
3168
3169
3170=head1 AUTHOR
3171
3172Judd Taylor, Orbital Systems, Ltd.
3173judd dot t at orbitalsystems dot com
3174
3175=cut
3176
3177
3178
3179
3180
3181# Exit with OK status
3182
31831;
3184
3185