Files
SuperVPN/output/Libraries/MessagingToolkit.QRCode/MessagingToolkit/QRCode/Geom/Axis.cs
2025-10-09 09:57:24 +09:00

78 lines
1.5 KiB
C#

using MessagingToolkit.QRCode.Codec.Reader;
namespace MessagingToolkit.QRCode.Geom;
public class Axis
{
internal int sin;
internal int cos;
internal int modulePitch;
internal Point origin;
public virtual Point Origin
{
set
{
origin = value;
}
}
public virtual int ModulePitch
{
set
{
modulePitch = value;
}
}
public Axis(int[] angle, int modulePitch)
{
sin = angle[0];
cos = angle[1];
this.modulePitch = modulePitch;
origin = new Point();
}
public virtual Point translate(Point offset)
{
int x = offset.X;
int y = offset.Y;
return translate(x, y);
}
public virtual Point translate(Point origin, Point offset)
{
Origin = origin;
int x = offset.X;
int y = offset.Y;
return translate(x, y);
}
public virtual Point translate(Point origin, int moveX, int moveY)
{
Origin = origin;
return translate(moveX, moveY);
}
public virtual Point translate(Point origin, int modulePitch, int moveX, int moveY)
{
Origin = origin;
this.modulePitch = modulePitch;
return translate(moveX, moveY);
}
public virtual Point translate(int moveX, int moveY)
{
long num = QRCodeImageReader.DECIMAL_POINT;
Point point = new Point();
int num2 = ((moveX != 0) ? (modulePitch * moveX >> (int)num) : 0);
int num3 = ((moveY != 0) ? (modulePitch * moveY >> (int)num) : 0);
point.translate(num2 * cos - num3 * sin >> (int)num, num2 * sin + num3 * cos >> (int)num);
point.translate(origin.X, origin.Y);
return point;
}
}