📄 bwmod.c
字号:
#include "bwmod.h"
#define BLOCK_LEVEL(B) (((B)+6)/9)
static float bw_scale [42] = {
1.1f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
};
DLLEXPORT void bwm_modify (USHORT bw[], USHORT rbw[])
{
int bn;
for (bn=0; bn<NBLOCKS; bn++)
rbw[bn] = (USHORT)(((float) rbw[bn]) * bw_scale[bn] + 0.5f);
}
DLLEXPORT void bwm_init(void)
{
int bn;
for (bn=0; bn<NBLOCKS; bn++) {
bw_scale[bn] = 1.0f;
}
}
DLLEXPORT void bwm_soft(int level)
{
int bn;
if (level > 0) {
for (bn=0; bn<NBLOCKS; bn++)
if (BLOCK_LEVEL(bn) < level) {
bw_scale[bn] = 0.0f;
}
}
}
DLLEXPORT void bwm_edge (int level)
{
int bn;
if (level > 0) {
for (bn=0; bn<NBLOCKS; bn++)
if (BLOCK_LEVEL(bn) >= level) {
bw_scale[bn] = 0.0f;
}
}
}
DLLEXPORT void bwm_sharp (int level)
{
int bn;
if (level > 0) {
for (bn=0; bn<NBLOCKS; bn++)
if (BLOCK_LEVEL(bn) < level) {
bw_scale[bn] *= 2.0f;
}
}
}
/* Just zero all colors */
DLLEXPORT void bwm_gray (void)
{
int bn;
for (bn=0; bn<NBLOCKS; bn++) {
if (bn % 3 != 0) {
bw_scale[bn] = 0.0f;
}
}
}
DLLEXPORT void bwm_blue (float scale)
{
int bn;
for (bn=1; bn<NBLOCKS; bn+=3) {
bw_scale[bn] *= scale;
}
}
DLLEXPORT void bwm_red (float scale)
{
int bn;
for (bn=2; bn<NBLOCKS; bn+=3)
bw_scale[bn] *= scale;
}
/* Scale 3 low frequences by 0.5, leave 2 leveles of sharpened edges
and zero the rest */
DLLEXPORT void bwm_water_color (void)
{
int bn;
for (bn=0; bn<NBLOCKS; bn++) {
bw_scale[bn] = 0.0f;
}
for (bn=39; bn<42; bn++)
bw_scale[bn] = 0.5f;
for (bn=0; bn<12; bn++)
bw_scale[bn] = 2.0f;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -