Aegisub/vsfilter/patchfiles/fax_fay-SVN611.patch

69 lines
2.0 KiB
Diff

Index: STS.h
===================================================================
--- STS.h (revision 611)
+++ STS.h (working copy)
@@ -49,6 +49,7 @@
bool fStrikeOut;
bool fBlur;
double fontAngleZ, fontAngleX, fontAngleY;
+ double fontShiftX, fontShiftY;
int relativeTo; // 0: window, 1: video, 2: undefined (~window)
STSStyle();
Index: RTS.cpp
===================================================================
--- RTS.cpp (revision 611)
+++ RTS.cpp (working copy)
@@ -156,8 +156,8 @@
{
double x, y, z, xx, yy, zz;
- x = scalex * mpPathPoints[i].x - org.x;
- y = scaley * mpPathPoints[i].y - org.y;
+ x = scalex * (mpPathPoints[i].x + m_style.fontShiftX * mpPathPoints[i].y) - org.x;
+ y = scaley * (mpPathPoints[i].y + m_style.fontShiftY * mpPathPoints[i].x) - org.y;
z = 0;
xx = x*caz + y*saz;
@@ -1437,6 +1437,8 @@
params.Add(cmd.Mid(2)), cmd = cmd.Left(2);
else if(!cmd.Find(L"frx") || !cmd.Find(L"fry") || !cmd.Find(L"frz"))
params.Add(cmd.Mid(3)), cmd = cmd.Left(3);
+ else if(!cmd.Find(L"fax") || !cmd.Find(L"fay"))
+ params.Add(cmd.Mid(3)), cmd = cmd.Left(3);
else if(!cmd.Find(L"fr"))
params.Add(cmd.Mid(2)), cmd = cmd.Left(2);
else if(!cmd.Find(L"fscx") || !cmd.Find(L"fscy"))
@@ -1618,6 +1620,18 @@
}
}
}
+ else if(cmd == L"fax")
+ {
+ style.fontShiftX = !p.IsEmpty()
+ ? CalcAnimation(wcstod(p, NULL), style.fontShiftX, fAnimate)
+ : org.fontShiftX;
+ }
+ else if(cmd == L"fay")
+ {
+ style.fontShiftY = !p.IsEmpty()
+ ? CalcAnimation(wcstod(p, NULL), style.fontShiftY, fAnimate)
+ : org.fontShiftY;
+ }
else if(cmd == L"fe")
{
int n = wcstol(p, NULL, 10);
Index: STS.cpp
===================================================================
--- STS.cpp (revision 611)
+++ STS.cpp (working copy)
@@ -2898,7 +2898,7 @@
fUnderline = false;
fStrikeOut = false;
fBlur = false;
- fontAngleZ = fontAngleX = fontAngleY = 0;
+ fontShiftX = fontShiftY = fontAngleZ = fontAngleX = fontAngleY = 0;
relativeTo = 2;
}