see plug-ins/perl/Changes

This commit is contained in:
Marc Lehmann 1999-01-25 21:10:30 +00:00
parent d40b66ac1d
commit 6abe8d0604
6 changed files with 94 additions and 52 deletions

View File

@ -1,11 +1,19 @@
Revision history for Gimp-Perl extension. Revision history for Gimp-Perl extension.
- moved the xlfd_size function from Gimp::Fu into Gimp
(and maybe later into Gimp::Util?)
- Functions in Gimp::Util are now treated in the same way
as PDB functions (when the module is loaded)
1.051 Tue Jan 19 21:10:20 CET 1999
- corrected a minor typoe found by Stefan Traby <stefan@sime.com> - corrected a minor typoe found by Stefan Traby <stefan@sime.com>
- added SPIRAL* constants for gimp_blend - added SPIRAL* constants for gimp_blend
- moved constants from Gimp.xs and extradefs.h to Gimp.pm, where - moved constants from Gimp.xs and extradefs.h to Gimp.pm, where
they belong (either there or into Gimp.xs) they belong (either there or into Gimp.xs)
- added view3d.pl to examples (untested) - added view3d.pl to examples (untested)
- Gimp::Util is reborn (give it a try and contribute!) - Gimp::Util is reborn (give it a try and contribute!)
- more Gtk changes (tested with Gtk-0.5 and gtk-1.1.x, uh-oh)
- faster startup by not loading Gtk by default ;)
1.05 Fri Dec 18 22:05:25 CET 1998 1.05 Fri Dec 18 22:05:25 CET 1998
- some 5.006 compatibility fixes - some 5.006 compatibility fixes

View File

@ -12,7 +12,7 @@ use base qw(DynaLoader);
require DynaLoader; require DynaLoader;
$VERSION = 1.05; $VERSION = 1.052;
@_param = qw( @_param = qw(
PARAM_BOUNDARY PARAM_CHANNEL PARAM_COLOR PARAM_DISPLAY PARAM_DRAWABLE PARAM_BOUNDARY PARAM_CHANNEL PARAM_COLOR PARAM_DISPLAY PARAM_DRAWABLE
@ -155,7 +155,7 @@ sub import($;@) {
# make a quick but dirty guess ;) # make a quick but dirty guess ;)
@_=qw(gimp_main main :auto) unless @_; @_=qw(gimp_main main xlfd_size :auto) unless @_;
for(@_) { for(@_) {
if ($_ eq ":auto") { if ($_ eq ":auto") {
@ -185,6 +185,13 @@ sub import($;@) {
} }
} }
sub xlfd_size($) {
local $^W=0;
my ($px,$pt)=(split(/-/,$_[0]))[7,8];
$px>0 ? ($px ,&Gimp::PIXELS)
: ($pt*0.1,&Gimp::POINTS);
}
my %rgb_db; my %rgb_db;
my $rgb_db_path; my $rgb_db_path;
@ -318,14 +325,24 @@ sub AUTOLOAD {
} elsif (_gimp_procedure_available ($sub)) { } elsif (_gimp_procedure_available ($sub)) {
*{$AUTOLOAD} = sub { *{$AUTOLOAD} = sub {
shift unless ref $_[0]; shift unless ref $_[0];
# goto gimp_call_procedure # goto gimp_call_procedure # does not always work, PERLBUG! #FIXME
my @r=eval { gimp_call_procedure ($sub,@_) }; my @r=eval { gimp_call_procedure ($sub,@_) };
_croak $@ if $@; _croak $@ if $@;
wantarray ? @r : $r[0]; wantarray ? @r : $r[0];
}; };
goto &$AUTOLOAD; goto &$AUTOLOAD;
} elsif (defined(*{"${interface_pkg}::$sub"}{CODE})) { } elsif (defined(*{"${interface_pkg}::$sub"}{CODE})) {
die "safety net $interface_pkg :: $sub";#d# die "safety net $interface_pkg :: $sub (REPORT THIS!!)";#d#
} elsif (UNIVERSAL::can(Gimp::Util,$sub)) {
my $ref = \&{"Gimp::Util::$sub"};
*{$AUTOLOAD} = sub {
shift unless ref $_[0];
# goto &$ref # does not always work, PERLBUG! #FIXME
my @r = eval { &$ref };
_croak $@ if $@;
wantarray ? @r : $r[0];
};
goto &$AUTOLOAD;
} }
} }
croak "function/macro \"$name\" not found in $class"; croak "function/macro \"$name\" not found in $class";
@ -630,6 +647,15 @@ speak for you), or just plain interesting functions.
Should be called immediately when perl is initialized. Arguments are not yet Should be called immediately when perl is initialized. Arguments are not yet
supported. Initializations can later be done in the init function. supported. Initializations can later be done in the init function.
=item xlfd_size(fontname)
This auxillary functions parses the XLFD (usually obtained from a C<PF_FONT>
parameter) and returns its size and unit (e.g. C<(20,POINTS)>). This can
conviniently used in the gimp_text_..._fontname functions, which ignore the
size (no joke ;). Example:
$drawable->text_fontname (50, 50, "The quick", 5, 1, xlfd_size $font, $font;
=item Gimp::init([connection-argument]), Gimp::end() =item Gimp::init([connection-argument]), Gimp::end()
These is an alternative and experimental interface that replaces the call to These is an alternative and experimental interface that replaces the call to

View File

@ -5,11 +5,8 @@ use Carp;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK @EXPORT_FAIL %EXPORT_TAGS use vars qw($VERSION @ISA @EXPORT @EXPORT_OK @EXPORT_FAIL %EXPORT_TAGS
@scripts @_params $run_mode %pf_type2string @image_params); @scripts @_params $run_mode %pf_type2string @image_params);
use Gimp qw(:param); use Gimp qw(:param);
use Gimp::UI;
use Gimp::Data; use Gimp::Data;
use File::Basename; use File::Basename;
use Gtk;
use Gtk::ColorSelectButton;
use Data::Dumper; use Data::Dumper;
use base qw(Exporter); use base qw(Exporter);
@ -116,7 +113,7 @@ sub Gimp::RUN_FULLINTERACTIVE (){ Gimp::RUN_INTERACTIVE+100 }; # you don't want
PF_SLIDER PF_INT PF_SPINNER PF_ADJUSTMENT PF_SLIDER PF_INT PF_SPINNER PF_ADJUSTMENT
PF_BRUSH PF_PATTERN PF_GRADIENT); PF_BRUSH PF_PATTERN PF_GRADIENT);
@EXPORT = (qw(register main gimp_main xlfd_size),@_params); @EXPORT = (qw(register main gimp_main),@_params);
@EXPORT_OK = qw(interact $run_mode save_image); @EXPORT_OK = qw(interact $run_mode save_image);
%EXPORT_TAGS = (params => [@_params]); %EXPORT_TAGS = (params => [@_params]);
@ -140,13 +137,6 @@ sub _default {
@a; @a;
} }
sub xlfd_size {
local $^W=0;
my ($px,$pt)=(split(/-/,$_[0]))[7,8];
$px>0 ? ($px ,&Gimp::PIXELS)
: ($pt*0.1,&Gimp::POINTS);
}
sub wrap_text { sub wrap_text {
my $x=$_[0]; my $x=$_[0];
$x=~s/(\G.{$_[1]}\S*)\s+/$1\n/g; $x=~s/(\G.{$_[1]}\S*)\s+/$1\n/g;
@ -162,11 +152,17 @@ sub interact($$$@) {
my($button,$box,$bot,$g); my($button,$box,$bot,$g);
my $res=0; my $res=0;
my $gimp_10 = Gimp->major_version==1 && Gimp->minor_version==0; # only pull these in if _really_ required
# gets us some speed we really need
init Gtk; require Gtk; import Gtk;
init Gtk; # gross hack...
parse Gtk::Rc Gimp->gtkrc; parse Gtk::Rc Gimp->gtkrc;
require Gtk::ColorSelectButton; import Gtk::ColorSelectButton;
require Gimp::UI; import Gimp::UI;
my $gimp_10 = Gimp->major_version==1 && Gimp->minor_version==0;
for(;;) { for(;;) {
my $t = new Gtk::Tooltips; my $t = new Gtk::Tooltips;
my $w = new Gtk::Dialog; my $w = new Gtk::Dialog;
@ -176,8 +172,8 @@ sub interact($$$@) {
my $h = new Gtk::HBox 0,2; my $h = new Gtk::HBox 0,2;
$h->add(new Gtk::Label wrap_text($blurb,40)); $h->add(new Gtk::Label wrap_text($blurb,40));
$w->vbox->pack_start($h,1,1,0); $w->vbox->pack_start($h,1,1,0);
realize $h; realize $w;
my $l = logo($h); my $l = logo($w);
$h->add($l); $h->add($l);
$g = new Gtk::Table scalar@types,2,0; $g = new Gtk::Table scalar@types,2,0;
@ -216,7 +212,7 @@ sub interact($$$@) {
} elsif($type == PF_FONT) { } elsif($type == PF_FONT) {
my $fs=new Gtk::FontSelectionDialog "Font Selection Dialog ($desc)"; my $fs=new Gtk::FontSelectionDialog "Font Selection Dialog ($desc)";
my $def = "-*-courier-helvetica-o-normal--34-*-*-*-*-*-*-*"; my $def = "-*-helvetica-o-normal--34-*-*-*-*-*-*-*";
my $val; my $val;
my $l=new Gtk::Label "!error!"; my $l=new Gtk::Label "!error!";
@ -740,6 +736,10 @@ sub register($$$$$$$$$;@) {
$code or ($results,$code)=([],$results); $code or ($results,$code)=([],$results);
for my $p (@$params,@$results) {
int($p->[0]) eq $p->[0] or croak "Argument/return value '$p->[1]' has illegal type '$p->[0]'";
}
$function="perl_fu_".$function unless $function=~/^perl_fu/ || $function=~s/^\+//; $function="perl_fu_".$function unless $function=~/^perl_fu/ || $function=~s/^\+//;
*$function = sub { *$function = sub {
@ -830,15 +830,6 @@ sub register($$$$$$$$$;@) {
=over =over
=item C<xlfd_size> fontname
This auxillary functions parses the XLFD (usually obtained from a C<PF_FONT>
parameter) and returns its size and unit (e.g. C<(20,POINTS)>). This can
conviniently used in the gimp_text_..._fontname functions, which ignore the
size (no joke ;). Example:
$drawable->text_fontname (50, 50, "The quick", 5, 1, xlfd_size $font, $font;
=item C<save_image(img,options_and_path)> =item C<save_image(img,options_and_path)>
This is the internal function used to save images. As it does more than just This is the internal function used to save images. As it does more than just
@ -958,7 +949,8 @@ sub logo {
} }
sub logo_xpm { sub logo_xpm {
new Gtk::Pixmap(Gtk::Gdk::Pixmap->create_from_xpm_d($_[0]->window,$_[0]->style->black, my $window=shift;
new Gtk::Pixmap(Gtk::Gdk::Pixmap->create_from_xpm_d($window->window,$window->style->black,
#%XPM:logo% #%XPM:logo%
'79 33 25 1', ' c None', '. c #020204', '+ c #848484', '@ c #444444', '79 33 25 1', ' c None', '. c #020204', '+ c #848484', '@ c #444444',
'# c #C3C3C4', '$ c #252524', '% c #A5A5A4', '& c #646464', '* c #E4E4E4', '# c #C3C3C4', '$ c #252524', '% c #A5A5A4', '& c #646464', '* c #E4E4E4',

View File

@ -91,10 +91,10 @@ use base 'Gtk::Button';
sub register_types { sub register_types {
unless ($once) { unless ($once) {
$once=1; $once=1;
register_type Gimp::UI::PreviewSelect; Gtk::Button->register_subtype(Gimp::UI::PreviewSelect);
register_type Gimp::UI::PatternSelect; Gtk::Button->register_subtype(Gimp::UI::PatternSelect);
register_type Gimp::UI::BrushSelect; Gtk::Button->register_subtype(Gimp::UI::BrushSelect);
register_type Gimp::UI::GradientSelect; Gtk::Button->register_subtype(Gimp::UI::GradientSelect);
} }
} }

View File

@ -1,31 +1,34 @@
##############################################################################
# [12/23/98] Tels v0.0.1 http://bloodgate.com/art/gimp/
=head1 NAME =head1 NAME
Gimp::Utils - some handy routines for Gimp.Perl users Gimp::Util - some handy routines for Gimp.Perl users
=head1 =head1 SYNOPSIS
use Gimp; use Gimp;
use Gimp::Util; use Gimp::Util;
=head1 DESCRIPTION =head1 DESCRIPTION
gimp.perl is nice, but when you have to write everytime 10 lines just to get Gimp-Perl is nice, but when you have to write everytime 10 lines just to
some simple functions done, it very quickly becomes tedious :-/ get some simple functions done, it very quickly becomes tedious :-/
This module tries to define some functions that aim to automate frequently This module tries to define some functions that aim to automate frequently
used tasks. If you want to add a function just mail the author of the used tasks, i.e. its a sort of catch-all-bag for (possibly) useful macro
functions. If you want to add a function just mail the author of the
Gimp-Perl extension (see below). Gimp-Perl extension (see below).
In Gimp-Perl (but not in Gimp as seen by the enduser) it is possible to have In Gimp-Perl (but not in Gimp as seen by the enduser) it is possible to
layers that are NOT attached to an image. This is, IMHO a bad idea, you end up have layers that are NOT attached to an image. This is, IMHO a bad idea,
with them and the user cannot see them or delete them. So we always attach our you end up with them and the user cannot see them or delete them. So we
created layers to an image here, too avoid memory leaks and debugging times. always attach our created layers to an image here, too avoid memory leaks
and debugging times.
These functions preserve the current settings like colors. These functions preserve the current settings like colors.
Also: these functions are handled in exactly the same way as
PDB-Functions, i.e. the (hypothetical) function C<gimp_image_xyzzy> can be
called as $image->xyzzy, if the module is available.
=head1 FUNCTIONS =head1 FUNCTIONS
=over 4 =over 4
@ -43,7 +46,7 @@ require Exporter;
); );
#@EXPORT_OK = qw(); #@EXPORT_OK = qw();
$VERSION=1.000; $VERSION=1.001;
use Gimp; use Gimp;
@ -203,10 +206,10 @@ sub layer_add_layer_as_mask {
my $mask; my $mask;
gimp_selection_all ($image); gimp_selection_all ($image);
gimp_edit_copy ($image,$layer_mask); $layer_mask->edit_copy ();
gimp_layer_add_alpha ($layer); gimp_layer_add_alpha ($layer);
$mask = gimp_layer_create_mask ($layer,0); $mask = gimp_layer_create_mask ($layer,0);
gimp_edit_paste ($image,$mask,0); $mask->edit_paste (0);
gimp_floating_sel_anchor(gimp_image_floating_selection($image)); gimp_floating_sel_anchor(gimp_image_floating_selection($image));
gimp_image_add_layer_mask ($image,$layer,$mask); gimp_image_add_layer_mask ($image,$layer,$mask);
$mask; $mask;
@ -218,6 +221,19 @@ sub layer_add_layer_as_mask {
# require/use etc. check for a true return value # require/use etc. check for a true return value
1; 1;
##############################################################################
# all functions below are originally for the chart module
=pod
=item C<gimp_text_wh $text,$fontname>
returns the width and height of the "$text" of the given font (XLFD format)
=cut
sub gimp_text_wh {
(Gimp->text_get_extents_fontname($_[0],xlfd_size $_[1],$_[1]))[0,1];
}
=pod =pod
=head1 AUTHOR =head1 AUTHOR

View File

@ -166,8 +166,8 @@ register "tex_string_to_float", "Turn a TeX-string into floating layer", "Takes
"<Image>/Perl-Fu/TeX String", "<Image>/Perl-Fu/TeX String",
"*", "*",
[ [
[PF_TEXT, "Input file", "TeX macro file to input", ""], [PF_STRING, "Input file", "TeX macro file to input", ""],
[PF_TEXT, "TeX String", "Enter TeX String", ""], [PF_STRING, "TeX String", "Enter TeX String", ""],
[PF_VALUE, "DPI", "Resolution to render the text in", "72"], [PF_VALUE, "DPI", "Resolution to render the text in", "72"],
[PF_VALUE, "Magstep", "TeX magstep", "2"], [PF_VALUE, "Magstep", "TeX magstep", "2"],
[PF_VALUE, "Anti-aliasing", "Anti-aliasing factor", "4"], [PF_VALUE, "Anti-aliasing", "Anti-aliasing factor", "4"],