Rectangle GetDirtyArea (Rectangle total_area, Rectangle valid_area, int XAmount, int YAmount)
{
Rectangle dirty_area = total_area;
if (YAmount > 0)
dirty_area.Height -= valid_area.Height;
else if (YAmount < 0) {
dirty_area.Height -= valid_area.Height;
dirty_area.Y += valid_area.Height;
}
if (XAmount > 0)
dirty_area.Width -= valid_area.Width;
else if (XAmount < 0) {
dirty_area.Width -= valid_area.Width;
dirty_area.X += valid_area.Width;
}
return dirty_area;
}