*** empty log message ***

This commit is contained in:
Marc Lehmann
2001-07-31 23:46:09 +00:00
parent fda881c51d
commit 34e395dff9
6 changed files with 105 additions and 154 deletions

View File

@ -803,7 +803,7 @@ IMAGETYPE is one of GIF, JPG, JPEG, PNM or PNG, options include
-F do not flatten the image -F do not flatten the image
options for GIF and PNG images options for GIF and PNG images
+I do save as interlaced (GIF only) +I do save as interlaced
-I do not save as interlaced (default) -I do not save as interlaced (default)
options for GIF animations (use with -F) options for GIF animations (use with -F)
@ -825,10 +825,10 @@ IMAGETYPE is one of GIF, JPG, JPEG, PNM or PNG, options include
some examples: some examples:
test.jpg save the image as a simple jpeg test.jpg save the image as a simple jpeg
JPG:test.jpg same JPG:test.jpg the same
JPG-Q70:test.jpg the same but force a quality of 70 JPG-Q70:test.jpg the same but force a quality of 70
GIF-I-F:test.jpg save a gif image(!) named test.jpg GIF-I-F:test.jpg save a gif image(!) named test.jpg
non-inerlaced and without flattening non-interlaced and without flattening
=back =back

View File

@ -424,7 +424,7 @@ perl_paramdef_count (GimpParamDef *arg, int count)
if (args[index].data.datatype || !args[index-1].data.d_int32) \ if (args[index].data.datatype || !args[index-1].data.d_int32) \
{ \ { \
for (j = 0; j < args[index-1].data.d_int32; j++) \ for (j = 0; j < args[index-1].data.d_int32; j++) \
trace_printf (frmt ## "%s", (ctype) args[index].data.datatype[j], \ trace_printf (frmt "%s", (ctype) args[index].data.datatype[j], \
j < args[index-1].data.d_int32 - 1 ? ", " : ""); \ j < args[index-1].data.d_int32 - 1 ? ", " : ""); \
} \ } \
else \ else \

View File

@ -1,151 +1,106 @@
#!/usr/bin/perl #!/usr/bin/perl
# THIS IS OUTDATED AND WILL NOT RUN WITH CURRENT GIMP VERSIONS!
# this test-plugin will create a simple button, and does automatically
# save it as an indexed gif in /tmp/x.gif
# it works as plug-in as well as standalone!
# this script is old (its the first script ever written for gimp-perl)
# and I had no time to fix it yet.
use Gimp; use Gimp;
use Storable;
$blend1 = [0, 150, 255]; $fg = [140,140,250];
$blend2 = [0, 255, 208]; $fg2 = [250,250, 90,];
$black = "#000000"; $bg = [ 90, 0, 90];
$font = "Engraver"; $w1 = 0.5;
$blur = 0.4;
$font = "-bitstream-blade runner movie font-demi-i-modern-*-*-*-*-*-p-*-iso8859-1";
$BASE = "/root/www/src";
#$BASE = "/tmp";
# enable example mode... if disabled, it will write out some logos, and not # enable example mode... if disabled, it will write out some logos, and not
# wont' display anything. # wont' display anything.
$example = 1; $example = 0;
# set trace level to watch functions as they are executed $|=1;
Gimp::set_trace(TRACE_NAME) if $example;
sub set_fg ($) { gimp_palette_set_foreground ($_[0]) }; Gimp::init;
sub set_bg ($) { gimp_palette_set_background ($_[0]) };
sub get_fg ($) { gimp_palette_get_foreground () };
sub get_bg ($) { gimp_palette_get_background () };
# shorthand function for drawing text %info = (
sub text($$$$$) { 'example' => [50, "$BASE/images/menu"],
my($img,$text,$border,$font,$size)=@_; 'headline' => [20, "$BASE/images/menu"],
my $layer=gimp_text($img,-1,0,0,$text,$border,1,$size,PIXELS,"*",$font,"*","*","*","*"); 'sub_on' => [12, "$BASE/images/menu"],
if (wantarray()) { 'marc' => [25, "$BASE/marc/images/menu"],
($layer,gimp_text_get_extents($text,$size,PIXELS,"*",$font,"*","*","*","*")); 'marcmain' => [14, "$BASE/marc/images/menu"],
'marcprojects' => [14, "$BASE/marc/images/menu"],
'marcbackground' => [14, "$BASE/marc/images/menu"],
);
if ($example) {
@strings = (['example',"Example"]);
} else {
my %depend = %{ retrieve "/root/www/depend" };
my %logo;
while(my($k,$v)=each(%depend)) {
$logo{join ",",@$_}=$_ for @{$v->{L}};
}
@strings = values(%logo);
}
for(@strings) {
my($class,$string)=@$_;
my($size,$base)=@{$info{$class}};
print "($class,$size,$base,$string)\n";
my($w,$h,$a,$d)=Gimp->text_get_extents_fontname($string,$size,PIXELS,$font);
system("rm -f $base/*.jpg");
$h+=$d;
$w{$class}=$w if $w{$class}<$w;
$h{$class}=$h if $h{$class}<$h;
}
for(@strings) {
my($class,$string)=@$_;
my $fn=$string;
my($size,$base)=@{$info{$class}};
print "+";
$fn=~y/-\/?&! A-Z/______a-z/;
my $img=create_logo (0,$w{$class},$h{$class},$size,$string,"$base/${fn}_off.jpg") if $class !~ /_on$/;
my $img=create_logo (1,$w{$class},$h{$class},$size,$string,"$base/${fn}_on.jpg");
}
print "\n";
sub create_logo {
my($on,$w,$h,$p,$t,$fn)=@_;
my $img = new Image($w+$w1*$h,$h,RGB);
my $b = new Layer($img,$w+$w1*$h,$h,RGB_IMAGE,'Background',100,NORMAL_MODE);
Palette->set_background($bg);
Palette->set_foreground($on ? $fg2 : $fg);
$b->fill(BG_IMAGE_FILL);
$b->add_layer(0);
$img->display_new if $example;
$t=~y/L/l/;# dumb font bladerunner
my $t = $img->text_fontname(undef,0,$blur*$h*-.5,$t,$blur*$h,1,$p,PIXELS,$font);
my $s = $t->copy(0); $s->add_layer(0);
my $c = $t->copy(0); $c->add_layer(0);
$t->mblur(0,$blur*$h,0);
$t->merge_down(EXPAND_AS_NECESSARY);
$s->gauss_rle(4,1,1);
$s->set_mode($on ? SUBTRACT_MODE : SUBTRACT_MODE);
#Gimp::set_trace(TRACE_NAME);
if ($on) {
$c->brightness_contrast(100,0);
$c->set_mode(ADDITION_MODE);
} else { } else {
$layer; $s->brightness_contrast(100,0);
$c->brightness_contrast(-50,0);
$c->set_mode(ADDITION_MODE);
} }
$img->flatten->file_jpeg_save($fn,$fn,0.70,0,1,1,"",0,1,0,0);
Gimp->displays_flush if $example;
$img->clean_all;
$img->delete unless $example;
} }
# convert image to indexed
# and automatically save it as interlaced gif.
sub index_and_save($$) {
my($img,$path)=@_;
gimp_image_flatten($img);
gimp_convert_indexed_palette($img,1,0,32,"");
file_gif_save(RUN_NONINTERACTIVE,$img,-1,$path,$path,1,0,0,0) unless $example;
}
sub write_logo {
my($string,$active,$w,$h,$uc)=@_;
# create a new image
my $img=gimp_image_new($w,$h,RGB);
# and a layer for it
my $bg=gimp_layer_new($img,$w,$h,RGB_IMAGE,"Background",100,NORMAL_MODE);
gimp_image_add_layer($img,$bg,1);
set_fg($blend1);
set_bg($blend2);
# blend the background
gimp_blend($bg,FG_BG_HSV,NORMAL_MODE,LINEAR,100,0,
REPEAT_NONE,0,0,0,
0,0,$w*0.9,$h);
gimp_rect_select ($img,$w*0.92,0,$w,$h,REPLACE, 0, 0);
gimp_blend($bg,FG_BG_HSV,NORMAL_MODE,LINEAR,100,0,
REPEAT_NONE,0,0,0,
$w,0,$w*0.92,0);
gimp_selection_all($img);
set_fg($black);
my ($text,$tw,$th,$ta,$td) = text ($img, $string, 1, $font, $active ? $h*0.7 : $h*0.5);
gimp_layer_translate ($text,($w-$tw)/2,($h-$th+$td)/2);
my ($shadow) = gimp_layer_copy ($text, 0);
plug_in_gauss_rle ($text, 1, 1, 1) unless $active;
gimp_image_add_layer ($img,$shadow,1);
gimp_shear ($shadow,1,HORIZONTAL,-$th);
gimp_layer_scale ($shadow, $tw, $th*0.3, 1);
gimp_layer_translate ($shadow, $th*0.1, $th*0.3);
plug_in_gauss_rle ($shadow, 1, 1, 1);
gimp_hue_saturation($bg, ALL_HUES, 0, 0, $active ? 10 : -40);
plug_in_nova ($bg, $h*0.4, $h*0.5, '#f0a020', 5, 50) if $active;
plug_in_nova ($bg, $w-$h*0.4, $h*0.5, '#f0a020', 5, 50) if $active;
# add an under construction sign
if ($uc) {
set_fg($active ? "#a00000" : "#000000");
my ($uc,$tw,$th,$ta,$td) = text ($img, "u/c", 1, $font, $h*0.4);
gimp_rotate ($uc,1,0.2);
gimp_layer_translate ($uc,$w*0.84,($h-$th+$td)/2);
}
index_and_save ($img, "/root/www/src/marc/images/${string}_".($active ? "on" : "off").".gif");
gimp_display_new ($img) if $example;
gimp_image_delete($img) unless $example;
}
# the extension that's called.
sub extension_homepage_logo {
# if in example mode just draw one example logo.
if($example) {
push(@logos,[ "-Projects", 0, 480, 60 ]);
# push(@logos,[ "-Projects", 1, 480, 60 ]);
} else {
for $active (0, 1) {
for $string (qw(Projects -Background -Main)) {
push(@logos,[$string,$active,240,30]);
}
}
for $active (0, 1) {
for $string (qw(PGCC Judge -FreeISDN -Gimp -Destripe -Links -EGCS)) {
push(@logos,[$string,$active,240,20]);
}
}
}
gimp_progress_init ("rendering buttons...");
$numlogos = $#logos+1;
while($#logos>=0) {
gimp_progress_update (1-($#logos+1)/$numlogos);
my($string,$active,$w,$h)=@{pop(@logos)};
$uc=$string=~s/^-//;
write_logo($string,$active,$w,$h,$uc);
}
}
sub query {
gimp_install_procedure("extension_homepage_logo", "a test extension in perl",
"try it out", "Marc Lehmann", "Marc Lehmann", "1997-02-06",
N_"<Toolbox>/Xtns/Homepage-Logo", undef, EXTENSION,
[[PDB_INT32, "run_mode", "Interactive, [non-interactive]"]], []);
}
sub net {
extension_homepage_logo;
}
exit main;

View File

@ -1,7 +1,5 @@
#!/usr/app/bin/perl #!/usr/app/bin/perl
eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
# Effect taken from http://tigert.gimp.org/gimp/tutorials/beveled_text/ # Effect taken from http://tigert.gimp.org/gimp/tutorials/beveled_text/
# perl-ified by Seth Burgess <sjburges@gimp.org> # perl-ified by Seth Burgess <sjburges@gimp.org>

View File

@ -1,10 +1,6 @@
#!/usr/app/bin/perl #!/usr/app/bin/perl
eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
# <sjburges@gimp.org> # <sjburges@gimp.org>
# This is adrian's idea - take random blends and difference them. You're
# bound to come up w/ something cool eventually.
use Gimp; use Gimp;
use Gimp::Fu; use Gimp::Fu;
@ -43,7 +39,6 @@ register "round_rect_sel",
$img->ellipse_select($bounds[3]-$x_round, $bounds[4]-$y_round, $x_round, $y_round, 0, 1, 0, 0.5); $img->ellipse_select($bounds[3]-$x_round, $bounds[4]-$y_round, $x_round, $y_round, 0, 1, 0, 0.5);
$img->ellipse_select($bounds[1], $bounds[4]-$y_round, $x_round, $y_round, 0, 1, 0, 0.5); $img->ellipse_select($bounds[1], $bounds[4]-$y_round, $x_round, $y_round, 0, 1, 0, 0.5);
eval { $img->undo_push_group_end }; eval { $img->undo_push_group_end };
return(); return();
}; };

View File

@ -1,22 +1,22 @@
#!/usr/app/bin/perl #!/usr/app/bin/perl
eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
use Gimp; use Gimp;
use Gimp::Fu; use Gimp::Fu;
use Gimp::Util; use Gimp::Util;
# Erzeuge ein neues "scratchlayer", d.h. eine Ebene, die graue
# Streifen einer bestimmten Richtung enthält. Dazu wird ein
# weisses Bild "verrauscht" und mit motion-blur in einem
# bestimmten Winkel weichgezeichnet.
sub new_scratchlayer { sub new_scratchlayer {
my($image,$length,$gamma,$angle)=@_; my ($image,$length,$gamma,$angle) = @_;
my $type=$image->layertype(0); my $type = $image->layertype(0);
my($layer)=$image->layer_new ($image->width, $image->height, $image->layertype(0), my $layer = $image->layer_new ($image->width, $image->height, $image->layertype(0),
"displace layer ($angle)", 100, NORMAL_MODE); "displace layer ($angle)", 100, NORMAL_MODE);
$layer->add_layer(-1); $layer->add_layer(-1);
$layer->fill (WHITE_IMAGE_FILL); $layer->fill (WHITE_IMAGE_FILL);
$layer->noisify (0, 1, 1, 1, 0); $layer->noisify (0, 1, 1, 1, 0);
$layer->mblur (0, $length, $angle); $layer->mblur (0, $length, $angle);
#$layer->levels (VALUE_LUT, 120, 255, $gamma, 0, 255);
$layer->levels (VALUE_LUT, 120, 255, 0.3, 0, 255); $layer->levels (VALUE_LUT, 120, 255, 0.3, 0, 255);
$layer; $layer;
@ -36,20 +36,23 @@ register "scratches",
[PF_SLIDER , "gamma" , "Scratch map gamma" , 0.3, [0.1, 10, 0.05]], [PF_SLIDER , "gamma" , "Scratch map gamma" , 0.3, [0.1, 10, 0.05]],
[PF_SPINNER , "smoothness" , "The scratch smoothness" , 15, [ 0, 400]], [PF_SPINNER , "smoothness" , "The scratch smoothness" , 15, [ 0, 400]],
[PF_SPINNER , "length" , "The scratch length" , 10, [ 0, 400]], [PF_SPINNER , "length" , "The scratch length" , 10, [ 0, 400]],
#[PF_BOOL, , "bump_map" , "Use bump map instead of displace", 0],
], ],
[], [],
['gimp-1.1'], ['gimp-1.1'],
sub { sub {
my($image,$drawable,$anglex,$angley,$gamma,$length,$width)=@_; my ($image,$drawable,$anglex,$angley,$gamma,$length,$width) = @_;
$image->undo_push_group_start; $image->undo_push_group_start;
# Erzeuge zwei "scratchlayer", die die Verschiebung in X und Y
# angeben.
my $layer1 = new_scratchlayer ($image, $length, $gamma, $anglex); my $layer1 = new_scratchlayer ($image, $length, $gamma, $anglex);
my $layer2 = new_scratchlayer ($image, $length, $gamma, $angley); my $layer2 = new_scratchlayer ($image, $length, $gamma, $angley);
# Verschmiere das Bild.
$drawable->displace ($width, $width, 1, 1, $layer1, $layer2, WRAP); $drawable->displace ($width, $width, 1, 1, $layer1, $layer2, WRAP);
# die beiden Ebenen werden nicht länger benötigt.
$layer1->remove_layer; $layer1->remove_layer;
$layer2->remove_layer; $layer2->remove_layer;