* pipi.h: rename RGBA32 and BGR24 into RGBA_C and BGR_C. git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2772 92316355-f0b4-4df1-b90c-862c8a59935fremotes/tiles
@@ -39,16 +39,16 @@ pipi_image_t *pipi_load_imlib2(const char *name) | |||
imlib_context_set_image(priv); | |||
img = pipi_new(imlib_image_get_width(), imlib_image_get_height()); | |||
img->p[PIPI_PIXELS_RGBA32].pixels = imlib_image_get_data(); | |||
img->p[PIPI_PIXELS_RGBA32].w = img->w; | |||
img->p[PIPI_PIXELS_RGBA32].h = img->h; | |||
img->p[PIPI_PIXELS_RGBA32].pitch = 4 * img->w; | |||
img->p[PIPI_PIXELS_RGBA32].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA32].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA32; | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = imlib_image_get_data(); | |||
img->p[PIPI_PIXELS_RGBA_C].w = img->w; | |||
img->p[PIPI_PIXELS_RGBA_C].h = img->h; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = 4 * img->w; | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_C; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA32; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -73,22 +73,22 @@ void pipi_save_imlib2(pipi_image_t *img, const char *name) | |||
data = imlib_image_get_data(); | |||
/* FIXME: check pitch differences here */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA32) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C) | |||
{ | |||
memcpy(data, img->p[PIPI_PIXELS_RGBA32].pixels, | |||
memcpy(data, img->p[PIPI_PIXELS_RGBA_C].pixels, | |||
4 * img->w * img->h); | |||
free(img->p[PIPI_PIXELS_RGBA32].pixels); | |||
free(img->p[PIPI_PIXELS_RGBA_C].pixels); | |||
} | |||
img->p[PIPI_PIXELS_RGBA32].pixels = data; | |||
img->p[PIPI_PIXELS_RGBA32].w = imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA32].h = imlib_image_get_height(); | |||
img->p[PIPI_PIXELS_RGBA32].pitch = 4 * imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA32].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA32].bytes = 4 * img->w * img->h; | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = data; | |||
img->p[PIPI_PIXELS_RGBA_C].w = imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA_C].h = imlib_image_get_height(); | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = 4 * imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = 4 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA32; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -41,16 +41,16 @@ pipi_image_t *pipi_load_opencv(const char *name) | |||
img = pipi_new(priv->width, priv->height); | |||
img->p[PIPI_PIXELS_BGR24].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR24].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR24].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR24].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR24].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR24].bytes = 3 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_BGR24; | |||
img->p[PIPI_PIXELS_BGR_C].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR_C].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR_C].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR_C].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR_C].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR_C].bytes = 3 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_BGR_C; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_BGR24; | |||
img->codec_format = PIPI_PIXELS_BGR_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -73,22 +73,22 @@ void pipi_save_opencv(pipi_image_t *img, const char *name) | |||
IPL_DEPTH_8U, 3); | |||
/* FIXME: check pitch differences here */ | |||
if(img->last_modified == PIPI_PIXELS_BGR24) | |||
if(img->last_modified == PIPI_PIXELS_BGR_C) | |||
{ | |||
memcpy(priv->imageData, img->p[PIPI_PIXELS_BGR24].pixels, | |||
memcpy(priv->imageData, img->p[PIPI_PIXELS_BGR_C].pixels, | |||
3 * img->w * img->h); | |||
free(img->p[PIPI_PIXELS_BGR24].pixels); | |||
free(img->p[PIPI_PIXELS_BGR_C].pixels); | |||
} | |||
img->p[PIPI_PIXELS_BGR24].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR24].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR24].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR24].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR24].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR24].bytes = 3 * img->w * img->h; | |||
img->p[PIPI_PIXELS_BGR_C].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR_C].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR_C].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR_C].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR_C].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR_C].bytes = 3 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_BGR24; | |||
img->codec_format = PIPI_PIXELS_BGR_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -48,16 +48,16 @@ pipi_image_t *pipi_load_sdl(const char *name) | |||
img = pipi_new(priv->w, priv->h); | |||
img->p[PIPI_PIXELS_RGBA32].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA32].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA32].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA32].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA32].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA32].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA32; | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA_C].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA_C].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_C; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA32; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -77,22 +77,22 @@ void pipi_save_sdl(pipi_image_t *img, const char *name) | |||
SDL_Surface *priv = create_32bpp_surface(img->w, img->h); | |||
/* FIXME: check pitch differences here */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA32) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C) | |||
{ | |||
memcpy(priv->pixels, img->p[PIPI_PIXELS_RGBA32].pixels, | |||
memcpy(priv->pixels, img->p[PIPI_PIXELS_RGBA_C].pixels, | |||
priv->pitch * priv->h); | |||
free(img->p[PIPI_PIXELS_RGBA32].pixels); | |||
free(img->p[PIPI_PIXELS_RGBA_C].pixels); | |||
} | |||
img->p[PIPI_PIXELS_RGBA32].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA32].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA32].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA32].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA32].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA32].bytes = 4 * img->w * img->h; | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA_C].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA_C].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = 4 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA32; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->wrap = 0; | |||
img->u8 = 1; | |||
@@ -78,12 +78,12 @@ int pipi_flood_fill(pipi_image_t *src, | |||
(px < 0) || (py < 0)) return -1; | |||
if(src->last_modified == PIPI_PIXELS_RGBA32) { | |||
if(src->last_modified == PIPI_PIXELS_RGBA_C) { | |||
uint32_t *dstdata; | |||
unsigned char nr, ng, nb, na; | |||
/* Get ARGB32 pointer */ | |||
dstp = pipi_getpixels(dst, PIPI_PIXELS_RGBA32); | |||
dstp = pipi_getpixels(dst, PIPI_PIXELS_RGBA_C); | |||
dstdata = (uint32_t *)dstp->pixels; | |||
nr = r*255.0f; | |||
@@ -43,12 +43,14 @@ typedef enum | |||
{ | |||
PIPI_PIXELS_UNINITIALISED = -1, | |||
PIPI_PIXELS_RGBA32 = 0, | |||
PIPI_PIXELS_BGR24 = 1, | |||
PIPI_PIXELS_RGBA_C = 0, | |||
PIPI_PIXELS_BGR_C = 1, | |||
PIPI_PIXELS_RGBA_F = 2, | |||
PIPI_PIXELS_Y_F = 3, | |||
PIPI_PIXELS_MAX = 4 | |||
PIPI_PIXELS_MASK_C = 4, | |||
PIPI_PIXELS_MAX = 5 | |||
} | |||
pipi_format_t; | |||
@@ -49,17 +49,17 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
return &img->p[type]; | |||
/* Preliminary conversions */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA32 | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C | |||
&& type == PIPI_PIXELS_Y_F) | |||
pipi_getpixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_BGR24 | |||
else if(img->last_modified == PIPI_PIXELS_BGR_C | |||
&& type == PIPI_PIXELS_Y_F) | |||
pipi_getpixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F | |||
&& type == PIPI_PIXELS_RGBA32) | |||
&& type == PIPI_PIXELS_RGBA_C) | |||
pipi_getpixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F | |||
&& type == PIPI_PIXELS_BGR24) | |||
&& type == PIPI_PIXELS_BGR_C) | |||
pipi_getpixels(img, PIPI_PIXELS_RGBA_F); | |||
/* Allocate pixels if necessary */ | |||
@@ -67,11 +67,11 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
{ | |||
switch(type) | |||
{ | |||
case PIPI_PIXELS_RGBA32: | |||
case PIPI_PIXELS_RGBA_C: | |||
bytes = img->w * img->h * 4 * sizeof(uint8_t); | |||
bpp = 4 * sizeof(uint8_t); | |||
break; | |||
case PIPI_PIXELS_BGR24: | |||
case PIPI_PIXELS_BGR_C: | |||
bytes = img->w * img->h * 3 * sizeof(uint8_t); | |||
bpp = 3 * sizeof(uint8_t); | |||
break; | |||
@@ -95,10 +95,10 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
/* Convert pixels */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA32 | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C | |||
&& type == PIPI_PIXELS_RGBA_F) | |||
{ | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_RGBA32].pixels; | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_RGBA_C].pixels; | |||
float *dest = (float *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -109,10 +109,10 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
dest[4 * (y * img->w + x) + i] | |||
= u8tof32(src[4 * (y * img->w + x) + i]); | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_BGR24 | |||
else if(img->last_modified == PIPI_PIXELS_BGR_C | |||
&& type == PIPI_PIXELS_RGBA_F) | |||
{ | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_BGR24].pixels; | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_BGR_C].pixels; | |||
float *dest = (float *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -130,7 +130,7 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F | |||
&& type == PIPI_PIXELS_RGBA32) | |||
&& type == PIPI_PIXELS_RGBA_C) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
uint8_t *dest = (uint8_t *)img->p[type].pixels; | |||
@@ -166,7 +166,7 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F | |||
&& type == PIPI_PIXELS_BGR24) | |||
&& type == PIPI_PIXELS_BGR_C) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
uint8_t *dest = (uint8_t *)img->p[type].pixels; | |||
@@ -35,11 +35,11 @@ int main(int argc, char *argv[]) | |||
img1 = pipi_load("mona.png"); | |||
img2 = pipi_load("mona.png"); | |||
pix1 = pipi_getpixels(img1, PIPI_PIXELS_RGBA32); | |||
pix1 = pipi_getpixels(img1, PIPI_PIXELS_RGBA_C); | |||
data1 = (uint32_t *)pix1->pixels; | |||
pipi_getpixels(img2, PIPI_PIXELS_RGBA_F); | |||
pix2 = pipi_getpixels(img2, PIPI_PIXELS_RGBA32); | |||
pix2 = pipi_getpixels(img2, PIPI_PIXELS_RGBA_C); | |||
data2 = (uint32_t *)pix2->pixels; | |||
for(y = 0; y < pix1->h; y++) | |||