當前位置: 首頁>>代碼示例>>Java>>正文


Java ImageConsumer.imageComplete方法代碼示例

本文整理匯總了Java中java.awt.image.ImageConsumer.imageComplete方法的典型用法代碼示例。如果您正苦於以下問題:Java ImageConsumer.imageComplete方法的具體用法?Java ImageConsumer.imageComplete怎麽用?Java ImageConsumer.imageComplete使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.awt.image.ImageConsumer的用法示例。


在下文中一共展示了ImageConsumer.imageComplete方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: addConsumer

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Adds an ImageConsumer to the list of consumers interested in
 * data for this image.
 * @param ic the specified <code>ImageConsumer</code>
 * @throws NullPointerException if the specified
 *           <code>ImageConsumer</code> is null
 * @see ImageConsumer
 */
public synchronized void addConsumer(ImageConsumer ic) {
    if (theConsumers.contains(ic)) {
        return;
    }
    theConsumers.addElement(ic);
    try {
        initConsumer(ic);
        sendPixels(ic, 0, 0, width, height);
        if (isConsumer(ic)) {
            ic.imageComplete(animating
                             ? ImageConsumer.SINGLEFRAMEDONE
                             : ImageConsumer.STATICIMAGEDONE);
            if (!animating && isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.IMAGEERROR);
                removeConsumer(ic);
            }
        }
    } catch (Exception e) {
        if (isConsumer(ic)) {
            ic.imageComplete(ImageConsumer.IMAGEERROR);
        }
    }
}
 
開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:32,代碼來源:MemoryImageSource.java

示例2: addConsumer

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Adds an ImageConsumer to the list of consumers interested in
 * data for this image.
 * @param ic the specified {@code ImageConsumer}
 * @throws NullPointerException if the specified
 *           {@code ImageConsumer} is null
 * @see ImageConsumer
 */
public synchronized void addConsumer(ImageConsumer ic) {
    if (theConsumers.contains(ic)) {
        return;
    }
    theConsumers.addElement(ic);
    try {
        initConsumer(ic);
        sendPixels(ic, 0, 0, width, height);
        if (isConsumer(ic)) {
            ic.imageComplete(animating
                             ? ImageConsumer.SINGLEFRAMEDONE
                             : ImageConsumer.STATICIMAGEDONE);
            if (!animating && isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.IMAGEERROR);
                removeConsumer(ic);
            }
        }
    } catch (Exception e) {
        if (isConsumer(ic)) {
            ic.imageComplete(ImageConsumer.IMAGEERROR);
        }
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:32,代碼來源:MemoryImageSource.java

示例3: setAnimated

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Changes this memory image into a multi-frame animation or a
 * single-frame static image depending on the animated parameter.
 * <p>This method should be called immediately after the
 * MemoryImageSource is constructed and before an image is
 * created with it to ensure that all ImageConsumers will
 * receive the correct multi-frame data.  If an ImageConsumer
 * is added to this ImageProducer before this flag is set then
 * that ImageConsumer will see only a snapshot of the pixel
 * data that was available when it connected.
 * @param animated <code>true</code> if the image is a
 *       multi-frame animation
 */
public synchronized void setAnimated(boolean animated) {
    this.animating = animated;
    if (!animating) {
        Enumeration enum_ = theConsumers.elements();
        while (enum_.hasMoreElements()) {
            ImageConsumer ic = (ImageConsumer) enum_.nextElement();
            ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
            if (isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.IMAGEERROR);
            }
        }
        theConsumers.removeAllElements();
    }
}
 
開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:28,代碼來源:MemoryImageSource.java

示例4: newPixels

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Sends a rectangular region of the buffer of pixels to any
 * ImageConsumers that are currently interested in the data for
 * this image.
 * If the framenotify parameter is true then the consumers are
 * also notified that an animation frame is complete.
 * This method only has effect if the animation flag has been
 * turned on through the setAnimated() method.
 * If the full buffer update flag was turned on with the
 * setFullBufferUpdates() method then the rectangle parameters
 * will be ignored and the entire buffer will always be sent.
 * @param x the x coordinate of the upper left corner of the rectangle
 * of pixels to be sent
 * @param y the y coordinate of the upper left corner of the rectangle
 * of pixels to be sent
 * @param w the width of the rectangle of pixels to be sent
 * @param h the height of the rectangle of pixels to be sent
 * @param framenotify <code>true</code> if the consumers should be sent a
 * {@link ImageConsumer#SINGLEFRAMEDONE SINGLEFRAMEDONE} notification
 * @see ImageConsumer
 * @see #setAnimated
 * @see #setFullBufferUpdates
 */
public synchronized void newPixels(int x, int y, int w, int h,
                                   boolean framenotify) {
    if (animating) {
        if (fullbuffers) {
            x = y = 0;
            w = width;
            h = height;
        } else {
            if (x < 0) {
                w += x;
                x = 0;
            }
            if (x + w > width) {
                w = width - x;
            }
            if (y < 0) {
                h += y;
                y = 0;
            }
            if (y + h > height) {
                h = height - y;
            }
        }
        if ((w <= 0 || h <= 0) && !framenotify) {
            return;
        }
        Enumeration enum_ = theConsumers.elements();
        while (enum_.hasMoreElements()) {
            ImageConsumer ic = (ImageConsumer) enum_.nextElement();
            if (w > 0 && h > 0) {
                sendPixels(ic, x, y, w, h);
            }
            if (framenotify && isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
            }
        }
    }
}
 
開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:62,代碼來源:MemoryImageSource.java

示例5: setAnimated

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Changes this memory image into a multi-frame animation or a
 * single-frame static image depending on the animated parameter.
 * <p>This method should be called immediately after the
 * MemoryImageSource is constructed and before an image is
 * created with it to ensure that all ImageConsumers will
 * receive the correct multi-frame data.  If an ImageConsumer
 * is added to this ImageProducer before this flag is set then
 * that ImageConsumer will see only a snapshot of the pixel
 * data that was available when it connected.
 * @param animated {@code true} if the image is a
 *       multi-frame animation
 */
public synchronized void setAnimated(boolean animated) {
    this.animating = animated;
    if (!animating) {
        Enumeration<ImageConsumer> enum_ = theConsumers.elements();
        while (enum_.hasMoreElements()) {
            ImageConsumer ic = enum_.nextElement();
            ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
            if (isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.IMAGEERROR);
            }
        }
        theConsumers.removeAllElements();
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:28,代碼來源:MemoryImageSource.java

示例6: newPixels

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * Sends a rectangular region of the buffer of pixels to any
 * ImageConsumers that are currently interested in the data for
 * this image.
 * If the framenotify parameter is true then the consumers are
 * also notified that an animation frame is complete.
 * This method only has effect if the animation flag has been
 * turned on through the setAnimated() method.
 * If the full buffer update flag was turned on with the
 * setFullBufferUpdates() method then the rectangle parameters
 * will be ignored and the entire buffer will always be sent.
 * @param x the x coordinate of the upper left corner of the rectangle
 * of pixels to be sent
 * @param y the y coordinate of the upper left corner of the rectangle
 * of pixels to be sent
 * @param w the width of the rectangle of pixels to be sent
 * @param h the height of the rectangle of pixels to be sent
 * @param framenotify {@code true} if the consumers should be sent a
 * {@link ImageConsumer#SINGLEFRAMEDONE SINGLEFRAMEDONE} notification
 * @see ImageConsumer
 * @see #setAnimated
 * @see #setFullBufferUpdates
 */
public synchronized void newPixels(int x, int y, int w, int h,
                                   boolean framenotify) {
    if (animating) {
        if (fullbuffers) {
            x = y = 0;
            w = width;
            h = height;
        } else {
            if (x < 0) {
                w += x;
                x = 0;
            }
            if (x + w > width) {
                w = width - x;
            }
            if (y < 0) {
                h += y;
                y = 0;
            }
            if (y + h > height) {
                h = height - y;
            }
        }
        if ((w <= 0 || h <= 0) && !framenotify) {
            return;
        }
        Enumeration<ImageConsumer> enum_ = theConsumers.elements();
        while (enum_.hasMoreElements()) {
            ImageConsumer ic = enum_.nextElement();
            if (w > 0 && h > 0) {
                sendPixels(ic, x, y, w, h);
            }
            if (framenotify && isConsumer(ic)) {
                ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
            }
        }
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:62,代碼來源:MemoryImageSource.java

示例7: run

import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
 * The runnable method for this class. This will produce an image using
 * the current RenderableImage and RenderContext and send it to all the
 * ImageConsumer currently registered with this class.
 */
public void run() {
    // First get the rendered image
    RenderedImage rdrdImage;
    if (rc != null) {
        rdrdImage = rdblImage.createRendering(rc);
    } else {
        rdrdImage = rdblImage.createDefaultRendering();
    }

    // And its ColorModel
    ColorModel colorModel = rdrdImage.getColorModel();
    Raster raster = rdrdImage.getData();
    SampleModel sampleModel = raster.getSampleModel();
    DataBuffer dataBuffer = raster.getDataBuffer();

    if (colorModel == null) {
        colorModel = ColorModel.getRGBdefault();
    }
    int minX = raster.getMinX();
    int minY = raster.getMinY();
    int width = raster.getWidth();
    int height = raster.getHeight();

    Enumeration<ImageConsumer> icList;
    ImageConsumer ic;
    // Set up the ImageConsumers
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = icList.nextElement();
        ic.setDimensions(width,height);
        ic.setHints(ImageConsumer.TOPDOWNLEFTRIGHT |
                    ImageConsumer.COMPLETESCANLINES |
                    ImageConsumer.SINGLEPASS |
                    ImageConsumer.SINGLEFRAME);
    }

    // Get RGB pixels from the raster scanline by scanline and
    // send to consumers.
    int pix[] = new int[width];
    int i,j;
    int numBands = sampleModel.getNumBands();
    int tmpPixel[] = new int[numBands];
    for (j = 0; j < height; j++) {
        for(i = 0; i < width; i++) {
            sampleModel.getPixel(i, j, tmpPixel, dataBuffer);
            pix[i] = colorModel.getDataElement(tmpPixel, 0);
        }
        // Now send the scanline to the Consumers
        icList = ics.elements();
        while (icList.hasMoreElements()) {
            ic = icList.nextElement();
            ic.setPixels(0, j, width, 1, colorModel, pix, 0, width);
        }
    }

    // Now tell the consumers we're done.
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = icList.nextElement();
        ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:68,代碼來源:RenderableImageProducer.java


注:本文中的java.awt.image.ImageConsumer.imageComplete方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。