File: Mandelbrot.pm

package info (click to toggle)
libimager-perl 0.75-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 4,532 kB
  • ctags: 3,278
  • sloc: ansic: 24,109; perl: 21,732; makefile: 13
file content (91 lines) | stat: -rw-r--r-- 1,662 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package Imager::Filter::Mandelbrot;
use strict;
use Imager;
use vars qw($VERSION @ISA);

BEGIN {
  $VERSION = "0.02";
  
  eval {
    require XSLoader;
    XSLoader::load('Imager::Filter::Mandelbrot', $VERSION);
    1;
  } or do {
    require DynaLoader;
    push @ISA, 'DynaLoader';
    bootstrap Imager::Filter::Mandelbrot $VERSION;
  };
}

sub _mandelbrot {
  my %hsh = @_;

  mandelbrot($hsh{image}, $hsh{minx}, $hsh{miny}, $hsh{maxx}, $hsh{maxy}, $hsh{maxiter});
}

my %defaults =
  (
   minx => -2.5,
   maxx => 1.5,
   miny => -1.5,
   maxy => 1.5,
   maxiter => 256,
  );

my @callseq = qw/image minx miny maxx maxy maxiter/;

Imager->register_filter(type=>'mandelbrot',
                        callsub => \&_mandelbrot,
                        defaults => \%defaults,
                        callseq => \@callseq);

1;

__END__

=head1 NAME

Imager::Filter::Mandelbrot - filter that renders the Mandelbrot set.

=head1 SYNOPSIS

  use Imager;
  use Imager::Filter::Mandelbrot;

  $img->filter(type=>'mandelbrot', ...);

=head1 DESCRIPTION

This is a expansion of the C<mandelbrot> dynamically loadable filter
provided in C<dynfilt> in previous releases of Imager.

Valid filter parameters are:

=over

=item *

C<minx>, C<maxx> - the range of x values to render.  Defaults: -2.5, 1.5.

=item *

C<miny>, C<maxy> - the range of y values to render.  Defaults: -1.5, 1.5

=item *

C<maxiter> - the maximum number of iterations to perform when checking
if the sequence tend towards infinity.

=back

=head1 AUTHOR

Original by Arnar M. Hrafnkelsson.

Adapted and expanded by Tony Cook <tony@imager.perl.org>

=head1 SEE ALSO

Imager, Imager::Filters.

=cut