blob: 769d2bcbe049e24bb49dcd8579bd0a5207c932c4 [file] [log] [blame]
/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
/*----------------------------------------------------------------------------*/
#include "ImageBase.h"
#include "nivision.h"
/** Private NI function needed to write to the VxWorks target */
IMAQ_FUNC int Priv_SetWriteFileAllowed(uint32_t enable);
/**
* Create a new instance of an ImageBase.
* Imagebase is the base of all the other image classes. The constructor
* creates any type of image and stores the pointer to it in the class.
* @param type The type of image to create
*/
ImageBase::ImageBase(ImageType type)
{
m_imaqImage = imaqCreateImage(type, DEFAULT_BORDER_SIZE);
}
/**
* Frees memory associated with an ImageBase.
* Destructor frees the imaq image allocated with the class.
*/
ImageBase::~ImageBase()
{
if(m_imaqImage)
imaqDispose(m_imaqImage);
}
/**
* Writes an image to a file with the given filename.
* Write the image to a file in the flash on the cRIO.
* @param fileName The name of the file to write
*/
void ImageBase::Write(const char *fileName)
{
Priv_SetWriteFileAllowed(1);
int success = imaqWriteFile(m_imaqImage, fileName, NULL);
wpi_setImaqErrorWithContext(success, "Imaq Image writeFile error");
}
/**
* Gets the height of an image.
* @return The height of the image in pixels.
*/
int ImageBase::GetHeight()
{
int height;
imaqGetImageSize(m_imaqImage, NULL, &height);
return height;
}
/**
* Gets the width of an image.
* @return The width of the image in pixels.
*/
int ImageBase::GetWidth()
{
int width;
imaqGetImageSize(m_imaqImage, &width, NULL);
return width;
}
/**
* Access the internal IMAQ Image data structure.
*
* @return A pointer to the internal IMAQ Image data structure.
*/
Image *ImageBase::GetImaqImage()
{
return m_imaqImage;
}