mirror of https://github.com/odrling/Aegisub
Added edgeblur macro example for the perl flavor of auto4.
Originally committed to SVN as r1747.
This commit is contained in:
parent
1bf3fad8a1
commit
dae9dfaee4
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use Aegisub; # don't forget this
|
||||
|
||||
$script_name = "Add/remove edgeblur macro (Perl version)";
|
||||
$script_description = "A demo macro showing how to do simple macros in Auto4-Perl";
|
||||
$script_author = "Karl Blomster";
|
||||
$script_version = "1";
|
||||
|
||||
|
||||
# this is a line-by-line translation of the Lua macro of the same name.
|
||||
sub add_edgeblur {
|
||||
# get the arguments; they are all references (important later)
|
||||
my ($subtitles, $selected_lines, $active_line) = @_;
|
||||
|
||||
# loop over the selected lines (note the dereferencing)
|
||||
foreach my $lineno ( @{$selected_lines} ) {
|
||||
# $line now contains a reference to the line we're working on.
|
||||
# Note that the "line" is actually a hash with the dialogue line fields as keys.
|
||||
my $line = $subtitles->[$lineno];
|
||||
# Tack on {\be1} to the start of the "text" field...
|
||||
$line->{"text"} = '{\\be1}' . $line->{"text"};
|
||||
# And write our $line back to the file.
|
||||
$subtitles->[$lineno] = $line;
|
||||
}
|
||||
|
||||
# This ain't implemented yet :(
|
||||
# Aegisub::Script::set_undo_point("Add edgeblur");
|
||||
}
|
||||
|
||||
|
||||
# This routine is NOT a Lua translation and may therefore seem more perlish. :>
|
||||
sub remove_edgeblur {
|
||||
# same as above
|
||||
my ($subtitles, $selected_lines, $active_line) = @_;
|
||||
|
||||
foreach my $lineno ( @{$selected_lines} ) {
|
||||
# Since we're only going to change the text field of the line,
|
||||
# why bother copying the entire line? We copy only the text field instead.
|
||||
# We could also do stuff directly on $subtitles->[$lineno]->{"text"} but
|
||||
# that's too long to write and is also risky if you blow something up.
|
||||
my $text = $subtitles->[$lineno]->{"text"};
|
||||
|
||||
# remove any \be1 tags contained in the first {} block
|
||||
$text =~ s!^\{(.*?)\\be1(.*?)\}!\{${1}${2}\}!;
|
||||
# if that leaves nothing in it, remove it
|
||||
$text =~ s!^\{\}!!;
|
||||
|
||||
# write back
|
||||
$subtitles->[$lineno]->{"text"} = $text;
|
||||
}
|
||||
|
||||
# Still not implemented :/
|
||||
# Aegisub::Script::set_undo_point("Remove edgeblur");
|
||||
}
|
||||
|
||||
|
||||
# Register macros with Aegisub
|
||||
Aegisub::Script::register_macro("Add edgeblur (Perl)", "Adds \\be1 tags to all selected lines", \&add_edgeblur);
|
||||
Aegisub::Script::register_macro("Remove edgeblur (Perl)", "Removes \\be1 tags from the start of all selected lines", \&remove_edgeblur);
|
Loading…
Reference in New Issue