File: Mandelbrot.pm

package info (click to toggle)
libimager-perl 1.005%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 6,308 kB
  • ctags: 4,067
  • sloc: perl: 30,915; ansic: 27,680; makefile: 55; cpp: 4
file content (84 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download | duplicates (3)
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
package Imager::Filter::Mandelbrot;
use strict;
use Imager;
use vars qw($VERSION @ISA);

BEGIN {
  $VERSION = "0.04";
  
  require XSLoader;
  XSLoader::load('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 <tonyc@cpan.org>

=head1 SEE ALSO

Imager, Imager::Filters.

=cut