< 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 >