Blame src/libbluray/bdj/java/java/awt/PolyEdge.java

Packit 5e46da
/*
Packit 5e46da
 * This file is part of libbluray
Packit 5e46da
 * Copyright (C) 2014  libbluray
Packit 5e46da
 *
Packit 5e46da
 * This library is free software; you can redistribute it and/or
Packit 5e46da
 * modify it under the terms of the GNU Lesser General Public
Packit 5e46da
 * License as published by the Free Software Foundation; either
Packit 5e46da
 * version 2.1 of the License, or (at your option) any later version.
Packit 5e46da
 *
Packit 5e46da
 * This library is distributed in the hope that it will be useful,
Packit 5e46da
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 5e46da
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 5e46da
 * Lesser General Public License for more details.
Packit 5e46da
 *
Packit 5e46da
 * You should have received a copy of the GNU Lesser General Public
Packit 5e46da
 * License along with this library. If not, see
Packit 5e46da
 * <http://www.gnu.org/licenses/>.
Packit 5e46da
 */
Packit 5e46da
Packit 5e46da
package java.awt;
Packit 5e46da
Packit 5e46da
class PolyEdge {
Packit 5e46da
Packit 5e46da
    private int x1;
Packit 5e46da
    private int y1;
Packit 5e46da
    //private int x2;
Packit 5e46da
    private int y2;
Packit 5e46da
    private float m;
Packit 5e46da
    private float c;
Packit 5e46da
    private boolean vertical;
Packit 5e46da
Packit 5e46da
    PolyEdge(int x1, int y1, int x2, int y2) {
Packit 5e46da
Packit 5e46da
        // sort lowest to highest
Packit 5e46da
        if (y2 < y1) {
Packit 5e46da
            int swap;
Packit 5e46da
            swap = x1; x1 = x2; x2 = swap;
Packit 5e46da
            swap = y1; y1 = y2; y2 = swap;
Packit 5e46da
        }
Packit 5e46da
Packit 5e46da
        this.x1 = x1;
Packit 5e46da
        this.y1 = y1;
Packit 5e46da
        //this.x2 = x2;
Packit 5e46da
        this.y2 = y2;
Packit 5e46da
Packit 5e46da
        if (x1 == x2) {
Packit 5e46da
            vertical = true;
Packit 5e46da
            m = 0;
Packit 5e46da
        } else {
Packit 5e46da
            m = (float)(y2 - y1) / (float)(x2 - x1);
Packit 5e46da
            c = (-x1 * m) + y1;
Packit 5e46da
            vertical = false;
Packit 5e46da
        }
Packit 5e46da
    }
Packit 5e46da
Packit 5e46da
    public boolean intersects(int y) {
Packit 5e46da
Packit 5e46da
        if (y <= y2 && y >= y1 && y1 != y2) {
Packit 5e46da
            return true;
Packit 5e46da
        }
Packit 5e46da
Packit 5e46da
        return false;
Packit 5e46da
    }
Packit 5e46da
Packit 5e46da
    public int intersectionX(int y) {
Packit 5e46da
Packit 5e46da
        if (vertical) {
Packit 5e46da
            return x1;
Packit 5e46da
        }
Packit 5e46da
Packit 5e46da
        return (int)(((y - c) / m) + 0.5f);
Packit 5e46da
    }
Packit 5e46da
}