49#if defined(__linux__) || defined(__APPLE__)
57#define FIBITMAP_ALIGNMENT 16
106i2a(
unsigned i,
char *a,
unsigned r) {
107 if (i/r > 0) a =
i2a(i/r,a,r);
108 *a =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i%r];
122 r = ((r < 2) || (r > 36)) ? 10 : r;
125 *
i2a(-i, a+1, r) = 0;
127 else *
i2a(i, a, r) = 0;
148 for (
unsigned i = 0; i < 32; i++) {
149 if ((bits & bit) == bit) {
161 return ((width * bitdepth) + 7) / 8;
166 return line + 3 & ~3;
171 if ((bit_count >= 1) && (bit_count <= 8))
172 return 1 << bit_count;
177inline unsigned char *
179 return (bits + (pitch * scanline));
184 for (
size_t i = strlen(filename) - 1; i > 0; --i) {
185 if (filename[i] ==
'.') {
186 memcpy(result, filename, i);
188 memcpy(result + i + 1, extension, strlen(extension) + 1);
193 memcpy(result, filename, strlen(filename));
194 result[strlen(filename)] =
'.';
195 memcpy(result + strlen(filename) + 1, extension, strlen(extension) + 1);
204 BYTE *cp = (BYTE *)sp, t = cp[0]; cp[0] = cp[1]; cp[1] = t;
209 BYTE *cp = (BYTE *)lp, t = cp[0]; cp[0] = cp[3]; cp[3] = t;
210 t = cp[1]; cp[1] = cp[2]; cp[2] = t;
217#define GREY(r, g, b) (BYTE)(((WORD)r * 77 + (WORD)g * 150 + (WORD)b * 29) >> 8)
227template <
class T> T
MAX(T a, T b) {
228 return (a > b) ? a: b;
232template <
class T> T
MIN(T a, T b) {
233 return (a < b) ? a: b;
238 a ^= b; b ^= a; a ^= b;
248template <
class T>
void
249MAXMIN(
const T* L,
long n, T& max, T& min) {
254 i1 = 0; i2 = 0; min = L[0]; max = L[0]; j = 0;
255 if((n % 2) != 0) j = 1;
256 for(i = j; i < n; i+= 2) {
258 x1 = L[k1]; x2 = L[k2];
void MAXMIN(const T *L, long n, T &max, T &min)
char * _itoa(int i, char *a, int r)
static const char * FI_MSG_ERROR_MEMORY
int CalculatePitch(int line)
struct tagFILE_BGRA FILE_BGRA
struct tagFILE_BGR FILE_BGR
int CalculateUsedBits(int bits)
unsigned char HINIBBLE(unsigned char byte)
char * i2a(unsigned i, char *a, unsigned r)
void * FreeImage_Aligned_Malloc(size_t amount, size_t alignment)
void FreeImage_Aligned_Free(void *mem)
T MIN(T a, T b)
Min function.
struct tagFILE_RGBA FILE_RGBA
int CalculateLine(int width, int bitdepth)
int CalculateUsedPaletteEntries(int bit_count)
unsigned char * CalculateScanLine(unsigned char *bits, unsigned pitch, int scanline)
struct tagFILE_RGB FILE_RGB
void INPLACESWAP(T &a, T &b)
INPLACESWAP adopted from codeguru.com.
T MAX(T a, T b)
Max function.
unsigned char LOWNIBBLE(unsigned char byte)
void ReplaceExtension(char *result, const char *filename, const char *extension)