Пример #1
0
/**
 * 建立 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;
}
Пример #2
0
/**
 * 建立 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;
}