mirror of https://github.com/GNOME/gimp.git
see plug-ins/perl/Changes
This commit is contained in:
parent
44febbc37d
commit
5d06b76d4b
|
@ -3,6 +3,7 @@
|
|||
use Gimp qw(:auto);
|
||||
use Gimp::Fu;
|
||||
use Gimp::Util;
|
||||
use strict;
|
||||
|
||||
#Gimp::set_trace(TRACE_CALL);
|
||||
|
||||
|
@ -78,18 +79,23 @@ sub gimp_text_get_extents {
|
|||
die "gimp_text_get_extents not yet supported\n";
|
||||
}
|
||||
|
||||
# just return the width/height of the drawable instead
|
||||
sub gimp_text_get_extents_fontname {
|
||||
my($text,$size,$size_type,$fontname)=@_;
|
||||
($global_drawable->width,$global_drawable->height,$global_drawable->height,0);
|
||||
}
|
||||
|
||||
# instead of the text layer, just return a copy of the drawable
|
||||
sub gimp_text_fontname {
|
||||
my($image,$layer,$x,$y,$text,$border,$antialias,$height,$size_type,$fontname)=@_;
|
||||
$global_drawable->image->selection_all;
|
||||
$global_drawable->edit_copy;
|
||||
my $newlay;
|
||||
if ($layer == -1) {
|
||||
$newlay=$image->add_new_layer(0,TRANS_IMAGE_FILL);
|
||||
$newlay=$image->layer_new($global_drawable->width,$global_drawable->height,
|
||||
$image->layertype(1), $text, 100, NORMAL_MODE);
|
||||
$newlay->drawable_fill(TRANS_IMAGE_FILL);
|
||||
$newlay->add_layer(0);
|
||||
$newlay->edit_paste(0)->floating_sel_anchor;
|
||||
} else {
|
||||
$newlay = $layer->edit_paste(0);
|
||||
|
@ -97,6 +103,32 @@ sub gimp_text_fontname {
|
|||
$newlay;
|
||||
}
|
||||
|
||||
# script-fu convinience fucntions
|
||||
|
||||
sub cdr {
|
||||
my(@x)=@{$_[0]};
|
||||
shift(@x);
|
||||
@x >1 ? [@x] : $x[0];
|
||||
}
|
||||
|
||||
sub number2string {
|
||||
sprintf "%$_[1]d",$_[0];
|
||||
}
|
||||
|
||||
sub nth {
|
||||
$_[1]->[$_[0]];
|
||||
}
|
||||
|
||||
sub min {
|
||||
$_[0] < $_[1] ? $_[0] : $_[1];
|
||||
}
|
||||
|
||||
sub max {
|
||||
$_[0] > $_[1] ? $_[0] : $_[1];
|
||||
}
|
||||
|
||||
# converted scripts start here
|
||||
|
||||
sub script_fu_3d_outline_logo {
|
||||
my ($text_pattern, $text, $size, $font, $outline_blur_radius, $shadow_blur_radius, $bump_map_blur_radius, $noninteractive, $s_offset_x, $s_offset_y) = @_;
|
||||
do {
|
||||
|
@ -118,20 +150,20 @@ sub script_fu_3d_outline_logo {
|
|||
gimp_layer_set_preserve_trans ($text_layer, 0);
|
||||
plug_in_gauss_iir ($img, $text_layer, $outline_blur_radius, 1, 1);
|
||||
gimp_layer_set_visible ($pattern, 0);
|
||||
$layer2 = gimp_image_merge_visible_layers ($img, 1);
|
||||
my $layer2 = gimp_image_merge_visible_layers ($img, 1);
|
||||
plug_in_edge ($img, $layer2, 2, 1);
|
||||
$layer3 = gimp_layer_copy ($layer2, 1);
|
||||
my $layer3 = gimp_layer_copy ($layer2, 1);
|
||||
gimp_image_add_layer ($img, $layer3, 2);
|
||||
plug_in_gauss_iir ($img, $layer2, $bump_map_blur_radius, 1, 1);
|
||||
gimp_selection_all ($img);
|
||||
gimp_patterns_set_pattern ($text_pattern);
|
||||
gimp_bucket_fill ($pattern, PATTERN_BUCKET_FILL, NORMAL_MODE, 100, 0, 0, 0, 0);
|
||||
plug_in_bump_map ($img, $pattern, $layer2, 110.0, 45.0, 4, 0, 0, 0, 0, 1, 0, 0);
|
||||
$pattern_mask = gimp_layer_create_mask ($pattern, ADD_ALPHA_MASK);
|
||||
my $pattern_mask = gimp_layer_create_mask ($pattern, ADD_ALPHA_MASK);
|
||||
gimp_image_add_layer_mask ($img, $pattern, $pattern_mask);
|
||||
gimp_selection_all ($img);
|
||||
gimp_edit_copy ($layer3);
|
||||
$floating_sel = gimp_edit_paste ($pattern_mask, 0);
|
||||
my $floating_sel = gimp_edit_paste ($pattern_mask, 0);
|
||||
gimp_floating_sel_anchor ($floating_sel);
|
||||
gimp_image_remove_layer_mask ($img, $pattern, APPLY);
|
||||
gimp_invert ($layer3);
|
||||
|
@ -139,7 +171,7 @@ sub script_fu_3d_outline_logo {
|
|||
gimp_channel_ops_offset ($layer3, 0, 1, $s_offset_x, $s_offset_y);
|
||||
gimp_layer_set_visible ($layer2, 0);
|
||||
gimp_layer_set_visible ($pattern, 1);
|
||||
$final = gimp_image_flatten ($img);
|
||||
my $final = gimp_image_flatten ($img);
|
||||
gimp_palette_set_background ($old_bg);
|
||||
gimp_palette_set_foreground ($old_fg);
|
||||
gimp_image_enable_undo ($img);
|
||||
|
@ -168,6 +200,7 @@ register "perl_fu_3d_outline_logo",
|
|||
[PF_VALUE, 'shadow_y_offset', "Shadow Y offset", "0"],
|
||||
],
|
||||
\&script_fu_3d_outline_logo;
|
||||
|
||||
sub script_fu_alien_glow_logo {
|
||||
my ($text, $size, $font, $glow_color) = @_;
|
||||
do {
|
||||
|
@ -223,6 +256,7 @@ register "perl_fu_alien_glow_logo",
|
|||
[PF_COLOUR, 'glow_color', "Glow Color", [63, 252, 0]],
|
||||
],
|
||||
\&script_fu_alien_glow_logo;
|
||||
|
||||
sub script_fu_basic1_logo {
|
||||
my ($text, $size, $font, $bg_color, $text_color) = @_;
|
||||
do {
|
||||
|
@ -277,6 +311,7 @@ register "perl_fu_basic1_logo",
|
|||
[PF_COLOUR, 'text_color', "Text Color", [6, 6, 206]],
|
||||
],
|
||||
\&script_fu_basic1_logo;
|
||||
|
||||
sub color_highlight {
|
||||
my ($color) = @_;
|
||||
do {
|
||||
|
@ -352,6 +387,7 @@ register "perl_fu_basic2_logo",
|
|||
[PF_COLOUR, 'text_color', "Text Color", [206, 6, 50]],
|
||||
],
|
||||
\&script_fu_basic2_logo;
|
||||
|
||||
sub multi_raise_layer {
|
||||
my ($image, $layer, $times) = @_;
|
||||
|
||||
|
@ -521,6 +557,7 @@ register "perl_fu_carved_logo",
|
|||
[PF_TOGGLE, 'carve_raised_text',"Carve Raised Text", 0],
|
||||
],
|
||||
\&script_fu_carved_logo;
|
||||
|
||||
sub script_fu_chalk_logo {
|
||||
my ($text, $size, $font, $bg_color, $chalk_color) = @_;
|
||||
do {
|
||||
|
@ -540,7 +577,7 @@ sub script_fu_chalk_logo {
|
|||
gimp_edit_fill ($bg_layer);
|
||||
gimp_edit_clear ($text_layer);
|
||||
gimp_palette_set_foreground ($chalk_color);
|
||||
$float_layer = gimp_text_fontname ($img, $text_layer, 0, 0, $text, $border, 1, $size, PIXELS, $font);
|
||||
my $float_layer = gimp_text_fontname ($img, $text_layer, 0, 0, $text, $border, 1, $size, PIXELS, $font);
|
||||
gimp_floating_sel_anchor ($float_layer);
|
||||
plug_in_gauss_rle ($img, $text_layer, 2.0, 1, 1);
|
||||
plug_in_spread ($img, $text_layer, 5.0, 5.0);
|
||||
|
@ -576,6 +613,7 @@ register "perl_fu_chalk_logo",
|
|||
[PF_COLOUR, 'chalk_color', "Chalk Color", [255, 255, 255]],
|
||||
],
|
||||
\&script_fu_chalk_logo;
|
||||
|
||||
sub script_fu_logo_chip_away {
|
||||
my ($text, $font, $font_size, $spread_amount, $blur_amount, $invert, $drop_shadow, $keep_bump, $bg_fill, $keep_back, $pattern) = @_;
|
||||
do {
|
||||
|
@ -668,6 +706,7 @@ register "perl_fu_logo_chip_away",
|
|||
[PF_PATTERN, 'pattern', "Pattern", "Burlwood"],
|
||||
],
|
||||
\&script_fu_logo_chip_away;
|
||||
|
||||
sub script_fu_chrome_logo {
|
||||
my ($text, $size, $font, $bg_color) = @_;
|
||||
do {
|
||||
|
@ -754,6 +793,7 @@ register "perl_fu_chrome_logo",
|
|||
[PF_COLOUR, 'background_color', "Background Color", [191, 191, 191]],
|
||||
],
|
||||
\&script_fu_chrome_logo;
|
||||
|
||||
sub script_fu_comic_logo {
|
||||
my ($text, $size, $font, $gradient, $ol_width) = @_;
|
||||
do {
|
||||
|
@ -829,6 +869,7 @@ register "perl_fu_comic_logo",
|
|||
[PF_VALUE, 'outline_width', "Outline width", "5"],
|
||||
],
|
||||
\&script_fu_comic_logo;
|
||||
|
||||
sub script_fu_cool_metal_logo {
|
||||
my ($text, $size, $font, $bg_color, $seascape) = @_;
|
||||
do {
|
||||
|
@ -932,6 +973,7 @@ register "perl_fu_cool_metal_logo",
|
|||
[PF_TOGGLE, 'seascape', "Seascape", 0],
|
||||
],
|
||||
\&script_fu_cool_metal_logo;
|
||||
|
||||
sub set_pt {
|
||||
my ($a, $index, $x, $y) = @_;
|
||||
do {
|
||||
|
@ -1153,14 +1195,6 @@ register "perl_fu_crystal_logo",
|
|||
[PF_FILE, 'environment_map', "Environment Map", "".'/usr/local/share/gimp'."/scripts/beavis.jpg"],
|
||||
],
|
||||
\&script_fu_crystal_logo;
|
||||
sub min {
|
||||
my ($a, $b) = @_;
|
||||
if ($a < $b) {
|
||||
$a;
|
||||
} else {
|
||||
$b;
|
||||
}
|
||||
}
|
||||
|
||||
sub script_fu_frosty_logo {
|
||||
my ($text, $size, $font, $bg_color) = @_;
|
||||
|
@ -1253,6 +1287,7 @@ register "perl_fu_frosty_logo",
|
|||
[PF_COLOUR, 'background_color', "Background Color", [255, 255, 255]],
|
||||
],
|
||||
\&script_fu_frosty_logo;
|
||||
|
||||
sub script_fu_glossy_logo {
|
||||
my ($text, $size, $font, $blend_gradient_text, $blend_gradient_outline, $grow_size, $bg_color, $use_pattern_text, $pattern_text, $use_pattern_outline, $pattern_outline, $use_pattern_overlay, $pattern_overlay, $noninteractive, $shadow_toggle, $s_offset_x, $s_offset_y, $flatten_toggle) = @_;
|
||||
do {
|
||||
|
@ -1322,16 +1357,14 @@ sub script_fu_glossy_logo {
|
|||
if ($shadow_toggle) {
|
||||
do {
|
||||
gimp_selection_layer_alpha ($text_layer);
|
||||
$dont_drop_me = "script-fu-drop-shadow"->(RUN_NONINTERACTIVE, $img, $text_layer, $s_offset_x, $s_offset_y, 15, [0, 0, 0], 80, 1);
|
||||
"script-fu-drop-shadow"->(RUN_NONINTERACTIVE, $img, $text_layer, $s_offset_x, $s_offset_y, 15, [0, 0, 0], 80, 1);
|
||||
$width = gimp_image_width ($img);
|
||||
$height = gimp_image_height ($img);
|
||||
gimp_selection_none ($img);
|
||||
};
|
||||
}
|
||||
if ($flatten_toggle) {
|
||||
do {
|
||||
$final = gimp_image_flatten ($img);
|
||||
};
|
||||
gimp_image_flatten ($img);
|
||||
}
|
||||
gimp_gradients_set_active ($old_gradient);
|
||||
gimp_palette_set_background ($old_bg);
|
||||
|
@ -1370,6 +1403,7 @@ register "perl_fu_glossy_logo",
|
|||
[PF_TOGGLE, 'flatten_image', "Flatten image?", 0],
|
||||
],
|
||||
\&script_fu_glossy_logo;
|
||||
|
||||
sub script_fu_glowing_logo {
|
||||
my ($text, $size, $font, $bg_color) = @_;
|
||||
do {
|
||||
|
@ -1438,6 +1472,7 @@ register "perl_fu_glowing_logo",
|
|||
[PF_COLOUR, 'background_color', "Background Color", [7, 0, 20]],
|
||||
],
|
||||
\&script_fu_glowing_logo;
|
||||
|
||||
sub script_fu_gradient_bevel_logo {
|
||||
my ($text, $size, $font, $bevel_height, $bevel_width) = @_;
|
||||
do {
|
||||
|
@ -1507,6 +1542,7 @@ register "perl_fu_gradient_bevel_logo",
|
|||
[PF_VALUE, 'bevel_width', "Bevel Width", "2.5"],
|
||||
],
|
||||
\&script_fu_gradient_bevel_logo;
|
||||
|
||||
sub script_fu_i26_gunya2 {
|
||||
my ($text, $text_color, $frame_color, $font, $font_size, $frame_size) = @_;
|
||||
do {
|
||||
|
@ -1586,13 +1622,6 @@ register "perl_fu_i26_gunya2",
|
|||
[PF_VALUE, 'frame_size', "Frame Size", "2"],
|
||||
],
|
||||
\&script_fu_i26_gunya2;
|
||||
sub set_pt {
|
||||
my ($a, $index, $x, $y) = @_;
|
||||
do {
|
||||
$a->[$index * 2] = $x;
|
||||
$a->[($index * 2 + 1)] = $y;
|
||||
};
|
||||
}
|
||||
|
||||
sub neon_spline1 {
|
||||
|
||||
|
@ -1633,6 +1662,7 @@ sub neon_spline3 {
|
|||
sub find_hue_offset {
|
||||
my ($color) = @_;
|
||||
do {
|
||||
my $max;
|
||||
my $R = @{$color}[0];
|
||||
my $G = @{$color}[1];
|
||||
my $B = @{$color}[2];
|
||||
|
@ -1784,6 +1814,7 @@ register "perl_fu_neon_logo",
|
|||
[PF_TOGGLE, 'create_shadow', "Create Shadow?", 0],
|
||||
],
|
||||
\&script_fu_neon_logo;
|
||||
|
||||
sub script_fu_newsprint_text {
|
||||
my ($string, $font, $font_size, $cell_size, $density) = @_;
|
||||
do {
|
||||
|
@ -1832,6 +1863,7 @@ register "perl_fu_newsprint_text",
|
|||
[PF_ADJUSTMENT,'density', "Density (%)", [60, 0, 100, 1, 10, 0, 0]],
|
||||
],
|
||||
\&script_fu_newsprint_text;
|
||||
|
||||
sub set_pt {
|
||||
my ($a, $index, $x, $y) = @_;
|
||||
do {
|
||||
|
@ -2056,6 +2088,7 @@ register "perl_fu_sota_chrome_logo",
|
|||
[PF_COLOUR, 'chrome_balance', "Chrome Balance", [0, 0, 0]],
|
||||
],
|
||||
\&script_fu_sota_chrome_logo;
|
||||
|
||||
sub script_fu_speed_text {
|
||||
my ($string, $font, $font_size, $density) = @_;
|
||||
do {
|
||||
|
@ -2079,8 +2112,8 @@ sub script_fu_speed_text {
|
|||
gimp_edit_clear ($text_layer);
|
||||
gimp_floating_sel_anchor (gimp_text_fontname ($img, $text_layer, 10, 10, $string, 0, 1, $font_size, PIXELS, $font));
|
||||
gimp_selection_layer_alpha ($text_layer);
|
||||
$saved_sel = gimp_selection_save ($img);
|
||||
$text_mask = gimp_layer_create_mask ($text_layer, ADD_ALPHA_MASK);
|
||||
my $saved_sel = gimp_selection_save ($img);
|
||||
my $text_mask = gimp_layer_create_mask ($text_layer, ADD_ALPHA_MASK);
|
||||
gimp_image_add_layer_mask ($img, $text_layer, $text_mask);
|
||||
gimp_layer_set_edit_mask ($text_layer, 0);
|
||||
gimp_selection_grow ($img, 10);
|
||||
|
@ -2118,6 +2151,7 @@ register "perl_fu_speed_text",
|
|||
[PF_ADJUSTMENT,'density', "Density (%)", [80, 0, 100, 1, 10, 0, 0]],
|
||||
],
|
||||
\&script_fu_speed_text;
|
||||
|
||||
sub script_fu_starburst_logo {
|
||||
my ($text, $size, $fontname, $burst_color, $bg_color) = @_;
|
||||
do {
|
||||
|
@ -2195,6 +2229,7 @@ register "perl_fu_starburst_logo",
|
|||
[PF_COLOUR, 'bg_color', "BG Color", [255, 255, 255]],
|
||||
],
|
||||
\&script_fu_starburst_logo;
|
||||
|
||||
sub find_blend_coords {
|
||||
my ($w, $h) = @_;
|
||||
do {
|
||||
|
@ -2221,15 +2256,14 @@ sub find_nova_x_coord {
|
|||
my $limit = 100;
|
||||
my $clearance = 0;
|
||||
|
||||
|
||||
while (($clearance == 0 and $limit > 0)) {
|
||||
$x = (rand ($range) + $x1);
|
||||
$val = @{[gimp_drawable_get_pixel ($drawable, $x, $y)]}[1];
|
||||
$val_left = @{[gimp_drawable_get_pixel ($drawable, ($x - $min_clearance), $y)]}[1];
|
||||
$val_right = @{[gimp_drawable_get_pixel ($drawable, ($x + $min_clearance), $y)]}[1];
|
||||
$val_top = @{[gimp_drawable_get_pixel ($drawable, $x, ($y - $min_clearance))]}[1];
|
||||
$val_bottom = @{[gimp_drawable_get_pixel ($drawable, $x, ($y + $min_clearance))]}[1];
|
||||
if (($val->[$alpha] == 0 and $val_left->[$alpha] == 0 and $val_right->[$alpha] == 0 and $val_top->[$alpha] == 0 and $val_bottom->[$alpha] == 0)) {
|
||||
$val = [gimp_drawable_get_pixel ($drawable, $x, $y)];
|
||||
$val_left = [gimp_drawable_get_pixel ($drawable, ($x - $min_clearance), $y)];
|
||||
$val_right = [gimp_drawable_get_pixel ($drawable, ($x + $min_clearance), $y)];
|
||||
$val_top = [gimp_drawable_get_pixel ($drawable, $x, ($y - $min_clearance))];
|
||||
$val_bottom = [gimp_drawable_get_pixel ($drawable, $x, ($y + $min_clearance))];
|
||||
if ($val->[$alpha] == 0 and $val_left->[$alpha] == 0 and $val_right->[$alpha] == 0 and $val_top->[$alpha] == 0 and $val_bottom->[$alpha] == 0) {
|
||||
$clearance = 1;
|
||||
} else {
|
||||
$limit = ($limit - 1);
|
||||
|
@ -2325,6 +2359,7 @@ register "perl_fu_starscape_logo",
|
|||
[PF_COLOUR, 'glow_color', "Glow Color", [28, 65, 188]],
|
||||
],
|
||||
\&script_fu_starscape_logo;
|
||||
|
||||
sub script_fu_t_o_p_logo {
|
||||
my ($text, $size, $fontname, $hit_rate, $edge_size, $edge_only, $base_color, $bg_color) = @_;
|
||||
do {
|
||||
|
@ -2358,7 +2393,7 @@ sub script_fu_t_o_p_logo {
|
|||
gimp_selection_layer_alpha ($text_layer);
|
||||
$selection = gimp_selection_save ($img);
|
||||
gimp_selection_grow ($img, $edge_size);
|
||||
[$plug_in_noisify, 1, $img, $sparkle_layer, 0, 0.1 * $hit_rate, 0.1 * $hit_rate, 0.1 * $hit_rate, 0.0];
|
||||
plug_in_noisify ($img, $sparkle_layer, 0, 0.1 * $hit_rate, 0.1 * $hit_rate, 0.1 * $hit_rate, 0.0);
|
||||
gimp_selection_border ($img, $edge_size);
|
||||
plug_in_noisify ($img, $sparkle_layer, 0, $hit_rate, $hit_rate, $hit_rate, 0.0);
|
||||
gimp_selection_none ($img);
|
||||
|
@ -2425,6 +2460,7 @@ register "perl_fu_t_o_p_logo",
|
|||
[PF_COLOUR, 'background_color', "Background Color", [255, 255, 255]],
|
||||
],
|
||||
\&script_fu_t_o_p_logo;
|
||||
|
||||
sub scale {
|
||||
my ($size, $percent) = @_;
|
||||
$size * $percent;
|
||||
|
@ -2523,26 +2559,166 @@ register "perl_fu_textured_logo",
|
|||
],
|
||||
\&script_fu_textured_logo;
|
||||
|
||||
sub cdr {
|
||||
my(@x)=@{$_[0]};
|
||||
shift(@x);
|
||||
@x >1 ? [@x] : $x[0];
|
||||
sub script_fu_bovinated_logo {
|
||||
my ($text, $size, $font) = @_;
|
||||
do {
|
||||
my $img = gimp_image_new (256, 256, RGB_IMAGE);
|
||||
my $border = $size / 4;
|
||||
my $text_layer = gimp_text_fontname ($img, -1, 0, 0, $text, $border, 1, $size, PIXELS, $font);
|
||||
my $width = gimp_drawable_width ($text_layer);
|
||||
my $height = gimp_drawable_height ($text_layer);
|
||||
my $bg_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Background", 100, NORMAL_MODE);
|
||||
my $blur_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Blur", 100, NORMAL_MODE);
|
||||
my $old_fg = gimp_palette_get_foreground ();
|
||||
my $old_bg = gimp_palette_get_background ();
|
||||
|
||||
gimp_image_disable_undo ($img);
|
||||
gimp_image_resize ($img, $width, $height, 0, 0);
|
||||
gimp_image_add_layer ($img, $bg_layer, 1);
|
||||
gimp_image_add_layer ($img, $blur_layer, 1);
|
||||
gimp_selection_all ($img);
|
||||
gimp_edit_fill ($bg_layer);
|
||||
gimp_selection_none ($img);
|
||||
gimp_layer_set_preserve_trans ($blur_layer, 1);
|
||||
gimp_palette_set_background ([255, 255, 255]);
|
||||
gimp_selection_all ($img);
|
||||
gimp_edit_fill ($blur_layer);
|
||||
gimp_edit_clear ($blur_layer);
|
||||
gimp_palette_set_background ([191, 191, 191]);
|
||||
gimp_selection_none ($img);
|
||||
gimp_layer_set_preserve_trans ($blur_layer, 0);
|
||||
gimp_selection_layer_alpha ($text_layer);
|
||||
gimp_edit_fill ($blur_layer);
|
||||
plug_in_gauss_rle ($img, $blur_layer, 5.0, 1, 1);
|
||||
gimp_selection_none ($img);
|
||||
gimp_layer_set_preserve_trans ($text_layer, 1);
|
||||
gimp_selection_all ($img);
|
||||
plug_in_solid_noise ($img, $text_layer, 0, 0, 23, 1, 16.0, 4.0);
|
||||
gimp_brightness_contrast ($text_layer, 0, 127);
|
||||
gimp_selection_none ($img);
|
||||
gimp_layer_set_preserve_trans ($text_layer, 0);
|
||||
gimp_layer_set_name ($text_layer, $text);
|
||||
plug_in_bump_map ($img, $text_layer, $blur_layer, 135, 50, 10, 0, 0, 0, 30, 1, 0, 0);
|
||||
gimp_layer_set_offsets ($blur_layer, 5, 5);
|
||||
gimp_invert ($blur_layer);
|
||||
gimp_layer_set_opacity ($blur_layer, 50.0);
|
||||
gimp_image_set_active_layer ($img, $text_layer);
|
||||
gimp_palette_set_background ($old_bg);
|
||||
gimp_palette_set_foreground ($old_fg);
|
||||
gimp_image_enable_undo ($img);
|
||||
gimp_display_new ($img);
|
||||
};
|
||||
}
|
||||
|
||||
sub number2string {
|
||||
sprintf "%$_[1]d",$_[0];
|
||||
register "perl_fu_bovinated_logo",
|
||||
"Makes Cow-spotted logos",
|
||||
"Makes Cow-spotted logos",
|
||||
"Brian McFee <keebler\@wco.com>",
|
||||
"Brian McFee",
|
||||
"April 1998",
|
||||
"<Toolbox>/Xtns/Perl-Fu/Logos/Bovination",
|
||||
"",
|
||||
[
|
||||
[PF_STRING, 'text_string', "Text String", "Fear the Cow"],
|
||||
[PF_ADJUSTMENT,'font_size_pixels', "Font Size (pixels)", [80, 2, 1000, 1, 10, 0, 1]],
|
||||
[PF_FONT, 'font', "Font", "-*-roostheavy-*-r-*-*-24-*-*-*-p-*-*-*"],
|
||||
],
|
||||
\&script_fu_bovinated_logo;
|
||||
|
||||
sub scale {
|
||||
my ($size, $percent) = @_;
|
||||
$size * $percent;
|
||||
}
|
||||
|
||||
sub min {
|
||||
$_[0] < $_[1] ? $_[0] : $_[1];
|
||||
sub script_fu_blended_logo {
|
||||
my ($blend_mode, $text, $size, $font, $bg_color, $text_color, $blend_fg, $blend_bg) = @_;
|
||||
do {
|
||||
my $img = gimp_image_new (256, 256, RGB_IMAGE);
|
||||
my $b_size = scale ($size, 0.1);
|
||||
my $b_size_2 = scale ($size, 0.05);
|
||||
my $f_size = scale ($size, 0.075);
|
||||
my $ds_size = scale ($size, 0.05);
|
||||
my $ts_size = ($b_size_2 - 3);
|
||||
my $text_layer = gimp_text_fontname ($img, -1, 0, 0, $text, $b_size, 1, $size, PIXELS, $font);
|
||||
my $width = gimp_drawable_width ($text_layer);
|
||||
my $height = gimp_drawable_height ($text_layer);
|
||||
my $blend_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Blend", 100, NORMAL_MODE);
|
||||
my $shadow_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Shadow", 100, NORMAL_MODE);
|
||||
my $text_shadow_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Text Shadow", 100, MULTIPLY_MODE);
|
||||
my $tsl_layer_mask = gimp_layer_create_mask ($text_shadow_layer, ADD_BLACK_MASK);
|
||||
my $drop_shadow_layer = gimp_layer_new ($img, $width, $height, RGBA_IMAGE, "Drop Shadow", 100, MULTIPLY_MODE);
|
||||
my $dsl_layer_mask = gimp_layer_create_mask ($drop_shadow_layer, ADD_BLACK_MASK);
|
||||
my $old_fg = gimp_palette_get_foreground ();
|
||||
my $old_bg = gimp_palette_get_background ();
|
||||
|
||||
gimp_image_disable_undo ($img);
|
||||
gimp_image_resize ($img, $width, $height, 0, 0);
|
||||
gimp_image_add_layer ($img, $shadow_layer, 1);
|
||||
gimp_image_add_layer ($img, $blend_layer, 1);
|
||||
gimp_image_add_layer ($img, $drop_shadow_layer, 1);
|
||||
gimp_image_add_layer ($img, $text_shadow_layer, 0);
|
||||
gimp_selection_none ($img);
|
||||
gimp_edit_clear ($text_shadow_layer);
|
||||
gimp_edit_clear ($drop_shadow_layer);
|
||||
gimp_palette_set_background ($text_color);
|
||||
gimp_layer_set_preserve_trans ($text_layer, 1);
|
||||
gimp_edit_fill ($text_layer);
|
||||
gimp_palette_set_background ($bg_color);
|
||||
gimp_drawable_fill ($shadow_layer, BG_IMAGE_FILL);
|
||||
gimp_rect_select ($img, $b_size_2, $b_size_2, ($width - $b_size), ($height - $b_size), SELECTION_REPLACE, 1, $b_size_2);
|
||||
gimp_palette_set_background ([0, 0, 0]);
|
||||
gimp_edit_fill ($shadow_layer);
|
||||
gimp_selection_layer_alpha ($text_layer);
|
||||
gimp_image_add_layer_mask ($img, $text_shadow_layer, $tsl_layer_mask);
|
||||
gimp_palette_set_background ([255, 255, 255]);
|
||||
gimp_edit_fill ($tsl_layer_mask);
|
||||
gimp_selection_feather ($img, $f_size);
|
||||
gimp_palette_set_background ([63, 63, 63]);
|
||||
gimp_edit_fill ($drop_shadow_layer);
|
||||
gimp_palette_set_background ([0, 0, 0]);
|
||||
gimp_edit_fill ($text_shadow_layer);
|
||||
gimp_palette_set_foreground ([255, 255, 255]);
|
||||
gimp_blend ($text_shadow_layer, FG_BG_RGB, NORMAL_MODE, SHAPEBURST_ANGULAR, 100, 0, REPEAT_NONE, 0, 0, 0, 0, 0, 1, 1);
|
||||
gimp_selection_none ($img);
|
||||
gimp_palette_set_foreground ($blend_fg);
|
||||
gimp_palette_set_background ($blend_bg);
|
||||
gimp_blend ($blend_layer, eval $blend_mode, NORMAL_MODE, LINEAR, 100, 0, REPEAT_NONE, 0, 0, 0, 0, 0, $width, 0);
|
||||
gimp_layer_translate ($text_layer, -($b_size_2), -($b_size_2));
|
||||
gimp_layer_translate ($blend_layer, -($b_size), -($b_size));
|
||||
gimp_layer_translate ($text_shadow_layer, -($ts_size), -($ts_size));
|
||||
gimp_layer_translate ($drop_shadow_layer, $ds_size, $ds_size);
|
||||
gimp_selection_layer_alpha ($blend_layer);
|
||||
gimp_image_add_layer_mask ($img, $drop_shadow_layer, $dsl_layer_mask);
|
||||
gimp_palette_set_background ([255, 255, 255]);
|
||||
gimp_edit_fill ($dsl_layer_mask);
|
||||
gimp_image_remove_layer_mask ($img, $drop_shadow_layer, APPLY);
|
||||
gimp_selection_none ($img);
|
||||
gimp_layer_set_name ($text_layer, $text);
|
||||
gimp_palette_set_foreground ($old_fg);
|
||||
gimp_palette_set_background ($old_bg);
|
||||
gimp_image_enable_undo ($img);
|
||||
gimp_display_new ($img);
|
||||
};
|
||||
}
|
||||
|
||||
sub nth {
|
||||
$_[1]->[$_[0]];
|
||||
}
|
||||
|
||||
sub max {
|
||||
$_[0] > $_[1] ? $_[0] : $_[1];
|
||||
}
|
||||
register "perl_fu_blended_logo",
|
||||
"Creates logos with blended backgrounds, highlights, and shadows",
|
||||
"Creates logos with blended backgrounds, highlights, and shadows",
|
||||
"Spencer Kimball",
|
||||
"Spencer Kimball",
|
||||
"1996",
|
||||
"<Toolbox>/Xtns/Perl-Fu/Logos/Blended",
|
||||
"",
|
||||
[
|
||||
[PF_VALUE, 'blend_mode', "Blend Mode", "FG_BG_HSV"],
|
||||
[PF_STRING, 'text_string', "Text String", "The GIMP"],
|
||||
[PF_ADJUSTMENT,'font_size_pixels', "Font Size (pixels)", [150, 2, 1000, 1, 10, 0, 1]],
|
||||
[PF_FONT, 'font', "Font", "-*-Crillee-*-r-*-*-24-*-*-*-p-*-*-*"],
|
||||
[PF_COLOUR, 'background_color', "Background Color", [255, 255, 255]],
|
||||
[PF_COLOUR, 'text_color', "Text Color", [124, 174, 255]],
|
||||
[PF_COLOUR, 'starting_blend', "Starting Blend", [22, 9, 129]],
|
||||
[PF_COLOUR, 'ending_blend', "Ending Blend", [129, 9, 82]],
|
||||
],
|
||||
\&script_fu_blended_logo;
|
||||
|
||||
exit main;
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
use 5.005;
|
||||
|
||||
$VERSION = 1.0;
|
||||
|
||||
# Copyright Marc Lehmann <pcg@goof.com>
|
||||
#
|
||||
# This is distributed under the GPL (see COPYING.GNU for details).
|
||||
|
@ -70,6 +72,14 @@ sub drop_1st {
|
|||
($a,$f,new token($t1->[0],$t2->[1],$t2->[2]),@t);
|
||||
}
|
||||
|
||||
# "nicify" plug-in constants
|
||||
sub plug_in_constant {
|
||||
my($a,$f,$t1,$t2,@t)=@_;
|
||||
my $n = $t2->[1];
|
||||
$n==0 and $n = "RUN_NONINTERACTIVE";
|
||||
($a,$f,new token($t1->[0],$n,$t2->[2]),@t);
|
||||
}
|
||||
|
||||
# every hash value consists of an array of specifications, each
|
||||
# one has the form ["regexp", codref_to_call], or a string (another translation
|
||||
# name)
|
||||
|
@ -88,8 +98,9 @@ sub drop_1st {
|
|||
"gimp-selection-load|gimp-shear|gimp-threshold)\$",
|
||||
\&drop_1st
|
||||
]],
|
||||
'1.1' => ['api1'],
|
||||
'1.2' => ['api1'],
|
||||
'1.1' => ['nice','api1'],
|
||||
'1.2' => ['nice','api1'],
|
||||
'nice'=> [],#["^(plug-in-|file-|gimp-file-)", \&plug_in_constant]],
|
||||
);
|
||||
|
||||
$gen_diff=0;
|
||||
|
@ -195,6 +206,36 @@ sub tree2scheme {
|
|||
join ("",map isa($_,token) ? @$_ : tree2scheme(@$_),@_);
|
||||
}
|
||||
|
||||
sub scheme2perl {
|
||||
for(@_) {
|
||||
local $_ = shift;
|
||||
print scalar@_,">\n";
|
||||
local *_ = \$_[0];
|
||||
print "$_=\n";
|
||||
if (isa($_,token)) {
|
||||
my $t = $_->[1];
|
||||
$_->[0] =~ s/^(\s*);/$1#/mg;
|
||||
$_->[1] =~ s/^(\s*);/$1#/mg;
|
||||
if ($t eq "define") {
|
||||
$_->[1] = "sub";
|
||||
splice @{$_[$i+1]},2,-1,new token "","{","";
|
||||
$_[$i+2]
|
||||
} elsif ($t =~ /[()]/) {
|
||||
$_->[1] = "";
|
||||
} else {
|
||||
$_[0] = [
|
||||
new token ("[",$_->[0],"<"),
|
||||
new token ("",$_->[1],">"),
|
||||
new token ("",$_->[2],"]"),
|
||||
];
|
||||
}
|
||||
} else {
|
||||
scheme2perl(@$_);
|
||||
}
|
||||
shift; print scalar@_,"<\n";
|
||||
}
|
||||
}
|
||||
|
||||
# translate functions, sorry folks, this function is write-only!
|
||||
sub translate {
|
||||
my $v=shift;
|
||||
|
@ -238,6 +279,7 @@ sub dofile {
|
|||
}
|
||||
|
||||
open OUT,"$out" or die "unable to open '$out' for writing: $!";
|
||||
#scheme2perl(@prog);
|
||||
print OUT tree2scheme(@prog);
|
||||
close OUT;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue