diff --git a/automation/demos/future-windy-blur.lua b/automation/demos/future-windy-blur.lua new file mode 100644 index 000000000..8213a7fdd --- /dev/null +++ b/automation/demos/future-windy-blur.lua @@ -0,0 +1,64 @@ +-- This script is given into the public domain. +-- You can use and modify the effect freely, also without credit, although I would appreciate some. + +include("karaskel.lua") + +script_name = "Future Windy Blur" +script_description = "Highlights blown away by the winds of change." +script_author = "jfs" +script_version = "1.1" + +function new_windy_blur(subs) + aegisub.progress.task("Getting header data...") + local meta, styles = karaskel.collect_head(subs) + + aegisub.progress.task("Applying effect...") + local i, ai, maxi, maxai = 1, 1, #subs, #subs + while i <= maxi do + aegisub.progress.task(string.format("Applying effect (%d/%d)...", ai, maxai)) + aegisub.progress.set((ai-1)/maxai*100) + local l = subs[i] + if l.class == "dialogue" and + not l.comment then + karaskel.preproc_line(subs, meta, styles, l) + do_fx(subs, meta, l) + maxi = maxi - 1 + subs.delete(i) + else + i = i + 1 + end + ai = ai + 1 + end + aegisub.progress.task("Finished!") + aegisub.progress.set(100) +end + +function do_fx(subs, meta, line) + local l = table.copy(line) + l.text = string.format("{\pos(%d,%d)\\1c%s\\1a&HFF&\\3a&HFF&\\t(0,200,\\1a&H00&\\3a&H00&)\\t(%d,%d,\\1a&HFF&\\3a&HFF&)}%s", meta.res_x/2, line.styleref.margin_t, line.styleref.color2, line.duration+200, line.duration+400, line.text_stripped) + l.start_time = l.start_time - 200 + l.end_time = l.end_time + 200 + l.layer = 1 + subs.append(l) + + for i = 1, line.kara.n do + local syl = line.kara[i] + if syl.duration > 0 then + local l = table.copy(line) + l.start_time = line.start_time + syl.start_time + if syl.duration < 750 then + l.end_time = l.start_time + 1500 + else + l.end_time = l.start_time + syl.duration * 1.5 + end + l.layer = 2 + local temp = string.format("{\\be1\\move(%d,%d,%%d,%%d)\\1a&Hd0\\bord0\\t(0.6,\\1a&HFF&)}%s", line.left+syl.center, line.styleref.margin_t, syl.text_stripped) + for j = -8, 8 do + l.text = string.format(temp, line.left+syl.center+math.cos(math.rad(j*4))*30, line.styleref.margin_t+math.sin(math.rad(j*4))*30) + subs.append(l) + end + end + end +end + +aegisub.register_filter("Future Windy Blur", "", 2000, new_windy_blur)