1 package Imager::ExtUtils;
11 Imager::ExtUtils - functions handy in writing Imager extensions
15 # make Imager easier to use with Inline
16 # perldoc Imager::Inline
17 use Inline with => 'Imager';
25 Returns the base directory where Imager is installed.
29 # figure out where Imager is installed
31 for my $inc_dir (@INC) {
32 if (-e "$inc_dir/Imager.pm") {
33 my $base_dir = $inc_dir;
34 unless (File::Spec->file_name_is_absolute($base_dir)) {
35 $base_dir = File::Spec->rel2abs($base_dir);
41 die "Cannot locate an installed Imager!";
46 Implements Imager's Inline::C C<with> hook.
52 my $base = base_dir();
56 INC => $class->includes,
57 TYPEMAPS => $class->typemap,
58 AUTO_INCLUDE => <<CODE,
59 /* Inserted by Imager $Imager::VERSION */
62 DEFINE_IMAGER_CALLBACKS;
64 BOOT => 'PERL_INITIALIZE_IMAGER_CALLBACKS;',
65 FILTERS => \&_inline_filter,
78 map { (my $tmp = $_) =~ s/::/__/g; $_ => $tmp } @inline_replace;
80 my $inline_replace_re = "\\b(" . join('|', @inline_replace) . ")\\b";
85 $code =~ s/$inline_replace_re/$inline_replace{$1}/g;
92 Returns -I options suitable for use with ExtUtils::MakeMaker's INC
99 my $base = $class->base_dir();
101 "-I" . $base . '/Imager/include',
106 Returns the full path to Imager's installed typemap.
112 my $base = $class->base_dir();
114 $base . '/Imager/typemap';
125 Tony Cook <tonyc@cpan.org>
133 Imager, Imager::API, Imager::Inline, Imager::APIRef.