Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.newbiehacker.nirc.ui;
- import java.awt.image.*;
- import java.awt.*;
- import java.awt.Image;
- /**
- * @author newbiehacker
- */
- public final class DrawingCanvas extends Canvas implements ImageProducer, ImageObserver {
- private ColorModel cmod;
- private Image render;
- private Graphics graphics;
- private ImageConsumer cons;
- public DrawingCanvas(int w, int h) {
- Renderer.init(w, h);
- cmod = new DirectColorModel(32, 0xff0000, 0xff00, 0xff);
- render = createImage(this);
- updateRender();
- prepareImage(render, this);
- updateRender();
- prepareImage(render, this);
- updateRender();
- prepareImage(render, this);
- }
- public void initGraphics() {
- graphics = getGraphics();
- }
- public void draw() {
- updateRender();
- graphics.drawImage(render, 0, 0, this);
- }
- public synchronized void addConsumer(ImageConsumer consumer) {
- cons = consumer;
- consumer.setDimensions(Renderer.width, Renderer.height);
- consumer.setProperties(null);
- consumer.setColorModel(cmod);
- consumer.setHints(ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES | ImageConsumer.SINGLEPASS);
- }
- public synchronized boolean isConsumer(ImageConsumer consumer) {
- return cons == consumer;
- }
- public synchronized void removeConsumer(ImageConsumer consumer) {
- if (cons == consumer)
- cons = null;
- }
- public void startProduction(ImageConsumer consumer) {
- addConsumer(consumer);
- }
- public void requestTopDownLeftRightResend(ImageConsumer consumer) {
- System.out.println("TDLR");
- }
- private synchronized void updateRender() {
- if (cons != null) {
- cons.setPixels(0, 0, Renderer.width, Renderer.height, cmod, Renderer.pix, 0, Renderer.width);
- cons.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
- }
- }
- public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) {
- return true;
- }
- protected void finalize() throws Throwable {
- super.finalize();
- cmod = null;
- render = null;
- graphics = null;
- cons = null;
- }
- }
Add Comment
Please, Sign In to add comment