Example #1
0
    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);
    }
Example #2
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);
    }