📄 pixeltopixelmorpher.cpp
字号:
IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
// Green
temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
// Blue
temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->green - IlMaxGreen;
temp2 = IlMinGreen - rightPixel->green;
DrGreen = MAX3( 0, temp1, temp2 );
// Blue
temp1 = leftPixel->blue - IrMaxBlue;
temp2 = IrMinBlue - leftPixel->blue;
DlBlue = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->blue - IlMaxBlue;
temp2 = IlMinBlue - rightPixel->blue;
DrBlue = MAX3( 0, temp1, temp2 );
} // case 0
break;
case -1: // xState = -1, yState = 0
{
// Red
temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
IlMaxRed = MAX2( leftPixel->red, temp2 );
IlMinRed = MIN2( leftPixel->red, temp2 );
temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
// Green
temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX2( leftPixel->green, temp2 );
IlMinGreen = MIN2( leftPixel->green, temp2 );
temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
// Blue
temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX2( leftPixel->blue, temp2 );
IlMinBlue = MIN2( leftPixel->blue, temp2 );
temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->green - IlMaxGreen;
temp2 = IlMinGreen - rightPixel->green;
DrGreen = MAX3( 0, temp1, temp2 );
// Blue
temp1 = leftPixel->blue - IrMaxBlue;
temp2 = IrMinBlue - leftPixel->blue;
DlBlue = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->blue - IlMaxBlue;
temp2 = IlMinBlue - rightPixel->blue;
DrBlue = MAX3( 0, temp1, temp2 );
} // case -1
break;
case 1: // xState = 1, yState = 0
{
// Red
temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
IlMaxRed = MAX2( leftPixel->red, temp1 );
IlMinRed = MIN2( leftPixel->red, temp1 );
temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX3( rightPixel->red, temp1, temp2 );
IrMinRed = MIN3( rightPixel->red, temp1, temp2 );
// Green
temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX2( leftPixel->green, temp1 );
IlMinGreen = MIN2( leftPixel->green, temp1 );
temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX3( rightPixel->green, temp1, temp2 );
IrMinGreen = MIN3( rightPixel->green, temp1, temp2 );
// Blue
temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX2( leftPixel->blue, temp1 );
IlMinBlue = MIN2( leftPixel->blue, temp1 );
temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX3( rightPixel->blue, temp1, temp2 );
IrMinBlue = MIN3( rightPixel->blue, temp1, temp2 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->green - IlMaxGreen;
temp2 = IlMinGreen - rightPixel->green;
DrGreen = MAX3( 0, temp1, temp2 );
// Blue
temp1 = leftPixel->blue - IrMaxBlue;
temp2 = IrMinBlue - leftPixel->blue;
DlBlue = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->blue - IlMaxBlue;
temp2 = IlMinBlue - rightPixel->blue;
DrBlue = MAX3( 0, temp1, temp2 );
} // case 1
break;
case -3: // xState = 0, yState = -1
{
// Red
temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX2( rightPixel->red, temp2 );
IrMinRed = MIN2( rightPixel->red, temp2 );
// Green
temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX2( rightPixel->green, temp2 );
IrMinGreen = MIN2( rightPixel->green, temp2 );
// Blue
temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX2( rightPixel->blue, temp2 );
IrMinBlue = MIN2( rightPixel->blue, temp2 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->green - IlMaxGreen;
temp2 = IlMinGreen - rightPixel->green;
DrGreen = MAX3( 0, temp1, temp2 );
// Blue
temp1 = leftPixel->blue - IrMaxBlue;
temp2 = IrMinBlue - leftPixel->blue;
DlBlue = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->blue - IlMaxBlue;
temp2 = IlMinBlue - rightPixel->blue;
DrBlue = MAX3( 0, temp1, temp2 );
} // case -3
break;
case 3: // xState = 0, yState = 1
{
// Red
temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
temp2 = ( (leftPixel + 1)->red + leftPixel->red ) >> 1;
IlMaxRed = MAX3( leftPixel->red, temp1, temp2 );
IlMinRed = MIN3( leftPixel->red, temp1, temp2 );
temp1 = ( (rightPixel - 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX2( rightPixel->red, temp1 );
IrMinRed = MIN2( rightPixel->red, temp1 );
// Green
temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
temp2 = ( (leftPixel + 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX3( leftPixel->green, temp1, temp2 );
IlMinGreen = MIN3( leftPixel->green, temp1, temp2 );
temp1 = ( (rightPixel - 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX2( rightPixel->green, temp1 );
IrMinGreen = MIN2( rightPixel->green, temp1 );
// Blue
temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
temp2 = ( (leftPixel + 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX3( leftPixel->blue, temp1, temp2 );
IlMinBlue = MIN3( leftPixel->blue, temp1, temp2 );
temp1 = ( (rightPixel - 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX2( rightPixel->blue, temp1 );
IrMinBlue = MIN2( rightPixel->blue, temp1 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->green - IlMaxGreen;
temp2 = IlMinGreen - rightPixel->green;
DrGreen = MAX3( 0, temp1, temp2 );
// Blue
temp1 = leftPixel->blue - IrMaxBlue;
temp2 = IrMinBlue - leftPixel->blue;
DlBlue = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->blue - IlMaxBlue;
temp2 = IlMinBlue - rightPixel->blue;
DrBlue = MAX3( 0, temp1, temp2 );
} // case 3
break;
case -2: // xState = 1, yState = -1
{
// Red
temp1 = ( (leftPixel - 1)->red + leftPixel->red ) >> 1;
IlMaxRed = MAX2( leftPixel->red, temp1 );
IlMinRed = MIN2( leftPixel->red, temp1 );
temp2 = ( (rightPixel + 1)->red + rightPixel->red ) >> 1;
IrMaxRed = MAX2( rightPixel->red, temp2 );
IrMinRed = MIN2( rightPixel->red, temp2 );
// Green
temp1 = ( (leftPixel - 1)->green + leftPixel->green ) >> 1;
IlMaxGreen = MAX2( leftPixel->green, temp1 );
IlMinGreen = MIN2( leftPixel->green, temp1 );
temp2 = ( (rightPixel + 1)->green + rightPixel->green ) >> 1;
IrMaxGreen = MAX2( rightPixel->green, temp2 );
IrMinGreen = MIN2( rightPixel->green, temp2 );
// Blue
temp1 = ( (leftPixel - 1)->blue + leftPixel->blue ) >> 1;
IlMaxBlue = MAX2( leftPixel->blue, temp1 );
IlMinBlue = MIN2( leftPixel->blue, temp1 );
temp2 = ( (rightPixel + 1)->blue + rightPixel->blue ) >> 1;
IrMaxBlue = MAX2( rightPixel->blue, temp2 );
IrMinBlue = MIN2( rightPixel->blue, temp2 );
// Red
temp1 = leftPixel->red - IrMaxRed;
temp2 = IrMinRed - leftPixel->red;
DlRed = MAX3( 0, temp1, temp2 );
temp1 = rightPixel->red - IlMaxRed;
temp2 = IlMinRed - rightPixel->red;
DrRed = MAX3( 0, temp1, temp2 );
// Green
temp1 = leftPixel->green - IrMaxGreen;
temp2 = IrMinGreen - leftPixel->green;
DlGreen = MAX3( 0, temp1, temp2 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -