< prev index next >
src/java.desktop/share/classes/sun/java2d/marlin/DRenderer.java
Print this page
@@ -44,10 +44,13 @@
static final double SUBPIXEL_SCALE_X = SUBPIXEL_POSITIONS_X;
static final double SUBPIXEL_SCALE_Y = SUBPIXEL_POSITIONS_Y;
static final int SUBPIXEL_MASK_X = SUBPIXEL_POSITIONS_X - 1;
static final int SUBPIXEL_MASK_Y = SUBPIXEL_POSITIONS_Y - 1;
+ static final double RDR_OFFSET_X = 0.501d / SUBPIXEL_SCALE_X;
+ static final double RDR_OFFSET_Y = 0.501d / SUBPIXEL_SCALE_Y;
+
// number of subpixels corresponding to a tile line
private static final int SUBPIXEL_TILE
= TILE_H << SUBPIXEL_LG_POSITIONS_Y;
// 2048 (pixelSize) pixels (height) x 8 subpixels = 64K
@@ -666,58 +669,62 @@
// shift y by -0.5 for fast ceil(y - 0.5):
return SUBPIXEL_SCALE_Y * pix_y - 0.5d;
}
@Override
- public void moveTo(double pix_x0, double pix_y0) {
+ public void moveTo(final double pix_x0, final double pix_y0) {
closePath();
final double sx = tosubpixx(pix_x0);
final double sy = tosubpixy(pix_y0);
this.sx0 = sx;
this.sy0 = sy;
this.x0 = sx;
this.y0 = sy;
}
@Override
- public void lineTo(double pix_x1, double pix_y1) {
+ public void lineTo(final double pix_x1, final double pix_y1) {
final double x1 = tosubpixx(pix_x1);
final double y1 = tosubpixy(pix_y1);
addLine(x0, y0, x1, y1);
x0 = x1;
y0 = y1;
}
@Override
- public void curveTo(double x1, double y1,
- double x2, double y2,
- double x3, double y3)
+ public void curveTo(final double pix_x1, final double pix_y1,
+ final double pix_x2, final double pix_y2,
+ final double pix_x3, final double pix_y3)
{
- final double xe = tosubpixx(x3);
- final double ye = tosubpixy(y3);
- curve.set(x0, y0, tosubpixx(x1), tosubpixy(y1),
- tosubpixx(x2), tosubpixy(y2), xe, ye);
+ final double xe = tosubpixx(pix_x3);
+ final double ye = tosubpixy(pix_y3);
+ curve.set(x0, y0, tosubpixx(pix_x1), tosubpixy(pix_y1),
+ tosubpixx(pix_x2), tosubpixy(pix_y2), xe, ye);
curveBreakIntoLinesAndAdd(x0, y0, curve, xe, ye);
x0 = xe;
y0 = ye;
}
@Override
- public void quadTo(double x1, double y1, double x2, double y2) {
- final double xe = tosubpixx(x2);
- final double ye = tosubpixy(y2);
- curve.set(x0, y0, tosubpixx(x1), tosubpixy(y1), xe, ye);
+ public void quadTo(final double pix_x1, final double pix_y1,
+ final double pix_x2, final double pix_y2)
+ {
+ final double xe = tosubpixx(pix_x2);
+ final double ye = tosubpixy(pix_y2);
+ curve.set(x0, y0, tosubpixx(pix_x1), tosubpixy(pix_y1), xe, ye);
quadBreakIntoLinesAndAdd(x0, y0, curve, xe, ye);
x0 = xe;
y0 = ye;
}
@Override
public void closePath() {
- addLine(x0, y0, sx0, sy0);
- x0 = sx0;
- y0 = sy0;
+ if (x0 != sx0 || y0 != sy0) {
+ addLine(x0, y0, sx0, sy0);
+ x0 = sx0;
+ y0 = sy0;
+ }
}
@Override
public void pathDone() {
closePath();
< prev index next >