Nanashi-soft○プログラマ専用○Photoshopプラグイン開発○
if(0xff < (int)*pixel + (int)amari[color]){
*pixel = 0xff;
}else{
*pixel = *pixel + amari[color];
}
amari[color] = *pixel & 0x0f;
if(*pixel & 0x08){
*pixel = *pixel | 0x0f; //5bit目がある場合はビットを埋める
}else{
*pixel = *pixel & 0xf0;
}
if(0xff < (int)*pixel + (int)amari[color]){
*pixel = 0xff;
}else if((int)*pixel + (int)amari[color] < 0){ //マイナス値が来るようになったので,0未満になる場合を考慮する
*pixel = 0x00;
}else{
*pixel = *pixel + amari[color];
}
if(*pixel & 0x08){
amari[color] = -0x0f + (*pixel & 0x0f); //加算した分をマイナスする
*pixel = *pixel | 0x0f;
}else{
amari[color] = *pixel & 0x0f; //今まで通り
*pixel = *pixel & 0xf0;
}
static uint8 oldcolor[4]={0,0,0,0}; //1つ前のドットの色
uint8 savecolor=*pixel; //現在のドット情報を退避
if(*pixel != oldcolor[color]){ //1つ前のドットと同じで無い場合のみ処理
if(0xff < (int)*pixel + (int)amari[color]){
*pixel = 0xff;
}else if((int)*pixel + (int)amari[color] < 0){
*pixel = 0x00;
}else{
*pixel = *pixel + amari[color];
}
}
oldcolor[color]=savecolor; //退避しておいた元のドットを保存
これで先ほどの中間色で塗りつぶした画像に縞模様は出なくなります