more work on overlay renderer:

- moved text rendering to overlay
- added grid overlay
This commit is contained in:
Hannes Janetzek
2012-10-13 04:57:27 +02:00
parent 33d8865d7b
commit 4a06553ddc
33 changed files with 2050 additions and 1089 deletions

View File

@@ -35,20 +35,11 @@ public final class LineLayer extends Layer {
public Line line;
public float width;
// boolean isOutline;
LineLayer(int layer) {
this.layer = layer;
this.type = Layer.LINE;
}
// LineLayer(int layer, Line line, float width, boolean outline) {
// this.layer = layer;
// this.width = width;
// this.line = line;
// // this.isOutline = outline;
// }
public void addOutline(LineLayer link) {
for (LineLayer l = outlines; l != null; l = l.outlines)
if (link == l)
@@ -272,6 +263,7 @@ public final class LineLayer extends Layer {
prevY = y;
x = nextX;
y = nextY;
boolean flip = false;
for (;;) {
if (ipos < pos + length) {
@@ -314,10 +306,15 @@ public final class LineLayer extends Layer {
ux = (ux / a);
uy = (uy / a);
// hack to avoid miter going to infinity
if (ux > 2.0f || ux < -2.0f || uy > 2.0f || uy < -2.0f) {
ux = -wy;
uy = wx;
// avoid miter going to infinity...
if (ux > 4.0f || ux < -4.0f || uy > 4.0f || uy < -4.0f) {
ux = vx - wx;
uy = vy - wy;
a = -wy * ux + wx * uy;
ux = (ux / a);
uy = (uy / a);
flip = !flip;
}
}
@@ -327,6 +324,10 @@ public final class LineLayer extends Layer {
ddx = (int) (ux * DIR_SCALE);
ddy = (int) (uy * DIR_SCALE);
if (flip) {
ddx *= -1;
ddy *= -1;
}
if (opos == VertexPoolItem.SIZE) {
si = si.next = VertexPool.get();
v = si.vertices;
@@ -382,6 +383,11 @@ public final class LineLayer extends Layer {
ddx = (int) (ux * DIR_SCALE);
ddy = (int) (uy * DIR_SCALE);
if (flip) {
ddx *= -1;
ddy *= -1;
}
v[opos++] = ox;
v[opos++] = oy;
v[opos++] = (short) (0 | ddx & DIR_MASK);
@@ -410,6 +416,11 @@ public final class LineLayer extends Layer {
dx = (short) (0 | ddx & DIR_MASK);
dy = (short) (0 | ddy & DIR_MASK);
if (flip) {
ddx *= -1;
ddy *= -1;
}
v[opos++] = ox;
v[opos++] = oy;
v[opos++] = dx;
@@ -427,6 +438,11 @@ public final class LineLayer extends Layer {
dx = (short) (2 | ddx & DIR_MASK);
dy = (short) (0 | ddy & DIR_MASK);
if (flip) {
ddx *= -1;
ddy *= -1;
}
v[opos++] = ox;
v[opos++] = oy;
v[opos++] = dx;
@@ -457,7 +473,10 @@ public final class LineLayer extends Layer {
ddx = (int) ((ux - vx) * DIR_SCALE);
ddy = (int) ((uy - vy) * DIR_SCALE);
if (flip) {
ddx *= -1;
ddy *= -1;
}
v[opos++] = ox;
v[opos++] = oy;
v[opos++] = (short) (0 | ddx & DIR_MASK);
@@ -472,6 +491,10 @@ public final class LineLayer extends Layer {
// add last vertex twice
ddx = (int) (-(ux + vx) * DIR_SCALE);
ddy = (int) (-(uy + vy) * DIR_SCALE);
if (flip) {
ddx *= -1;
ddy *= -1;
}
dx = (short) (2 | ddx & DIR_MASK);
dy = (short) (1 | ddy & DIR_MASK);