new innovations in an8setting
actually meant for dialogue positioning lol, i couldnt be bothered to type in an8 every time
This commit is contained in:
parent
5b8b02f1b1
commit
414080eb7a
|
@ -0,0 +1,69 @@
|
||||||
|
script_name = "pos -> an"
|
||||||
|
script_description = "double click the video then snap to an \\an"
|
||||||
|
script_author = "garret"
|
||||||
|
script_version = "1"
|
||||||
|
|
||||||
|
|
||||||
|
local function escape_pattern(txt)
|
||||||
|
local magic_chars = "%^%$%(%)%%.%[%]%*%+%-%?"
|
||||||
|
return txt:gsub("(["..magic_chars.."])", "%%%1")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function main(sub, sel)
|
||||||
|
local vidx, vidy = aegisub.video_size()
|
||||||
|
local left = vidx * 0.25
|
||||||
|
local right = vidx - (vidx * 0.25)
|
||||||
|
local top = vidy * 0.32
|
||||||
|
local bottom = vidy - (vidx * 0.35)
|
||||||
|
-- todo: have these customisable in a gui in v2
|
||||||
|
|
||||||
|
if not vidx then
|
||||||
|
aegisub.log("open a video")
|
||||||
|
aegisub.cancel()
|
||||||
|
-- todo: might be nice to use script res for this
|
||||||
|
-- but realistically if youre using this, youve got a video open
|
||||||
|
end
|
||||||
|
for _, i in ipairs(sel) do
|
||||||
|
local line = sub[i]
|
||||||
|
local x
|
||||||
|
local y
|
||||||
|
local tag
|
||||||
|
local c = 0
|
||||||
|
line.text = string.gsub(line.text, "\\an%d", "")
|
||||||
|
line.text = string.gsub(line.text, "{}", "")
|
||||||
|
for postag, posx, posy in string.gmatch(line.text, "{[^}]*(\\pos%(([^,]+), *([^)]+)%))[^}]*}") do
|
||||||
|
if c == 0 then
|
||||||
|
x = tonumber(posx)
|
||||||
|
y = tonumber(posy)
|
||||||
|
tag = escape_pattern(postag)
|
||||||
|
end
|
||||||
|
c = c + 1
|
||||||
|
end
|
||||||
|
if c == 0 then goto continue end
|
||||||
|
-- aegi is luajit
|
||||||
|
|
||||||
|
local s
|
||||||
|
|
||||||
|
if y <= top then
|
||||||
|
s = "t" elseif
|
||||||
|
y >= bottom then s = "b"
|
||||||
|
else s = "c" end
|
||||||
|
|
||||||
|
if x <= left then
|
||||||
|
s = s.."l" elseif
|
||||||
|
x >= right then s = s.."r"
|
||||||
|
else s = s.."c" end
|
||||||
|
|
||||||
|
local AN_MAP = {
|
||||||
|
tl = 7, tc = 8, tr = 9,
|
||||||
|
cl = 4, cc = 5, cr = 6,
|
||||||
|
bl = 1, bc = 2, br = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
line.text = string.gsub(line.text, tag, "\\an"..AN_MAP[s])
|
||||||
|
sub[i] = line
|
||||||
|
::continue::
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
aegisub.register_macro(script_name, script_description, main)
|
Loading…
Reference in New Issue