📄 neffect.h
字号:
}
}
}
#endif
}
#ifndef NEO_16bit_bmp_unused
else if (g_bmpbits == 16)
{
/*RGB16 *buf = (RGB16 *)buffer;*/
/*count >>= 1; */
}
#endif
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"vivid", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
/*扫描线颜色替换*/
void scan_line_stead(void *buffer, int count/*, int line*/)
{
#ifndef NEO_bmp_stead_unused
int i, temp;
if (g_bmpbits == 8)
{
#ifndef NEO_8bit_bmp_unused
char *buf = (char *)buffer;
temp = (get_color_depth() == 8? MASK_COLOR_ : MASK_COLOR_8);
for (i = 0; i < count; ++i)
{
if (buf[i] == temp)
{
buf[i] = (char)g_bmp_param;
}
}
#endif
}
#ifndef NEO_24bit_bmp_unused
else if (g_bmpbits == 24)
{
RGB24 *buf = (RGB24 *)buffer;
temp = 5 - g_green_bit;
count /= sizeof(RGB24);
for (i = 0; i < count; ++i)
{
if ( ((buf[i].r>>3)|((buf[i].g>>g_green_bit)<<5)|((buf[i].b>>3)<<11)) == MASK_COLOR_)
{
buf[i].b = (g_bmp_param & 0xf800) >> 8;
buf[i].g = (g_bmp_param & 0x7e0) >> temp;
buf[i].r = (g_bmp_param & 0x1f) << 3;
}
}
}
#endif
#ifndef NEO_16bit_bmp_unused
else if (g_bmpbits == 16)
{
RGB16 *buf = (RGB16 *)buffer;
count >>= 1; /*比count /= sizeof(RGB16)快*/
for (i = 0; i < count; ++i)
{
if (buf[i].color == MASK_COLOR_)
{
buf[i].color = g_bmp_param;
}
}
}
#endif
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"stead", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
/*扫描线水平翻转*/
void scan_line_h_flip(void *buffer, int count/*, int line*/)
{
#ifndef NEO_bmp_h_flip_unused
int i, temp;
int r,g,b;
if (g_bmpbits == 8)
{
#ifndef NEO_8bit_bmp_unused
char *buf = (char *)buffer;
r = count >> 1;
for (i = 0; i < r; ++i)
{
temp = buf[i];
buf[i] = buf[count - i];
buf[count - i] = temp;
}
#endif
}
#ifndef NEO_24bit_bmp_unused
else if (g_bmpbits == 24)
{
RGB24 *buf = (RGB24 *)buffer;
temp = (int)(count / 3);
count = temp >> 1;
for (i = 0; i < count; ++i)
{
r = buf[i].r; g = buf[i].g; b = buf[i].b;
buf[i].r = buf[temp - i].r;
buf[i].g = buf[temp - i].g;
buf[i].b = buf[temp - i].b;
buf[temp - i].r = r; buf[temp - i].g = g; buf[temp - i].b = b;
}
}
#endif
#ifndef NEO_16bit_bmp_unused
else if (g_bmpbits == 16)
{
RGB16 *buf = (RGB16 *)buffer;
r = (count >>= 1);
count >>= 1;
for (i = 0; i < count; ++i)
{
temp = buf[i].color;
buf[i].color = buf[r - i].color;
buf[r - i].color = temp;
}
}
#endif
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"bmp_flip", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
/*扫描线模糊效果*/
void scan_line_wublur(void *buffer, int count/*, int line*/)
{
#ifndef NEO_bmp_wublur_unused
int i;
if (g_bmpbits == 24)
{
#ifndef NEO_24bit_bmp_unused
RGB24 *buf = (RGB24 *)buffer;
count /= sizeof(RGB24);
for (i = 0; i < count - 1; ++i)
{
buf[i].r = (buf[i].r + buf[i + 1].r) >> 1;
buf[i].g = (buf[i].g + buf[i + 1].g) >> 1;
buf[i].b = (buf[i].b + buf[i + 1].b) >> 1;
}
#endif
}
#ifndef NEO_16bit_bmp_unused
else if (g_bmpbits == 16)
{
count >>= 1; /*比count /= sizeof(RGB16)快*/
}
#endif
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"wu-blur", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
/*扫描线去色效果*/
void scan_line_throw(void *buffer, int count/*, int line*/)
{
#ifndef NEO_bmp_channel_unused
int i, temp;
if (g_bmpbits == 8)
{
#ifndef NEO_8bit_bmp_unused
#ifndef NEO_color_depth_8_unused
char *buf = (char *)buffer;
if ((g_bmp_param & 0x7) == 0x7)
{
for (i = 0; i < count; ++i)
{
temp = (get_blue(buf[i]) * 3 + get_green(buf[i]) * 6 + get_red(buf[i])) / 10;
buf[i] = (temp << 6) | (temp << 3) | temp;
}
}
else
{
for (i = 0; i < count; ++i)
{
if (g_bmp_param & 0x4) buf[i] &= 0X1F;
if (g_bmp_param & 0x2) buf[i] &= 0XE3;
if (g_bmp_param & 0x1) buf[i] &= 0XFC;
}
}
#endif
#endif
}
#ifndef NEO_24bit_bmp_unused
else if (g_bmpbits == 24)
{
RGB24 *buf = (RGB24 *)buffer;
count /= sizeof(RGB24);
if ((g_bmp_param & 0x7) == 0x7)
{
for (i = 0; i < count; ++i)
{
if (buf[i].r == buf[i].g && buf[i].g == buf[i].b) continue;
temp = (buf[i].r * 3 + buf[i].g * 6 + buf[i].b) / 10;
buf[i].r = buf[i].g = buf[i].b = (Uint8)temp;
}
}
else
{
for (i = 0; i < count; ++i)
{
if (g_bmp_param & 0x1) buf[i].r = 0;
if (g_bmp_param & 0x2) buf[i].g = 0;
if (g_bmp_param & 0x4) buf[i].b = 0;
}
}
}
#endif
#ifndef NEO_16bit_bmp_unused
else if (g_bmpbits == 16)
{
RGB16 *buf = (RGB16 *)buffer;
count >>= 1; /*比count /= sizeof(RGB16)快*/
if ((g_bmp_param & 0x7) == 0x7)
{
for (i = 0; i < count; ++i)
{
temp = (getb16(buf[i].color) * 3 + getg16(buf[i].color) * 6 + getr16(buf[i].color)) / 10;
buf[i].color = (temp << 11) | (temp << 6) | temp;
}
}
else
{
for (i = 0; i < count; ++i)
{
if (g_bmp_param & 0x1) buf[i].color &= 0XFFE0;
if (g_bmp_param & 0x2) buf[i].color &= 0XF81F;
if (g_bmp_param & 0x4) buf[i].color &= 0X07FF;
}
}
}
#endif
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"Channel", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
void scan_line_define(void *buffer, int count/*, int line*/)
{
#ifndef NEO_bmp_define_unused
int i;
if (g_bmpbits == 24)
{
#ifndef NEO_24bit_bmp_unused
RGB24 *buf = (RGB24 *)buffer;
count /= sizeof(RGB24);
for (i = 0; i < count; ++i)
{
buf[i].r = abs(g_bmp_param - buf[i].r);
buf[i].g = abs(g_bmp_param - buf[i].g);
buf[i].b = abs(g_bmp_param - buf[i].b);
}
#endif
}
#else
char *buf = (char *)buffer; *buf += count;
#ifndef NEO_sys_report_error_unused
{
Errinfo_t error = {"Channel", ROUTINE_UNACTIVE, 1};
throw_error(error);
}
#endif
#endif
}
#endif /* NEO_bmp_support_unused */
#endif /* NEO_showbmp_unused */
#endif /*__NEFFECT_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -