protected abstract WritableRaster getDestinationRaster();
protected WritableRaster getDestinationRaster() {   Rectangle db = getDeviceBounds(); if (destinationRaster == null) { int[] bandMasks = new int[]{ 0xFF0000, 0xFF00, 0xFF }; destinationRaster = Raster.createPackedRaster(DataBuffer.TYPE_INT, db.width, db.height, bandMasks, null);  int x0 = destinationRaster.getMinX(); int x1 = destinationRaster.getWidth() + x0; int y0 = destinationRaster.getMinY(); int y1 = destinationRaster.getHeight() + y0; int numBands = destinationRaster.getNumBands(); for (int y = y0; y < y1; y++) { for (int x = x0; x < x1; x++) { for (int b = 0; b < numBands; b++) destinationRaster.setSample(x, y, b, 255); } } } return destinationRaster; }
  protected abstract WritableRaster getDestinationRaster();