WISH YOU ALL A VERY HAPPY NEW YEAR.

On Thu, Dec 28, 2000 at 06:42:40PM +0530, Chetan Dhavse <[EMAIL PROTECTED]> wrote:
> Subroutine gimp_text_get_extents_fontname redefined at 
>/opt/other/src/perl-5.6.0/lib/site_perl/5.6.0/i686-linux/Gimp.pm line 539.

this is very strange but is most probably a problem with your script
(double fork or something similar) - how do you start your script, and can
>you send a stripped-down version of your script that shows this error?

I am sending you all a small script, maybe this will give you an idea
as to what I am doing(or doing wrong).

never-the-less this script also gives me the above warnings.

The script is in two part 
1)Shell script in which I start gimp and Xvfb
and then call the main gimp-perl program.(tests) 
Please ignore the linux server name,kosi(river in India) in this case

The next is the gimp-perl script (tests) which contains a main program 
and subroutines.
I have used similar subroutines for other gimp functions as well.


Is this the right way to start a gimp-perl program? or the
only way,I had used "sub net" to start earlier (1.1.04)
but does not work overhere.(1.2.0)
do I have to use the register method.(This is not a plug-in)?
Please do suggest me a better way if there is one.

2)I refer to DB browser for assistance on in/out parameters
In  many functions the first parameter is interactive/non_in...
which is mentioned as IN INT32 (integer) therefore I put "1" 
for non_interactive
and so plug_in_autocrop(1,$image,$layer);
which does not work.


Thanks for the Patience

Gimper

Chetan


################### SHELL SCRIPT ############################
#!/bin/sh

DISPLAY=kosi:1
export DISPLAY

Xvfb :1& 

gimp --display kosi:1.0 --no-interface --version 

./rot -o a.gif

killall gimp 
killall Xvfb
###################END SHELL SCRIPT ########################


################### GIMP PERL ##############################
#!/opt/bin/perl -w

use Gimp qw(:auto __ N_);
use Gimp::Fu;

register
    "rotate",
    "Circle", 
    "created using Gimp",
    "Chetan",   
    "cmie", 
    "2000-06-12",
    "<Toolbox>/Xtns/Perl-Fu/Tutorial/chart",
    "*",
    [
    ],
    \&trial;  

exit main();

sub     trial 
    {

        $font1="-fromttf-arial-bold-i-normal--0-0-0-0-p-0-iso8859-1";
        $font2="-fromttf-couriernew-bold-i-normal--0-0-0-0-m-0-iso8859-1";
        
#$font3="-fromttf-verdana_iso8859_1-bold-i-normal--0-0-0-0-p-0-adobe-fontspecific";
        #$font4="-misc-fixed-medium-r-normal--0-0-75-75-c-0-koi8-r";
        #$font5="-dec-terminal-medium-r-normal--0-0-75-75-c-0-dec-dectech";

        $text = "THIS IS A TEST";
        $tsize = 15;
        $angle = 0;     
        $bgcol = [100,100,100];
        $col = [233,200,150];

    my(@retval )= &text_extent($text,$font1,$tsize,$angle);

        print join("|",@retval),"\n"; 
        ($img,$layer)=&init_img(500,500);
        gimp_image_set_resolution($img,120,120);
        gimp_palette_set_background($bgcol);
        gimp_edit_fill($layer,0);
    gimp_ellipse_select($img, 250, 250, 100, 100, 0, 1, 1, 1);
    gimp_palette_set_foreground($col);
        gimp_bucket_fill($layer,0,0,100,100,1,100,100);
    &write_text($img,$layer,200,200,$text,$font2,$tsize,$col,$angle);
    &write_text($img,$layer,100,100,$text,$font1,$tsize,$col,$angle);
        plug_in_autocrop($img,$layer);
        return $img;    
        }


sub init_img
    {
        # initialisation of image and layer and adding layer to the image

    my ($img_width, $img_height) = @_;
    my ($img, $layer);
    $img = gimp_image_new($img_width, $img_height, RGB);
    $layer = gimp_layer_new($img,$img_width,$img_height,RGB,"Layer 1",100,0);
    gimp_image_add_layer($img, $layer, -1);
        gimp_drawable_fill($layer,2);
    return ($img, $layer);
        }

sub text_extent
    {
        #for calculating the width and the height of the text's bounding box.
    my ($text,$font,$size,$angle) = @_;
    my ($width,$height,$ascent,$decent,$wth,$ht) = (0,0,0,0,0,0);
        my($w1,$w2,$h1,$h2);

        ($wth, 
$ht,$ascent,$decent)=gimp_text_get_extents_fontname($text,$size,0,$font); 
        my $ang_wth = $wth;
        $width = $wth;
        $height = $ht;
        $w1 = $wth;
        $w2 = 0;
        if(defined($angle) && $angle != 0)
                {
                $ang_wth = $ht/sin($angle);
                $ang_wth = abs($ang_wth);
                $ang_wth = sprintf("%0.0f",$ang_wth);
                $w1 = $wth * abs(cos($angle));
                $w2 = $ht * abs(sin($angle));
                $h1 = $wth * abs(sin($angle));
                $h2 = $ht * abs(cos($angle));
                $width = sprintf("%0.0f",$w1 + $w2);
                $height = sprintf("%0.0f",$h1 + $h2);
                }
    return($width,$height,$ang_wth,$w1,$w2,$wth,$ht);
    }

sub write_text
    {
    # for writing text (eg. Title legends etc)
    my($img,$layer,$x,$y,$text,$font,$size,$colour,$angle) = @_;
    gimp_palette_set_foreground ($colour);
#gimp_text_fontname(img,drawable,x,y,text,border,antialias,size,sizetype,fontname)
    my $text_layer = gimp_text_fontname($img,$layer,$x,$y,$text,2,1,$size,0,$font);
        if($angle)
                {
                $text_layer = gimp_rotate($text_layer,1,$angle);
                #plug_in_rotate(1,$img,$text_layer,3,FALSE);
                }
        #gimp_floating_sel_relax($text_layer,1);
        #gimp_floating_sel_anchor($text_layer);
        gimp_floating_sel_attach($text_layer,$layer);
        gimp_selection_clear ($img);
        return $text_layer;
    }

###################### END GIMP PERL ################################

On Thu, 28 Dec 2000, Marc Lehmann wrote:

> On Thu, Dec 28, 2000 at 06:42:40PM +0530, Chetan Dhavse <[EMAIL PROTECTED]> wrote:
> > Subroutine gimp_text_get_extents_fontname redefined at 
>/opt/other/src/perl-5.6.0/lib/site_perl/5.6.0/i686-linux/Gimp.pm line 539.
> > Subroutine gimp_bucket_fill redefined at 
>/opt/other/src/perl-5.6.0/lib/site_perl/5.6.0/i686-linux/Gimp.pm line 539.
> > 
> > Sorry but I am lost. The same warnings are for almost all the function
> 
> this is very strange but is most probably a problem with your script
> (double fork or something similar) - how do you start your script, and can
> you send a stripped-down version of your script that shows this error?
> 
> > The plug in "plug_in_autocrop" gives the following error if I use
> > plug_in_autocrop(1,$img,$layer); (as mentioned in DB browers)
> 
> Certainly this is nowhere mentioned in DB browers, where did you get the "1"
> from? Hardcoding constants is going to bite you. Either use
> RUN_NONINTERACTIVE (or RUN_INTERACTIVE) or, better, just leave our the
> unnecessary arguments, e.g.:
> 
> plug_in_autocrop($img,$layer);
> plug_in_autocrop($layer);
> 
> or even
> 
> $layer->autocrop;
> 
> > but works fine if I use
> > 
> > plug_in_autocrop(1,$layer);
> 
> Because 1 happens to be a valid image id. The first agrument is the
> run_mode, which must be on the the three symbolic RUN_*-constants. The
> second agrument must be an image and the third a layer. It happens thta
> you can leave out the first two agruments, since they are redundant (no
> runmode == noninteractive and a layer always belongs to some image).
> 
> This could also solve your problems above, since 5.6.0 is rather broken
> with regards to error handling (this has been fixed in later snapshots, so
> best use 5.005_03 or a current perl snapshot if you want sensible error
> reporting) so the above could just be the effect of a runtime error that
> doers not get reported but instead garbles perl's internal state.
> 

Reply via email to