Advertisement
Chiddix

ProducingGraphicsBuffer

Feb 1st, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.35 KB | None | 0 0
  1. import java.awt.Component;
  2. import java.awt.Graphics;
  3. import java.awt.Image;
  4. import java.awt.image.ColorModel;
  5. import java.awt.image.DirectColorModel;
  6. import java.awt.image.ImageConsumer;
  7. import java.awt.image.ImageObserver;
  8. import java.awt.image.ImageProducer;
  9.  
  10. public class ProducingGraphicsBuffer implements ImageProducer, ImageObserver {
  11.    
  12.     public int[] pixels;
  13.     public int width;
  14.     public int height;
  15.     protected ColorModel colorModel;
  16.     protected ImageConsumer imageConsumer;
  17.     public Image image;
  18.  
  19.     public ProducingGraphicsBuffer(int width, int height, Component component) {
  20.         this.width = width;
  21.         this.height = height;
  22.         pixels = new int[width * height];
  23.         colorModel = new DirectColorModel(32, 16711680, 65280, 255);
  24.         image = component.createImage(this);
  25.         drawPixels();
  26.         component.prepareImage(image, this);
  27.         drawPixels();
  28.         component.prepareImage(image, this);
  29.         drawPixels();
  30.         component.prepareImage(image, this);
  31.         createRasterizer();
  32.     }
  33.  
  34.     public void createRasterizer() {
  35.         Rasterizer.createRasterizer(pixels, width, height);
  36.     }
  37.  
  38.     public void drawGraphics(int x, int y, Graphics graphics) {
  39.         drawPixels();
  40.         graphics.drawImage(image, x, y, this);
  41.     }
  42.  
  43.     @Override
  44.     public synchronized void addConsumer(ImageConsumer imageConsumer) {
  45.         this.imageConsumer = imageConsumer;
  46.         imageConsumer.setDimensions(width, height);
  47.         imageConsumer.setProperties(null);
  48.         imageConsumer.setColorModel(colorModel);
  49.         imageConsumer.setHints(14);
  50.     }
  51.  
  52.     @Override
  53.     public synchronized boolean isConsumer(ImageConsumer imageConsumer) {
  54.         if (this.imageConsumer == imageConsumer) {
  55.             return true;
  56.         }
  57.         return false;
  58.     }
  59.  
  60.     @Override
  61.     public synchronized void removeConsumer(ImageConsumer imageConsumer) {
  62.         if (this.imageConsumer == imageConsumer) {
  63.             imageConsumer = null;
  64.         }
  65.     }
  66.  
  67.     @Override
  68.     public void startProduction(ImageConsumer imageConsumer) {
  69.         addConsumer(imageConsumer);
  70.     }
  71.  
  72.     @Override
  73.     public void requestTopDownLeftRightResend(ImageConsumer imageConsumer) {
  74.         System.out.println("TDLR");
  75.     }
  76.  
  77.     public synchronized void drawPixels() {
  78.         if (imageConsumer != null) {
  79.             imageConsumer.setPixels(0, 0, width, height, colorModel, pixels, 0, width);
  80.             imageConsumer.imageComplete(2);
  81.         }
  82.     }
  83.  
  84.     @Override
  85.     public boolean imageUpdate(Image image, int infoflags, int x, int y, int width, int height) {
  86.         return true;
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement