/* Jonathan Dummer Image helper functions MIT license */ #ifndef HEADER_IMAGE_HELPER #define HEADER_IMAGE_HELPER #ifdef __cplusplus extern "C" { #endif /** This function upscales an image. Not to be used to create MIPmaps, but to make it square, or to make it a power-of-two sized. **/ int up_scale_image ( const unsigned char* const orig, int width, int height, int channels, unsigned char* resampled, int resampled_width, int resampled_height ); /** This function downscales an image. Used for creating MIPmaps, the incoming image should be a power-of-two sized. **/ int mipmap_image ( const unsigned char* const orig, int width, int height, int channels, unsigned char* resampled, int block_size_x, int block_size_y ); /** This function takes the RGB components of the image and scales each channel from [0,255] to [16,235]. This makes the colors "Safe" for display on NTSC displays. Note that this is _NOT_ a good idea for loading images like normal- or height-maps! **/ int scale_image_RGB_to_NTSC_safe ( unsigned char* orig, int width, int height, int channels ); /** This function takes the RGB components of the image and converts them into YCoCg. 3 components will be re-ordered to CoYCg (for optimum DXT1 compression), while 4 components will be ordered CoCgAY (for DXT5 compression). **/ int convert_RGB_to_YCoCg ( unsigned char* orig, int width, int height, int channels ); /** This function takes the YCoCg components of the image and converts them into RGB. See above. **/ int convert_YCoCg_to_RGB ( unsigned char* orig, int width, int height, int channels ); /** Converts an HDR image from an array of unsigned chars (RGBE) to RGBdivA \return 0 if failed, otherwise returns 1 **/ int RGBE_to_RGBdivA ( unsigned char *image, int width, int height, int rescale_to_max ); /** Converts an HDR image from an array of unsigned chars (RGBE) to RGBdivA2 \return 0 if failed, otherwise returns 1 **/ int RGBE_to_RGBdivA2 ( unsigned char *image, int width, int height, int rescale_to_max ); #ifdef __cplusplus } #endif #endif /* HEADER_IMAGE_HELPER */