CChromaMask::CChromaMask(CChromaDlg* pDlg) { int i; FRMTYPEINFO TypeInfo; BOOL EnableFade; m_pDlg = pDlg; ImgGetTypeInfo(pDlg->GetImage(), &TypeInfo); EnableFade = TypeInfo.DataType != FDT_LINEART && TypeInfo.DataType != FDT_PALETTECOLOR; ChromaCombineMode = SHAPE_ADD; Fade = EnableFade? 10 : 0; Delete = FALSE; ActiveChromaMask = Mask = 0; ChromaColorMode = IDC_CHROMA_HSL; for (i=0; i < NUM_CHROMAMASKS; i++) { MaskRange[i] = 10; MaskColor[i].rgb.red = 255; MaskColor[i].rgb.green = 255; MaskColor[i].rgb.blue = 255; RGBtoHSL(0, 0, 0, &MaskColor[i].hsl); RGBtoCMYK(0,0, 0, &MaskColor[i].cmyk); } }
static long RGB2Pixel_32(LPFRAME lpFrame, LPRGB lpFullRGB) { CMYKS cmyk; long color; RGBtoCMYK( lpFullRGB->red, lpFullRGB->green, lpFullRGB->blue, &cmyk); CopyCMYK( &cmyk, &color ); return(color); }
static void SetRGB_32( LPFRAME lpFrame, LPRGB lpRGBPixel, LPTR lpDst, int iPixelCount) { CMYKS cmyk; RGBtoCMYK( lpRGBPixel->red, lpRGBPixel->green, lpRGBPixel->blue, &cmyk); while(iPixelCount-- > 0) { *lpDst++ = cmyk.c; *lpDst++ = cmyk.m; *lpDst++ = cmyk.y; *lpDst++ = cmyk.k; } }
static void invert_proc( int y, int left, int right, LPTR lpDst, LPTR lpSrc, int depth, LPVOID lpParms ) { int iCount; if (depth == 4) { LPCMYK lpCMYKSrc = (LPCMYK)lpSrc; LPCMYK lpCMYKDst = (LPCMYK)lpDst; RGBS rgb; iCount = (right - left + 1); while (--iCount >= 0) { CMYKtoRGB( lpCMYKDst->c, lpCMYKDst->m, lpCMYKDst->y, lpCMYKDst->k, &rgb); RGBtoCMYK( (BYTE)(rgb.red^0xFF), (BYTE)(rgb.green^0xFF), (BYTE)(rgb.blue^0xFF), lpCMYKSrc ); lpCMYKSrc++; lpCMYKDst++; } } else { iCount = (right - left + 1) * depth; while (--iCount >= 0) { *lpSrc++ = (*lpDst++)^0xFF; } } }