From a45f49190e89650cba47efb5f727d72a3fcc8539 Mon Sep 17 00:00:00 2001 From: petzku Date: Sun, 19 Nov 2023 22:10:25 +0200 Subject: [PATCH 1/4] [NewClipShape] Add to depctrl and readme --- DependencyControl.json | 24 ++++++++++++++++++++++++ README.md | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/DependencyControl.json b/DependencyControl.json index 96397a2..fae1454 100644 --- a/DependencyControl.json +++ b/DependencyControl.json @@ -263,6 +263,30 @@ ] } }, + "petzku.NewClipShape": { + "fileBaseUrl": "@{fileBaseUrl}/@{channel}/macros/@{namespace}", + "url": "@{baseUrl}#new-clip-shape", + "author": "petzku", + "name": "New Clip Shape", + "description": "Converts the last point of a vectorial clip into a new origin point", + "channels": { + "stable": { + "version": "0.3.1", + "released": "2023-11-19", + "default": true, + "files": [ + { + "name": ".moon", + "url": "@{fileBaseUrl}@{fileName}", + "sha1": "b7ebc857b56a8c20cc9b93ab10954043074cb811" + } + ] + } + }, + "changelog": { + "0.3.1": ["Initial release"] + } + }, "petzku.Phantom": { "fileBaseUrl": "@{fileBaseUrl}/@{channel}/macros/@{namespace}", "url": "@{baseUrl}#phantom", diff --git a/README.md b/README.md index 7acd019..32ce5dd 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,10 @@ Handles positioning on both axes, and all bottom- or top-aligned alignments, spe **WARNING:** older versions of Aegisub (at the time of writing, this is most commonly used builds) do not handle opening files with negative margin values correctly (negative values are simply clamped to zero). If you use this macro, beware of those values being silently discarded. +### New Clip Shape + +Hotkeyable macro to turn the last point of the active line's vectorial clip into a new "origin point" (i.e. `m 0 0 l 50 50 100 100` into `m 0 0 l 50 50 m 100 100`). Works for `l` as well as `b` (though it relies on Aegisub to fix potentially malformed shapes). + ### Split Timer Automatically splits any lines longer than a given threshold, retiming transforms and moves so rendering should be unaffected. `10 second chunks` has a threshold of 10 seconds, useful to account for player lookback buffers. `N frames` prompts for a length of frames, and uses that as the threshold. From 2a16ff8cd433970b6caf07db089d4dfe335991a7 Mon Sep 17 00:00:00 2001 From: petzku Date: Sun, 19 Nov 2023 22:32:55 +0200 Subject: [PATCH 2/4] [Phantom] Add to README --- README.md | 9 +++++++++ phantom.png | Bin 0 -> 34198 bytes 2 files changed, 9 insertions(+) create mode 100644 phantom.png diff --git a/README.md b/README.md index 32ce5dd..e9599c7 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,15 @@ Handles positioning on both axes, and all bottom- or top-aligned alignments, spe Hotkeyable macro to turn the last point of the active line's vectorial clip into a new "origin point" (i.e. `m 0 0 l 50 50 100 100` into `m 0 0 l 50 50 m 100 100`). Works for `l` as well as `b` (though it relies on Aegisub to fix potentially malformed shapes). +### Phantom + +Helps with messing with dialogue layout using `\alphaFF`, somewhat akin to LaTeX `\phantom`. Split the line into three parts with `{}` (an empty tag section) to signify which part should be "hidden", and which part should "replace" it. If using the `Align start` mode, this should be `common{}replace{}hidden`; for `Align end`, `hidden{}replace{}common`. To demonstrate this better, in the image below, the "common" part is `The quick br`, "replace" is `—` (the em dash), and the "hidden" part is `own fox`, i.e. `The quick br{}—{}own fox`. + +![Phantom text demonstration image](phantom.png) +_Demonstration of the Phantom macro. The top and bottom lines are completely unmodified, the middle line is Phantomed to align exactly with the full line._ + +If you're using a new-ish Aegisub build that includes the Lua GUI API (such as [arch1t3ct's](https://github.com/arch1t3cht/Aegisub)), there is a third macro, `By cursor`, that determines the sections and direction from the selection. Simply select the "replace" part (i.e. `—` in the example above), starting the selection from the direction that should remain aligned (i.e. left to right). + ### Split Timer Automatically splits any lines longer than a given threshold, retiming transforms and moves so rendering should be unaffected. `10 second chunks` has a threshold of 10 seconds, useful to account for player lookback buffers. `N frames` prompts for a length of frames, and uses that as the threshold. diff --git a/phantom.png b/phantom.png new file mode 100644 index 0000000000000000000000000000000000000000..e40a4854496afb0751434cee7603c43db478ab3b GIT binary patch literal 34198 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 UW1VCBg9QI%UMNbGioN{sUu2g<`v3p{ literal 0 HcmV?d00001 From 6715f54db6699b64aedb9fb677a34be49db75596 Mon Sep 17 00:00:00 2001 From: petzku Date: Sun, 19 Nov 2023 22:34:52 +0200 Subject: [PATCH 3/4] [Resample] Add deprecation notice in README --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e9599c7..5ab6900 100644 --- a/README.md +++ b/README.md @@ -178,9 +178,11 @@ Specifically, the macro expects the style defaults to be `\an4\fs50\fnPT Sans` a ### Resample -Corrects 3D-rotations (`\frx\fry`) when resampling script resolutions. Uses trigonometry instead of the classic "multiply by the ratio of the resolutions" and also scales subtitle dimensions when necessary, so this handles even extreme rotations correctly, or at least very nearly so. Still kind of experimental, though I see little reason not to use this if you ever end up resampling scripts. +Don't use this, use [arch1t3ct's one](https://github.com/TypesettingTools/arch1t3cht-Aegisub-Scripts#resample-perspective) instead. Consider this script deprecated, and likely to be removed from the repo soon. -Somewhat WIP. Does not always handle in-line `bord` and `shad` tags correctly. Also, I've been told the math I've used relies on incorrect assumptions, but it seemed to work correctly in all my testing. +~~Corrects 3D-rotations (`\frx\fry`) when resampling script resolutions. Uses trigonometry instead of the classic "multiply by the ratio of the resolutions" and also scales subtitle dimensions when necessary, so this handles even extreme rotations correctly, or at least very nearly so. Still kind of experimental, though I see little reason not to use this if you ever end up resampling scripts.~~ + +~~Somewhat WIP. Does not always handle in-line `bord` and `shad` tags correctly. Also, I've been told the math I've used relies on incorrect assumptions, but it seemed to work correctly in all my testing.~~ ### Shake From 43b2c1064648380ae3e0f30934bd7f0b3255c26f Mon Sep 17 00:00:00 2001 From: petzku Date: Sun, 19 Nov 2023 22:54:17 +0200 Subject: [PATCH 4/4] [SplitTimer] Add `on video frame` to README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also note about double-negative-time \move being broken. Will fix in petzkulib soon™ --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5ab6900..2b55906 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,10 @@ If you're using a new-ish Aegisub build that includes the Lua GUI API (such as [ Automatically splits any lines longer than a given threshold, retiming transforms and moves so rendering should be unaffected. `10 second chunks` has a threshold of 10 seconds, useful to account for player lookback buffers. `N frames` prompts for a length of frames, and uses that as the threshold. +`On video frame` behaves slightly differently, emulating Aegisub's built-in "Split lines before current frame" function, but still accurately preserving transforms. + +It is good to note, though, that `\move` has the erratic behavior that treats negative start- and end-times as if neither had been passed—essentially "breaking" this macro. The simple fix is to make it simply a `\pos` in these cases. (I should address this soon-ish) + ### Typewriter Takes a line and "writes" it character by character, making the characters appear one by one (using alphas) either frame-by-frame or evenly spaced over the line's duration. My first script, initially made before I even knew what the hell alpha-timing was and actually deleted characters from the string to make this work. Obviously this has been changed since.