001    package com.github.sarxos.webcam;
002    
003    import java.awt.image.BufferedImage;
004    import java.util.EventObject;
005    
006    
007    /**
008     * Webcam event.
009     * 
010     * @author Bartosz Firyn (SarXos)
011     */
012    public class WebcamEvent extends EventObject {
013    
014            private static final long serialVersionUID = 1L;
015    
016            /**
017             * Image acquired from webcam
018             */
019            private BufferedImage image = null;
020    
021            /**
022             * Event type.
023             */
024            private WebcamEventType type = null;
025    
026            /**
027             * Webcam event.
028             * 
029             * @param type the event type
030             * @param w the webcam object
031             */
032            public WebcamEvent(WebcamEventType type, Webcam w) {
033                    this(type, w, null);
034            }
035    
036            /**
037             * Webcam event.
038             * 
039             * @param type the event type
040             * @param w the webcam object
041             * @param image the image acquired from webcam
042             */
043            public WebcamEvent(WebcamEventType type, Webcam w, BufferedImage image) {
044                    super(w);
045                    this.type = type;
046                    this.image = image;
047            }
048    
049            @Override
050            public Webcam getSource() {
051                    return (Webcam) super.getSource();
052            }
053    
054            /**
055             * Return image acquired by webcam. This method will return not-null object
056             * <b>only</b> in case new image acquisition event. For all other events, it
057             * will simply return null.
058             * 
059             * @return Acquired image
060             */
061            public BufferedImage getImage() {
062                    return image;
063            }
064    
065            /**
066             * Return event type.
067             * 
068             * @return Event type
069             * @see WebcamEventType
070             */
071            public WebcamEventType getType() {
072                    return type;
073            }
074    }