fix(script): expose After Effects text Path Options matchNames (#815)

This commit is contained in:
Nigel Ihza Firdausy committed 2026-10-11 21:46:02 +07:00
1 parent 9a7d3e7699
commit 0467e1101b
2 files changed
+39

No files matched your search

+12
View File
@@ -61,6 +61,17 @@ const TEXT: &[(&str, &str)] = &[
("animators", "ADBE Text Animators"),
];
// Match names of the six properties below Text ▸ Path Options, as named by
// After Effects' scripting API (rather than EffectCraft's internal ids).
const TEXT_PATH_OPTIONS: &[(&str, &str)] = &[
("path", "ADBE Text Path"),
("reversePath", "ADBE Text Reverse Path"),
("perpendicular", "ADBE Text Perpendicular To Path"),
("forceAlignment", "ADBE Text Force Align Path"),
("firstMargin", "ADBE Text First Margin"),
("lastMargin", "ADBE Text Last Margin"),
];
const TEXT_ANIMATOR: &[(&str, &str)] = &[("selectors", "ADBE Text Selectors"), ("properties", "ADBE Text Animator Properties")];
const CAMERA: &[(&str, &str)] = &[
@@ -411,6 +422,7 @@ pub fn node(chain: &[&Node]) -> String {
}
}
"text" if chain.len() == 2 => find(TEXT, id).map(str::to_string).unwrap_or_else(own),
"text" if pid == "pathOptions" => find(TEXT_PATH_OPTIONS, id).map(str::to_string).unwrap_or_else(own),
"text" if pid == "animators" => "ADBE Text Animator".into(),
"text" if grand.map(|g| g.match_id()) == Some("animators") => find(TEXT_ANIMATOR, id).map(str::to_string).unwrap_or_else(own),
"cameraOptions" => find(CAMERA, id).map(str::to_string).unwrap_or_else(own),
+27
View File
@@ -730,3 +730,30 @@ fn import_options_sequence_picks_one_still_or_the_run() {
assert_eq!(kind_of(&s, "shot_[0001-0003].png"), FootageKind::Sequence);
let _ = std::fs::remove_dir_all(&dir);
}
#[test]
fn script_text_path_options_expose_after_effects_match_names() {
let mut s = session();
let r = ok(
&mut s,
r#"
var c = app.project.items.addComp("Text Path", 160, 90, 1, 2, 24);
var t = c.layers.addText("On a path");
var options = t.property("ADBE Text Properties").property("ADBE Text Path Options");
var names = [];
for (var i = 1; i <= options.numProperties; i++)
names.push(options.property(i).matchName);
[names, options.property("ADBE Text Path").matchName,
options.property("ADBE Text Perpendicular To Path").matchName]
"#,
);
assert_eq!(
r.result,
json!([
["ADBE Text Path", "ADBE Text Reverse Path", "ADBE Text Perpendicular To Path",
"ADBE Text Force Align Path", "ADBE Text First Margin", "ADBE Text Last Margin"],
"ADBE Text Path",
"ADBE Text Perpendicular To Path"
])
);
}