git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3342 92316355-f0b4-4df1-b90c-862c8a59935fmaster
@@ -49,7 +49,7 @@ int main(int argc, char *argv[]) | |||
/* Load image, convert it to grayscale, dither it with Floyd-Steinberg */ | |||
img = pipi_load(argv[1]); | |||
pipi_set_colorspace(img, PIPI_PIXELS_Y_F); | |||
pipi_set_colorspace(img, PIPI_PIXELS_Y_F32); | |||
gauss = pipi_gaussian_blur(img, sigma); | |||
kernel = pipi_load("ediff:fs"); | |||
dither = pipi_dither_ediff(img, kernel, PIPI_SCAN_RASTER); | |||
@@ -34,7 +34,7 @@ int main(int argc, char *argv[]) | |||
pipi_image_t *src = pipi_load(argv[1]); | |||
pipi_image_t *dst = pipi_reduce(src, NCOLORS, mypal); | |||
pipi_pixels_t *p = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
pipi_pixels_t *p = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
float *data = (float *)p->pixels; | |||
w = p->w; | |||
h = p->h; | |||
@@ -150,11 +150,11 @@ PHP_MINIT_FUNCTION(pipi) { | |||
REGISTER_LONG_CONSTANT("PIPI_SCAN_RASTER", PIPI_SCAN_RASTER, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_SCAN_SERPENTINE", PIPI_SCAN_SERPENTINE, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_UNINITIALISED", PIPI_PIXELS_UNINITIALISED, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_RGBA_C", PIPI_PIXELS_RGBA_C, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_BGR_C", PIPI_PIXELS_BGR_C, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_RGBA_F", PIPI_PIXELS_RGBA_F, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_Y_F", PIPI_PIXELS_Y_F, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_MASK_C", PIPI_PIXELS_MASK_C, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_RGBA_U8", PIPI_PIXELS_RGBA_U8, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_BGR_U8", PIPI_PIXELS_BGR_U8, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_RGBA_F32", PIPI_PIXELS_RGBA_F32, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_Y_F32", PIPI_PIXELS_Y_F32, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_MASK_U8", PIPI_PIXELS_MASK_U8, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_PIXELS_MAX", PIPI_PIXELS_MAX, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_COLOR_R", PIPI_COLOR_R, CONST_CS | CONST_PERSISTENT); | |||
REGISTER_LONG_CONSTANT("PIPI_COLOR_G", PIPI_COLOR_G, CONST_CS | CONST_PERSISTENT); | |||
@@ -43,7 +43,7 @@ int pipi_get_image_histogram(pipi_image_t *img, pipi_histogram_t*h, int flags) | |||
if(!h) return -1; | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
data = (uint8_t *)p->pixels; | |||
memset(h->a, 0, 256*(sizeof(unsigned int))); | |||
memset(h->r, 0, 256*(sizeof(unsigned int))); | |||
@@ -42,11 +42,11 @@ double pipi_measure_msd(pipi_image_t *i1, pipi_image_t *i2) | |||
f2 = i2->last_modified; | |||
/* FIXME: this is not right */ | |||
pipi_get_pixels(i1, PIPI_PIXELS_Y_F); | |||
pipi_get_pixels(i2, PIPI_PIXELS_Y_F); | |||
pipi_get_pixels(i1, PIPI_PIXELS_Y_F32); | |||
pipi_get_pixels(i2, PIPI_PIXELS_Y_F32); | |||
p1 = (float *)i1->p[PIPI_PIXELS_Y_F].pixels; | |||
p2 = (float *)i2->p[PIPI_PIXELS_Y_F].pixels; | |||
p1 = (float *)i1->p[PIPI_PIXELS_Y_F32].pixels; | |||
p2 = (float *)i2->p[PIPI_PIXELS_Y_F32].pixels; | |||
for(y = 0; y < h; y++) | |||
for(x = 0; x < w; x++) | |||
@@ -47,19 +47,19 @@ pipi_image_t *pipi_load_coreimage(const char *name) | |||
pipi_image_t *img; | |||
img = pipi_new(w, h); | |||
img->p[PIPI_PIXELS_RGBA_C].w = w; | |||
img->p[PIPI_PIXELS_RGBA_C].h = h; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = ([myImage bytesPerRow]/8) * img->w; | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = [myImage bitsPerPixel]; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = ([myImage bitsPerPixel]/8) * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_C; | |||
img->p[PIPI_PIXELS_RGBA_U8].w = w; | |||
img->p[PIPI_PIXELS_RGBA_U8].h = h; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = ([myImage bytesPerRow]/8) * img->w; | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = [myImage bitsPerPixel]; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = ([myImage bitsPerPixel]/8) * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_U8; | |||
/* CoreImage feeds us with BGRA while we need RGBA, so convert it. | |||
* We also need to get a pitch==(w*bpp) in order to pipi to opper properly. | |||
*/ | |||
int pitch = (img->p[PIPI_PIXELS_RGBA_C].bpp/8); | |||
int pitch = (img->p[PIPI_PIXELS_RGBA_U8].bpp/8); | |||
unsigned char *tmp = (unsigned char*)malloc(h*w*pitch); | |||
unsigned char *orig = (unsigned char*)[myImage bitmapData]; | |||
int x, y, k=0, o=0, a=[myImage bytesPerRow] - (w*([myImage bitsPerPixel]/8)); | |||
@@ -87,8 +87,8 @@ pipi_image_t *pipi_load_coreimage(const char *name) | |||
} | |||
o+=a; | |||
} | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = tmp; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = w*([myImage bitsPerPixel]/8); | |||
img->p[PIPI_PIXELS_RGBA_U8].pixels = tmp; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = w*([myImage bitsPerPixel]/8); | |||
@@ -97,7 +97,7 @@ pipi_image_t *pipi_load_coreimage(const char *name) | |||
struct pipi_codec_coreimage *infos = (struct pipi_codec_coreimage *) img->codec_priv; | |||
infos->format = [myImage bitmapFormat]; | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
img->codec_free = pipi_free_coreimage; | |||
@@ -109,7 +109,7 @@ pipi_image_t *pipi_load_coreimage(const char *name) | |||
int pipi_save_coreimage(pipi_image_t *img, const char *name) | |||
{ | |||
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init]; | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
int i; | |||
char *data = p->pixels; | |||
@@ -53,7 +53,7 @@ pipi_image_t *pipi_load_gdi(const char *name) | |||
} | |||
img = pipi_new(binfo.bmiHeader.biWidth, binfo.bmiHeader.biHeight); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
data = p->pixels; | |||
binfo.bmiHeader.biBitCount = 32; | |||
@@ -94,7 +94,7 @@ int pipi_save_gdi(pipi_image_t *img, const char *name) | |||
uint8_t *data; | |||
int x, y, padding; | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
data = p->pixels; | |||
padding = ((img->w * 3) + 3) / 4 * 4 - img->w * 3; | |||
@@ -65,7 +65,7 @@ extern "C" pipi_image_t *pipi_load_gdiplus(const char *name) | |||
} | |||
pipi_image_t *img = pipi_new(b->GetWidth(), b->GetHeight()); | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
memcpy(p->pixels, bdata.Scan0, bdata.Width * bdata.Height * 4); | |||
b->UnlockBits(&bdata); | |||
@@ -138,7 +138,7 @@ extern "C" int pipi_save_gdiplus(pipi_image_t *img, const char *name) | |||
return -1; | |||
} | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
pipi_pixels_t *p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
memcpy(bdata.Scan0, p->pixels, bdata.Width * bdata.Height * 4); | |||
b->UnlockBits(&bdata); | |||
@@ -47,16 +47,16 @@ pipi_image_t *pipi_load_imlib2(const char *name) | |||
img = pipi_new(imlib_image_get_width(), imlib_image_get_height()); | |||
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->p[PIPI_PIXELS_RGBA_U8].pixels = imlib_image_get_data(); | |||
img->p[PIPI_PIXELS_RGBA_U8].w = img->w; | |||
img->p[PIPI_PIXELS_RGBA_U8].h = img->h; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = 4 * img->w; | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_U8; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->codec_format = PIPI_PIXELS_RGBA_U8; | |||
img->codec_free = pipi_free_imlib2; | |||
img->wrap = 0; | |||
@@ -76,22 +76,22 @@ int 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_RGBA_C) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8) | |||
{ | |||
memcpy(data, img->p[PIPI_PIXELS_RGBA_C].pixels, | |||
memcpy(data, img->p[PIPI_PIXELS_RGBA_U8].pixels, | |||
4 * img->w * img->h); | |||
free(img->p[PIPI_PIXELS_RGBA_C].pixels); | |||
free(img->p[PIPI_PIXELS_RGBA_U8].pixels); | |||
} | |||
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->p[PIPI_PIXELS_RGBA_U8].pixels = data; | |||
img->p[PIPI_PIXELS_RGBA_U8].w = imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA_U8].h = imlib_image_get_height(); | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = 4 * imlib_image_get_width(); | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->codec_format = PIPI_PIXELS_RGBA_U8; | |||
img->codec_free = pipi_free_imlib2; | |||
img->wrap = 0; | |||
@@ -112,16 +112,16 @@ pipi_image_t *pipi_load_jpeg(const char *name) | |||
img = pipi_new(cinfo.output_width, cinfo.output_height); | |||
img->p[PIPI_PIXELS_RGBA_C].pixels = image; | |||
img->p[PIPI_PIXELS_RGBA_C].w = cinfo.output_width; | |||
img->p[PIPI_PIXELS_RGBA_C].h = cinfo.output_height; | |||
img->p[PIPI_PIXELS_RGBA_C].pitch = cinfo.output_width*4; | |||
img->p[PIPI_PIXELS_RGBA_C].bpp = 24; | |||
img->p[PIPI_PIXELS_RGBA_C].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_C; | |||
img->p[PIPI_PIXELS_RGBA_U8].pixels = image; | |||
img->p[PIPI_PIXELS_RGBA_U8].w = cinfo.output_width; | |||
img->p[PIPI_PIXELS_RGBA_U8].h = cinfo.output_height; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = cinfo.output_width*4; | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = 24; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_U8; | |||
img->codec_priv = (void *)&cinfo; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->codec_format = PIPI_PIXELS_RGBA_U8; | |||
img->codec_free = pipi_free_jpeg; | |||
img->wrap = 0; | |||
@@ -143,7 +143,7 @@ int pipi_save_jpeg(pipi_image_t *img, const char *name) | |||
unsigned char *data = NULL; | |||
unsigned char *line = NULL; | |||
pipi_pixels_t *pixels = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
pipi_pixels_t *pixels = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
if (!pixels) | |||
return 0; | |||
@@ -212,8 +212,8 @@ end: | |||
static int pipi_free_jpeg(pipi_image_t *img) | |||
{ | |||
if(img->p[PIPI_PIXELS_RGBA_C].pixels) | |||
free(img->p[PIPI_PIXELS_RGBA_C].pixels); | |||
if(img->p[PIPI_PIXELS_RGBA_U8].pixels) | |||
free(img->p[PIPI_PIXELS_RGBA_U8].pixels); | |||
return 0; | |||
} | |||
@@ -43,16 +43,16 @@ pipi_image_t *pipi_load_opencv(const char *name) | |||
img = pipi_new(priv->width, priv->height); | |||
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->p[PIPI_PIXELS_BGR_U8].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR_U8].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR_U8].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR_U8].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR_U8].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR_U8].bytes = 3 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_BGR_U8; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_BGR_C; | |||
img->codec_format = PIPI_PIXELS_BGR_U8; | |||
img->codec_free = pipi_free_opencv; | |||
img->wrap = 0; | |||
@@ -69,22 +69,22 @@ int 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_BGR_C) | |||
if(img->last_modified == PIPI_PIXELS_BGR_U8) | |||
{ | |||
memcpy(priv->imageData, img->p[PIPI_PIXELS_BGR_C].pixels, | |||
memcpy(priv->imageData, img->p[PIPI_PIXELS_BGR_U8].pixels, | |||
3 * img->w * img->h); | |||
free(img->p[PIPI_PIXELS_BGR_C].pixels); | |||
free(img->p[PIPI_PIXELS_BGR_U8].pixels); | |||
} | |||
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->p[PIPI_PIXELS_BGR_U8].pixels = priv->imageData; | |||
img->p[PIPI_PIXELS_BGR_U8].w = priv->width; | |||
img->p[PIPI_PIXELS_BGR_U8].h = priv->height; | |||
img->p[PIPI_PIXELS_BGR_U8].pitch = priv->widthStep; | |||
img->p[PIPI_PIXELS_BGR_U8].bpp = 24; | |||
img->p[PIPI_PIXELS_BGR_U8].bytes = 3 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_BGR_C; | |||
img->codec_format = PIPI_PIXELS_BGR_U8; | |||
img->codec_free = pipi_free_opencv; | |||
img->wrap = 0; | |||
@@ -64,7 +64,7 @@ pipi_image_t *pipi_load_oric(char const *name) | |||
} | |||
img = pipi_new(WIDTH, HEIGHT); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_C); | |||
p = pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8); | |||
data = p->pixels; | |||
for(y = 0; y < HEIGHT; y++) | |||
@@ -144,7 +144,7 @@ int pipi_save_oric(pipi_image_t *img, char const *name) | |||
tmp = pipi_resize(img, WIDTH, HEIGHT); | |||
else | |||
tmp = img; | |||
p = pipi_get_pixels(tmp, PIPI_PIXELS_RGBA_F); | |||
p = pipi_get_pixels(tmp, PIPI_PIXELS_RGBA_F32); | |||
data = p->pixels; | |||
screen = malloc(WIDTH * HEIGHT / 6); | |||
write_screen(data, screen); | |||
@@ -48,16 +48,16 @@ pipi_image_t *pipi_load_sdl(const char *name) | |||
img = pipi_new(priv->w, priv->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->last_modified = PIPI_PIXELS_RGBA_C; | |||
img->p[PIPI_PIXELS_RGBA_U8].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA_U8].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA_U8].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h; | |||
img->last_modified = PIPI_PIXELS_RGBA_U8; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->codec_format = PIPI_PIXELS_RGBA_U8; | |||
img->codec_free = pipi_free_sdl; | |||
img->wrap = 0; | |||
@@ -73,22 +73,22 @@ int 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_RGBA_C) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8) | |||
{ | |||
memcpy(priv->pixels, img->p[PIPI_PIXELS_RGBA_C].pixels, | |||
memcpy(priv->pixels, img->p[PIPI_PIXELS_RGBA_U8].pixels, | |||
priv->pitch * priv->h); | |||
free(img->p[PIPI_PIXELS_RGBA_C].pixels); | |||
free(img->p[PIPI_PIXELS_RGBA_U8].pixels); | |||
} | |||
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->p[PIPI_PIXELS_RGBA_U8].pixels = priv->pixels; | |||
img->p[PIPI_PIXELS_RGBA_U8].w = priv->w; | |||
img->p[PIPI_PIXELS_RGBA_U8].h = priv->h; | |||
img->p[PIPI_PIXELS_RGBA_U8].pitch = priv->pitch; | |||
img->p[PIPI_PIXELS_RGBA_U8].bpp = 32; | |||
img->p[PIPI_PIXELS_RGBA_U8].bytes = 4 * img->w * img->h; | |||
img->codec_priv = (void *)priv; | |||
img->codec_format = PIPI_PIXELS_RGBA_C; | |||
img->codec_format = PIPI_PIXELS_RGBA_U8; | |||
img->codec_free = pipi_free_sdl; | |||
img->wrap = 0; | |||
@@ -37,12 +37,12 @@ pipi_image_t *pipi_mean(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -37,12 +37,12 @@ pipi_image_t *pipi_min(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -86,12 +86,12 @@ pipi_image_t *pipi_max(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -37,12 +37,12 @@ pipi_image_t *pipi_multiply(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -86,12 +86,12 @@ pipi_image_t *pipi_divide(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -135,12 +135,12 @@ pipi_image_t *pipi_screen(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -184,12 +184,12 @@ pipi_image_t *pipi_overlay(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -37,14 +37,14 @@ pipi_image_t *pipi_rgb(pipi_image_t *i1, pipi_image_t *i2, pipi_image_t *i3) | |||
h = i1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
i1p = pipi_get_pixels(i1, PIPI_PIXELS_Y_F); | |||
i1p = pipi_get_pixels(i1, PIPI_PIXELS_Y_F32); | |||
i1data = (float *)i1p->pixels; | |||
i2p = pipi_get_pixels(i2, PIPI_PIXELS_Y_F); | |||
i2p = pipi_get_pixels(i2, PIPI_PIXELS_Y_F32); | |||
i2data = (float *)i2p->pixels; | |||
i3p = pipi_get_pixels(i3, PIPI_PIXELS_Y_F); | |||
i3p = pipi_get_pixels(i3, PIPI_PIXELS_Y_F32); | |||
i3data = (float *)i3p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -72,10 +72,10 @@ pipi_image_t *pipi_red(pipi_image_t *src) | |||
h = src->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -96,10 +96,10 @@ pipi_image_t *pipi_green(pipi_image_t *src) | |||
h = src->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -120,10 +120,10 @@ pipi_image_t *pipi_blue(pipi_image_t *src) | |||
h = src->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -38,12 +38,12 @@ pipi_image_t *pipi_add(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -87,12 +87,12 @@ pipi_image_t *pipi_sub(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -136,12 +136,12 @@ pipi_image_t *pipi_difference(pipi_image_t *img1, pipi_image_t *img2) | |||
h = img1->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F); | |||
img1p = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_F32); | |||
img1data = (float *)img1p->pixels; | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
img2p = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
img2data = (float *)img2p->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -703,7 +703,7 @@ int pipi_command(pipi_context_t *ctx, char const *cmd, ...) | |||
{ | |||
if(ctx->nimages < 1) | |||
return -1; | |||
pipi_get_pixels(ctx->images[ctx->nimages - 1], PIPI_PIXELS_Y_F); | |||
pipi_get_pixels(ctx->images[ctx->nimages - 1], PIPI_PIXELS_Y_F32); | |||
} | |||
else if(!strcmp(cmd, "free")) | |||
{ | |||
@@ -69,20 +69,20 @@ pipi_image_t *pipi_dither_dbs(pipi_image_t *img) | |||
memset(changelist, 0, cw * ch * sizeof(int)); | |||
src = pipi_copy(img); | |||
pipi_get_pixels(src, PIPI_PIXELS_Y_F); | |||
pipi_get_pixels(src, PIPI_PIXELS_Y_F32); | |||
tmp1 = pipi_convolution(src, NN, NN, kernel); | |||
tmp1p = pipi_get_pixels(tmp1, PIPI_PIXELS_Y_F); | |||
tmp1p = pipi_get_pixels(tmp1, PIPI_PIXELS_Y_F32); | |||
tmp1data = (float *)tmp1p->pixels; | |||
dst = pipi_dither_random(src); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
pipi_free(src); | |||
tmp2 = pipi_convolution(dst, NN, NN, kernel); | |||
tmp2p = pipi_get_pixels(tmp2, PIPI_PIXELS_Y_F); | |||
tmp2p = pipi_get_pixels(tmp2, PIPI_PIXELS_Y_F32); | |||
tmp2data = (float *)tmp2p->pixels; | |||
for(;;) | |||
@@ -41,10 +41,10 @@ pipi_image_t *pipi_dither_ediff(pipi_image_t *img, pipi_image_t *ker, | |||
kh = ker->h; | |||
dst = pipi_copy(img); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
kerp = pipi_get_pixels(ker, PIPI_PIXELS_Y_F); | |||
kerp = pipi_get_pixels(ker, PIPI_PIXELS_Y_F32); | |||
kerdata = (float *)kerp->pixels; | |||
for(kx = 0; kx < kw; kx++) | |||
if(kerdata[kx] > 0) | |||
@@ -63,10 +63,10 @@ pipi_image_t *pipi_dither_ordered_ext(pipi_image_t *img, pipi_image_t *kernel, | |||
sint = sin(angle * (M_PI / 180)); | |||
dst = pipi_copy(img); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
kernelp = pipi_get_pixels(kernel, PIPI_PIXELS_Y_F); | |||
kernelp = pipi_get_pixels(kernel, PIPI_PIXELS_Y_F32); | |||
kerneldata = (float *)kernelp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -112,11 +112,11 @@ pipi_image_t *pipi_order(pipi_image_t *src) | |||
h = src->h; | |||
epsilon = 1. / (w * h + 1); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_Y_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_Y_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
circle = malloc(w * h * sizeof(dot_t)); | |||
@@ -76,7 +76,7 @@ pipi_image_t *pipi_dither_ostromoukhov(pipi_image_t *img, pipi_scan_t scan) | |||
h = img->h; | |||
dst = pipi_copy(img); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -33,7 +33,7 @@ pipi_image_t *pipi_dither_random(pipi_image_t *img) | |||
h = img->h; | |||
dst = pipi_copy(img); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_Y_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -39,10 +39,10 @@ pipi_image_t *pipi_autocontrast(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -80,8 +80,8 @@ pipi_image_t *pipi_autocontrast(pipi_image_t *src) | |||
t = 1. / (max - min); | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -135,14 +135,14 @@ pipi_image_t *pipi_box_blur_ext(pipi_image_t *src, int m, int n) | |||
{ | |||
if(src->wrap) | |||
{ | |||
if(src->last_modified == PIPI_PIXELS_Y_F) | |||
if(src->last_modified == PIPI_PIXELS_Y_F32) | |||
return boxblur_gray_wrap(src, m, n); | |||
return boxblur_wrap(src, m, n); | |||
} | |||
else | |||
{ | |||
if(src->last_modified == PIPI_PIXELS_Y_F) | |||
if(src->last_modified == PIPI_PIXELS_Y_F32) | |||
return boxblur_gray(src, m, n); | |||
return boxblur(src, m, n); | |||
@@ -163,13 +163,13 @@ static pipi_image_t *T(boxblur)(pipi_image_t *src, int m, int n) | |||
h = src->h; | |||
size = (2 * m + 1) * (2 * n + 1); | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
acc = malloc(w * (FLAG_GRAY ? 1 : 4) * sizeof(double)); | |||
@@ -36,15 +36,15 @@ pipi_image_t *pipi_brightness(pipi_image_t *src, double val) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
if(val >= 0.0) | |||
@@ -117,15 +117,15 @@ pipi_image_t *pipi_contrast(pipi_image_t *src, double val) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
if(val >= 0.0) | |||
@@ -208,15 +208,15 @@ pipi_image_t *pipi_invert(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -252,15 +252,15 @@ pipi_image_t *pipi_threshold(pipi_image_t *src, double val) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -70,7 +70,7 @@ pipi_image_t *pipi_convolution(pipi_image_t *src, int m, int n, double mat[]) | |||
if(fabs(p - q) > 0.0001 * 0.0001) | |||
{ | |||
if(src->last_modified == PIPI_PIXELS_Y_F) | |||
if(src->last_modified == PIPI_PIXELS_Y_F32) | |||
{ | |||
if(src->wrap) | |||
return conv_gray_wrap(src, m, n, mat); | |||
@@ -96,7 +96,7 @@ pipi_image_t *pipi_convolution(pipi_image_t *src, int m, int n, double mat[]) | |||
for(j = 0; j < n; j++) | |||
vvec[j] = mat[j * m + besti] / tmp; | |||
if(src->last_modified == PIPI_PIXELS_Y_F) | |||
if(src->last_modified == PIPI_PIXELS_Y_F32) | |||
ret = src->wrap ? sepconv_gray_wrap(src, m, hvec, n, vvec) | |||
: sepconv_gray(src, m, hvec, n, vvec); | |||
else | |||
@@ -121,13 +121,13 @@ static pipi_image_t *T(conv)(pipi_image_t *src, int m, int n, double mat[]) | |||
w = src->w; | |||
h = src->h; | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -189,13 +189,13 @@ static pipi_image_t *T(sepconv)(pipi_image_t *src, | |||
w = src->w; | |||
h = src->h; | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = FLAG_GRAY ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = FLAG_GRAY ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
buffer = malloc(w * h * (FLAG_GRAY ? 1 : 4) * sizeof(double)); | |||
@@ -40,15 +40,15 @@ pipi_image_t *pipi_dilate(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -109,15 +109,15 @@ pipi_image_t *pipi_erode(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -55,15 +55,15 @@ pipi_image_t *pipi_median_ext(pipi_image_t *src, int rx, int ry) | |||
h = src->h; | |||
size = (2 * rx + 1) * (2 * ry + 1); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
list = malloc(size * (gray ? 1 : 4) * sizeof(double)); | |||
@@ -36,15 +36,15 @@ pipi_image_t *pipi_hflip(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -82,15 +82,15 @@ pipi_image_t *pipi_vflip(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -122,15 +122,15 @@ pipi_image_t *pipi_rotate90(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(h, w); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -168,15 +168,15 @@ pipi_image_t *pipi_rotate180(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -214,15 +214,15 @@ pipi_image_t *pipi_rotate270(pipi_image_t *src) | |||
w = src->w; | |||
h = src->h; | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F); | |||
gray = (src->last_modified == PIPI_PIXELS_Y_F32); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = gray ? pipi_get_pixels(src, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(h, w); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -34,7 +34,7 @@ int pipi_draw_bezier4(pipi_image_t *img , | |||
int x4, int y4, | |||
uint32_t c, int n, int aa) | |||
{ | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8) | |||
{ | |||
float t; | |||
float x= x1, y= y1; | |||
@@ -77,12 +77,12 @@ int pipi_flood_fill(pipi_image_t *src, | |||
(px < 0) || (py < 0)) return -1; | |||
if(src->last_modified == PIPI_PIXELS_RGBA_C) { | |||
if(src->last_modified == PIPI_PIXELS_RGBA_U8) { | |||
uint32_t *dstdata; | |||
unsigned char nr, ng, nb, na; | |||
/* Get ARGB32 pointer */ | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_C); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_U8); | |||
dstdata = (uint32_t *)dstp->pixels; | |||
nr = r*255.0f; | |||
@@ -95,12 +95,12 @@ int pipi_flood_fill(pipi_image_t *src, | |||
pipi_flood_fill_stack_scanline_u32(dstp, px, py, (na<<24)|(nr<<16)|(ng<<8)|(nb), dstdata[px+py*w]); | |||
} else { | |||
int gray = (dst->last_modified == PIPI_PIXELS_Y_F); | |||
int gray = (dst->last_modified == PIPI_PIXELS_Y_F32); | |||
float *dstdata; | |||
float or, og, ob, oa; | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = gray ? pipi_get_pixels(dst, PIPI_PIXELS_Y_F32) | |||
: pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
@@ -67,12 +67,12 @@ int pipi_draw_line(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t | |||
/* No Transparency routine for u32 yet, fallback to float version */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8) | |||
{ | |||
if(!aa) | |||
{ | |||
uint32_t *dstdata; | |||
dstdata = (uint32_t *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_C)->pixels; | |||
dstdata = (uint32_t *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_U8)->pixels; | |||
s.color32 = c; | |||
s.buf_u32 = dstdata; | |||
s.draw = line_8bit; | |||
@@ -80,7 +80,7 @@ int pipi_draw_line(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t | |||
else | |||
{ | |||
float *dstdata; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F)->pixels; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32)->pixels; | |||
s.colorf[2] = ((c&0x00FF0000)>>16)/255.0f; /* XXX FIXME */ | |||
s.colorf[1] = ((c&0x0000FF00)>>8)/255.0f; /* XXX FIXME */ | |||
s.colorf[0] = (c&0x000000FF)/255.0f; /* XXX FIXME */ | |||
@@ -88,10 +88,10 @@ int pipi_draw_line(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t | |||
s.draw = aaline; | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_Y_F) | |||
else if(img->last_modified == PIPI_PIXELS_Y_F32) | |||
{ | |||
float *dstdata; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_Y_F)->pixels; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_Y_F32)->pixels; | |||
s.colorf[0] = (c & 0xff) / 255.0f; /* XXX FIXME */ | |||
s.buf_f = dstdata; | |||
s.draw = aa ? aaline_gray : line_gray; | |||
@@ -99,7 +99,7 @@ int pipi_draw_line(pipi_image_t *img , int xa, int ya, int xb, int yb, uint32_t | |||
else | |||
{ | |||
float *dstdata; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F)->pixels; | |||
dstdata = (float *)pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32)->pixels; | |||
s.colorf[2] = ((c&0x00FF0000)>>16)/255.0f; /* XXX FIXME */ | |||
s.colorf[1] = ((c&0x0000FF00)>>8)/255.0f; /* XXX FIXME */ | |||
s.colorf[0] = (c&0x000000FF)/255.0f; /* XXX FIXME */ | |||
@@ -34,10 +34,10 @@ pipi_image_t *pipi_tile(pipi_image_t *tile, int w, int h) | |||
th = tile->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
tilep = pipi_get_pixels(tile, PIPI_PIXELS_RGBA_F); | |||
tilep = pipi_get_pixels(tile, PIPI_PIXELS_RGBA_F32); | |||
tiledata = (float *)tilep->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -45,18 +45,18 @@ typedef enum | |||
pipi_scan_t; | |||
/* pipi_format_t: this enum is a list of all possible pixel formats for | |||
* our internal images. RGBA32 is the most usual format when an image has | |||
* just been loaded, but RGBA_F is a lot better for complex operations. */ | |||
* our internal images. RGBA_U8 is the most usual format when an image has | |||
* just been loaded, but RGBA_F32 is a lot better for complex operations. */ | |||
typedef enum | |||
{ | |||
PIPI_PIXELS_UNINITIALISED = -1, | |||
PIPI_PIXELS_RGBA_C = 0, | |||
PIPI_PIXELS_BGR_C = 1, | |||
PIPI_PIXELS_RGBA_F = 2, | |||
PIPI_PIXELS_Y_F = 3, | |||
PIPI_PIXELS_RGBA_U8 = 0, | |||
PIPI_PIXELS_BGR_U8 = 1, | |||
PIPI_PIXELS_RGBA_F32 = 2, | |||
PIPI_PIXELS_Y_F32 = 3, | |||
PIPI_PIXELS_MASK_C = 4, | |||
PIPI_PIXELS_MASK_U8 = 4, | |||
PIPI_PIXELS_MAX = 5 | |||
} | |||
@@ -48,41 +48,41 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
return &img->p[type]; | |||
/* Handle special cases */ | |||
if(type == PIPI_PIXELS_MASK_C) | |||
if(type == PIPI_PIXELS_MASK_U8) | |||
return &img->p[type]; | |||
/* Preliminary conversions */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C | |||
&& type == PIPI_PIXELS_Y_F) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_BGR_C | |||
&& type == PIPI_PIXELS_Y_F) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F | |||
&& type == PIPI_PIXELS_RGBA_C) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F | |||
&& type == PIPI_PIXELS_BGR_C) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F); | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8 | |||
&& type == PIPI_PIXELS_Y_F32) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32); | |||
else if(img->last_modified == PIPI_PIXELS_BGR_U8 | |||
&& type == PIPI_PIXELS_Y_F32) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F32 | |||
&& type == PIPI_PIXELS_RGBA_U8) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32); | |||
else if(img->last_modified == PIPI_PIXELS_Y_F32 | |||
&& type == PIPI_PIXELS_BGR_U8) | |||
pipi_get_pixels(img, PIPI_PIXELS_RGBA_F32); | |||
/* Allocate pixels if necessary */ | |||
if(!img->p[type].pixels) | |||
{ | |||
switch(type) | |||
{ | |||
case PIPI_PIXELS_RGBA_C: | |||
case PIPI_PIXELS_RGBA_U8: | |||
bytes = img->w * img->h * 4 * sizeof(uint8_t); | |||
bpp = 4 * sizeof(uint8_t); | |||
break; | |||
case PIPI_PIXELS_BGR_C: | |||
case PIPI_PIXELS_BGR_U8: | |||
bytes = img->w * img->h * 3 * sizeof(uint8_t); | |||
bpp = 3 * sizeof(uint8_t); | |||
break; | |||
case PIPI_PIXELS_RGBA_F: | |||
case PIPI_PIXELS_RGBA_F32: | |||
bytes = img->w * img->h * 4 * sizeof(float); | |||
bpp = 4 * sizeof(float); | |||
break; | |||
case PIPI_PIXELS_Y_F: | |||
case PIPI_PIXELS_Y_F32: | |||
bytes = img->w * img->h * sizeof(float); | |||
bpp = sizeof(float); | |||
break; | |||
@@ -98,10 +98,10 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
/* Convert pixels */ | |||
if(img->last_modified == PIPI_PIXELS_RGBA_C | |||
&& type == PIPI_PIXELS_RGBA_F) | |||
if(img->last_modified == PIPI_PIXELS_RGBA_U8 | |||
&& type == PIPI_PIXELS_RGBA_F32) | |||
{ | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_RGBA_C].pixels; | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_RGBA_U8].pixels; | |||
float *dest = (float *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -112,10 +112,10 @@ pipi_pixels_t *pipi_get_pixels(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_BGR_C | |||
&& type == PIPI_PIXELS_RGBA_F) | |||
else if(img->last_modified == PIPI_PIXELS_BGR_U8 | |||
&& type == PIPI_PIXELS_RGBA_F32) | |||
{ | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_BGR_C].pixels; | |||
uint8_t *src = (uint8_t *)img->p[PIPI_PIXELS_BGR_U8].pixels; | |||
float *dest = (float *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -132,10 +132,10 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
dest[4 * (y * img->w + x) + 3] = 1.0; | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F | |||
&& type == PIPI_PIXELS_RGBA_C) | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F32 | |||
&& type == PIPI_PIXELS_RGBA_U8) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F32].pixels; | |||
uint8_t *dest = (uint8_t *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -168,10 +168,10 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F | |||
&& type == PIPI_PIXELS_BGR_C) | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F32 | |||
&& type == PIPI_PIXELS_BGR_U8) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F32].pixels; | |||
uint8_t *dest = (uint8_t *)img->p[type].pixels; | |||
init_tables(); | |||
@@ -204,11 +204,11 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
} | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_Y_F | |||
&& type == PIPI_PIXELS_RGBA_F) | |||
else if(img->last_modified == PIPI_PIXELS_Y_F32 | |||
&& type == PIPI_PIXELS_RGBA_F32) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_Y_F].pixels; | |||
float *dest = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
float *src = (float *)img->p[PIPI_PIXELS_Y_F32].pixels; | |||
float *dest = (float *)img->p[PIPI_PIXELS_RGBA_F32].pixels; | |||
init_tables(); | |||
@@ -222,11 +222,11 @@ pipi_pixels_t *pipi_get_pixels(pipi_image_t *img, pipi_format_t type) | |||
dest[4 * (y * img->w + x) + 3] = 1.0; | |||
} | |||
} | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F | |||
&& type == PIPI_PIXELS_Y_F) | |||
else if(img->last_modified == PIPI_PIXELS_RGBA_F32 | |||
&& type == PIPI_PIXELS_Y_F32) | |||
{ | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F].pixels; | |||
float *dest = (float *)img->p[PIPI_PIXELS_Y_F].pixels; | |||
float *src = (float *)img->p[PIPI_PIXELS_RGBA_F32].pixels; | |||
float *dest = (float *)img->p[PIPI_PIXELS_Y_F32].pixels; | |||
init_tables(); | |||
@@ -378,14 +378,14 @@ pipi_image_t *pipi_reduce(pipi_image_t *src, | |||
debug("### PROCESSING IMAGE ###"); | |||
debug(""); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
w = srcp->w; | |||
h = srcp->h; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
for(j = 0; j < h; j++) | |||
@@ -34,7 +34,7 @@ pipi_image_t *pipi_render_random(int w, int h) | |||
int x, y, t; | |||
ret = pipi_new(w, h); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_RGBA_F); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_RGBA_F32); | |||
data = (float *)pix->pixels; | |||
for(y = 0; y < h; y++) | |||
@@ -23,9 +23,9 @@ | |||
#include <string.h> | |||
#include <math.h> | |||
#ifndef M_PI | |||
# define M_PI 3.14159265358979323846 | |||
#endif | |||
#ifndef M_PI | |||
# define M_PI 3.14159265358979323846 | |||
#endif | |||
#include "pipi.h" | |||
#include "pipi_internals.h" | |||
@@ -44,7 +44,7 @@ pipi_image_t *pipi_render_bayer(int w, int h) | |||
; | |||
ret = pipi_new(w, h); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F32); | |||
data = (float *)pix->pixels; | |||
for(j = 0; j < h; j++) | |||
@@ -107,7 +107,7 @@ pipi_image_t *pipi_render_halftone(int w, int h) | |||
qsort(circle, w * h, sizeof(dot_t), cmpdot); | |||
ret = pipi_new(w * 2, h * 2); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F32); | |||
data = (float *)pix->pixels; | |||
for(n = 0; n < w * h; n++) | |||
@@ -31,11 +31,11 @@ pipi_image_t *pipi_resize(pipi_image_t *src, int w, int h) | |||
pipi_pixels_t *srcp, *dstp; | |||
int x, y, x0, y0, sw, dw, sh, dh, remy; | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F); | |||
srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32); | |||
srcdata = (float *)srcp->pixels; | |||
dst = pipi_new(w, h); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F); | |||
dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32); | |||
dstdata = (float *)dstp->pixels; | |||
sw = src->w; sh = src->h; | |||
@@ -173,7 +173,7 @@ pipi_image_t *pipi_load_stock(char const *name) | |||
return NULL; | |||
ret = pipi_new(w, h); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F); | |||
pix = pipi_get_pixels(ret, PIPI_PIXELS_Y_F32); | |||
memcpy(pix->pixels, ker, w * h * sizeof(float)); | |||
return ret; | |||
@@ -87,12 +87,12 @@ pipi_tile_t *pipi_create_tile(pipi_format_t fmt, int plane) | |||
switch(fmt) | |||
{ | |||
case PIPI_PIXELS_RGBA_C: | |||
case PIPI_PIXELS_BGR_C: | |||
case PIPI_PIXELS_RGBA_U8: | |||
case PIPI_PIXELS_BGR_U8: | |||
bytes = sizeof(uint8_t) * TILE_SIZE * TILE_SIZE; | |||
break; | |||
case PIPI_PIXELS_RGBA_F: | |||
case PIPI_PIXELS_Y_F: | |||
case PIPI_PIXELS_RGBA_F32: | |||
case PIPI_PIXELS_Y_F32: | |||
bytes = sizeof(float) * TILE_SIZE * TILE_SIZE; | |||
break; | |||
default: | |||
@@ -34,11 +34,11 @@ int main(int argc, char *argv[]) | |||
img1 = pipi_load("mona.png"); | |||
img2 = pipi_load("mona.png"); | |||
pix1 = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_C); | |||
pix1 = pipi_get_pixels(img1, PIPI_PIXELS_RGBA_U8); | |||
data1 = (uint32_t *)pix1->pixels; | |||
pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F); | |||
pix2 = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_C); | |||
pipi_get_pixels(img2, PIPI_PIXELS_RGBA_F32); | |||
pix2 = pipi_get_pixels(img2, PIPI_PIXELS_RGBA_U8); | |||
data2 = (uint32_t *)pix2->pixels; | |||
for(y = 0; y < pix1->h; y++) | |||