单图处理的接口函数 Process_Plus

来源:互联网 发布:比较复杂的sql语句 编辑:程序博客网 时间:2024/06/15 20:36
void TAlpha::Process_Plus(HDC hdc, int X, int Y, int Width, int Height, typeprocess_plus_op_fun_ptr op_fun_ptr, void *funPara){ Process_PlusPara pluspara; AlphaPara para; para.X = X; para.Y = Y; para.Width = Width; para.Height = Height; pluspara.fptr = op_fun_ptr; pluspara.para = funPara; para.AdditionalPara = (void *)&pluspara; Process(hdc, &para, Process_Plus, 2);}

void _alpha__fastcall_pre_ TAlpha::Process_Plus(AlphaPara *Para){ typeprocess_plus_op_fun_ptr fptr = ((Process_PlusPara *)Para->AdditionalPara)->fptr; void *para = ((Process_PlusPara *)Para->AdditionalPara)->para; int width; int height; int height_1 = (height = Para->Height) - 1; int iPixelAdd; int ld = (iPixelAdd = Para->PixelAdd + 3) * (width = Para->Width) + Para->LineAdd; byte *ptrbuffer = Para->ptrBuffer; if (Para->PixelAdd == 1)  {   for (register int i = height_1; i >= 0; )    {     register byte *ptrDest = ptrbuffer + ld * i;     register int j = 0;     do      {       fptr(*(ptrDest + 2), *(ptrDest + 1), *ptrDest, *(ptrDest + 3), j, height_1 - i, width, height, para);       j++;       ptrDest += iPixelAdd;      }while(j < width);     i--;    }  } else  {   for (register int i = height_1; i >= 0; )    {     register byte *ptrDest = ptrbuffer + ld * i;     register int j = 0;     do      {       fptr(*(ptrDest + 2), *(ptrDest + 1), *ptrDest, 255, j, height_1 - i, width, height, para);       j++;       ptrDest += iPixelAdd;      }while(j < width);     i--;    }  }}
                 
          
原创粉丝点击