116 lines
2.2 KiB
C
116 lines
2.2 KiB
C
|
/*
|
||
|
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 */
|