Jenda Krynicky wrote:
> 
> From: Konrad Foerstner <[EMAIL PROTECTED]>
> 
> > I have a strange error in my script. It should
> > paint a column of lines next to each other in
> > colors which are determinated by a given sequence
> > of letters. It works...but only to the position
> > of 251. After this point all lines have the color
> > of the line at position 251...even when I use
> > a different letter sequence.
> >
> > Is this a sign? The 251?  ;) Nope, any hints?
> >
> > Here is the basic sheme. I hope I did't kill
> > an impotant detail.
> >
> >
> > my $seq       = $_[0];
> > my @seq_s     = split ('',$seq);
> >
> > my $length    = length $seq;
> >
> > $pic_length = $length +100;
> >
> > my $img      = new GD::Image($pic_length,30);
> >
> > for (my $pos = '0'; $pos < ($length-1); ++$pos)
> >     {
> >      my $aa = $seq_s[$pos];
> >
> >      my $color;
> >
> >     if     ($aa eq 'A')
> >            {$color = $img->colorAllocate(255,0,0);}
> >     elsif  ($aa eq 'B')
> >            {$color = $img->colorAllocate(255,0,0);}
> >     elsif  ($aa eq 'C')
> >            {$color = $img->colorAllocate(0,0,255);}
> >     elsif  ($aa eq 'D')
> >            {$color = $img->colorAllocate(0,0,255);}
> >
> >      $img->line($pos,1,$pos,21,$color);
> >     }
> 
> Why do you keep allocating colors you aready have?
> 
> I would suggest something like this :
> 
>         %colors = (
>                 'A' => $img->colorAllocate(255,0,0),
>                 'B' => $img->colorAllocate(255,0,0),
>                 'C' => $img->colorAllocate(0,0,255),
>                 'D' => $img->colorAllocate(0,0,255),
>         );
> 
>         for (my $pos = '0'; $pos < ($length-1); ++$pos) {
>                 my $aa = $seq_s[$pos];
>                 my $color = $colors{$aa};
>                 $img->line($pos,1,$pos,21,$color);
>         }


my @seq_s  = split //, $_[0];
my $img    = new GD::Image( @seq_s + 100, 30 );
my %colors = (
    A => $img->colorAllocate( 255, 0, 0 ),
    B => $img->colorAllocate( 255, 0, 0 ),
    C => $img->colorAllocate( 0, 0, 255 ),
    D => $img->colorAllocate( 0, 0, 255 ),
    );

for my $pos ( 0 .. @seq_s - 2 ) {
    $img->line( $pos, 1, $pos, 21, $colors{$seq_s[$pos]} );
    }



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to