@MethodHook(value = "<init>", end = true) @Inject public void init(int width, int height, Component canvas) { if (!client.isGpu()) { return; } final int[] pixels = getPixels(); // we need to make our own buffered image for the client with the alpha channel enabled in order to // have alphas for the overlays applied correctly DataBufferInt dataBufferInt = new DataBufferInt(pixels, pixels.length); DirectColorModel directColorModel = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, 0xff0000, 0xff00, 0xff, 0xff000000, true, DataBuffer.TYPE_INT); WritableRaster writableRaster = Raster.createWritableRaster(directColorModel.createCompatibleSampleModel(width, height), dataBufferInt, null); BufferedImage bufferedImage = new BufferedImage(directColorModel, writableRaster, true, new Hashtable()); setImage(bufferedImage); }
@Override public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException { readHeader(); LinkedList<ImageTypeSpecifier> l = new LinkedList<ImageTypeSpecifier>(); l.add(new ImageTypeSpecifier(RGB, RGB.createCompatibleSampleModel(image.getWidth(), image.getHeight()))); return l.iterator(); }
@Override public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException { readHeader(); LinkedList<ImageTypeSpecifier> l = new LinkedList<ImageTypeSpecifier>(); l.add(new ImageTypeSpecifier(RGB, RGB.createCompatibleSampleModel(image.getWidth(), image.getHeight()))); return l.iterator(); }
if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(15, 0x1f << 10, 0x1f << 5, 0x1f << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false, new Hashtable()); } else { MyBufferedImage oldImg = img; img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false, new Hashtable()); } else { MyBufferedImage oldImg = img; if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(24, 0xff << 16, 0xff << 8, 0xff << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false, new Hashtable()); } else { MyBufferedImage oldImg = img;
if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(15, 0x1f << 10, 0x1f << 5, 0x1f << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false); } else { MyBufferedImage oldImg = img; if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(15, 0x1f << 11, 0x3f << 5, 0x1f << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false); } else { MyBufferedImage oldImg = img;
if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(15, 0x1f << 10, 0x1f << 5, 0x1f << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false); } else { MyBufferedImage oldImg = img; img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false); } else { MyBufferedImage oldImg = img; if (img == null || img.getWidth() != width || img.getHeight() != height || img.getType() != imgType) { DirectColorModel cm = new DirectColorModel(24, 0xff << 16, 0xff << 8, 0xff << 0); img = new MyBufferedImage(cm, Raster.createWritableRaster(cm.createCompatibleSampleModel(width, height), new Point(0, 0)), false); } else { MyBufferedImage oldImg = img;