Imager::Search::Driver - Abstract imlementation of a Imager::Search driver


Imager-Search documentation Contained in the Imager-Search distribution.

Index


Code Index:

NAME

Top

Imager::Search::Driver - Abstract imlementation of a Imager::Search driver

SYNOPSIS

Top

  # Create the search
  my $search = Imager::Search::Driver->new(
      driver => 'HTML24',
      big    => $large_imager_object,
      small  => $small_imager_object,
  );

  # Run the search
  my $found = $search->find_first;

  # Handle the result
  print "Found at row " . $found->top . " and column " . $found->left;

DESCRIPTION

Top

Given two images (we'll call them Big and Small), where Small is contained within Big zero or more times, determine the pixel locations of Small within Big.

For example, given a screen shot or a rendered webpage, locate the position of a known icon or picture within the larger image.

The intent is to provide functionality for use in various testing scenarios, or desktop gui automation, and so on.

METHODS

Top

new

  my $driver = Imager::Search::Driver->new;

The new constructor takes a new search driver object.

Returns a new Imager::Search::Driver object, or croaks on error.

image_string

The image_string method takes a Imager::Search::Image object, and generates the search string for the image.

Returns a reference to a scalar, or dies on error.

pattern_lines

Because of the way the regular expression spans scanlines, it requires the width of the target image in order to be fully generated. However, the sub-regexp for each scanline can be (and are) generated in advance.

When a Imager::Search::Pattern object is created, the driver method pattern_lines is called to generate the scanline regexp for the search pattern.

Returns a reference to an ARRAY containing the regexp in string form, or dies on error.

pattern_regexp

The pattern_regexp method takes a pattern and an image is retruns a fully-generated search regexp for the pattern, when used on that image.

Returns a Regexp object, or dies on error.

match_object

Once the regexp engine has located a potential match, the pattern, image and character position are provided to the match_object method.

The match_object will take the raw character position, validate that the character position is at a legimate pixel position, and then return the fully-described match.

Returns a Imager::Search::Match object if the position is valid, or false (undef in scalar context or a null string in list context) if the position is not valid.

SUPPORT

Top

See the SUPPORT section of the main Imager::Search module.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>

COPYRIGHT

Top


Imager-Search documentation Contained in the Imager-Search distribution.
package Imager::Search::Driver;

use 5.006;
use strict;
use Carp         ();
use Params::Util qw{ _STRING _CODELIKE _SCALAR _INSTANCE };
use Imager       ();

use vars qw{$VERSION};
BEGIN {
	$VERSION = '1.01';
}

use Imager::Search::Match ();





#####################################################################
# Constructor and Accessors

sub new {
	my $class = shift;

	# Apply the default driver
	if ( $class eq 'Imager::Search::Driver' ) {
		require Imager::Search::Driver::HTML24;
		return  Imager::Search::Driver::HTML24->new(@_);
	}

	# Create the object
	my $self = bless { @_ }, $class;

	return $self;
}





#####################################################################
# Driver API Methods

sub image_string {
	my $class = ref($_[0]) || $_[0];
	die "Illegal driver $class does not implement image_string";
}

sub pattern_lines {
	my $class = ref($_[0]) || $_[0];
	die "Illegal driver $class does not implement pattern_lines";
}

sub pattern_regexp {
	my $class = ref($_[0] || $_[0]);
	die "Illegal driver $class does not implement pattern_regexp";
}

sub match_object {
	my $class = ref($_[0] || $_[0]);
	die "Illegal driver $class does not implement match_object";
}

1;