Math-Fractal-DLA

 view release on metacpan or  search on metacpan

lib/Math/Fractal/DLA.pm  view on Meta::CPAN

sub setType
{
  my ($self,$type) = @_;
  no strict 'refs';
  unless ($type) { $self->exitOnError("No parameter defined"); }
  eval
  {
    require "Math/Fractal/DLA/".$type.".pm";
  };
  if ($@)
  {	$self->exitOnError("Can't locate package Math::Fractal::DLA::".$type); }
  $self->{TYPE} = $type;
} # setType

# Switch debug mode on or off
# Parameter: debug => true || false, logfile => file name
sub debug
{
  my $self = shift;
  my %param = @_;
  if ($param{debug}) 
  { 
    $self->{DEBUG} = 1;
    $self->{LOG} = new Log::LogLite($param{logfile});
    $self->{LOG}->template("<date>: <message>");
    $self->addLogMessage("STARTING NEW DLA-FRACTAL..");
  }
  else
  { 
    $self->{DEBUG} = 0;
  }
} # debug

# Add a message to the log file
# Parameter: message
sub addLogMessage
{
  my ($self,$msg) = @_;
  if ($self->{DEBUG})
  {
    $self->{LOG}->write($msg."\n",3);
  }
} # addLogMessage

# Load the image from a jpg or png image
# Parameter: filename
sub loadFile
{
  my $self = shift;
  my $filename = shift;
  if (-s $filename)
  {
    if (($filename =~ /\.jpg$/) || ($filename =~ /\.jpeg$/))
    { 
	  $self->{IMAGE} = GD::Image->newFromJpeg($filename) || $self->exitOnError("Can't open image ".$filename);
	  $self->addLogMessage("Loading JPG from $filename");
	  $self->{OUTPUT} = "JPG";
	} 
    elsif ($filename =~ /\.png$/)
    {
	  $self->{IMAGE} = GD::Image->newFromPng($filename) || $self->exitOnError("Can't open image ".$filename);
	  $self->addLogMessage("Loading PNG from $filename");
	  $self->{OUTPUT} = "PNG";
	}
    my ($width,$height) = $self->{IMAGE}->getBounds();
    $self->setSize(width => $width, height => $height);
  }	
  else
  {	$self->exitOnError($filename." doesn't exist"); }
} # loadFile

# Set the image size
# Parameter: width => xxx, height => xxx
sub setSize
{
  my $self = shift;
  my %param = @_;
  if ($self->{IMAGE}) { $self->exitOnError("Can't resize existing image"); }
  if ($param{width} !~ /^\d+$/) { $self->exitOnError("Parameter width is not a valid number"); }
  if ($param{height} !~ /^\d+$/) { $self->exitOnError("Parameter height is not a valid number"); }
  $self->{IMG_WIDTH} = $param{width};
  $self->{IMG_HEIGHT} = $param{height};
  $self->addLogMessage("Width: ".$param{width}.", Height: ".$param{height});
  foreach my $x (0..$param{width}+1)
  {
    foreach my $y (0..$param{height}+1)
    { 
      $self->{MATRIX}->[$x][$y] = 0;
    }
  }
  return 1;
} # setSize

# Set the number of points for the fractal
# Parameter: number of points
sub setPoints
{
  my $self = shift;
  my $number = shift;
  if ($number)
  {
    unless ($number =~ /^\d+$/) { $self->exitOnError($number." is not a valid number"); }
    $self->{POINTS} = $number;
    $self->addLogMessage("Set max. ".$self->{POINTS}." points");
  }
  else { $self->exitOnError("No parameter defined"); }
} # setPoints

# Get the number of points
sub getPoints
{
  my $self = shift; return $self->{POINTS};
} # getPoints

# Set the background color
# Parameter: r => xxx, g => xxx, b => xxx
sub setBackground
{
  my $self = shift;
  my %para = @_;
  foreach my $color (keys %para)



( run in 2.222 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )