< prev index next >
src/java.desktop/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
Print this page
*** 701,725 ****
}
return super.getMaskFill(sg2d);
}
@Override
! public boolean copyArea(SunGraphics2D sg2d,
! int x, int y, int w, int h, int dx, int dy)
! {
! if (sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE &&
! sg2d.compositeState < SunGraphics2D.COMP_XOR)
! {
x += sg2d.transX;
y += sg2d.transY;
!
d3dRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
-
return true;
}
- return false;
- }
@Override
public void flush() {
D3DRenderQueue rq = D3DRenderQueue.getInstance();
rq.lock();
--- 701,733 ----
}
return super.getMaskFill(sg2d);
}
@Override
! public boolean copyArea(SunGraphics2D sg2d, int x, int y, int w, int h,
! int dx, int dy) {
! final int state = sg2d.transformState;
! if (state > SunGraphics2D.TRANSFORM_TRANSLATESCALE
! || sg2d.compositeState >= SunGraphics2D.COMP_XOR) {
! return false;
! }
! if (state <= SunGraphics2D.TRANSFORM_ANY_TRANSLATE) {
x += sg2d.transX;
y += sg2d.transY;
! } else if (state == SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
! final double[] coords = {x, y, x + w, y + h, x + dx, y + dy};
! sg2d.transform.transform(coords, 0, coords, 0, 3);
! x = (int) Math.ceil(coords[0] - 0.5);
! y = (int) Math.ceil(coords[1] - 0.5);
! w = ((int) Math.ceil(coords[2] - 0.5)) - x;
! h = ((int) Math.ceil(coords[3] - 0.5)) - y;
! dx = ((int) Math.ceil(coords[4] - 0.5)) - x;
! dy = ((int) Math.ceil(coords[5] - 0.5)) - y;
! }
d3dRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
return true;
}
@Override
public void flush() {
D3DRenderQueue rq = D3DRenderQueue.getInstance();
rq.lock();
< prev index next >