1 package Imager::ExtUtils;
6 our $VERSION = "1.003";
10 Imager::ExtUtils - functions handy in writing Imager extensions
14 # make Imager easier to use with Inline
15 # perldoc Imager::Inline
16 use Inline with => 'Imager';
24 Returns the base directory where Imager is installed.
28 # figure out where Imager is installed
30 for my $inc_dir (@INC) {
31 if (-e "$inc_dir/Imager.pm") {
32 my $base_dir = $inc_dir;
33 unless (File::Spec->file_name_is_absolute($base_dir)) {
34 $base_dir = File::Spec->rel2abs($base_dir);
40 die "Cannot locate an installed Imager!";
45 Implements Imager's Inline::C C<with> hook.
51 my $base = base_dir();
55 INC => $class->includes,
56 TYPEMAPS => $class->typemap,
57 AUTO_INCLUDE => <<CODE,
58 /* Inserted by Imager $Imager::VERSION */
61 DEFINE_IMAGER_CALLBACKS;
63 BOOT => 'PERL_INITIALIZE_IMAGER_CALLBACKS;',
64 FILTERS => \&_inline_filter,
77 map { (my $tmp = $_) =~ s/::/__/g; $_ => $tmp } @inline_replace;
79 my $inline_replace_re = "\\b(" . join('|', @inline_replace) . ")\\b";
84 $code =~ s/$inline_replace_re/$inline_replace{$1}/g;
91 Returns -I options suitable for use with ExtUtils::MakeMaker's INC
98 my $base = $class->base_dir();
100 "-I" . $base . '/Imager/include',
105 Returns the full path to Imager's installed typemap.
111 my $base = $class->base_dir();
113 $base . '/Imager/typemap';
124 Tony Cook <tonyc@cpan.org>
132 Imager, Imager::API, Imager::Inline, Imager::APIRef.