src/share/classes/sun/java2d/SunGraphics2D.java

Print this page

        

*** 2106,2116 **** } SurfaceData theData = surfaceData; if (theData.copyArea(this, x, y, w, h, dx, dy)) { return; } ! if (transformState >= TRANSFORM_TRANSLATESCALE) { throw new InternalError("transformed copyArea not implemented yet"); } // REMIND: This method does not deal with missing data from the // source object (i.e. it does not send exposure events...) --- 2106,2116 ---- } SurfaceData theData = surfaceData; if (theData.copyArea(this, x, y, w, h, dx, dy)) { return; } ! if (transformState > TRANSFORM_TRANSLATESCALE) { throw new InternalError("transformed copyArea not implemented yet"); } // REMIND: This method does not deal with missing data from the // source object (i.e. it does not send exposure events...)
*** 2127,2138 **** } lastCAblit = Blit.locate(dsttype, comptype, dsttype); lastCAcomp = comp; } ! x += transX; ! y += transY; Blit ob = lastCAblit; if (dy == 0 && dx > 0 && dx < w) { while (w > 0) { int partW = Math.min(w, dx); --- 2127,2155 ---- } lastCAblit = Blit.locate(dsttype, comptype, dsttype); lastCAcomp = comp; } ! double[] coords = {x, y, x + w, y + h, x + dx, y + dy}; ! 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; ! ! // In case of negative scale transform, reflect the rect coords. ! if (w < 0) { ! w *= -1; ! x -= w; ! } ! if (h < 0) { ! h *= -1; ! y -= h; ! } Blit ob = lastCAblit; if (dy == 0 && dx > 0 && dx < w) { while (w > 0) { int partW = Math.min(w, dx);