Visualization LibraryA lightweight C++ OpenGL middleware for 2D/3D graphics |
[Home] [Tutorials] [All Classes] [Grouped Classes] |
#include <Image.hpp>

Public Member Functions | |
| Image () | |
| Image (const String &path) | |
| Image (int x, int y, int z, int bytealign, EImageFormat format, EImageType type) | |
| Note that the image is not allocated. | |
| virtual const char * | className () |
| Returns the name of the class. | |
| virtual | ~Image () |
| Image & | operator= (const Image &other) |
| bool | isCubemap () const |
| bool | isValid () const |
| Returns true if the image has valid width/height/depth, pitch and byte alignment, type/format combination. | |
| EImageDimension | dimension () const |
| void | allocate () |
| void | allocate1D (int x, EImageFormat format, EImageType type) |
| void | allocate2D (int x, int y, int bytealign, EImageFormat format, EImageType type) |
| void | allocate3D (int x, int y, int z, int bytealign, EImageFormat format, EImageType type) |
| void | allocateCubemap (int x, int y, int bytealign, EImageFormat format, EImageType type) |
| void | reset (int x, int y, int z, int bytealign, EImageFormat format, EImageType type, bool is_cubemap) |
| void | clear () |
| int | byteAlignment () const |
| Returns the byte-alignment of the row of the image. | |
| void | setByteAlignment (int bytealign) |
| Modifies the byte-alignment of the rows of the image, thus changing its pitch. | |
| int | bitsPerPixel () const |
| int | requiredMemory () const |
| Returns the number of bytes requested to store the image. | |
| String | print () const |
| String | printType () const |
| String | printFormat () const |
| void | setWidth (int x) |
| void | setHeight (int y) |
| void | setDepth (int z) |
| void | setFormat (EImageFormat format) |
| void | setType (EImageType type) |
| KeyValues * | tags () const |
| void | setTags (KeyValues *tags) |
| void | setImageBuffer (GLBufferObject *gpu_buffer) |
| Sets a GLBufferObject to be used as the Image's pixels storage in local and GPU memory. | |
| GLBufferObject * | imageBuffer () |
| The GLBufferObject used as the Image's pixels storage in local and GPU memory. | |
| const GLBufferObject * | imageBuffer () const |
| The GLBufferObject used as the Image's pixels storage in local and GPU memory. | |
| const unsigned char * | pixels () const |
| unsigned char * | pixels () |
| bool | empty () |
| unsigned char * | pixelsZSlice (int slice) |
| Returns the pixels of the specified Z slice of a 3D image. | |
| unsigned char * | pixelsXP () |
| unsigned char * | pixelsXN () |
| unsigned char * | pixelsYP () |
| unsigned char * | pixelsYN () |
| unsigned char * | pixelsZP () |
| unsigned char * | pixelsZN () |
| void | setMipmaps (const std::vector< ref< Image > > &mipmaps) |
| const std::vector< ref< Image > > & | mipmaps () const |
| void | clearMipmaps () |
| int | width () const |
| int | height () const |
| int | depth () const |
| int | pitch () const |
| EImageFormat | format () const |
| EImageType | type () const |
| int | alphaBits () const |
| Useful to know if the image format supports alpha or not. | |
| void | readPixels (int x, int y, int width, int height, EReadDrawBuffer read_buffer, bool store_in_pixel_buffer_object) |
| Reads a rectangular pixel area from the specified read buffer and stores it in an Image. | |
| void | flipVertically () |
| ref< Image > | convertType (EImageType new_type) const |
Converts the type() of an image. | |
| ref< Image > | convertFormat (EImageFormat new_format) const |
Converts the format() of an image. | |
| bool | equalize () |
| Equalizes the image. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps. | |
| bool | contrast (float black, float white) |
| Adjusts the contrast of an image. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps. | |
| bool | contrastHounsfieldAuto () |
| Adjusts the contrast of an image using the window-center/window-with method used for CT images. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps. | |
| bool | contrastHounsfield (float center, float width, float intercept, float range) |
| Adjusts the contrast of an image using the window-center/window-with method used for CT images. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps. | |
| fvec4 | sampleLinear (double x) |
| Performs a sampling on a 1d image using linear filtering. | |
| fvec4 | sampleLinear (double x, double y) |
| Performs a sampling on a 2d image using bilinear filtering. | |
| fvec4 | sampleLinear (double x, double y, double z) |
| Performs a sampling on a 3d image using trilinear filtering. | |
| fvec4 | sample (int x, int y=0, int z=0) |
| Returns the color associated to the specified pixel. | |
| ref< Image > | subImage (int xstart, int ystart, int width, int height) |
| Creates a new image containing the specified rectangular pixel area taken from the source image. | |
| void | copySubImage (Image *img_src, RectI src, ivec2 dst) |
Copies the rectangular area specified by src of img_src into an Image at position dst. | |
| void | substituteColorRGB_RGBA (unsigned int before, unsigned int after) |
| Substitutes the color 'before' with the new color 'after'. | |
| void | substituteColorRGB_RGB (unsigned int before, unsigned int after) |
| Substitutes the color 'before' with the new color 'after'. | |
| void | substituteColorGreenKey (unsigned int col0, unsigned int col1) |
Static Public Member Functions | |
| static int | bitsPerPixel (EImageType type, EImageFormat format) |
| Returns the number of bits used to represents one pixel. | |
| static int | requiredMemory (int x, int y, int z, int bytealign, EImageFormat format, EImageType type, bool is_cubemap) |
| static int | requiredMemory1D (int x, EImageFormat format, EImageType type) |
| static int | requiredMemory2D (int x, int y, int bytealign, EImageFormat format, EImageType type) |
| static int | requiredMemory3D (int x, int y, int z, int bytealign, EImageFormat format, EImageType type) |
| static int | requiredMemoryCubemap (int x, int y, int bytealign, EImageFormat format, EImageType type) |
| static int | isCompressedFormat (EImageFormat fmt) |
| static ref< Image > | createCubemap (const Image *xp, const Image *xn, const Image *yp, const Image *yn, const Image *zp, const Image *zn) |
| static ref< Image > | makeNonUniformColorSpectrum (int width, const std::vector< fvec4 > &colors, const std::vector< float > &col_pos) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeNonUniformColorSpectrum (size_t width, size_t col_count, const fvec4 *colors, const float *col_pos) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeColorSpectrum (size_t width, const std::vector< fvec4 > &colors) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeColorSpectrum (size_t width, const fvec4 &c0, const fvec4 &c1) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeColorSpectrum (size_t width, const fvec4 &c0, const fvec4 &c1, const fvec4 &c2) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeColorSpectrum (size_t width, const fvec4 &c0, const fvec4 &c1, const fvec4 &c2, const fvec4 &c3) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
| static ref< Image > | makeColorSpectrum (size_t width, const fvec4 &c0, const fvec4 &c1, const fvec4 &c2, const fvec4 &c3, const fvec4 &c4) |
| Creates a 1D Image whose color is interpolated from left to right from the specified spectrum. | |
Protected Member Functions | |
| void | updatePitch () |
Protected Attributes | |
| ref< GLBufferObject > | mPixels |
| ref< KeyValues > | mTags |
| std::vector< ref< Image > > | mMipmaps |
| int | mWidth |
| int | mHeight |
| int | mDepth |
| int | mPitch |
| int | mByteAlign |
| EImageFormat | mFormat |
| EImageType | mType |
| bool | mIsCubemap |
Image also supports the GL_EXT_pixel_buffer_object extension, see readPixels() and gpuBuffer().
| Image::Image | ( | ) |
| Image::Image | ( | const String & | path | ) |
| Image::Image | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) |
Note that the image is not allocated.
| Image::~Image | ( | ) | [virtual] |
| virtual const char* vl::Image::className | ( | ) | [inline, virtual] |
| bool vl::Image::isCubemap | ( | ) | const [inline] |
| bool Image::isValid | ( | ) | const |
Returns true if the image has valid width/height/depth, pitch and byte alignment, type/format combination.
| EImageDimension Image::dimension | ( | ) | const |
| void Image::allocate | ( | ) |
| void Image::allocate1D | ( | int | x, | |
| EImageFormat | format, | |||
| EImageType | type | |||
| ) |
| void Image::allocate2D | ( | int | x, | |
| int | y, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) |
| void Image::allocate3D | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) |
| void Image::allocateCubemap | ( | int | x, | |
| int | y, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) |
| void Image::reset | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type, | |||
| bool | is_cubemap | |||
| ) |
| void Image::clear | ( | ) |
| int Image::byteAlignment | ( | ) | const |
Returns the byte-alignment of the row of the image.
Possible return values are 1, 2, 4 and 8.
| void Image::setByteAlignment | ( | int | bytealign | ) |
Modifies the byte-alignment of the rows of the image, thus changing its pitch.
Only values like 0, 1, 2, 4 and 8 are allowed. If 0 is passed the byte-alignment takes the value returned by "sizeof(unsigned char*)".
| int Image::bitsPerPixel | ( | EImageType | type, | |
| EImageFormat | format | |||
| ) | [static] |
Returns the number of bits used to represents one pixel.
| int vl::Image::bitsPerPixel | ( | ) | const [inline] |
| int Image::requiredMemory | ( | ) | const |
Returns the number of bytes requested to store the image.
Doesn't take into consideration mipmaps.
| int Image::requiredMemory | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type, | |||
| bool | is_cubemap | |||
| ) | [static] |
| static int vl::Image::requiredMemory1D | ( | int | x, | |
| EImageFormat | format, | |||
| EImageType | type | |||
| ) | [inline, static] |
| static int vl::Image::requiredMemory2D | ( | int | x, | |
| int | y, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) | [inline, static] |
| static int vl::Image::requiredMemory3D | ( | int | x, | |
| int | y, | |||
| int | z, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) | [inline, static] |
| static int vl::Image::requiredMemoryCubemap | ( | int | x, | |
| int | y, | |||
| int | bytealign, | |||
| EImageFormat | format, | |||
| EImageType | type | |||
| ) | [inline, static] |
| String Image::print | ( | ) | const |
| String Image::printType | ( | ) | const |
| String Image::printFormat | ( | ) | const |
| void vl::Image::setWidth | ( | int | x | ) | [inline] |
| void vl::Image::setHeight | ( | int | y | ) | [inline] |
| void vl::Image::setDepth | ( | int | z | ) | [inline] |
| void vl::Image::setFormat | ( | EImageFormat | format | ) | [inline] |
| void vl::Image::setType | ( | EImageType | type | ) | [inline] |
| KeyValues* vl::Image::tags | ( | ) | const [inline] |
| void vl::Image::setTags | ( | KeyValues * | tags | ) | [inline] |
| void vl::Image::setImageBuffer | ( | GLBufferObject * | gpu_buffer | ) | [inline] |
Sets a GLBufferObject to be used as the Image's pixels storage in local and GPU memory.
You can bind it to a GL_PIXEL_PACK_BUFFER and GL_PIXEL_UNPACK_BUFFER using glBindBuffer() to take advantage of the GL_EXT_pixel_buffer_object extension.
| GLBufferObject* vl::Image::imageBuffer | ( | ) | [inline] |
The GLBufferObject used as the Image's pixels storage in local and GPU memory.
You can bind it to a GL_PIXEL_PACK_BUFFER and GL_PIXEL_UNPACK_BUFFER using glBindBuffer() to take advantage of the GL_EXT_pixel_buffer_object extension.
| const GLBufferObject* vl::Image::imageBuffer | ( | ) | const [inline] |
The GLBufferObject used as the Image's pixels storage in local and GPU memory.
You can bind it to a GL_PIXEL_PACK_BUFFER and GL_PIXEL_UNPACK_BUFFER using glBindBuffer() to take advantage of the GL_EXT_pixel_buffer_object extension.
| const unsigned char* vl::Image::pixels | ( | ) | const [inline] |
| unsigned char* vl::Image::pixels | ( | ) | [inline] |
| bool vl::Image::empty | ( | ) | [inline] |
| unsigned char * Image::pixelsZSlice | ( | int | slice | ) |
Returns the pixels of the specified Z slice of a 3D image.
| unsigned char * Image::pixelsXP | ( | ) |
| unsigned char * Image::pixelsXN | ( | ) |
| unsigned char * Image::pixelsYP | ( | ) |
| unsigned char * Image::pixelsYN | ( | ) |
| unsigned char * Image::pixelsZP | ( | ) |
| unsigned char * Image::pixelsZN | ( | ) |
| void vl::Image::clearMipmaps | ( | ) | [inline] |
| int vl::Image::width | ( | ) | const [inline] |
| int vl::Image::height | ( | ) | const [inline] |
| int vl::Image::depth | ( | ) | const [inline] |
| int vl::Image::pitch | ( | ) | const [inline] |
| EImageFormat vl::Image::format | ( | ) | const [inline] |
| EImageType vl::Image::type | ( | ) | const [inline] |
| int Image::alphaBits | ( | ) | const |
Useful to know if the image format supports alpha or not.
| int Image::isCompressedFormat | ( | EImageFormat | fmt | ) | [static] |
| void Image::readPixels | ( | int | x, | |
| int | y, | |||
| int | width, | |||
| int | height, | |||
| EReadDrawBuffer | read_buffer, | |||
| bool | store_in_pixel_buffer_object | |||
| ) |
Reads a rectangular pixel area from the specified read buffer and stores it in an Image.
If 'store_in_pixel_buffer_object' is true the data will be copied in the GPU memory using the GL_EXT_pixel_buffer_object extension, while the local buffer will be deallocated.
| void Image::flipVertically | ( | ) |
| ref< Image > Image::createCubemap | ( | const Image * | xp, | |
| const Image * | xn, | |||
| const Image * | yp, | |||
| const Image * | yn, | |||
| const Image * | zp, | |||
| const Image * | zn | |||
| ) | [static] |
| static ref<Image> vl::Image::makeNonUniformColorSpectrum | ( | int | width, | |
| const std::vector< fvec4 > & | colors, | |||
| const std::vector< float > & | col_pos | |||
| ) | [inline, static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > Image::makeNonUniformColorSpectrum | ( | size_t | width, | |
| size_t | col_count, | |||
| const fvec4 * | colors, | |||
| const float * | col_pos | |||
| ) | [static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > Image::makeColorSpectrum | ( | size_t | width, | |
| const std::vector< fvec4 > & | colors | |||
| ) | [static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > Image::makeColorSpectrum | ( | size_t | width, | |
| const fvec4 & | c0, | |||
| const fvec4 & | c1, | |||
| const fvec4 & | c2 | |||
| ) | [static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > Image::makeColorSpectrum | ( | size_t | width, | |
| const fvec4 & | c0, | |||
| const fvec4 & | c1, | |||
| const fvec4 & | c2, | |||
| const fvec4 & | c3 | |||
| ) | [static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > Image::makeColorSpectrum | ( | size_t | width, | |
| const fvec4 & | c0, | |||
| const fvec4 & | c1, | |||
| const fvec4 & | c2, | |||
| const fvec4 & | c3, | |||
| const fvec4 & | c4 | |||
| ) | [static] |
Creates a 1D Image whose color is interpolated from left to right from the specified spectrum.
| ref< Image > vl::Image::convertType | ( | EImageType | new_type | ) | const |
Converts the type() of an image.
The source image type and the new type must be one of the following:
The source image format must be one of the following:
| ref< Image > vl::Image::convertFormat | ( | EImageFormat | new_format | ) | const |
Converts the format() of an image.
The source image type must be one of the following:
The source image format and the new format must be one of the following:
| bool Image::equalize | ( | ) |
Equalizes the image. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps.
This function is mainly useful for images whose type() is IF_LUMINANCE, IF_RED, IF_GREEN, IF_BLUE, IF_ALPHA or IF_DEPTH_COMPONENT.
IF_RGB, IF_RGBA, IF_BGR, IF_BGRA and IF_LUMINANCE_ALPHA types are not optimally handled yet.
| bool Image::contrast | ( | float | black, | |
| float | white | |||
| ) |
Adjusts the contrast of an image. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps.
This function supports only images whose type() is IF_LUMINANCE, IF_RED, IF_GREEN, IF_BLUE, IF_ALPHA or IF_DEPTH_COMPONENT.
The parameters black and white are in normalized units (0=black, 1=white) but are not required to be in the range between 0 and 1.
| bool Image::contrastHounsfieldAuto | ( | ) |
Adjusts the contrast of an image using the window-center/window-with method used for CT images. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps.
The center and width parameters are in Hounsfield units.
Calls contrastHounsfield(float center, float width, float intercept, float range) with center, with, range and intercept parameters extracted from the image tags() "WindowCenter", "WindowWidth", "BitsStored" and "RescaleIntercept". This function is equivalent to the code below.
if ( !tags()->has("WindowCenter") || !tags()->has("WindowWidth") || !tags()->has("BitsStored") || !tags()->has("RescaleIntercept")) return false; float center = tags()->value("WindowCenter").toFloat(); float width = tags()->value("WindowWidth").toFloat(); float range = (1<<tags()->value("BitsStored").toInt()) - 1.0f; float intercept = tags()->value("RescaleIntercept").toFloat(); // Hounsfield units: -1000 = air, +1000 = solid bone // Transform from Hounsfield units to normalized 0..1 units center = (center-intercept) / range; width = width / range; return contrast( center-width/2.0f, center+width/2.0f );
| bool Image::contrastHounsfield | ( | float | center, | |
| float | width, | |||
| float | intercept, | |||
| float | range | |||
| ) |
Adjusts the contrast of an image using the window-center/window-with method used for CT images. Returns false if the image format() or type() is not supported. This function supports both 3D images and cubemaps.
The center and width parameters are in Hounsfield units.
This function is equivalent to the code below:
// Hounsfield units: -1000 = air, +1000 = solid bone // Transform from Hounsfield units to normalized 0..1 units center = (center-intercept) / range; width = width / range; return contrast( center-width/2.0f, center+width/2.0f );
| fvec4 Image::sampleLinear | ( | double | x | ) |
Performs a sampling on a 1d image using linear filtering.
| fvec4 Image::sampleLinear | ( | double | x, | |
| double | y | |||
| ) |
Performs a sampling on a 2d image using bilinear filtering.
| fvec4 Image::sampleLinear | ( | double | x, | |
| double | y, | |||
| double | z | |||
| ) |
Performs a sampling on a 3d image using trilinear filtering.
| fvec4 Image::sample | ( | int | x, | |
| int | y = 0, |
|||
| int | z = 0 | |||
| ) |
Returns the color associated to the specified pixel.
The rgb values are mapped to 0..1 for all image types but IT_FLOAT. The value returned for images of type IT_FLOAT is returned exactly as is stored in the image.
The image type() must be one of the following:
The image format() must be one of the following:
| void Image::substituteColorRGB_RGBA | ( | unsigned int | before, | |
| unsigned int | after | |||
| ) |
Substitutes the color 'before' with the new color 'after'.
| before | is an hexadecimal representation of an RGB triplet given in the form 0xRRGGBB. | |
| after | is an hexadecimal representation of an RGBA quadruplet given in the form 0xRRGGBBAA. For example 0xFF0000FF is opaque red, 0x00FF0088 is half transparent green. This function can be very useful when you want to modify a specified color of an image or when you want to perform color-key transparency, i.e. when you want to set the transparency of the pixels that have a particular color. |
| void Image::substituteColorRGB_RGB | ( | unsigned int | before, | |
| unsigned int | after | |||
| ) |
Substitutes the color 'before' with the new color 'after'.
| before | is an hexadecimal representation of an RGB triplet given in the form 0xRRGGBB. | |
| after | is an hexadecimal representation of an RGB tripet given in the form 0xRRGGBB. For example 0xFF0000 is opaque red, 0x00FF00 is green. This function can be very useful when you want to modify a specified color of an image but you want to keep the alpha channel intact. |
| void Image::substituteColorGreenKey | ( | unsigned int | col0, | |
| unsigned int | col1 | |||
| ) |
| void Image::updatePitch | ( | ) | [protected] |
ref<GLBufferObject> vl::Image::mPixels [protected] |
ref<KeyValues> vl::Image::mTags [protected] |
std::vector< ref<Image> > vl::Image::mMipmaps [protected] |
int vl::Image::mWidth [protected] |
int vl::Image::mHeight [protected] |
int vl::Image::mDepth [protected] |
int vl::Image::mPitch [protected] |
int vl::Image::mByteAlign [protected] |
EImageFormat vl::Image::mFormat [protected] |
EImageType vl::Image::mType [protected] |
bool vl::Image::mIsCubemap [protected] |