001 /*----------------------------------------------------------------------------*/
002 /* Copyright (c) FIRST 2008-2012. All Rights Reserved. */
003 /* Open Source Software - may be modified and shared by FRC teams. The code */
004 /* must be accompanied by the FIRST BSD license file in the root directory of */
005 /* the project. */
006 /*----------------------------------------------------------------------------*/
007 package edu.wpi.first.wpilibj.image;
008
009 import com.sun.cldc.jna.Pointer;
010
011 /**
012 * Class representing a generic image.
013 * @author dtjones
014 */
015 public abstract class Image {
016
017 /**
018 * Pointer to the image memory
019 */
020 public final Pointer image;
021 static final int DEFAULT_BORDER_SIZE = 3;
022
023 Image(NIVision.ImageType type) throws NIVisionException {
024 image = NIVision.imaqCreateImage(type, DEFAULT_BORDER_SIZE);
025 }
026
027 /**
028 * Creates a new image pointing to the same data as the source image. The
029 * imgae data is not copied, it is just referenced by both objects. Freeing
030 * one will free both.
031 * @param sourceImage The image to reference
032 */
033 Image(Image sourceImage) {
034 image = sourceImage.image;
035 }
036
037 /**
038 * Write the image to a file.
039 *
040 * Supported extensions:
041 * .aipd or .apd AIPD
042 * .bmp BMP
043 * .jpg or .jpeg JPEG
044 * .jp2 JPEG2000
045 * .png PNG
046 * .tif or .tiff TIFF
047 *
048 * @param fileName The path to write the image to.
049 */
050 public void write(String fileName) throws NIVisionException {
051 NIVision.writeFile(image, fileName);
052 }
053
054 /**
055 * Release the memory associated with an image.
056 */
057 public void free() throws NIVisionException {
058 NIVision.dispose(image);
059 }
060
061 /**
062 * Get the height of the image in pixels.
063 * @return The height of the image.
064 */
065 public int getHeight() throws NIVisionException {
066 return NIVision.getHeight(image);
067 }
068
069 /**
070 * Get the width of the image in pixels.
071 * @return The width of the image.
072 */
073 public int getWidth() throws NIVisionException {
074 return NIVision.getWidth(image);
075 }
076 }