/** * 建立 src 图像的亮度,饱和度版本 * * @param src 源图像 * @param saturation 饱合度 -100(灰度图像) 至 100(高彩色比图像) * @param brightness 亮度 -100(全黑) 至 100(全白) */ image_p create_saturation_brightness_image(image_p src, int saturation, int brightness) { uint32_t y,x; image_p pimg; uint16_t *p16,*psrc16; uint32_t *p32,*psrc32; if(saturation<-100 || saturation>100) { nge_print("create_gray_image arg 'saturation' must between -100 to 100!"); return NULL; } if(brightness<-100 || brightness>100) { nge_print("create_gray_image arg 'brightness' must between -100 to 100!"); return NULL; } CHECK_AND_UNSWIZZLE(src); pimg = image_create(src->w, src->h, src->dtype); if(src->dtype == DISPLAY_PIXEL_FORMAT_8888) { p32 = (uint32_t *)pimg->data; psrc32 = (uint32_t *)src->data; for(y=0;y<src->h;y++) { p32 += src->texw; psrc32 += src->texw; for(x=0;x<src->w;x++) { *(p32 + x) = (uint32_t)get_saturation_brightness_color(pimg->dtype, *(psrc32 + x), saturation, brightness); } } } else if (src->dtype == DISPLAY_PIXEL_FORMAT_4444) { p16 = (uint16_t *)pimg->data; psrc16 = (uint16_t *)src->data; for(y=0;y<src->h;y++) { p16 += src->texw; psrc16 += src->texw; for(x=0;x<src->w;x++) { *(p16 + x) = (uint16_t)get_saturation_brightness_color(pimg->dtype, *(psrc16 + x), saturation, brightness); } } } CHECK_AND_SWIZZLE(src); return pimg; }
/** * 建立 src 图像的亮度,饱和度版本 * * @param src 源图像 * @param saturation 饱合度 -100(灰度图像) 至 100(高彩色比图像) * @param brightness 亮度 -100(全黑) 至 100(全白) */ image_p create_saturation_brightness_image(image_p src, int saturation, int brightness) { uint32 y,x; uint8 recover = 0; image_p pimg; uint16 *p16,*psrc16; uint32 *p32,*psrc32; if(saturation<-100 || saturation>100) { nge_print("create_gray_image arg 'saturation' must between -100 to 100!"); return NULL; } if(brightness<-100 || brightness>100) { nge_print("create_gray_image arg 'brightness' must between -100 to 100!"); return NULL; } if(src->swizzle ==1){ unswizzle_swap(src); recover = 1; } pimg = image_create(src->w, src->h, src->dtype); for(y=0;y<src->h;y++) { if(src->dtype == DISPLAY_PIXEL_FORMAT_8888) { p32 = (uint32 *)pimg->data + y*src->texw; psrc32 = (uint32 *)src->data + y*src->texw; } else { p16 = (uint16 *)pimg->data + y*src->texw; psrc16 = (uint16 *)src->data + y*src->texw; } for(x=0;x<src->w;x++) { if(src->dtype == DISPLAY_PIXEL_FORMAT_8888) { *(p32 + x) = (uint32)get_saturation_brightness_color(pimg->dtype, *(psrc32 + x), saturation, brightness); } else { *(p16 + x) = (uint16)get_saturation_brightness_color(pimg->dtype, *(psrc16 + x), saturation, brightness); } } } if(recover) swizzle_swap(src); return pimg; }