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 |
}
|