missed a PERL_NO_GET_CONTEXT
[imager.git] / Mandelbrot / Mandelbrot.pm
1 package Imager::Filter::Mandelbrot;
2 use strict;
3 use Imager;
4 use vars qw($VERSION @ISA);
5
6 BEGIN {
7   $VERSION = "0.02";
8   
9   eval {
10     require XSLoader;
11     XSLoader::load('Imager::Filter::Mandelbrot', $VERSION);
12     1;
13   } or do {
14     require DynaLoader;
15     push @ISA, 'DynaLoader';
16     bootstrap Imager::Filter::Mandelbrot $VERSION;
17   };
18 }
19
20 sub _mandelbrot {
21   my %hsh = @_;
22
23   mandelbrot($hsh{image}, $hsh{minx}, $hsh{miny}, $hsh{maxx}, $hsh{maxy}, $hsh{maxiter});
24 }
25
26 my %defaults =
27   (
28    minx => -2.5,
29    maxx => 1.5,
30    miny => -1.5,
31    maxy => 1.5,
32    maxiter => 256,
33   );
34
35 my @callseq = qw/image minx miny maxx maxy maxiter/;
36
37 Imager->register_filter(type=>'mandelbrot',
38                         callsub => \&_mandelbrot,
39                         defaults => \%defaults,
40                         callseq => \@callseq);
41
42 1;
43
44 __END__
45
46 =head1 NAME
47
48 Imager::Filter::Mandelbrot - filter that renders the Mandelbrot set.
49
50 =head1 SYNOPSIS
51
52   use Imager;
53   use Imager::Filter::Mandelbrot;
54
55   $img->filter(type=>'mandelbrot', ...);
56
57 =head1 DESCRIPTION
58
59 This is a expansion of the C<mandelbrot> dynamically loadable filter
60 provided in C<dynfilt> in previous releases of Imager.
61
62 Valid filter parameters are:
63
64 =over
65
66 =item *
67
68 C<minx>, C<maxx> - the range of x values to render.  Defaults: -2.5, 1.5.
69
70 =item *
71
72 C<miny>, C<maxy> - the range of y values to render.  Defaults: -1.5, 1.5
73
74 =item *
75
76 C<maxiter> - the maximum number of iterations to perform when checking
77 if the sequence tend towards infinity.
78
79 =back
80
81 =head1 AUTHOR
82
83 Original by Arnar M. Hrafnkelsson.
84
85 Adapted and expanded by Tony Cook <tony@imager.perl.org>
86
87 =head1 SEE ALSO
88
89 Imager, Imager::Filters.
90
91 =cut