/** * Return a Raster containing the colors generated for the graphics * operation. * @param x,y,w,h The area in device space for which colors are * generated. */ public Raster getRaster(int x, int y, int w, int h) { if (outRas == null || outRas.getWidth() < w || outRas.getHeight() < h) { // If h==1, we will probably get lots of "scanline" rects outRas = makeRaster((h == 1 ? Math.max(w, maxWidth) : w), h); } double X = mod(xOrg + x * incXAcross + y * incXDown, bWidth); double Y = mod(yOrg + x * incYAcross + y * incYDown, bHeight); setRaster((int) X, (int) Y, fractAsInt(X), fractAsInt(Y), w, h, bWidth, bHeight, colincx, colincxerr, colincy, colincyerr, rowincx, rowincxerr, rowincy, rowincyerr); SunWritableRaster.markDirty(outRas); return outRas; }
/** * Called to indicate that painting is finished. We create a new * BufferedImage from the offscreen buffer, (optionally) cache it, * and paint it. */ public void finishPainting(boolean useCache) { DataBufferInt dataBuffer = new DataBufferInt(w0 * h0); // Note that stealData() requires a markDirty() afterwards // since we modify the data in it. int transparency = nativeFinishPainting(SunWritableRaster.stealData(dataBuffer, 0), w0, h0); SunWritableRaster.markDirty(dataBuffer); int[] bands = BAND_OFFSETS[transparency - 1]; WritableRaster raster = Raster.createPackedRaster( dataBuffer, w0, h0, w0, bands, null); ColorModel cm = COLOR_MODELS[transparency - 1]; Image img = new BufferedImage(cm, raster, false, null); if (useCache) { cache.setImage(getClass(), null, w0, h0, cacheArgs, img); } graphics.drawImage(img, x0, y0, null); }
protected void paintToImage(Component c, Image image, Graphics g, int w, int h, Object[] args) { boolean accEnabled = false; Skin skin = (Skin)args[0]; Part part = skin.part; State state = (State)args[1]; if (state == null) { state = skin.state; } if (c == null) { c = skin.component; } BufferedImage bi = (BufferedImage)image; WritableRaster raster = bi.getRaster(); DataBufferInt dbi = (DataBufferInt)raster.getDataBuffer(); // Note that stealData() requires a markDirty() afterwards // since we modify the data in it. ThemeReader.paintBackground(SunWritableRaster.stealData(dbi, 0), part.getControlName(c), part.getValue(), State.getValue(part, state), 0, 0, w, h, w); SunWritableRaster.markDirty(dbi); }
/** * Called to indicate that painting is finished. We create a new * BufferedImage from the offscreen buffer, (optionally) cache it, * and paint it. */ public BufferedImage finishPainting(boolean useCache) { DataBufferInt dataBuffer = new DataBufferInt(w0 * h0); // Note that stealData() requires a markDirty() afterwards // since we modify the data in it. int transparency = nativeFinishPainting(SunWritableRaster.stealData(dataBuffer, 0), w0, h0); SunWritableRaster.markDirty(dataBuffer); int[] bands = BAND_OFFSETS[transparency - 1]; WritableRaster raster = Raster.createPackedRaster( dataBuffer, w0, h0, w0, bands, null); ColorModel cm = COLOR_MODELS[transparency - 1]; BufferedImage img = new BufferedImage(cm, raster, false, null); if (useCache) { cache.setImage(getClass(), null, w0, h0, cacheArgs, img); } graphics.drawImage(img, x0, y0, null); return img; }
protected void paintToImage(Component c, Image image, Graphics g, int w, int h, Object[] args) { Skin skin = (Skin)args[0]; Part part = skin.part; State state = (State)args[1]; if (state == null) { state = skin.state; } if (c == null) { c = skin.component; } BufferedImage bi = (BufferedImage)image; w = bi.getWidth(); h = bi.getHeight(); WritableRaster raster = bi.getRaster(); DataBufferInt dbi = (DataBufferInt)raster.getDataBuffer(); // Note that stealData() requires a markDirty() afterwards // since we modify the data in it. ThemeReader.paintBackground(SunWritableRaster.stealData(dbi, 0), part.getControlName(c), part.getValue(), State.getValue(part, state), 0, 0, w, h, w); SunWritableRaster.markDirty(dbi); }