From 8f82e51563f0e1bc9b7a8adf669ad2b66e7ce3e5 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Thu, 28 Apr 2016 17:17:40 +0200 Subject: [PATCH] lib/cximage-6.0: fix compilation with gcc6 For a quick fix I renamed min() to cxmin() and max() to cxmax() to prevent the conflict with the gcc definition. Forum thread for reference: http://forum.kodi.tv/showthread.php?tid=263884 --- lib/cximage-6.0/CxImage/ximabmp.cpp | 6 +- lib/cximage-6.0/CxImage/ximadef.h | 8 +- lib/cximage-6.0/CxImage/ximadsp.cpp | 182 +++++++++++++++++------------------ lib/cximage-6.0/CxImage/ximage.cpp | 4 +- lib/cximage-6.0/CxImage/ximagif.cpp | 6 +- lib/cximage-6.0/CxImage/ximahist.cpp | 12 +-- lib/cximage-6.0/CxImage/ximaint.cpp | 8 +- lib/cximage-6.0/CxImage/ximaiter.h | 4 +- lib/cximage-6.0/CxImage/ximajbg.cpp | 2 +- lib/cximage-6.0/CxImage/ximapal.cpp | 14 +-- lib/cximage-6.0/CxImage/ximapng.cpp | 12 +-- lib/cximage-6.0/CxImage/ximaraw.cpp | 4 +- lib/cximage-6.0/CxImage/ximasel.cpp | 50 +++++----- lib/cximage-6.0/CxImage/ximath.cpp | 8 +- lib/cximage-6.0/CxImage/ximatif.cpp | 6 +- lib/cximage-6.0/CxImage/ximatran.cpp | 138 +++++++++++++------------- lib/cximage-6.0/CxImage/ximawnd.cpp | 16 +-- 17 files changed, 236 insertions(+), 244 deletions(-) diff --git a/lib/cximage-6.0/CxImage/ximabmp.cpp b/lib/cximage-6.0/CxImage/ximabmp.cpp index 726ff91..55842b1 100644 --- a/lib/cximage-6.0/CxImage/ximabmp.cpp +++ b/lib/cximage-6.0/CxImage/ximabmp.cpp @@ -46,7 +46,7 @@ bool CxImageBMP::Encode(CxFile * hFile) bihtoh(&infohdr); // Write the file header - hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1); + hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1); hFile->Write(&infohdr,sizeof(BITMAPINFOHEADER),1); //and DIB+ALPHA interlaced BYTE *srcalpha = AlphaGetPointer(); @@ -64,7 +64,7 @@ bool CxImageBMP::Encode(CxFile * hFile) #endif //CXIMAGE_SUPPORT_ALPHA { // Write the file header - hFile->Write(&hdr,min(14,sizeof(BITMAPFILEHEADER)),1); + hFile->Write(&hdr,cxmin(14,sizeof(BITMAPFILEHEADER)),1); //copy attributes memcpy(pDib,&head,sizeof(BITMAPINFOHEADER)); bihtoh((BITMAPINFOHEADER*)pDib); @@ -86,7 +86,7 @@ bool CxImageBMP::Decode(CxFile * hFile) BITMAPFILEHEADER bf; DWORD off = hFile->Tell(); // cx_try { - if (hFile->Read(&bf,min(14,sizeof(bf)),1)==0) cx_throw("Not a BMP"); + if (hFile->Read(&bf,cxmin(14,sizeof(bf)),1)==0) cx_throw("Not a BMP"); bf.bfSize = my_ntohl(bf.bfSize); bf.bfOffBits = my_ntohl(bf.bfOffBits); diff --git a/lib/cximage-6.0/CxImage/ximadef.h b/lib/cximage-6.0/CxImage/ximadef.h index fe383bf..53ea452 100644 --- a/lib/cximage-6.0/CxImage/ximadef.h +++ b/lib/cximage-6.0/CxImage/ximadef.h @@ -53,12 +53,8 @@ #define CXIMAGE_SUPPORT_WINDOWS 0 #endif -#ifndef min -#define min(a,b) (((a)<(b))?(a):(b)) -#endif -#ifndef max -#define max(a,b) (((a)>(b))?(a):(b)) -#endif +#define cxmin(a,b) (((a)<(b))?(a):(b)) +#define cxmax(a,b) (((a)>(b))?(a):(b)) #ifndef PI #define PI 3.141592653589793f diff --git a/lib/cximage-6.0/CxImage/ximadsp.cpp b/lib/cximage-6.0/CxImage/ximadsp.cpp index 8425bb2..813253b 100644 --- a/lib/cximage-6.0/CxImage/ximadsp.cpp +++ b/lib/cximage-6.0/CxImage/ximadsp.cpp @@ -389,8 +389,8 @@ RGBQUAD CxImage::RGBtoHSL(RGBQUAD lRGBColor) G = lRGBColor.rgbGreen; B = lRGBColor.rgbBlue; - cMax = max( max(R,G), B); /* calculate lightness */ - cMin = min( min(R,G), B); + cMax = cxmax( cxmax(R,G), B); /* calculate lightness */ + cMin = cxmin( cxmin(R,G), B); L = (BYTE)((((cMax+cMin)*HSLMAX)+RGBMAX)/(2*RGBMAX)); if (cMax==cMin){ /* r=g=b --> achromatic case */ @@ -489,9 +489,9 @@ RGBQUAD CxImage::YUVtoRGB(RGBQUAD lYUVColor) G = (int)( Y - 0.344f * U - 0.714f * V); B = (int)( Y + 1.770f * U); - R= min(255,max(0,R)); - G= min(255,max(0,G)); - B= min(255,max(0,B)); + R= cxmin(255,cxmax(0,R)); + G= cxmin(255,cxmax(0,G)); + B= cxmin(255,cxmax(0,B)); RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0}; return rgb; } @@ -510,9 +510,9 @@ RGBQUAD CxImage::RGBtoYUV(RGBQUAD lRGBColor) U = (int)((B-Y) * 0.565f + 128); V = (int)((R-Y) * 0.713f + 128); - Y= min(255,max(0,Y)); - U= min(255,max(0,U)); - V= min(255,max(0,V)); + Y= cxmin(255,cxmax(0,Y)); + U= cxmin(255,cxmax(0,U)); + V= cxmin(255,cxmax(0,V)); RGBQUAD yuv={(BYTE)V,(BYTE)U,(BYTE)Y,0}; return yuv; } @@ -528,9 +528,9 @@ RGBQUAD CxImage::YIQtoRGB(RGBQUAD lYIQColor) G = (int)( Y - 0.273f * I - 0.647f * Q); B = (int)( Y - 1.104f * I + 1.701f * Q); - R= min(255,max(0,R)); - G= min(255,max(0,G)); - B= min(255,max(0,B)); + R= cxmin(255,cxmax(0,R)); + G= cxmin(255,cxmax(0,G)); + B= cxmin(255,cxmax(0,B)); RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0}; return rgb; } @@ -546,9 +546,9 @@ RGBQUAD CxImage::RGBtoYIQ(RGBQUAD lRGBColor) I = (int)( 0.5960f * R - 0.2742f * G - 0.3219f * B + 128); Q = (int)( 0.2109f * R - 0.5229f * G + 0.3120f * B + 128); - Y= min(255,max(0,Y)); - I= min(255,max(0,I)); - Q= min(255,max(0,Q)); + Y= cxmin(255,cxmax(0,Y)); + I= cxmin(255,cxmax(0,I)); + Q= cxmin(255,cxmax(0,Q)); RGBQUAD yiq={(BYTE)Q,(BYTE)I,(BYTE)Y,0}; return yiq; } @@ -565,9 +565,9 @@ RGBQUAD CxImage::XYZtoRGB(RGBQUAD lXYZColor) G = (int)( -0.969256f * X + 1.875992f * Y + 0.041556f * Z * k); B = (int)( 0.055648f * X - 0.204043f * Y + 1.057311f * Z * k); - R= min(255,max(0,R)); - G= min(255,max(0,G)); - B= min(255,max(0,B)); + R= cxmin(255,cxmax(0,R)); + G= cxmin(255,cxmax(0,G)); + B= cxmin(255,cxmax(0,B)); RGBQUAD rgb={(BYTE)B,(BYTE)G,(BYTE)R,0}; return rgb; } @@ -583,9 +583,9 @@ RGBQUAD CxImage::RGBtoXYZ(RGBQUAD lRGBColor) Y = (int)( 0.212671f * R + 0.715160f * G + 0.072169f * B); Z = (int)((0.019334f * R + 0.119193f * G + 0.950227f * B)*0.918483657f); - //X= min(255,max(0,X)); - //Y= min(255,max(0,Y)); - //Z= min(255,max(0,Z)); + //X= cxmin(255,cxmax(0,X)); + //Y= cxmin(255,cxmax(0,Y)); + //Z= cxmin(255,cxmax(0,Z)); RGBQUAD xyz={(BYTE)Z,(BYTE)Y,(BYTE)X,0}; return xyz; } @@ -707,7 +707,7 @@ bool CxImage::Light(long brightness, long contrast) BYTE cTable[256]; // for (int i=0;i<256;i++) { - cTable[i] = (BYTE)max(0,min(255,(int)((i-128)*c + brightness + 0.5f))); + cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)((i-128)*c + brightness + 0.5f))); } return Lut(cTable); @@ -830,11 +830,11 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset) } } if (Kfactor==0 || ksumcur==0){ - cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b + Koffset))); + cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset))); } else if (ksumtot == ksumcur) { - cPtr2[iY1] = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset))); + cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset))); } else { - cPtr2[iY1] = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset))); + cPtr2[iY1] = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset))); } } } @@ -863,17 +863,17 @@ bool CxImage::Filter(long* kernel, long Ksize, long Kfactor, long Koffset) } } if (Kfactor==0 || ksumcur==0){ - c.rgbRed = (BYTE)min(255, max(0,(int)(r + Koffset))); - c.rgbGreen = (BYTE)min(255, max(0,(int)(g + Koffset))); - c.rgbBlue = (BYTE)min(255, max(0,(int)(b + Koffset))); + c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r + Koffset))); + c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g + Koffset))); + c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b + Koffset))); } else if (ksumtot == ksumcur) { - c.rgbRed = (BYTE)min(255, max(0,(int)(r/Kfactor + Koffset))); - c.rgbGreen = (BYTE)min(255, max(0,(int)(g/Kfactor + Koffset))); - c.rgbBlue = (BYTE)min(255, max(0,(int)(b/Kfactor + Koffset))); + c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(r/Kfactor + Koffset))); + c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(g/Kfactor + Koffset))); + c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(b/Kfactor + Koffset))); } else { - c.rgbRed = (BYTE)min(255, max(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset))); - c.rgbGreen = (BYTE)min(255, max(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset))); - c.rgbBlue = (BYTE)min(255, max(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset))); + c.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)((r*ksumtot)/(ksumcur*Kfactor) + Koffset))); + c.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)((g*ksumtot)/(ksumcur*Kfactor) + Koffset))); + c.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)((b*ksumtot)/(ksumcur*Kfactor) + Koffset))); } tmp.BlindSetPixelColor(x,y,c); } @@ -1078,8 +1078,8 @@ bool CxImage::Edge(long Ksize) // void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffset, bool bMixAlpha) { - long lWide = min(GetWidth(),imgsrc2.GetWidth()-lXOffset); - long lHeight = min(GetHeight(),imgsrc2.GetHeight()-lYOffset); + long lWide = cxmin(GetWidth(),imgsrc2.GetWidth()-lXOffset); + long lHeight = cxmin(GetHeight(),imgsrc2.GetHeight()-lYOffset); bool bEditAlpha = imgsrc2.AlphaIsValid() & bMixAlpha; @@ -1112,16 +1112,16 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse if (bEditAlpha) rgbDest.rgbReserved = (BYTE)((rgb1.rgbReserved+rgb2.rgbReserved)/2); break; case OpAdd: - rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue+rgb2.rgbBlue)); - rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen+rgb2.rgbGreen)); - rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed+rgb2.rgbRed)); - if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved+rgb2.rgbReserved)); + rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue+rgb2.rgbBlue)); + rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen+rgb2.rgbGreen)); + rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed+rgb2.rgbRed)); + if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved+rgb2.rgbReserved)); break; case OpSub: - rgbDest.rgbBlue = (BYTE)max(0,min(255,rgb1.rgbBlue-rgb2.rgbBlue)); - rgbDest.rgbGreen = (BYTE)max(0,min(255,rgb1.rgbGreen-rgb2.rgbGreen)); - rgbDest.rgbRed = (BYTE)max(0,min(255,rgb1.rgbRed-rgb2.rgbRed)); - if (bEditAlpha) rgbDest.rgbReserved = (BYTE)max(0,min(255,rgb1.rgbReserved-rgb2.rgbReserved)); + rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,rgb1.rgbBlue-rgb2.rgbBlue)); + rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,rgb1.rgbGreen-rgb2.rgbGreen)); + rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,rgb1.rgbRed-rgb2.rgbRed)); + if (bEditAlpha) rgbDest.rgbReserved = (BYTE)cxmax(0,cxmin(255,rgb1.rgbReserved-rgb2.rgbReserved)); break; case OpAnd: rgbDest.rgbBlue = (BYTE)(rgb1.rgbBlue&rgb2.rgbBlue); @@ -1202,11 +1202,11 @@ void CxImage::Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset, long lYOffse double dSmallAmt = dSmall*((double)rgb2.rgbBlue); if( lAverage < lThresh+1){ - rgbDest.rgbBlue = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbBlue) + + rgbDest.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbBlue) + dSmallAmt))); - rgbDest.rgbGreen = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbGreen) + + rgbDest.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbGreen) + dSmallAmt))); - rgbDest.rgbRed = (BYTE)max(0,min(255,(int)(dLarge*((double)rgb1.rgbRed) + + rgbDest.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(dLarge*((double)rgb1.rgbRed) + dSmallAmt))); } else @@ -1274,9 +1274,9 @@ bool CxImage::ShiftRGB(long r, long g, long b) #endif //CXIMAGE_SUPPORT_SELECTION { color = BlindGetPixelColor(x,y); - color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + r))); - color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + g))); - color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + b))); + color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + r))); + color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + g))); + color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + b))); BlindSetPixelColor(x,y,color); } } @@ -1284,9 +1284,9 @@ bool CxImage::ShiftRGB(long r, long g, long b) } else { for(DWORD j=0; j for (int i=0;i<256;i++) { - cTable[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax))); + cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax))); } return Lut(cTable); @@ -1337,21 +1337,21 @@ bool CxImage::GammaRGB(float gammaR, float gammaG, float gammaB) dMax = pow(255.0, dinvgamma) / 255.0; BYTE cTableR[256]; for (i=0;i<256;i++) { - cTableR[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax))); + cTableR[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax))); } dinvgamma = 1/gammaG; dMax = pow(255.0, dinvgamma) / 255.0; BYTE cTableG[256]; for (i=0;i<256;i++) { - cTableG[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax))); + cTableG[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax))); } dinvgamma = 1/gammaB; dMax = pow(255.0, dinvgamma) / 255.0; BYTE cTableB[256]; for (i=0;i<256;i++) { - cTableB[i] = (BYTE)max(0,min(255,(int)( pow((double)i, dinvgamma) / dMax))); + cTableB[i] = (BYTE)cxmax(0,cxmin(255,(int)( pow((double)i, dinvgamma) / dMax))); } return Lut(cTableR, cTableG, cTableB); @@ -1442,11 +1442,11 @@ bool CxImage::Noise(long level) { color = BlindGetPixelColor(x,y); n=(long)((rand()/(float)RAND_MAX - 0.5)*level); - color.rgbRed = (BYTE)max(0,min(255,(int)(color.rgbRed + n))); + color.rgbRed = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbRed + n))); n=(long)((rand()/(float)RAND_MAX - 0.5)*level); - color.rgbGreen = (BYTE)max(0,min(255,(int)(color.rgbGreen + n))); + color.rgbGreen = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbGreen + n))); n=(long)((rand()/(float)RAND_MAX - 0.5)*level); - color.rgbBlue = (BYTE)max(0,min(255,(int)(color.rgbBlue + n))); + color.rgbBlue = (BYTE)cxmax(0,cxmin(255,(int)(color.rgbBlue + n))); BlindSetPixelColor(x,y,color); } } @@ -1561,8 +1561,8 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage //DFT buffers double *real2,*imag2; - real2 = (double*)malloc(max(w,h) * sizeof(double)); - imag2 = (double*)malloc(max(w,h) * sizeof(double)); + real2 = (double*)malloc(cxmax(w,h) * sizeof(double)); + imag2 = (double*)malloc(cxmax(w,h) * sizeof(double)); /* Transform the rows */ real = (double *)malloc(w * sizeof(double)); @@ -1617,7 +1617,7 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage /* converting from double to byte, there is a HUGE loss in the dynamics "nn" tries to keep an acceptable SNR, but 8bit=48dB: don't ask more */ - double nn=pow((double)2,(double)log((double)max(w,h))/(double)log((double)2)-4); + double nn=pow((double)2,(double)log((double)cxmax(w,h))/(double)log((double)2)-4); //reversed gain for reversed transform if (direction==-1) nn=1/nn; //bMagnitude : just to see it on the screen @@ -1626,15 +1626,15 @@ bool CxImage::FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage for (j=0;jSetPixelIndex(k,j,(BYTE)max(0,min(255,(nn*(3+log(_cabs(grid[k][j]))))))); + tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(nn*(3+log(_cabs(grid[k][j]))))))); if (grid[k][j].x==0){ - tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/0.0000000001)*nn))))); + tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/0.0000000001)*nn))))); } else { - tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn))))); + tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128+(atan(grid[k][j].y/grid[k][j].x)*nn))))); } } else { - tmpReal->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].x*nn)))); - tmpImag->SetPixelIndex(k,j,(BYTE)max(0,min(255,(128 + grid[k][j].y*nn)))); + tmpReal->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].x*nn)))); + tmpImag->SetPixelIndex(k,j,(BYTE)cxmax(0,cxmin(255,(128 + grid[k][j].y*nn)))); } } } @@ -1922,7 +1922,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius) correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy); - tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5)))); + tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5)))); } } @@ -1943,7 +1943,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius) correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy); - tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5)))); + tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5)))); } } for (x=0;x<=w;x+=w){ @@ -1963,7 +1963,7 @@ bool CxImage::RepairChannel(CxImage *ch, float radius) correction = ((1.0+iy*iy)*ixx - ix*iy*ixy + (1.0+ix*ix)*iyy)/(1.0+ix*ix+iy*iy); - tmp.BlindSetPixelIndex(x,y,(BYTE)min(255,max(0,(xy0 + radius * correction + 0.5)))); + tmp.BlindSetPixelIndex(x,y,(BYTE)cxmin(255,cxmax(0,(xy0 + radius * correction + 0.5)))); } } @@ -2621,8 +2621,8 @@ bool CxImage::SelectiveBlur(float radius, BYTE threshold, CxImage* iDst) } //build the difference mask - BYTE thresh_dw = (BYTE)max( 0 ,(int)(128 - threshold)); - BYTE thresh_up = (BYTE)min(255,(int)(128 + threshold)); + BYTE thresh_dw = (BYTE)cxmax( 0 ,(int)(128 - threshold)); + BYTE thresh_up = (BYTE)cxmin(255,(int)(128 + threshold)); long kernel[]={-100,-100,-100,-100,801,-100,-100,-100,-100}; if (!Tmp.Filter(kernel,3,800,128)){ delete [] pPalette; @@ -2755,7 +2755,7 @@ bool CxImage::UnsharpMask(float radius /*= 5.0*/, float amount /*= 0.5*/, int th if (abs(diff) < threshold){ dest_row[z] = cur_row[z]; } else { - dest_row[z] = (BYTE)min(255, max(0,(int)(cur_row[z] + amount * diff))); + dest_row[z] = (BYTE)cxmin(255, cxmax(0,(int)(cur_row[z] + amount * diff))); } } } @@ -2952,7 +2952,7 @@ bool CxImage::RedEyeRemove(float strength) float a = 1.0f-5.0f*((float)((x-0.5f*(xmax+xmin))*(x-0.5f*(xmax+xmin))+(y-0.5f*(ymax+ymin))*(y-0.5f*(ymax+ymin))))/((float)((xmax-xmin)*(ymax-ymin))); if (a<0) a=0; color = BlindGetPixelColor(x,y); - color.rgbRed = (BYTE)(a*min(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed); + color.rgbRed = (BYTE)(a*cxmin(color.rgbGreen,color.rgbBlue)+(1.0f-a)*color.rgbRed); BlindSetPixelColor(x,y,color); } } @@ -2990,7 +2990,7 @@ bool CxImage::Saturate(const long saturation, const long colorspace) case 1: { for (int i=0;i<256;i++) { - cTable[i] = (BYTE)max(0,min(255,(int)(i + saturation))); + cTable[i] = (BYTE)cxmax(0,cxmin(255,(int)(i + saturation))); } for(long y=ymin; yleft,0); - xmax = min(pBox->right,head.biWidth); - ymin = max(pBox->bottom,0); - ymax = min(pBox->top,head.biHeight); + xmin = cxmax(pBox->left,0); + xmax = cxmin(pBox->right,head.biWidth); + ymin = cxmax(pBox->bottom,0); + ymax = cxmin(pBox->top,head.biHeight); } else { xmin = ymin = 0; xmax = head.biWidth; ymax=head.biHeight; @@ -3463,7 +3463,7 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa r.top = r.bottom + nBoxSize; int threshold = OptimalThreshold(method, &r, pContrastMask); if (threshold <0) return false; - mask.SetPixelIndex(x,y,(BYTE)max(0,min(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold)))); + mask.SetPixelIndex(x,y,(BYTE)cxmax(0,cxmin(255,nBias+((1.0f-fGlobalLocalBalance)*threshold + fGlobalLocalBalance*globalthreshold)))); } } @@ -3490,10 +3490,6 @@ bool CxImage::AdaptiveThreshold(long method, long nBoxSize, CxImage* pContrastMa * Note: nOpacity=0 && bSelectFilledArea=true act as a "magic wand" * \return true if everything is ok */ -#if defined(XBMC) && !defined(_WIN32) -int max(int a, int b) { return a > b ? a : b; } -int min(int a, int b) { return a < b ? a : b; } -#endif bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFillColor, const BYTE nTolerance, BYTE nOpacity, const bool bSelectFilledArea, const BYTE nSelectionLevel) @@ -3538,8 +3534,8 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil if (IsIndexed()){ //--- Generic indexed image, no tolerance OR Grayscale image with tolerance BYTE idxRef = GetPixelIndex(xStart,yStart); BYTE idxFill = GetNearestIndex(cFillColor); - BYTE idxMin = (BYTE)min(255, max(0,(int)(idxRef - nTolerance))); - BYTE idxMax = (BYTE)min(255, max(0,(int)(idxRef + nTolerance))); + BYTE idxMin = (BYTE)cxmin(255, cxmax(0,(int)(idxRef - nTolerance))); + BYTE idxMax = (BYTE)cxmin(255, cxmax(0,(int)(idxRef + nTolerance))); while(!q.empty()) { @@ -3575,12 +3571,12 @@ bool CxImage::FloodFill(const long xStart, const long yStart, const RGBQUAD cFil } else { //--- RGB image RGBQUAD cRef = GetPixelColor(xStart,yStart); RGBQUAD cRefMin, cRefMax; - cRefMin.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed - nTolerance))); - cRefMin.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen - nTolerance))); - cRefMin.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue - nTolerance))); - cRefMax.rgbRed = (BYTE)min(255, max(0,(int)(cRef.rgbRed + nTolerance))); - cRefMax.rgbGreen = (BYTE)min(255, max(0,(int)(cRef.rgbGreen + nTolerance))); - cRefMax.rgbBlue = (BYTE)min(255, max(0,(int)(cRef.rgbBlue + nTolerance))); + cRefMin.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed - nTolerance))); + cRefMin.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen - nTolerance))); + cRefMin.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue - nTolerance))); + cRefMax.rgbRed = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbRed + nTolerance))); + cRefMax.rgbGreen = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbGreen + nTolerance))); + cRefMax.rgbBlue = (BYTE)cxmin(255, cxmax(0,(int)(cRef.rgbBlue + nTolerance))); while(!q.empty()) { diff --git a/lib/cximage-6.0/CxImage/ximage.cpp b/lib/cximage-6.0/CxImage/ximage.cpp index e81d3c6..26c6993 100644 --- a/lib/cximage-6.0/CxImage/ximage.cpp +++ b/lib/cximage-6.0/CxImage/ximage.cpp @@ -460,7 +460,7 @@ bool CxImage::CreateFromArray(BYTE* pArray,DWORD dwWidth,DWORD dwHeight,DWORD dw src+=4; } } else { - memcpy(dst,src,min(info.dwEffWidth,dwBytesperline)); + memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline)); } } return true; @@ -500,7 +500,7 @@ bool CxImage::CreateFromMatrix(BYTE** ppMatrix,DWORD dwWidth,DWORD dwHeight,DWOR src+=4; } } else { - memcpy(dst,src,min(info.dwEffWidth,dwBytesperline)); + memcpy(dst,src,cxmin(info.dwEffWidth,dwBytesperline)); } } } diff --git a/lib/cximage-6.0/CxImage/ximagif.cpp b/lib/cximage-6.0/CxImage/ximagif.cpp index b89e061..64b1ccc 100644 --- a/lib/cximage-6.0/CxImage/ximagif.cpp +++ b/lib/cximage-6.0/CxImage/ximagif.cpp @@ -478,7 +478,7 @@ bool CxImageGIF::Encode(CxFile * fp, CxImage ** pImages, int pagecount, bool bLo ghost.EncodeHeader(fp); if (m_loops!=1){ - ghost.SetLoops(max(0,m_loops-1)); + ghost.SetLoops(cxmax(0,m_loops-1)); ghost.EncodeLoopExtension(fp); } @@ -1340,10 +1340,10 @@ void CxImageGIF::GetComment(char* sz_comment_out) //////////////////////////////////////////////////////////////////////////////// void CxImageGIF::GifMix(CxImage & imgsrc2, struct_image & imgdesc) { - long ymin = max(0,(long)(GetHeight()-imgdesc.t - imgdesc.h)); + long ymin = cxmax(0,(long)(GetHeight()-imgdesc.t - imgdesc.h)); long ymax = GetHeight()-imgdesc.t; long xmin = imgdesc.l; - long xmax = min(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w)); + long xmax = cxmin(GetWidth(), (DWORD)(imgdesc.l + imgdesc.w)); long ibg2= imgsrc2.GetTransIndex(); BYTE i2; diff --git a/lib/cximage-6.0/CxImage/ximahist.cpp b/lib/cximage-6.0/CxImage/ximahist.cpp index a2aed03..5391107 100644 --- a/lib/cximage-6.0/CxImage/ximahist.cpp +++ b/lib/cximage-6.0/CxImage/ximahist.cpp @@ -110,7 +110,7 @@ bool CxImage::HistogramStretch(long method, double threshold) // calculate LUT BYTE lut[256]; for (x = 0; x <256; x++){ - lut[x] = (BYTE)max(0,min(255,(255 * (x - minc) / (maxc - minc)))); + lut[x] = (BYTE)cxmax(0,cxmin(255,(255 * (x - minc) / (maxc - minc)))); } for (y=0; yGetEffWidth(); - else n = min(n,(int)ima->GetEffWidth()); + else n = cxmin(n,(int)ima->GetEffWidth()); if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0)) memcpy(IterImage,buf,n); } @@ -148,7 +148,7 @@ inline void CImageIterator::SetRow(BYTE *buf, int n) inline void CImageIterator::GetRow(BYTE *buf, int n) { if ((IterImage!=NULL)&&(buf!=NULL)&&(n>0)) - memcpy(buf,IterImage,min(n,(int)ima->GetEffWidth())); + memcpy(buf,IterImage,cxmin(n,(int)ima->GetEffWidth())); } ///////////////////////////////////////////////////////////////////// inline BYTE* CImageIterator::GetRow() diff --git a/lib/cximage-6.0/CxImage/ximajbg.cpp b/lib/cximage-6.0/CxImage/ximajbg.cpp index 06fb9bf..8a01e28 100644 --- a/lib/cximage-6.0/CxImage/ximajbg.cpp +++ b/lib/cximage-6.0/CxImage/ximajbg.cpp @@ -145,7 +145,7 @@ bool CxImageJBG::Encode(CxFile * hFile) jbg_enc_init(&jbig_state, w, h, planes, &buffer, jbig_data_out, hFile); //jbg_enc_layers(&jbig_state, 2); - //jbg_enc_lrlmax(&jbig_state, 800, 600); + //jbg_enc_lrlcxmax(&jbig_state, 800, 600); // Specify a few other options (each is ignored if negative) int dl = -1, dh = -1, d = -1, l0 = -1, mx = -1; diff --git a/lib/cximage-6.0/CxImage/ximapal.cpp b/lib/cximage-6.0/CxImage/ximapal.cpp index b3bd3da..3788c98 100644 --- a/lib/cximage-6.0/CxImage/ximapal.cpp +++ b/lib/cximage-6.0/CxImage/ximapal.cpp @@ -398,8 +398,8 @@ void CxImage::RGBtoBGR(BYTE *buffer, int length) { if (buffer && (head.biClrUsed==0)){ BYTE temp; - length = min(length,(int)info.dwEffWidth); - length = min(length,(int)(3*head.biWidth)); + length = cxmin(length,(int)info.dwEffWidth); + length = cxmin(length,(int)(3*head.biWidth)); for (int i=0;i needed for grayscale PNGs #ifdef USE_NEW_LIBPNG_API - int nshift = max(0,(_bit_depth>>3)-1)<<3; + int nshift = cxmax(0,(_bit_depth>>3)-1)<<3; #else - int nshift = max(0,(info_ptr->bit_depth>>3)-1)<<3; + int nshift = cxmax(0,(info_ptr->bit_depth>>3)-1)<<3; #endif #ifdef USE_NEW_LIBPNG_API @@ -255,10 +255,10 @@ bool CxImagePNG::Decode(CxFile *hFile) if (pal){ DWORD ip; #ifdef USE_NEW_LIBPNG_API - for (ip=0;ipnum_trans);ip++) + for (ip=0;ipnum_trans);ip++) #if PNG_LIBPNG_VER > 10399 pal[ip].rgbReserved=info_ptr->trans_alpha[ip]; #else @@ -737,9 +737,9 @@ bool CxImagePNG::Encode(CxFile *hFile) #endif // CXIMAGE_SUPPORT_ALPHA // #ifdef USE_NEW_LIBPNG_API - int row_size = max(info.dwEffWidth, (_width * _channels * _bit_depth / 8)); + int row_size = cxmax(info.dwEffWidth, (_width * _channels * _bit_depth / 8)); #else - int row_size = max(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8)); + int row_size = cxmax(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8)); info_ptr->rowbytes = row_size; #endif BYTE *row_pointers = new BYTE[row_size]; diff --git a/lib/cximage-6.0/CxImage/ximaraw.cpp b/lib/cximage-6.0/CxImage/ximaraw.cpp index fd86f96..52d964d 100644 --- a/lib/cximage-6.0/CxImage/ximaraw.cpp +++ b/lib/cximage-6.0/CxImage/ximaraw.cpp @@ -216,7 +216,7 @@ bool CxImageRAW::Decode(CxFile *hFile) DWORD size = dcr.width * (dcr.colors*dcr.opt.output_bps/8); RGBtoBGR(ppm,size); - memcpy(GetBits(dcr.height - 1 - row), ppm, min(size,GetEffWidth())); + memcpy(GetBits(dcr.height - 1 - row), ppm, cxmin(size,GetEffWidth())); } free (ppm); @@ -298,7 +298,7 @@ bool CxImageRAW::GetExifThumbnail(const char *filename, const char *outname, int // Resizing. if (image.GetWidth() > 256 || image.GetHeight() > 256) { - float amount = 256.0f / max(image.GetWidth(), image.GetHeight()); + float amount = 256.0f / cxmax(image.GetWidth(), image.GetHeight()); image.Resample((long)(image.GetWidth() * amount), (long)(image.GetHeight() * amount), 0); } diff --git a/lib/cximage-6.0/CxImage/ximasel.cpp b/lib/cximage-6.0/CxImage/ximasel.cpp index 3a7c9a1..37cd10f 100644 --- a/lib/cximage-6.0/CxImage/ximasel.cpp +++ b/lib/cximage-6.0/CxImage/ximasel.cpp @@ -113,15 +113,15 @@ bool CxImage::SelectionAddRect(RECT r, BYTE level) if (r.left r2.left) info.rSelectionBox.left = max(0L,min(head.biWidth,r2.left)); - if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = max(0L,min(head.biWidth,r2.right+1)); - if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = max(0L,min(head.biHeight,r2.bottom)); + if (info.rSelectionBox.top <= r2.top) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,r2.top+1)); + if (info.rSelectionBox.left > r2.left) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,r2.left)); + if (info.rSelectionBox.right <= r2.right) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,r2.right+1)); + if (info.rSelectionBox.bottom > r2.bottom) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,r2.bottom)); - long ymin = max(0L,min(head.biHeight,r2.bottom)); - long ymax = max(0L,min(head.biHeight,r2.top+1)); - long xmin = max(0L,min(head.biWidth,r2.left)); - long xmax = max(0L,min(head.biWidth,r2.right+1)); + long ymin = cxmax(0L,cxmin(head.biHeight,r2.bottom)); + long ymax = cxmax(0L,cxmin(head.biHeight,r2.top+1)); + long xmin = cxmax(0L,cxmin(head.biWidth,r2.left)); + long xmax = cxmax(0L,cxmin(head.biWidth,r2.right+1)); for (long y=ymin; y (xcenter - xradius)) info.rSelectionBox.left = max(0L,min(head.biWidth,(xcenter - xradius))); - if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = max(0L,min(head.biWidth,(xcenter + xradius + 1))); - if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = max(0L,min(head.biHeight,(ycenter - yradius))); - if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = max(0L,min(head.biHeight,(ycenter + yradius + 1))); + if (info.rSelectionBox.left > (xcenter - xradius)) info.rSelectionBox.left = cxmax(0L,cxmin(head.biWidth,(xcenter - xradius))); + if (info.rSelectionBox.right <= (xcenter + xradius)) info.rSelectionBox.right = cxmax(0L,cxmin(head.biWidth,(xcenter + xradius + 1))); + if (info.rSelectionBox.bottom > (ycenter - yradius)) info.rSelectionBox.bottom = cxmax(0L,cxmin(head.biHeight,(ycenter - yradius))); + if (info.rSelectionBox.top <= (ycenter + yradius)) info.rSelectionBox.top = cxmax(0L,cxmin(head.biHeight,(ycenter + yradius + 1))); - long xmin = max(0L,min(head.biWidth,xcenter - xradius)); - long xmax = max(0L,min(head.biWidth,xcenter + xradius + 1)); - long ymin = max(0L,min(head.biHeight,ycenter - yradius)); - long ymax = max(0L,min(head.biHeight,ycenter + yradius + 1)); + long xmin = cxmax(0L,cxmin(head.biWidth,xcenter - xradius)); + long xmax = cxmax(0L,cxmin(head.biWidth,xcenter + xradius + 1)); + long ymin = cxmax(0L,cxmin(head.biHeight,ycenter - yradius)); + long ymax = cxmax(0L,cxmin(head.biHeight,ycenter + yradius + 1)); long y,yo; - for (y=ymin; yx < next->x) {r2.left=current->x; r2.right=next->x; } else {r2.left=next->x ; r2.right=current->x; } if (current->y < next->y) {r2.bottom=current->y; r2.top=next->y; } else {r2.bottom=next->y ; r2.top=current->y; } - if (localbox.top < r2.top) localbox.top = max(0L,min(head.biHeight-1,r2.top+1)); - if (localbox.left > r2.left) localbox.left = max(0L,min(head.biWidth-1,r2.left-1)); - if (localbox.right < r2.right) localbox.right = max(0L,min(head.biWidth-1,r2.right+1)); - if (localbox.bottom > r2.bottom) localbox.bottom = max(0L,min(head.biHeight-1,r2.bottom-1)); + if (localbox.top < r2.top) localbox.top = cxmax(0L,cxmin(head.biHeight-1,r2.top+1)); + if (localbox.left > r2.left) localbox.left = cxmax(0L,cxmin(head.biWidth-1,r2.left-1)); + if (localbox.right < r2.right) localbox.right = cxmax(0L,cxmin(head.biWidth-1,r2.right+1)); + if (localbox.bottom > r2.bottom) localbox.bottom = cxmax(0L,cxmin(head.biHeight-1,r2.bottom-1)); i++; } @@ -385,10 +385,10 @@ bool CxImage::SelectionAddPolygon(POINT *points, long npoints, BYTE level) for (x=localbox.left; x<=localbox.right; x++) if (plocal[x + yoffset]!=1) pSelection[x + yoffset]=level; } - if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = min(head.biHeight,localbox.top + 1); - if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = min(head.biWidth,localbox.left); - if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = min(head.biWidth,localbox.right + 1); - if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = min(head.biHeight,localbox.bottom); + if (info.rSelectionBox.top <= localbox.top) info.rSelectionBox.top = cxmin(head.biHeight,localbox.top + 1); + if (info.rSelectionBox.left > localbox.left) info.rSelectionBox.left = cxmin(head.biWidth,localbox.left); + if (info.rSelectionBox.right <= localbox.right) info.rSelectionBox.right = cxmin(head.biWidth,localbox.right + 1); + if (info.rSelectionBox.bottom > localbox.bottom) info.rSelectionBox.bottom = cxmin(head.biHeight,localbox.bottom); free(plocal); free(pix); diff --git a/lib/cximage-6.0/CxImage/ximath.cpp b/lib/cximage-6.0/CxImage/ximath.cpp index 37533e2..f84eb72 100644 --- a/lib/cximage-6.0/CxImage/ximath.cpp +++ b/lib/cximage-6.0/CxImage/ximath.cpp @@ -64,10 +64,10 @@ CxRect2 CxRect2::CrossSection(CxRect2 const &r2) const */ { CxRect2 cs; - cs.botLeft.x=max(botLeft.x, r2.botLeft.x); - cs.botLeft.y=max(botLeft.y, r2.botLeft.y); - cs.topRight.x=min(topRight.x, r2.topRight.x); - cs.topRight.y=min(topRight.y, r2.topRight.y); + cs.botLeft.x=cxmax(botLeft.x, r2.botLeft.x); + cs.botLeft.y=cxmax(botLeft.y, r2.botLeft.y); + cs.topRight.x=cxmin(topRight.x, r2.topRight.x); + cs.topRight.y=cxmin(topRight.y, r2.topRight.y); if (cs.botLeft.x<=cs.topRight.x && cs.botLeft.y<=cs.topRight.y) { return cs; } else { diff --git a/lib/cximage-6.0/CxImage/ximatif.cpp b/lib/cximage-6.0/CxImage/ximatif.cpp index 658392a..002766c 100644 --- a/lib/cximage-6.0/CxImage/ximatif.cpp +++ b/lib/cximage-6.0/CxImage/ximatif.cpp @@ -470,9 +470,9 @@ bool CxImageTIF::Decode(CxFile * hFile) if ( cb > 0.00304 ) cb = 1.055 * pow(cb,0.41667) - 0.055; else cb = 12.92 * cb; - c.rgbRed =(BYTE)max(0,min(255,(int)(cr*255))); - c.rgbGreen=(BYTE)max(0,min(255,(int)(cg*255))); - c.rgbBlue =(BYTE)max(0,min(255,(int)(cb*255))); + c.rgbRed =(BYTE)cxmax(0,cxmin(255,(int)(cr*255))); + c.rgbGreen=(BYTE)cxmax(0,cxmin(255,(int)(cg*255))); + c.rgbBlue =(BYTE)cxmax(0,cxmin(255,(int)(cb*255))); SetPixelColor(xi,yi,c); #if CXIMAGE_SUPPORT_ALPHA diff --git a/lib/cximage-6.0/CxImage/ximatran.cpp b/lib/cximage-6.0/CxImage/ximatran.cpp index 64a71e7..84d5e03 100644 --- a/lib/cximage-6.0/CxImage/ximatran.cpp +++ b/lib/cximage-6.0/CxImage/ximatran.cpp @@ -302,12 +302,12 @@ bool CxImage::RotateLeft(CxImage* iDst) for (ys = 0; ys < newHeight; ys+=RBLOCK) { if (head.biBitCount==24) { //RGB24 optimized pixel access: - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ //do rotation + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ //do rotation info.nProgress = (long)(100*x/newWidth); x2=newWidth-x-1; dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(x,ys); srcPtr = (BYTE*) BlindGetPixelPointer(ys, x2); - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ //imgDest.SetPixelColor(x, y, GetPixelColor(y, x2)); *(dstPtr) = *(srcPtr); *(dstPtr+1) = *(srcPtr+1); @@ -318,19 +318,19 @@ bool CxImage::RotateLeft(CxImage* iDst) }//for x } else { //anything else than 24bpp (and 1bpp): palette - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ info.nProgress = (long)(100*x/newWidth); // x2=newWidth-x-1; - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y, x2)); }//for y }//for x }//if (version selection) #if CXIMAGE_SUPPORT_ALPHA if (AlphaIsValid()) { - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ x2=newWidth-x-1; - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ imgDest.AlphaSet(x,y,BlindAlphaGet(y, x2)); }//for y }//for x @@ -343,9 +343,9 @@ bool CxImage::RotateLeft(CxImage* iDst) imgDest.info.rSelectionBox.right = newWidth-info.rSelectionBox.bottom; imgDest.info.rSelectionBox.bottom = info.rSelectionBox.left; imgDest.info.rSelectionBox.top = info.rSelectionBox.right; - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ x2=newWidth-x-1; - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ imgDest.SelectionSet(x,y,BlindSelectionGet(y, x2)); }//for y }//for x @@ -447,12 +447,12 @@ bool CxImage::RotateRight(CxImage* iDst) for (ys = 0; ys < newHeight; ys+=RBLOCK) { if (head.biBitCount==24) { //RGB24 optimized pixel access: - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ info.nProgress = (long)(100*y/newHeight); // y2=newHeight-y-1; dstPtr = (BYTE*) imgDest.BlindGetPixelPointer(xs,y); srcPtr = (BYTE*) BlindGetPixelPointer(y2, xs); - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ //imgDest.SetPixelColor(x, y, GetPixelColor(y2, x)); *(dstPtr) = *(srcPtr); *(dstPtr+1) = *(srcPtr+1); @@ -463,19 +463,19 @@ bool CxImage::RotateRight(CxImage* iDst) }//for y } else { //anything else than BW & RGB24: palette - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ info.nProgress = (long)(100*y/newHeight); // y2=newHeight-y-1; - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ imgDest.SetPixelIndex(x, y, BlindGetPixelIndex(y2, x)); }//for x }//for y }//if #if CXIMAGE_SUPPORT_ALPHA if (AlphaIsValid()){ - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ y2=newHeight-y-1; - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ imgDest.AlphaSet(x,y,BlindAlphaGet(y2, x)); }//for x }//for y @@ -488,9 +488,9 @@ bool CxImage::RotateRight(CxImage* iDst) imgDest.info.rSelectionBox.right = info.rSelectionBox.top; imgDest.info.rSelectionBox.bottom = newHeight-info.rSelectionBox.right; imgDest.info.rSelectionBox.top = newHeight-info.rSelectionBox.left; - for (y = ys; y < min(newHeight, ys+RBLOCK); y++){ + for (y = ys; y < cxmin(newHeight, ys+RBLOCK); y++){ y2=newHeight-y-1; - for (x = xs; x < min(newWidth, xs+RBLOCK); x++){ + for (x = xs; x < cxmin(newWidth, xs+RBLOCK); x++){ imgDest.SelectionSet(x,y,BlindSelectionGet(y2, x)); }//for x }//for y @@ -608,10 +608,10 @@ bool CxImage::Rotate(float angle, CxImage* iDst) newP4.x = (float)(p4.x*cos_angle - p4.y*sin_angle); newP4.y = (float)(p4.x*sin_angle + p4.y*cos_angle); - leftTop.x = min(min(newP1.x,newP2.x),min(newP3.x,newP4.x)); - leftTop.y = min(min(newP1.y,newP2.y),min(newP3.y,newP4.y)); - rightBottom.x = max(max(newP1.x,newP2.x),max(newP3.x,newP4.x)); - rightBottom.y = max(max(newP1.y,newP2.y),max(newP3.y,newP4.y)); + leftTop.x = cxmin(cxmin(newP1.x,newP2.x),cxmin(newP3.x,newP4.x)); + leftTop.y = cxmin(cxmin(newP1.y,newP2.y),cxmin(newP3.y,newP4.y)); + rightBottom.x = cxmax(cxmax(newP1.x,newP2.x),cxmax(newP3.x,newP4.x)); + rightBottom.y = cxmax(cxmax(newP1.y,newP2.y),cxmax(newP3.y,newP4.y)); leftBottom.x = leftTop.x; leftBottom.y = rightBottom.y; rightTop.x = rightBottom.x; @@ -740,10 +740,10 @@ bool CxImage::Rotate2(float angle, }//if //(read new dimensions from location of corners) - float minx = (float) min(min(newp[0].x,newp[1].x),min(newp[2].x,newp[3].x)); - float miny = (float) min(min(newp[0].y,newp[1].y),min(newp[2].y,newp[3].y)); - float maxx = (float) max(max(newp[0].x,newp[1].x),max(newp[2].x,newp[3].x)); - float maxy = (float) max(max(newp[0].y,newp[1].y),max(newp[2].y,newp[3].y)); + float minx = (float) cxmin(cxmin(newp[0].x,newp[1].x),cxmin(newp[2].x,newp[3].x)); + float miny = (float) cxmin(cxmin(newp[0].y,newp[1].y),cxmin(newp[2].y,newp[3].y)); + float maxx = (float) cxmax(cxmax(newp[0].x,newp[1].x),cxmax(newp[2].x,newp[3].x)); + float maxy = (float) cxmax(cxmax(newp[0].y,newp[1].y),cxmax(newp[2].y,newp[3].y)); int newWidth = (int) floor(maxx-minx+0.5f); int newHeight= (int) floor(maxy-miny+0.5f); float ssx=((maxx+minx)- ((float) newWidth-1))/2.0f; //start for x @@ -1003,12 +1003,12 @@ bool CxImage::Resample(long newx, long newy, int mode, CxImage* iDst) if (info.nEscape) break; fY = y * yScale; ifY = (int)fY; - ifY1 = min(ymax, ifY+1); + ifY1 = cxmin(ymax, ifY+1); dy = fY - ifY; for(long x=0; x 1 && fy > 1) { @@ -813,7 +813,7 @@ long CxImage::Draw(HDC hdc, long x, long y, long cx, long cy, RECT* pClipRect, b for(yy=0;yy>8);