< prev index next >

src/java.desktop/share/classes/sun/java2d/marlin/Renderer.java

Print this page

        

*** 45,54 **** --- 45,57 ---- static final float SUBPIXEL_SCALE_X = (float) SUBPIXEL_POSITIONS_X; static final float SUBPIXEL_SCALE_Y = (float) 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 float RDR_OFFSET_X = 0.501f / SUBPIXEL_SCALE_X; + static final float RDR_OFFSET_Y = 0.501f / 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
*** 670,727 **** // shift y by -0.5 for fast ceil(y - 0.5): return SUBPIXEL_SCALE_Y * pix_y - 0.5f; } @Override ! public void moveTo(float pix_x0, float pix_y0) { closePath(); final float sx = tosubpixx(pix_x0); final float sy = tosubpixy(pix_y0); this.sx0 = sx; this.sy0 = sy; this.x0 = sx; this.y0 = sy; } @Override ! public void lineTo(float pix_x1, float pix_y1) { final float x1 = tosubpixx(pix_x1); final float y1 = tosubpixy(pix_y1); addLine(x0, y0, x1, y1); x0 = x1; y0 = y1; } @Override ! public void curveTo(float x1, float y1, ! float x2, float y2, ! float x3, float y3) { ! final float xe = tosubpixx(x3); ! final float ye = tosubpixy(y3); ! curve.set(x0, y0, tosubpixx(x1), tosubpixy(y1), ! tosubpixx(x2), tosubpixy(y2), xe, ye); curveBreakIntoLinesAndAdd(x0, y0, curve, xe, ye); x0 = xe; y0 = ye; } @Override ! public void quadTo(float x1, float y1, float x2, float y2) { ! final float xe = tosubpixx(x2); ! final float ye = tosubpixy(y2); ! curve.set(x0, y0, tosubpixx(x1), tosubpixy(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; } @Override public void pathDone() { closePath(); --- 673,734 ---- // shift y by -0.5 for fast ceil(y - 0.5): return SUBPIXEL_SCALE_Y * pix_y - 0.5f; } @Override ! public void moveTo(final float pix_x0, final float pix_y0) { closePath(); final float sx = tosubpixx(pix_x0); final float sy = tosubpixy(pix_y0); this.sx0 = sx; this.sy0 = sy; this.x0 = sx; this.y0 = sy; } @Override ! public void lineTo(final float pix_x1, final float pix_y1) { final float x1 = tosubpixx(pix_x1); final float y1 = tosubpixy(pix_y1); addLine(x0, y0, x1, y1); x0 = x1; y0 = y1; } @Override ! public void curveTo(final float pix_x1, final float pix_y1, ! final float pix_x2, final float pix_y2, ! final float pix_x3, final float pix_y3) { ! final float xe = tosubpixx(pix_x3); ! final float 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(final float pix_x1, final float pix_y1, ! final float pix_x2, final float pix_y2) ! { ! final float xe = tosubpixx(pix_x2); ! final float 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() { ! if (x0 != sx0 || y0 != sy0) { ! addLine(x0, y0, sx0, sy0); ! x0 = sx0; ! y0 = sy0; ! } } @Override public void pathDone() { closePath();
< prev index next >