< 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.5f / SUBPIXEL_SCALE_X;
+ static final float RDR_OFFSET_Y = 0.5f / 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
*** 56,68 ****
= INITIAL_PIXEL_DIM * SUBPIXEL_POSITIONS_Y;
// crossing capacity = edges count / 4 ~ 1024
static final int INITIAL_CROSSING_COUNT = INITIAL_EDGES_COUNT >> 2;
- public static final int WIND_EVEN_ODD = 0;
- public static final int WIND_NON_ZERO = 1;
-
// common to all types of input path segments.
// OFFSET as bytes
// only integer values:
public static final long OFF_CURX_OR = 0;
public static final long OFF_ERROR = OFF_CURX_OR + SIZE_INT;
--- 59,68 ----
*** 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();
--- 670,731 ----
// 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 >