public static bool segment_rect_intersection(Rect bounds, Drawing_tc1.point_class p) { float num = p.p2.x - p.p1.x; float num2 = 0f; Drawing_tc1.clip_class clip_class = new Drawing_tc1.clip_class((float)0, 1f); int arg_173_0; if (Drawing_tc1.clip_test(-num, p.p1.x - bounds.xMin, clip_class) && Drawing_tc1.clip_test(num, bounds.xMax - p.p1.x, clip_class)) { num2 = p.p2.y - p.p1.y; if (Drawing_tc1.clip_test(-num2, p.p1.y - bounds.yMin, clip_class) && Drawing_tc1.clip_test(num2, bounds.yMax - p.p1.y, clip_class)) { if (clip_class.u2 < 1f) { p.p2.x = p.p1.x + clip_class.u2 * num; p.p2.y = p.p1.y + clip_class.u2 * num2; } if (clip_class.u1 > (float)0) { p.p1.x = p.p1.x + clip_class.u1 * num; p.p1.y = p.p1.y + clip_class.u1 * num2; } arg_173_0 = 1; return(arg_173_0 != 0); } } arg_173_0 = 0; return(arg_173_0 != 0); }
public static bool clip_test(float p, float q, Drawing_tc1.clip_class u) { float num = 0f; bool result = true; if (p < (float)0) { num = q / p; if (num > u.u2) { result = false; } else if (num > u.u1) { u.u1 = num; } } else if (p > (float)0) { num = q / p; if (num < u.u1) { result = false; } else if (num < u.u2) { u.u2 = num; } } else if (q < (float)0) { result = false; } return(result); }