CxImage tmp(*this);
if (!tmp.IsValid()){
+ free(kernel);
strcpy(info.szLastError,tmp.GetLastError());
return false;
}
pPalette = new RGBQUAD[head.biClrUsed];
memcpy(pPalette, GetPalette(),GetPaletteSize());
if (!IncreaseBpp(24))
+ {
+ delete [] pPalette;
return false;
+ }
}
CxImage tmp(*this);
if (!tmp.IsValid()){
+ delete [] pPalette;
strcpy(info.szLastError,tmp.GetLastError());
return false;
}
pPalette = new RGBQUAD[head.biClrUsed];
memcpy(pPalette, GetPalette(),GetPaletteSize());
if (!IncreaseBpp(24))
+ {
+ delete [] pPalette;
return false;
+ }
}
CxImage tmp_x(*this, false, true, true);
if (!tmp_x.IsValid()){
strcpy(info.szLastError,tmp_x.GetLastError());
+ delete [] pPalette;
return false;
}
double dbScaler = 50.0f/head.biHeight;
// blur the rows
- for (y=0;y<head.biHeight;y++)
+ for (y=0;y<head.biHeight;y++)
{
if (info.nEscape) break;
info.nProgress = (long)(y*dbScaler);
CxImage tmp_y(tmp_x, false, true, true);
if (!tmp_y.IsValid()){
+ delete [] pPalette;
strcpy(info.szLastError,tmp_y.GetLastError());
return false;
}
CImageIterator itDst(&tmp_y);
// blur the cols
- BYTE* cur_col = (BYTE*)malloc(bypp*head.biHeight);
- BYTE* dest_col = (BYTE*)malloc(bypp*head.biHeight);
+ BYTE* cur_col = (BYTE*)malloc(bypp*head.biHeight);
+ BYTE* dest_col = (BYTE*)malloc(bypp*head.biHeight);
dbScaler = 50.0f/head.biWidth;
pPalette = new RGBQUAD[head.biClrUsed];
memcpy(pPalette, GetPalette(),GetPaletteSize());
if (!Tmp.IncreaseBpp(24))
+ {
+ delete [] pPalette;
return false;
+ }
}
CxImage Dst(Tmp, true, true, true);
if (!Dst.IsValid()){
+ delete [] pPalette;
strcpy(info.szLastError,Dst.GetLastError());
return false;
}
BYTE thresh_up = (BYTE)min(255,(int)(128 + threshold));
long kernel[]={-100,-100,-100,-100,801,-100,-100,-100,-100};
if (!Tmp.Filter(kernel,3,800,128)){
+ delete [] pPalette;
strcpy(info.szLastError,Tmp.GetLastError());
return false;
}
//blur the image (only in the selected pixels)
Dst.SelectionCopy(Tmp);
if (!Dst.GaussianBlur(radius)){
+ delete [] pPalette;
strcpy(info.szLastError,Dst.GetLastError());
return false;
}
pPalette = new RGBQUAD[head.biClrUsed];
memcpy(pPalette, GetPalette(),GetPaletteSize());
if (!IncreaseBpp(24))
+ {
+ delete [] pPalette;
return false;
+ }
}
BYTE* pFillMask = (BYTE*)calloc(head.biWidth * head.biHeight,1);
if (!pFillMask)
+ {
+ delete [] pPalette;
return false;
+ }
//------------------------------------- Begin of Flood Fill
POINT offset[4] = {{-1,0},{0,-1},{1,0},{0,1}};