Mình đang cần cái đặt thuật toán xén đoạn thẳng Cohen Sutherland nhưng chỉ có code viết bằng C++ , mình đang cần chuyển thành C# ai giúp giùm mình với . Thanks nhiều

Đây là code viết bằng C++
Code:
#define TRUE		1
#define FALSE		0
#define LEFT		1
#define RIGHT		2
#define TOP		4
#define BOTTOM		8
typedef struct {
	int x, y;
}POINT;

typedef struct {
	int Left, Top, Right, Bottom;
}RECT;

typedef int CODE;

#define Accept(a,b)		(!(a|b))
#define Reject(a,b)   	(a&b)

// Tra ve ma vung cua p la c
void EnCode(POINT p, CODE &c, RECT rWin)
{
c = 0;
	if(p.x < rWin.Left)
c |= LEFT;
	if(p.x > rWin.Right)
c |= RIGHT;
if(p.y > rWin.Top)
c |= TOP;
	if(p.y < rWin.Bottom)
c |= BOTTOM;
}

// Hoan vi hai diem p1 va p2 sao cho p1 luon nam ngoai cua so
void SwapPoint(POINT& p1, POINT &p2, CODE &c1, CODE &c2)
{
	
if(!c1) // Neu p1 nam hoan toan trong cua so
	{
POINT p;
p = p1;
p1 = p2;
p2 = p;

CODE c;
c = c1;
c1 = c2;
c2 = c;
}
}

// Tra ve TRUE neu co cat cua so. Nguoc lai tra ve FALSE
int CohenSutherlandClipping(POINT P1, POINT P2, POINT &Q1, POINT &Q2, RECT rWin)
{
	int fStop = FALSE, fResult = FALSE;
	CODE c1, c2;

	while(!fStop)
	{

EnCode(P1, c1, rWin);
EnCode(P2, c2, rWin);

// Neu duong thang nam hoan toan ben trong cua so
if(Accept(c1, c2)) 
{
fStop 	= TRUE; // break
fResult 	= TRUE;
} // Accept

else
{
// Neu duong thang nam hoan toan ben ngoai cua so
if(Reject(c1,c2)) 
{
	fStop = TRUE; // break
} // Reject
else // Xet truong hop duong thang co the cat cua so
{
	SwapPoint(P1, P2, c1, c2);
	float m;

	if(P2.x!=P1.x)
m = float(P2.y-P1.y)/(P2.x-P1.x);
	if(c1 & LEFT)
	{
P1.y += (rWin.Left-P1.x)*m;
P1.x   = rWin.Left;
	} // Left
	else
	{
if(c1 & RIGHT)
{
P1.y 	+= (rWin.Right-P1.x)*m;
P1.x 	= rWin.Right;
} // Right
else
{
if(c1 & TOP)
{
if(P2.x!=P1.x)
P1.x += (rWin.Top - P1.y)/m;
P1.y   = rWin.Top;
} // Top
	else // Bottom
	{
if(P2.x!=P1.x)
	P1.x 	+= (rWin.Bottom - P1.y)/m;
P1.y  = rWin.Bottom;
	} // Bottom
}
		}
} // Xet truong hop duong thang co the cat cua so
}
} //while

Q1 = P1;
Q2 = P2;
return (fResult);
} //CohenSutherlandClipping