// CLIPF32View.cpp : implementation of the CCLIPF32View class // #include "stdafx.h" #include "CLIPF32.h" #include "MainFrm.h" #include "CLIPF32Doc.h" #include "CLIPF32View.h" #include "BrowseFileDlg.h" #include "MyFileBrowse2.h" #include "AddMsgDlg.h" #include "KfmnRgnDlg.h" #include "Windowsx.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define INCREMENT(x, uLUTLen) ((x+1)% uLUTLen) #define DECREMENT(x, uLUTLen) ((x+ (uLUTLen - 1))% uLUTLen) #define ADD(x,y, uLUTLen) ((x+y)% uLUTLen) /* maximum number of steps between scroll extremes */ #define SCROLL_RATIO 10 ///////////////////////////////////////////////////////////////////////////// // CCLIPF32View IMPLEMENT_DYNCREATE(CCLIPF32View, CView) BEGIN_MESSAGE_MAP(CCLIPF32View, CView) //{{AFX_MSG_MAP(CCLIPF32View) ON_WM_CREATE() ON_COMMAND(IDM_FILTERS_SHADOW, OnFiltersShadow) ON_COMMAND(IDM_FILTERS_BND, OnFiltersBnd) ON_COMMAND(IDM_FILTERS_BUMP, OnFiltersBump) ON_COMMAND(IDM_FILTERS_CYLENDER, OnFiltersCylender) ON_COMMAND(IDM_FILTERS_FREE_PLANE_BEND, OnFiltersFreePlaneBend) ON_COMMAND(IDM_FILTERS_FREE_RAD_BEND, OnFiltersFreeRadBend) ON_COMMAND(IDM_FILTERS_PINCH, OnFiltersPinch) ON_COMMAND(IDM_FILTERS_PLANE, OnFiltersPlane) ON_COMMAND(IDM_FILTERS_PLANE_BEND, OnFiltersPlaneBend) ON_COMMAND(IDM_FILTERS_REVEFFECT, OnFiltersReveffect) ON_COMMAND(IDM_FILTERS_RIPPEL, OnFiltersRippel) ON_COMMAND(IDM_FILTERS_SPHERE, OnFiltersSphere) ON_COMMAND(IDM_FILTERS_TUNNEL, OnFiltersTunnel) ON_COMMAND(IDM_FILTERS_CUBISM_EFFECT, OnFiltersCubismEffect) ON_COMMAND(IDM_FILTERS_DRY, OnFiltersDry) ON_COMMAND(IDM_FILTERS_IMPRESS, OnFiltersImpress) ON_COMMAND(IDM_FILTERS_ANTIALIAS, OnFiltersAntialias) ON_COMMAND(IDM_FILTERS_GAUSSIANBLUR, OnFiltersGaussianblur) ON_COMMAND(IDM_FILTERS_MOTIONBLUR, OnFiltersMotionblur) ON_COMMAND(IDM_FILTERS_MRAD, OnFiltersMrad) ON_COMMAND(IDM_FILTERS_SMOOTH, OnFiltersSmooth) ON_COMMAND(IDM_FILTERS_MZOOM, OnFiltersMzoom) ON_COMMAND(IDM_FILTERS_ADDBITMAP, OnFiltersAddbitmap) ON_COMMAND(IDM_FILTERS_COMBINE, OnFiltersCombine) ON_COMMAND(IDM_FILTERS_NUM, OnFiltersNum) ON_COMMAND(IDM_FILTERS_MULTIPLY, OnFiltersMultiply) ON_COMMAND(IDM_FILTERS_HANDWAVE, OnFiltersHandwave) ON_COMMAND(IDM_FILTERS_OCEAN, OnFiltersOcean) ON_COMMAND(IDM_FILTERS_POLAR, OnFiltersPolar) ON_COMMAND(IDM_FILTERS_WVRAD, OnFiltersWvrad) ON_COMMAND(IDM_FILTERS_SPIRAL, OnFiltersSpiral) ON_COMMAND(IDM_FILTERS_SHEAR, OnFiltersShear) ON_COMMAND(IDM_FILTERS_SWIRL, OnFiltersSwirl) ON_COMMAND(IDM_FILTERS_WAVE, OnFiltersWave) ON_COMMAND(IDM_FILTERS_WIND, OnFiltersWind) ON_COMMAND(IDM_FILTERS_WAVEZOOM, OnFiltersWavezoom) ON_COMMAND(IDM_FILTERS_FINDEDGES, OnFiltersFindedges) ON_COMMAND(IDM_FILTERS_EDGEDETECTION, OnFiltersEdgedetection) ON_COMMAND(IDM_FILTERS_GLOW, OnFiltersGlow) ON_COMMAND(IDM_FILTERS_COMSTS, OnFiltersComsts) ON_COMMAND(IDM_FILTERS_STATIS, OnFiltersStatis) ON_COMMAND(IDM_FILTERS_FADEMASK, OnFiltersFademask) ON_COMMAND(IDM_FILTERS_OPACITY, OnFiltersOpacity) ON_COMMAND(IDM_FILTERS_AGING, OnFiltersAging) ON_COMMAND(IDM_FILTERS_DEINTERLACE, OnFiltersDeinterlace) ON_COMMAND(IDM_FILTERS_FREEHANDNOISE, OnFiltersFreehandnoise) ON_COMMAND(IDM_FILTERS_ADDNOISE, OnFiltersAddnoise) ON_COMMAND(IDM_FILTERS_ADDFUNCNOISE, OnFiltersAddfuncnoise) ON_COMMAND(IDM_FILTERS_MAX, OnFiltersMax) ON_COMMAND(IDM_FILTERS_MEDIAN, OnFiltersMedian) ON_COMMAND(IDM_FILTERS_MIN, OnFiltersMin) ON_COMMAND(IDM_FILTERS_DICE, OnFiltersDice) ON_COMMAND(IDM_FILTERS_GLASS_EFFECT, OnFiltersGlassEffect) ON_COMMAND(IDM_FILTERS_PUZZLE, OnFiltersPuzzle) ON_COMMAND(IDM_FILTERS_PIXELATE, OnFiltersPixelate) ON_COMMAND(ID_FILTERS_PIXELATE_PICTURIZE_USESAMEIMAGE, OnFiltersPixelatePicturizeUsesameimage) ON_COMMAND(ID_FILTERS_PIXELATE_PICTURIZE_USEMULTIPLEBITMAPS, OnFiltersPixelatePicturizeUsemultiplebitmaps) ON_COMMAND(ID_FILTERS_PIXELATE_PICTURIZE_SPECIFYDIRECTORYASASOURCE, OnFiltersPixelatePicturizeSpecifydirectoryasasource) ON_COMMAND(IDM_FILTERS_LENS, OnFiltersLens) ON_COMMAND(IDM_FILTERS_LIGHT, OnFiltersLight) ON_COMMAND(IDM_FILTERS_UNSHARP, OnFiltersUnsharp) ON_COMMAND(IDM_FILTERS_CONVMATRIX, OnFiltersConvmatrix) ON_COMMAND(IDM_DETECTION_FFT, OnDetectionFft) ON_UPDATE_COMMAND_UI(IDM_DETECTION_FFT, OnUpdateDetectionFft) ON_COMMAND(IDM_DETECTION_DFT, OnDetectionDft) ON_COMMAND(IDM_DETECTION_ONOFFMASK, OnDetectionOnoffmask) ON_COMMAND(IDM_DETECTION_DISPLAYFOURIER, OnDetectionDisplayfourier) ON_COMMAND(IDM_DETECTION_CONV, OnDetectionConv) ON_COMMAND(IDM_DETECTION_SEG, OnDetectionSeg) ON_COMMAND(IDM_DETECTION_SKELTON, OnDetectionSkelton) ON_COMMAND(IDM_COLOR_GRAY8, OnColorGray8) ON_COMMAND(IDM_COLOR_GRAY12, OnColorGray12) ON_COMMAND(IDM_COLOR_GRAY16, OnColorGray16) ON_COMMAND(IDM_COLOR_AUTOLEVEL, OnColorAutolevel) ON_COMMAND(IDM_COLOR_AUTOCONTRAST, OnColorAutocontrast) ON_COMMAND(IDM_COLOR_AUTOLUMINOSITY, OnColorAutoluminosity) ON_COMMAND(IDM_COLOR_BCI, OnColorBci) ON_COMMAND(IDM_COLOR_LEVELING, OnColorLeveling) ON_COMMAND(IDM_COLOR_BALANCECOLOR, OnColorBalancecolor) ON_COMMAND(IDM_COLOR_CHANNELMIXER, OnColorChannelmixer) ON_COMMAND(IDM_COLOR_BALANCECOLORS, OnColorBalancecolors) ON_COMMAND(IDM_COLOR_DESAT, OnColorDesat) ON_COMMAND(IDM_COLOR_FILLBITMAP, OnColorFillbitmap) ON_COMMAND(IDM_COLOR_HSB, OnColorHsb) ON_COMMAND(IDM_COLOR_LIGHT_CONTROL, OnColorLightControl) ON_COMMAND(IDM_COLOR_MATH, OnColorMath) ON_COMMAND(IDM_COLOR_REPCLR, OnColorRepclr) ON_COMMAND(IDM_COLOR_SAMPLE_TARGET, OnColorSampleTarget) ON_COMMAND(IDM_COLOR_SELECTIVECOLOR, OnColorSelectivecolor) ON_COMMAND(IDM_COLOR_SWAPCOLOR, OnColorSwapcolor) ON_COMMAND(IDM_COLOR_ACE, OnColorAce) ON_COMMAND(IDM_COLOR_HISTOGRAMEQUALIZE, OnColorHistogramequalize) ON_COMMAND(IDM_COLOR_LOCALHISTO, OnColorLocalhisto) ON_COMMAND(IDM_COLOR_REMAPHUE, OnColorRemaphue) ON_COMMAND(IDM_COLOR_REMAPINTENSITY, OnColorRemapintensity) ON_COMMAND(IDM_COLOR_AUTOBINARYSEGMENT, OnColorAutobinarysegment) ON_COMMAND(IDM_COLOR_COLORTHRESHOLD, OnColorColorthreshold) ON_COMMAND(IDM_COLOR_DYNAMICTHRESHOLD, OnColorDynamicthreshold) ON_COMMAND(IDM_COLOR_BINARYSEGMENT, OnColorBinarysegment) ON_COMMAND(IDM_COLOR_CLRRES, OnColorClrres) ON_COMMAND(IDM_COLOR_COLOREDGRAY, OnColorColoredgray) ON_COMMAND(IDM_COLOR_DUOTONE, OnColorDuotone) ON_COMMAND(IDM_COLOR_CONVERTTOGRAY, OnColorConverttogray) ON_COMMAND(IDM_COLOR_HALFTONE, OnColorHalftone) ON_COMMAND(IDM_IMAGE_ANALYSIS_HISTOGRAM, OnImageAnalysisHistogram) ON_COMMAND(IDM_IMAGE_GETFERETS, OnImageGetferets) ON_COMMAND(IDM_IMAGE_GETRGNPERIMETER, OnImageGetrgnperimeter) ON_COMMAND(IDM_IMAGE_GETOBJECTINFOW, OnImageGetobjectinfow) ON_COMMAND(IDM_IMAGE_GETOBJECTINFONW, OnImageGetobjectinfonw) ON_COMMAND(IDM_IMAGE_REDEYEREMOVE, OnImageRedeyeremove) ON_COMMAND(IDM_IMAGE_ADDBORDER, OnViewAddborder) ON_COMMAND(IDM_IMAGE_ADDFRAME, OnViewAddframe) ON_COMMAND(IDM_IMAGE_ADDSTAR, OnImageStar) ON_COMMAND(IDM_IMAGE_ADDMESSAGE, OnImageAddmessage) ON_COMMAND(IDM_IMAGE_EXTRACTMESSAGE, OnImageExtractmessage) ON_COMMAND(IDM_IMAGE_RESIZE, OnImageResize) ON_COMMAND(ID_IMAGE_MEDICAL_BRAINANALYSIS, OnBrainAnalysis) ON_COMMAND(IDM_IMAGE_MEDICAL_GRAYCOLORATION, OnImageGraycoloration) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_GRAYCOLORATION, OnUpdateImageGraycoloration) ON_COMMAND(IDM_IMAGE_MEDICAL_DSA, OnImageDsa) ON_COMMAND(IDM_IMAGE_MEDICAL_CR, OnImageCr) ON_COMMAND(IDM_IMAGE_MEDICAL_BITMAPSELECTOR, OnImageBitmapselector) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_BITMAPSELECTOR, OnUpdateImageBitmapselector) ON_COMMAND(IDM_IMAGE_MEDICAL_SHIFTBITMAP, OnImageShiftbitmap) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_SHIFTBITMAP, OnUpdateImageShiftbitmap) ON_COMMAND(IDM_IMAGE_MEDICAL_SUBTRACTBACKGROUND, OnImageSubtractbackground) ON_UPDATE_COMMAND_UI(IDM_IMAGE_ANALYSIS_HISTOGRAM, OnUpdateImageAnalysisHistogram) ON_UPDATE_COMMAND_UI(IDM_IMAGE_GETRGNPERIMETER, OnUpdateImageGetrgnperimeter) ON_UPDATE_COMMAND_UI(IDM_IMAGE_GETFERETS, OnUpdateImageGetferets) ON_UPDATE_COMMAND_UI(IDM_IMAGE_GETOBJECTINFOW, OnUpdateImageGetobjectinfow) ON_UPDATE_COMMAND_UI(IDM_IMAGE_GETOBJECTINFONW, OnUpdateImageGetobjectinfonw) ON_UPDATE_COMMAND_UI(IDM_IMAGE_REDEYEREMOVE, OnUpdateImageRedeyeremove) ON_UPDATE_COMMAND_UI(IDM_IMAGE_ADDBORDER, OnUpdateImageAddborder) ON_UPDATE_COMMAND_UI(IDM_IMAGE_ADDFRAME, OnUpdateImageAddframe) ON_UPDATE_COMMAND_UI(IDM_IMAGE_ADDSTAR, OnUpdateImageAddstar) ON_UPDATE_COMMAND_UI(IDM_IMAGE_ADDMESSAGE, OnUpdateImageAddmessage) ON_UPDATE_COMMAND_UI(IDM_IMAGE_EXTRACTMESSAGE, OnUpdateImageExtractmessage) ON_UPDATE_COMMAND_UI(IDM_IMAGE_RESIZE, OnUpdateImageResize) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_DSA, OnUpdateImageMedicalDsa) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_CR, OnUpdateImageMedicalCr) ON_UPDATE_COMMAND_UI(IDM_IMAGE_MEDICAL_SUBTRACTBACKGROUND, OnUpdateImageMedicalSubtractbackground) ON_UPDATE_COMMAND_UI(IDM_COLOR_GRAY8, OnUpdateColorGray8) ON_UPDATE_COMMAND_UI(IDM_COLOR_GRAY12, OnUpdateColorGray12) ON_UPDATE_COMMAND_UI(IDM_COLOR_GRAY16, OnUpdateColorGray16) ON_UPDATE_COMMAND_UI(IDM_COLOR_AUTOLEVEL, OnUpdateColorAutolevel) ON_UPDATE_COMMAND_UI(IDM_COLOR_AUTOCONTRAST, OnUpdateColorAutocontrast) ON_UPDATE_COMMAND_UI(IDM_COLOR_AUTOLUMINOSITY, OnUpdateColorAutoluminosity) ON_UPDATE_COMMAND_UI(IDM_COLOR_BCI, OnUpdateColorBci) ON_UPDATE_COMMAND_UI(IDM_COLOR_LEVELING, OnUpdateColorLeveling) ON_UPDATE_COMMAND_UI(IDM_COLOR_BALANCECOLOR, OnUpdateColorBalancecolor) ON_UPDATE_COMMAND_UI(IDM_COLOR_CHANNELMIXER, OnUpdateColorChannelmixer) ON_UPDATE_COMMAND_UI(IDM_COLOR_BALANCECOLORS, OnUpdateColorBalancecolors) ON_UPDATE_COMMAND_UI(IDM_COLOR_DESAT, OnUpdateColorDesat) ON_UPDATE_COMMAND_UI(IDM_COLOR_FILLBITMAP, OnUpdateColorFillbitmap) ON_UPDATE_COMMAND_UI(IDM_COLOR_HSB, OnUpdateColorHsb) ON_UPDATE_COMMAND_UI(IDM_COLOR_LIGHT_CONTROL, OnUpdateColorLightControl) ON_UPDATE_COMMAND_UI(IDM_COLOR_MATH, OnUpdateColorMath) ON_UPDATE_COMMAND_UI(IDM_COLOR_REPCLR, OnUpdateColorRepclr) ON_UPDATE_COMMAND_UI(IDM_COLOR_SAMPLE_TARGET, OnUpdateColorSampleTarget) ON_UPDATE_COMMAND_UI(IDM_COLOR_SELECTIVECOLOR, OnUpdateColorSelectivecolor) ON_UPDATE_COMMAND_UI(IDM_COLOR_SWAPCOLOR, OnUpdateColorSwapcolor) ON_UPDATE_COMMAND_UI(IDM_COLOR_ACE, OnUpdateColorAce) ON_UPDATE_COMMAND_UI(IDM_COLOR_HISTOGRAMEQUALIZE, OnUpdateColorHistogramequalize) ON_UPDATE_COMMAND_UI(IDM_COLOR_LOCALHISTO, OnUpdateColorLocalhisto) ON_UPDATE_COMMAND_UI(IDM_COLOR_REMAPHUE, OnUpdateColorRemaphue) ON_UPDATE_COMMAND_UI(IDM_COLOR_REMAPINTENSITY, OnUpdateColorRemapintensity) ON_UPDATE_COMMAND_UI(IDM_COLOR_AUTOBINARYSEGMENT, OnUpdateColorAutobinarysegment) ON_UPDATE_COMMAND_UI(IDM_COLOR_COLORTHRESHOLD, OnUpdateColorColorthreshold) ON_UPDATE_COMMAND_UI(IDM_COLOR_DYNAMICTHRESHOLD, OnUpdateColorDynamicthreshold) ON_UPDATE_COMMAND_UI(IDM_COLOR_BINARYSEGMENT, OnUpdateColorBinarysegment) ON_UPDATE_COMMAND_UI(IDM_COLOR_CLRRES, OnUpdateColorClrres) ON_UPDATE_COMMAND_UI(IDM_COLOR_COLOREDGRAY, OnUpdateColorColoredgray) ON_UPDATE_COMMAND_UI(IDM_COLOR_DUOTONE, OnUpdateColorDuotone) ON_UPDATE_COMMAND_UI(IDM_COLOR_CONVERTTOGRAY, OnUpdateColorConverttogray) ON_UPDATE_COMMAND_UI(IDM_COLOR_HALFTONE, OnUpdateColorHalftone) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SHADOW, OnUpdateFiltersShadow) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SHEAR, OnUpdateFiltersShear) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SMOOTH, OnUpdateFiltersSmooth) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SPHERE, OnUpdateFiltersSphere) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SPIRAL, OnUpdateFiltersSpiral) ON_UPDATE_COMMAND_UI(IDM_FILTERS_STATIS, OnUpdateFiltersStatis) ON_UPDATE_COMMAND_UI(IDM_FILTERS_SWIRL, OnUpdateFiltersSwirl) ON_UPDATE_COMMAND_UI(IDM_FILTERS_TUNNEL, OnUpdateFiltersTunnel) ON_UPDATE_COMMAND_UI(IDM_FILTERS_UNSHARP, OnUpdateFiltersUnsharp) ON_UPDATE_COMMAND_UI(IDM_FILTERS_WAVE, OnUpdateFiltersWave) ON_UPDATE_COMMAND_UI(IDM_FILTERS_WAVEZOOM, OnUpdateFiltersWavezoom) ON_UPDATE_COMMAND_UI(IDM_FILTERS_WIND, OnUpdateFiltersWind) ON_UPDATE_COMMAND_UI(IDM_FILTERS_WVRAD, OnUpdateFiltersWvrad) ON_UPDATE_COMMAND_UI(IDM_FILTERS_RIPPEL, OnUpdateFiltersRippel) ON_UPDATE_COMMAND_UI(IDM_FILTERS_REVEFFECT, OnUpdateFiltersReveffect) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PUZZLE, OnUpdateFiltersPuzzle) ON_UPDATE_COMMAND_UI(IDM_FILTERS_POLAR, OnUpdateFiltersPolar) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PLANE_BEND, OnUpdateFiltersPlaneBend) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PLANE, OnUpdateFiltersPlane) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PIXELATE, OnUpdateFiltersPixelate) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PINCH, OnUpdateFiltersPinch) ON_UPDATE_COMMAND_UI(IDM_FILTERS_OPACITY, OnUpdateFiltersOpacity) ON_UPDATE_COMMAND_UI(IDM_FILTERS_OCEAN, OnUpdateFiltersOcean) ON_UPDATE_COMMAND_UI(IDM_FILTERS_NUM, OnUpdateFiltersNum) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MZOOM, OnUpdateFiltersMzoom) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MULTIPLY, OnUpdateFiltersMultiply) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MRAD, OnUpdateFiltersMrad) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MOTIONBLUR, OnUpdateFiltersMotionblur) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MIN, OnUpdateFiltersMin) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MEDIAN, OnUpdateFiltersMedian) ON_UPDATE_COMMAND_UI(IDM_FILTERS_MAX, OnUpdateFiltersMax) ON_UPDATE_COMMAND_UI(IDM_FILTERS_LIGHT, OnUpdateFiltersLight) ON_UPDATE_COMMAND_UI(IDM_FILTERS_LENS, OnUpdateFiltersLens) ON_UPDATE_COMMAND_UI(IDM_FILTERS_IMPRESS, OnUpdateFiltersImpress) ON_UPDATE_COMMAND_UI(IDM_FILTERS_HANDWAVE, OnUpdateFiltersHandwave) ON_UPDATE_COMMAND_UI(IDM_FILTERS_GLOW, OnUpdateFiltersGlow) ON_UPDATE_COMMAND_UI(IDM_FILTERS_GLASS_EFFECT, OnUpdateFiltersGlassEffect) ON_UPDATE_COMMAND_UI(IDM_FILTERS_GAUSSIANBLUR, OnUpdateFiltersGaussianblur) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FREEHANDNOISE, OnUpdateFiltersFreehandnoise) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FREE_RAD_BEND, OnUpdateFiltersFreeRadBend) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FREE_PLANE_BEND, OnUpdateFiltersFreePlaneBend) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FINDEDGES, OnUpdateFiltersFindedges) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FADEMASK, OnUpdateFiltersFademask) ON_UPDATE_COMMAND_UI(IDM_FILTERS_EDGEDETECTION, OnUpdateFiltersEdgedetection) ON_UPDATE_COMMAND_UI(IDM_FILTERS_DRY, OnUpdateFiltersDry) ON_UPDATE_COMMAND_UI(IDM_FILTERS_DICE, OnUpdateFiltersDice) ON_UPDATE_COMMAND_UI(IDM_FILTERS_DEINTERLACE, OnUpdateFiltersDeinterlace) ON_UPDATE_COMMAND_UI(IDM_FILTERS_CYLENDER, OnUpdateFiltersCylender) ON_UPDATE_COMMAND_UI(IDM_FILTERS_CUBISM_EFFECT, OnUpdateFiltersCubismEffect) ON_UPDATE_COMMAND_UI(IDM_FILTERS_CONVMATRIX, OnUpdateFiltersConvmatrix) ON_UPDATE_COMMAND_UI(IDM_FILTERS_COMSTS, OnUpdateFiltersComsts) ON_UPDATE_COMMAND_UI(IDM_FILTERS_COMBINE, OnUpdateFiltersCombine) ON_UPDATE_COMMAND_UI(IDM_FILTERS_BUMP, OnUpdateFiltersBump) ON_UPDATE_COMMAND_UI(IDM_FILTERS_BND, OnUpdateFiltersBnd) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ANTIALIAS, OnUpdateFiltersAntialias) ON_UPDATE_COMMAND_UI(IDM_FILTERS_AGING, OnUpdateFiltersAging) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ADDBITMAP, OnUpdateFiltersAddbitmap) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ADDNOISE, OnUpdateFiltersAddnoise) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ADDFUNCNOISE, OnUpdateFiltersAddfuncnoise) ON_UPDATE_COMMAND_UI(ID_FILTERS_PIXELATE_PICTURIZE_USESAMEIMAGE, OnUpdateFiltersPixelatePicturizeUsesameimage) ON_UPDATE_COMMAND_UI(ID_FILTERS_PIXELATE_PICTURIZE_USEMULTIPLEBITMAPS, OnUpdateFiltersPixelatePicturizeUsemultiplebitmaps) ON_UPDATE_COMMAND_UI(ID_FILTERS_PIXELATE_PICTURIZE_SPECIFYDIRECTORYASASOURCE, OnUpdateFiltersPixelatePicturizeSpecifydirectoryasasource) ON_UPDATE_COMMAND_UI(IDM_DETECTION_DFT, OnUpdateDetectionDft) ON_UPDATE_COMMAND_UI(IDM_DETECTION_ONOFFMASK, OnUpdateDetectionOnoffmask) ON_UPDATE_COMMAND_UI(IDM_DETECTION_DISPLAYFOURIER, OnUpdateDetectionDisplayfourier) ON_UPDATE_COMMAND_UI(IDM_DETECTION_CONV, OnUpdateDetectionConv) ON_UPDATE_COMMAND_UI(IDM_DETECTION_SEG, OnUpdateDetectionSeg) ON_UPDATE_COMMAND_UI(IDM_DETECTION_SKELTON, OnUpdateDetectionSkelton) ON_WM_KEYDOWN() ON_UPDATE_COMMAND_UI(IDM_FILTERS_MOSAICTILES, OnUpdateFiltersMosaictiles) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PERSPECTIVE, OnUpdateFiltersPerspective) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ROMANMOSAIC, OnUpdateFiltersRomanmosaic) ON_UPDATE_COMMAND_UI(IDM_FILTERS_ZIGZAG, OnUpdateFiltersZigzag) ON_UPDATE_COMMAND_UI(IDM_FILTERS_COLOREDBALLS, OnUpdateFiltersColoredballs) ON_UPDATE_COMMAND_UI(IDM_FILTERS_POINTILLIST, OnUpdateFiltersPointillist) ON_UPDATE_COMMAND_UI(IDM_FILTERS_COLOREDPENCILE, OnUpdateFiltersColoredpencile) ON_UPDATE_COMMAND_UI(IDM_FILTERS_DIFFUSEGLOW, OnUpdateFiltersDiffuseglow) ON_UPDATE_COMMAND_UI(IDM_FILTERS_DISPLACEMENT, OnUpdateFiltersDisplacement) ON_UPDATE_COMMAND_UI(IDM_FILTERS_EMBOSSEXT, OnUpdateFiltersEmbossext) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PERLINENOISE, OnUpdateFiltersPerlinenoise) ON_UPDATE_COMMAND_UI(IDM_FILTERS_FRAGMENT, OnUpdateFiltersFragment) ON_UPDATE_COMMAND_UI(IDM_FILTERS_PLASMA, OnUpdateFiltersPlasma) ON_UPDATE_COMMAND_UI(IDM_FILTERS_VIGNNET, OnUpdateFiltersVignnet) ON_UPDATE_COMMAND_UI(IDM_FILTERS_BRICKSTEXTURE, OnUpdateFiltersBrickstexture) ON_UPDATE_COMMAND_UI(IDM_FILTERS_CANVAS, OnUpdateFiltersCanvas) ON_UPDATE_COMMAND_UI(IDM_FILTERS_CLOUDS, OnUpdateFiltersClouds) ON_UPDATE_COMMAND_UI(IDM_FILTERS_OFFSET, OnUpdateFiltersOffset) ON_UPDATE_COMMAND_UI(ID_DETECTION_CORRELATIONLIST, OnUpdateDetectionCorrelationlist) ON_UPDATE_COMMAND_UI(ID_DETECTION_DESKEWEXT, OnUpdateDetectionDeskewext) ON_UPDATE_COMMAND_UI(IDM_COLOR_ADJUSTTINT, OnUpdateColorAdjusttint) ON_UPDATE_COMMAND_UI(IDM_COLOR_YUVGAMMA, OnUpdateColorYuvgamma) ON_UPDATE_COMMAND_UI(IDM_COLOR_COLOREDHALFTONE, OnUpdateColorColoredhalftone) ON_UPDATE_COMMAND_UI(IDM_COLOR_HALFTONEPATTERN, OnUpdateColorHalftonepattern) ON_UPDATE_COMMAND_UI(IDM_COLOR_HIGHPASSFILTER, OnUpdateColorHighpassfilter) ON_UPDATE_COMMAND_UI(ID_IMAGE_MEDICAL_BRAINANALYSIS, OnUpdateImageMedicalBrainanalysis) ON_COMMAND(IDM_FILTERS_MOSAICTILES, OnFiltersMosaictiles) ON_COMMAND(IDM_FILTERS_PERSPECTIVE, OnFiltersPerspective) ON_COMMAND(IDM_FILTERS_ROMANMOSAIC, OnFiltersRomanmosaic) ON_COMMAND(IDM_FILTERS_ZIGZAG, OnFiltersZigzag) ON_COMMAND(IDM_FILTERS_COLOREDBALLS, OnFiltersColoredballs) ON_COMMAND(IDM_FILTERS_POINTILLIST, OnFiltersPointillist) ON_COMMAND(IDM_FILTERS_COLOREDPENCILE, OnFiltersColoredpencile) ON_COMMAND(IDM_FILTERS_DIFFUSEGLOW, OnFiltersDiffuseglow) ON_COMMAND(IDM_FILTERS_DISPLACEMENT, OnFiltersDisplacement) ON_COMMAND(IDM_FILTERS_EMBOSSEXT, OnFiltersEmbossext) ON_COMMAND(IDM_FILTERS_PERLINENOISE, OnFiltersPerlinenoise) ON_COMMAND(IDM_FILTERS_FRAGMENT, OnFiltersFragment) ON_COMMAND(IDM_FILTERS_PLASMA, OnFiltersPlasma) ON_COMMAND(IDM_FILTERS_VIGNNET, OnFiltersVignnet) ON_COMMAND(IDM_FILTERS_BRICKSTEXTURE, OnFiltersBrickstexture) ON_COMMAND(IDM_FILTERS_CANVAS, OnFiltersCanvas) ON_COMMAND(IDM_FILTERS_CLOUDS, OnFiltersClouds) ON_COMMAND(IDM_FILTERS_OFFSET, OnFiltersOffset) ON_COMMAND(ID_DETECTION_CORRELATIONLIST, OnDetectionCorrelationlist) ON_COMMAND(ID_DETECTION_DESKEWEXT, OnDetectionDeskewext) ON_COMMAND(IDM_COLOR_ADJUSTTINT, OnColorAdjusttint) ON_COMMAND(IDM_COLOR_YUVGAMMA, OnColorYuvgamma) ON_COMMAND(IDM_COLOR_COLOREDHALFTONE, OnColorColoredhalftone) ON_COMMAND(IDM_COLOR_HALFTONEPATTERN, OnColorHalftonepattern) ON_COMMAND(IDM_COLOR_HIGHPASSFILTER, OnColorHighpassfilter) ON_WM_VSCROLL() ON_WM_HSCROLL() ON_WM_SIZE() ON_WM_ERASEBKGND() ON_WM_TIMER() ON_MESSAGE(WM_USER_CHANGECURSOR, OnChangeCursor) ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCLIPF32View construction/destruction CCLIPF32View::CCLIPF32View() { // TODO: add construction code here m_nHScrollMax = 0; m_nHScrollPos = 0; m_nHScrollStep = 0; m_cxClient = 0; m_cyClient = 0; m_nVScrollMax = 0; m_nVScrollPos = 0; m_nVScrollStep = 0; m_bInScroll = FALSE; m_DoubleBuffer.CreateHandle(); m_DoubleBuffer.EnableDoubleBuffer(TRUE); } CCLIPF32View::~CCLIPF32View() { m_Bitmap.EnableStatusCallBack( FALSE ); } BOOL CCLIPF32View::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CCLIPF32View drawing void CCLIPF32View::OnDraw(CDC* pDC) { // TODO: add draw code for native data here HPALETTE oldPalette = NULL; RECT rcClient; HDC hMemDC; GetClientRect(&rcClient); hMemDC = m_DoubleBuffer.Begin(pDC->m_hDC, rcClient.right-rcClient.left, rcClient.bottom-rcClient.top); FillRect(hMemDC, &rcClient,(HBRUSH)GetStockBrush( GRAY_BRUSH )); CCLIPF32Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if(m_Bitmap.GetPalette()) { oldPalette = SelectPalette(hMemDC, m_Bitmap.GetPalette(), TRUE); RealizePalette(hMemDC); } m_Bitmap.Paint()->SetDC(hMemDC); m_Bitmap.Paint()->PaintDC(SRCCOPY); //begin: drawing a region for the "Kaufmann" +++++// RECT rcDst; m_Bitmap.GetRects(NULL,NULL,&rcDst,NULL); m_Bitmap.OnDraw(hMemDC,rcDst); //end : drawing a region for the "Kaufmann" -----// // Reselect the old palette if(oldPalette ) SelectPalette(hMemDC, oldPalette, TRUE); m_DoubleBuffer.End(pDC->m_hDC); m_Bitmap.Paint()->SetDC(NULL); } ///////////////////////////////////////////////////////////////////////////// // CCLIPF32View diagnostics #ifdef _DEBUG void CCLIPF32View::AssertValid() const { CView::AssertValid(); } void CCLIPF32View::Dump(CDumpContext& dc) const { CView::Dump(dc); } CCLIPF32Doc* CCLIPF32View::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCLIPF32Doc))); return (CCLIPF32Doc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CCLIPF32View message handlers void CCLIPF32View::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class EnableScrollBarCtrl(SB_BOTH); SCROLLINFO info; memset(&info,0,sizeof(info)); GetScrollInfo( SB_HORZ, &info, SIF_ALL); SetScrollInfo( SB_HORZ, &info); memset(&info,0,sizeof(info)); GetScrollInfo( SB_VERT, &info, SIF_ALL); SetScrollInfo( SB_VERT, &info); m_Bitmap.m_hview = GetSafeHwnd(); m_Bitmap.m_pview = this; RECT rcClient; GetClientRect(&rcClient); SendNotifyMessage( WM_SIZE, SIZE_RESTORED, MAKELPARAM(rcClient.right,rcClient.bottom)); m_uTimer = ::SetTimer(GetSafeHwnd(), 2, 100, NULL); m_uFrameType = 0 ; m_hRegion = NULL; } int CCLIPF32View::OnCreate(LPCREATESTRUCT lpCreateStruct) { L_INT nCount=0; if (CView::OnCreate(lpCreateStruct) == -1) return -1; // getting current images path CCLIPF32App * pTheApp = (CCLIPF32App *)AfxGetApp(); HKEY hKey = HKEY_LOCAL_MACHINE; L_TCHAR szSubKey[MAX_PATH]; memset(szSubKey, 0, sizeof(szSubKey)); #ifndef UNICODE lstrcpy(szSubKey, TEXT("SOFTWARE\\LEAD Technologies, Inc.\\Images")); #else lstrcpy(szSubKey, TEXT("SOFTWARE\\LEAD Technologies, Inc.\\UnicodeImages")); #endif LONG nRet = RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hKey); if (nRet == 0) { DWORD lpType; BYTE data[MAX_PATH]; DWORD sizeData = MAX_PATH; memset(data,0,sizeof(data)); nRet = RegQueryValueEx(hKey, _T(""), NULL, &lpType, data, &sizeData); if (nRet == 0) pTheApp->m_csImagesPath.Format(_T("%s"), (L_TCHAR *)&data); RegCloseKey(hKey); } CString csFileName; csFileName.Format(TEXT("%s\\Image3.dic"), pTheApp->m_csImagesPath); lstrcpy(m_szFileName,csFileName.GetBuffer(csFileName.GetLength())); LoadOriginalBitmap(); m_Bitmap.EnableStatusCallBack( TRUE ); m_Bitmap.SetDisplayMode(DISPLAYMODE_ORDEREDDITHER, DISPLAYMODE_ORDEREDDITHER); if(m_Bitmap.GetBitsPerPixel() == 1) OnQueryNewPalette(); return 0; } L_INT CCLIPF32View::LoadOriginalBitmap() { L_INT nRet; BeginWaitCursor(); // Load the original bitmap nRet = m_Bitmap.Load(m_szFileName, 0, ORDER_BGRORGRAY); CRect rcClientRect; GetClientRect(rcClientRect); OnSize(0, rcClientRect.right, rcClientRect.bottom) ; EndWaitCursor() ; return nRet; } void CCLIPF32View::OnFiltersShadow() { L_INT nRet; L_UINT uAngle, uThreshold, uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAngle = SHADOW_E; uThreshold = 0; uFlags = SHADOW_CLR_RGB; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AddShadow( uAngle, uThreshold, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersBnd() { L_INT nRet, nValue; POINT ptCenter; COLORREF crFill; L_UINT uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); nValue = -100; ptCenter.x = (LONG)m_Bitmap.GetWidth()/2; ptCenter.y = (LONG)m_Bitmap.GetHeight()/2; crFill = RGB(0,0,0); uFlags = BND_NORM | FILL_CLR | FILL_WOUTROT; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Bending( nValue, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersBump() { L_INT nRet; BUMPDATA BumpData; L_TCHAR szMsg [L_MAXPATH] = _T(""); BumpData.uStructSize = sizeof (BUMPDATA); BumpData.nAzimuth = 0; BumpData.uElevation = 10; BumpData.uDepth = 1; BumpData.nXOffset = 0; BumpData.nYOffset = 0; BumpData.nXDst = 0; BumpData.nYDst = 0; BumpData.bTile = FALSE; BumpData.nBright = 0; BumpData.nIntensity = 0; BumpData.pLut = NULL; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.BumpMap ( m_Bitmap.GetHandle(), &BumpData ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersCylender() { L_INT nRet, nValue; L_UINT uType; L_TCHAR szMsg [L_MAXPATH] = _T(""); nValue = 50; uType = CYL_HORZ; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Cylindrical( nValue, uType ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFreePlaneBend() { L_INT nRet; L_UINT uCurveSize, uScale, uFlags; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); POINT ptUserPoint [4]; L_INT Curve[13]; uCurveSize = 13; uScale = 50; crFill = RGB(255,0,0); uFlags = FILL_CLR | FPB_VERT; /* Applay the filter*/ ptUserPoint [0].x = 0; ptUserPoint [0].y = 0; ptUserPoint [1].x = 3; ptUserPoint [1].y = 10; ptUserPoint [2].x = 9; ptUserPoint [2].y = -10; ptUserPoint [3].x = 12; ptUserPoint [3].y = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GetCurvePoints( Curve, ptUserPoint, 4, NULL, GUB_LINEAR ); nRet = m_Bitmap.FreePlaneBend( Curve, uCurveSize, uScale, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFreeRadBend() { L_INT nRet; L_UINT uCurveSize, uScale, uFlags; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); POINT ptUserPoint [4]; L_INT Curve[13]; POINT CenterPt; uCurveSize = 13; uScale = 50; crFill = RGB(255,0,0); uFlags = FILL_CLR | FILL_ROT; /* Applay the filter*/ ptUserPoint [0].x = 0; ptUserPoint [0].y = 0; ptUserPoint [1].x = 3; ptUserPoint [1].y = 10; ptUserPoint [2].x = 9; ptUserPoint [2].y = -10; ptUserPoint [3].x = 12; ptUserPoint [3].y = 0; CenterPt.x = m_Bitmap.GetWidth()/2; CenterPt.y = m_Bitmap.GetHeight()/2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GetCurvePoints( Curve, ptUserPoint, 4, NULL, GUB_LINEAR ); nRet = m_Bitmap.FreeRadBend( Curve, uCurveSize, uScale, CenterPt, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPinch() { L_INT nRet, nValue; L_UINT uStress, uFlags; POINT ptCenter; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); nValue = -50; uStress = 1; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; crFill = RGB(0,0,0); uFlags = FILL_NOCHG | FILL_WOUTROT; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Punch( nValue, uStress, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPlane() { L_INT nRet, nRepeat, nPydAngle, nDistance; L_UINT uFlags, uZValue, uPlaneOffset, uStretch, uStartBright, uEndBright, uBrightLength; POINT ptCenter; COLORREF crFill, crBright; L_TCHAR szMsg [L_MAXPATH] = _T(""); uZValue = 0; nDistance = m_Bitmap.GetHeight()/2; uPlaneOffset = m_Bitmap.GetHeight()/2; nRepeat = -1; nPydAngle = 0; uStretch = 100; uStartBright = 0; uEndBright = 100; uBrightLength = 50; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; crFill = RGB(255,255,255); crBright = RGB(255,255,255); uFlags = PLANE_FILL_CLR| PLANE_LEFT| PLANE_RIGHT| PLANE_UP| PLANE_DOWN; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Plane ( ptCenter, uZValue, nDistance, uPlaneOffset, nRepeat, nPydAngle, uStretch, uStartBright, uEndBright, uBrightLength, crBright, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPlaneBend() { L_INT nRet, nRepeat, nPydAngle, nDistance; L_UINT uFlags, uZValue, uBendFactor, uPlaneOffset, uStretch, uStartBright, uEndBright, uBrightLength; POINT ptCenter; COLORREF crFill, crBright; L_TCHAR szMsg [L_MAXPATH] = _T(""); uZValue = 0; nDistance = m_Bitmap.GetHeight()/2; uPlaneOffset = m_Bitmap.GetHeight()/2; nRepeat = -1; nPydAngle = 0; uStretch = 75; uBendFactor = 300; uStartBright = 0; uEndBright = 0; uBrightLength = 50; ptCenter.x = m_Bitmap.GetWidth() * 3 / 2; ptCenter.y = m_Bitmap.GetHeight()/2; crFill = RGB(255,255,255); crBright = RGB(0,0,0); uFlags = PLANE_FILL_CLR| PLANE_DOWN; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.PlaneBend( ptCenter, uZValue, nDistance, uPlaneOffset, nRepeat, nPydAngle, uStretch, uBendFactor, uStartBright, uEndBright, uBrightLength, crBright, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersReveffect() { L_INT nRet; L_UINT uLineSpace, uMaximumHeight; L_TCHAR szMsg [L_MAXPATH] = _T(""); uLineSpace = 7; uMaximumHeight = 35; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.RevEffect( uLineSpace, uMaximumHeight ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersRippel() { L_INT nRet, nPhase; L_UINT uAmplitude, uFrequency, uAttenuation, uFlags; POINT ptCenter; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAmplitude = 30; uFrequency = 6; nPhase = 0; uAttenuation = 0; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; crFill = RGB(0,0,0); uFlags = FILL_NOCHG; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Ripple( uAmplitude, uFrequency, nPhase, uAttenuation, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersSphere() { L_INT nRet, nValue; L_UINT uFlags; POINT ptCenter; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); nValue = 50; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; crFill = RGB(0,0,0); uFlags = FILL_CLR | FILL_WOUTROT; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Spherize( nValue, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersTunnel() { L_INT nRet, nDistance, nRepeat, nRotationOffset; L_UINT uFlags, uZValue, uRad, uStretch, uStartBright, uEndBright, uBrightLength; POINT ptCenter; COLORREF crFill, crBright; L_TCHAR szMsg [L_MAXPATH] = _T(""); ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; uZValue = 0; nDistance = m_Bitmap.GetHeight()/2; uRad = m_Bitmap.GetHeight()/2; nRepeat = -1; nRotationOffset = 0; uStretch = 75; uStartBright = 0; uEndBright = 0; uBrightLength = 50; crBright = RGB(255,255,255); crFill = RGB(255,255,255); uFlags = TUN_FILL_CLR| TUN_AXIS_WIDTH; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Tunnel( ptCenter, uZValue, nDistance, uRad, nRepeat, nRotationOffset, uStretch, uStartBright, uEndBright, uBrightLength, crBright, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersCubismEffect() { L_INT nRet, nBrightness, nAngle; L_UINT uSpace, uLength, uFlags; COLORREF crColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uSpace = 90; uLength = 200; nBrightness = 0; nAngle = 0; crColor = RGB(0,0,0); uFlags = CUB_BKG| CUB_SQR| CUB_RAND; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Cubism( uSpace, uLength, nBrightness, nAngle, crColor, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersDry() { L_INT nRet; L_UINT uDim; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Dry( uDim ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersImpress() { L_INT nRet; L_UINT uhHorzDim, uVertDim; L_TCHAR szMsg [L_MAXPATH] = _T(""); uhHorzDim = 3; uVertDim = 3; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Impressionist( uhHorzDim, uVertDim ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersAntialias() { L_INT nRet; L_UINT uThreshold, uDim, uFilter; L_TCHAR szMsg [L_MAXPATH] = _T(""); uThreshold = 0; uDim = 8; uFilter = ANTIALIAS_1; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AntiAlias ( uThreshold, uDim, uFilter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersGaussianblur() { L_INT nRet, nRadius; L_TCHAR szMsg [L_MAXPATH] = _T(""); nRadius = 50; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GaussianFilter( nRadius ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMotionblur() { L_INT nRet, nAngle; L_UINT uDim; L_BOOL bUnidirectional; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 20; nAngle = 4500; bUnidirectional = FALSE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MotionBlur( uDim, nAngle, bUnidirectional ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMrad() { L_INT nRet; L_UINT uDim, uStress; POINT ptCenter; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 25; uStress = 1; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.RadialBlur( uDim, uStress, ptCenter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersSmooth() { L_INT nRet; L_UINT nAmount, nThreshold; L_TCHAR szMsg [L_MAXPATH] = _T(""); nAmount = 50; nThreshold = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.SmoothEdges( nAmount, nThreshold ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMzoom() { L_INT nRet; L_UINT uDim, uStress; POINT ptCenter; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 30; uStress = 1; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ZoomBlur( uDim, uStress, ptCenter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersAddbitmap() { L_INT nRet; OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; LDialogFile LeadDlg; LBitmapBase Bitmap1; LBitmapBase Bitmap2; L_TCHAR szFileName [L_MAXPATH] = _T(""); L_TCHAR szMsg [L_MAXPATH] = _T(""); CMainFrame * pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Select Bitmap"); OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); if(LeadDlg.DoModalOpen(m_hWnd) == SUCCESS_DLG_OK) { LeadDlg.GetFileName(szFileName, sizeof(szFileName)); if ( Bitmap2.Load(szFileName, 0, ORDER_BGRORGRAY) == SUCCESS ) { // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor(); pFrame->m_DirectoryList.Create(); Bitmap1 = m_Bitmap; pFrame->m_DirectoryList.InsertItem( &Bitmap1, 0 ); pFrame->m_DirectoryList.InsertItem( &Bitmap2, 1 ); pFrame->m_nBitmapListCount = 2; nRet = m_Bitmap.Add(&pFrame->m_DirectoryList, BC_AVG ); pFrame->m_DirectoryList.Destroy(); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } } } RefreshBitmap(); } L_INT CCLIPF32View::GenerateBitampList(L_TCHAR L_FAR *pszFolder, LPDLGBITMAPLIST pDlgBitmapList, L_BOOL fThumbnail) { L_INT m_nBitmapsCount; THUMBOPTIONS ThumbOptions ; L_TCHAR szMsg [L_MAXPATH] = _T(""); ZeroMemory ( &ThumbOptions,sizeof ( THUMBOPTIONS ) ) ; ThumbOptions.uStructSize = sizeof ( THUMBOPTIONS ) ; ThumbOptions.nWidth = ( fThumbnail ? 250 : 0 ) ; ThumbOptions.nHeight = ( fThumbnail ? 250 : 0 ) ; ThumbOptions.nBits = 24 ; ThumbOptions.uCRFlags = CRF_BYTEORDERBGR ; ThumbOptions.bMaintainAspect = fThumbnail ; ThumbOptions.bForceSize = FALSE ; ThumbOptions.crBackColor = GetSysColor ( COLOR_BTNFACE ) ; ThumbOptions.bLoadStamp = FALSE ; ThumbOptions.bResample = TRUE ; m_nBitmapsCount = -1 ; MyFileBrowse BrowseDlg; BrowseDlg.m_pBitmapList = pDlgBitmapList; BrowseDlg.BrowseDir ( pszFolder, _T("*.*"), &ThumbOptions, FALSE, // don't stop on error FALSE, // do not recurse subdirectories FALSE, // do not expand multipage files 0, // no limit on file size 4000 * 1024) ; m_nBitmapsCount = BrowseDlg.m_ImageCount; if ( m_nBitmapsCount < 0 ) { MessageBox ( _T("There are file(s) cannot be loaded"), _T("Error"), 0 ) ; return FAILURE ; } else { pDlgBitmapList->nCount = m_nBitmapsCount + 1 ; } return SUCCESS ; } void CCLIPF32View::OnFiltersCombine() { OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; LDialogFile LeadDlg; LBitmapBase BitmapSrc; L_TCHAR szFileName [L_MAXPATH] = _T(""); L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Select Second Bitmap"); OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); if(LeadDlg.DoModalOpen(m_hWnd) == SUCCESS_DLG_OK) { LeadDlg.GetFileName(szFileName, sizeof(szFileName)); if ( BitmapSrc.Load(szFileName, 0, ORDER_BGRORGRAY) == SUCCESS ) { // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.CombineExt( &BitmapSrc, BitmapSrc.GetWidth(), BitmapSrc.GetHeight(), m_Bitmap.GetWidth() / 2, m_Bitmap.GetHeight() / 2, 0, 0, CB_OP_ADD | CB_DST_0 |CB_SRC_RED|CB_DST_GREEN | CB_RES_BLUE); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } } else { MessageBox (_T("Error Loading Bitmap."), _T("ERROR"), MB_OK|MB_ICONERROR); } } RefreshBitmap(); } void CCLIPF32View::OnFiltersNum() { L_INT nRet, nFactor; L_UINT uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); nFactor = 50; uFlags = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ApplyMathLogic( nFactor, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMultiply() { L_INT nRet; L_UINT uFactor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uFactor = 1000; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Multiply( uFactor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersHandwave() { L_INT nRet, nAngle; L_UINT uScale, uWaveLen, uFlags; POINT apUserPoint [4]; L_INT aAmplitudes[13]; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); /* Load a bitmap at its own bits per pixel */ apUserPoint [0].x = 0; apUserPoint [0].y = 0; apUserPoint [1].x = 3; apUserPoint [1].y = 10; apUserPoint [2].x = 9; apUserPoint [2].y = -10; apUserPoint [3].x = 12; apUserPoint [3].y = 0; m_Bitmap.GetCurvePoints(aAmplitudes, apUserPoint, 4, NULL, GUB_LINEAR); uScale = 100; uWaveLen = 100; nAngle = 0; crFill = RGB (0,0,0); uFlags = FILL_RPT| DIS_PER; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.FreeHandWave( aAmplitudes, 13, uScale, uWaveLen, nAngle, crFill, uFlags ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersOcean() { L_INT nRet; L_UINT uAmplitude, uFrequency; L_BOOL bLowerTrnsp; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAmplitude = 25; uFrequency = 20; bLowerTrnsp = FALSE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Ocean( uAmplitude, uFrequency, bLowerTrnsp ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPolar() { L_INT nRet; L_UINT uFlags; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); crFill = RGB (0,0,0); uFlags = FILL_CLR| CART_TO_POL; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Polar( crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersWvrad() { L_INT nRet, nPhase; L_UINT uFlags, uAmplitude, uWaveLen; POINT ptCenter; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAmplitude = 50; uWaveLen = 100; nPhase = 0; ptCenter.x = (LONG)m_Bitmap.GetWidth()/2; ptCenter.y = (LONG)m_Bitmap.GetHeight()/2; crFill = RGB (0,0,0); uFlags = FILL_RPT | DIS_PER; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.RadWave( uAmplitude, uWaveLen, nPhase, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersSpiral() { L_INT nRet, nXOrigin, nYOrigin, nAngle; L_UINT uFlags, uRadius, uRingCount, uRandomize; L_DOUBLE lValue1, lValue2; COLORREF crColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); lValue1 = pow (m_Bitmap.GetWidth(), 2); lValue2 = pow (m_Bitmap.GetHeight(), 2); nXOrigin = (L_INT ) m_Bitmap.GetWidth()/2; nYOrigin = (L_INT ) m_Bitmap.GetHeight()/2; uRadius = (L_UINT) pow( (lValue1 + lValue2), 0.5 ); uRingCount = (L_UINT) uRadius / 2; uRandomize = 0; nAngle = 200; crColor = RGB (0,0,0); uFlags = RING_MAXRADIUS | RING_FIXEDANGLE | RING_COLOR; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.RingEffect( nXOrigin, nYOrigin, uRadius, uRingCount, uRandomize, crColor, nAngle, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersShear() { L_INT nRet, nMax, i; L_UINT uFlags, uScale, uAmplitudesCount; COLORREF crFill; POINT apUserPoint [4]; L_INT aAmplitudes[13]; L_TCHAR szMsg [L_MAXPATH] = _T(""); apUserPoint [0].x = 0; apUserPoint [0].y = 0; apUserPoint [1].x = 3; apUserPoint [1].y = 10; apUserPoint [2].x = 9; apUserPoint [2].y = -10; apUserPoint [3].x = 12; apUserPoint [3].y = 0; /* draw a triangular wave according to apUserPoint points and stores it in pAmplitudes array*/ m_Bitmap.GetCurvePoints (aAmplitudes, apUserPoint, 4, NULL, GUB_LINEAR); /*Normalize pAmplitudes (maximum value in pAmplitudes is 1000 and lower is -1000)*/ nMax = 0; for(i = 0; i < 13; i++) { if(nMax < aAmplitudes [i]) nMax = aAmplitudes [i]; } if(nMax) { for(i = 0; i < 13; i++) { aAmplitudes [i] = (1000 * aAmplitudes [i] / abs(nMax)); } } uScale = 50; uAmplitudesCount = 13; crFill = RGB (0,0,0); uFlags = FILL_CLR | SHR_VERT; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.FreeHandShear( aAmplitudes, uAmplitudesCount, uScale, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersSwirl() { L_INT nRet, nRotationAngle; POINT ptCenter; L_TCHAR szMsg [L_MAXPATH] = _T(""); nRotationAngle = 50; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Swirl( nRotationAngle, ptCenter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersWave() { L_INT nRet, nAngle; L_UINT uAmplitude, uWaveLen, uFlags, uHorzFact, uVertFact; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAmplitude = (LONG)(m_Bitmap.GetWidth() * 0.04); uWaveLen = 15; nAngle = 0; uHorzFact = 100; uVertFact = 100; uFlags = FILL_CLR | DIS_PER | WV_SIN; crFill = RGB(0,0,0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Wave( uAmplitude, uWaveLen, nAngle, uHorzFact, uVertFact, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersWind() { L_INT nRet, nAngle; L_UINT uDim, uOpacity; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 100; uOpacity = 0; nAngle = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Wind( uDim, nAngle, uOpacity ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersWavezoom() { L_INT nRet, nPhase; L_UINT uAmplitude, uFrequency, uFlags, uZoomFact; POINT ptCenter; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); uAmplitude = (LONG)(m_Bitmap.GetWidth() * 0.04); uFrequency = 25; nPhase = 0; uZoomFact = 0; ptCenter.x = (LONG)(m_Bitmap.GetWidth() * 0.5); ptCenter.y = (LONG)(m_Bitmap.GetHeight() * 0.5); crFill = RGB(0,0,0); uFlags = FILL_CLR; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ZoomWave( uAmplitude, uFrequency, nPhase, uZoomFact, ptCenter, crFill, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFindedges() { L_INT nRet; L_UINT uLevel, uThreshold, uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uLevel = 50; uThreshold = 0; uFlags = EDGE_SOFT; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.EdgeDetectEffect( uLevel, uThreshold, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersEdgedetection() { L_INT nRet; L_UINT uThreshold, uFilter; L_TCHAR szMsg [L_MAXPATH] = _T(""); uThreshold = 60; uFilter = EDG_SOBEL_ALL; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.EdgeDetector( uThreshold, uFilter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersGlow() { L_INT nRet; L_UINT uDim, uBright, uThreshold; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; uBright = 1; uThreshold = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GlowFilter( uDim, uBright, uThreshold ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersComsts() { L_INT nRet; L_UINT uDim, uThreshold; COLORREF crEdgeColor, crBkColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; uThreshold = 0; crEdgeColor = RGB(255,255,255); crBkColor = RGB(0,0,0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.EdgeDetectStatistical( uDim, uThreshold, crEdgeColor, crBkColor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersStatis() { L_INT nRet, nAngle; L_UINT uDim, uThreshold; COLORREF crEdgeColor, crBkColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 15; uThreshold = 128; nAngle = 4500; crEdgeColor = RGB(255,255,255); crBkColor = RGB(0,0,0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DirectionEdgeStatistical( uDim, uThreshold, nAngle, crEdgeColor, crBkColor ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFademask() { OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; LDialogFile LeadDlg; L_TCHAR szFileName [L_MAXPATH] = _T(""); LBitmapBase BitmapSrc; LBitmapBase BitmapMsk; LBitmapRgn Region; L_INT nRet, nXDst, nYDst, nWidth, nHeight; RECT rect; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Select Bitmap"); OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; if(LeadDlg.DoModalOpen(m_hWnd) == SUCCESS_DLG_OK) { LeadDlg.GetFileName(szFileName, sizeof(szFileName)); if (BitmapSrc.Load(szFileName, 0, ORDER_BGRORGRAY) == SUCCESS) { BitmapSrc.Size(2 * m_Bitmap.GetWidth() / 3, 2 * m_Bitmap.GetHeight() / 3, SIZE_RESAMPLE); nXDst = m_Bitmap.GetWidth() / 6; nYDst = m_Bitmap.GetHeight() / 6; nWidth = BitmapSrc.GetWidth(); nHeight = BitmapSrc.GetHeight(); SetRect(&rect, 0, 0, nWidth, nHeight); Region.SetBitmap(&BitmapSrc); Region.SetRgnRect(&rect); nRet = BitmapSrc.CreateFadedMask( &BitmapMsk, sizeof(BITMAPHANDLE), min(BitmapSrc.GetWidth() / 3, BitmapSrc.GetHeight() / 3), 15, 3, 0, FADE_DUMPFILL | FADE_NOTRANSPARENCY, 255, RGB(0, 0, 255) ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("CreateFadedMask"), MB_OK | MB_ICONERROR ); return; } nRet = m_Bitmap.FeatherAlphaBlend( nXDst, nYDst, nWidth, nHeight, &BitmapSrc, 0, 0, &BitmapMsk ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("FeatherAlphaBlend"), MB_OK | MB_ICONERROR ); } } } RefreshBitmap(); } void CCLIPF32View::OnFiltersOpacity() { OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; LDialogFile LeadDlg; L_TCHAR szFileName [L_MAXPATH] = _T(""); LBitmapBase BitmapSrc; L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Select Bitmap"); OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); if(LeadDlg.DoModalOpen(m_hWnd) == SUCCESS_DLG_OK) { LeadDlg.GetFileName(szFileName, sizeof(szFileName)); if (BitmapSrc.Load(szFileName, 0, ORDER_BGRORGRAY) == SUCCESS) { // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; BitmapSrc.Size( 2 * m_Bitmap.GetWidth() / 3, 2 * m_Bitmap.GetHeight() / 3, SIZE_RESAMPLE ); nRet = m_Bitmap.AlphaBlend( m_Bitmap.GetWidth() / 6, m_Bitmap.GetHeight() / 6, BitmapSrc.GetWidth(), BitmapSrc.GetHeight(), &BitmapSrc, 0, 0, 150 ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } } } RefreshBitmap(); } void CCLIPF32View::OnFiltersAging() { L_INT nRet; L_UINT uHScratchCount, uVScratchCount, uMaxScratchLen, uDustDensity, uPitsDensity, uMaxPitSize, uFlags; COLORREF crScratch, crDust, crPits; L_TCHAR szMsg [L_MAXPATH] = _T(""); uHScratchCount = 10; uVScratchCount = 10; uMaxScratchLen = 50; uDustDensity = 10; uPitsDensity = 5; uMaxPitSize = 5; crScratch = RGB(0,0,0); crDust = RGB(0,0,0); crPits = RGB(0,0,0); uFlags = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Aging( uHScratchCount, uVScratchCount, uMaxScratchLen, uDustDensity, uPitsDensity, uMaxPitSize, crScratch, crDust, crPits, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersDeinterlace() { L_INT nRet; L_UINT uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uFlags = DEINTERLACE_SMOOTH | DEINTERLACE_ODD; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Deinterlace( uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFreehandnoise() { L_INT nRet; LIGHTPARAMS LightParams; POINT apUserPoint [4]; L_INT Buf[13]; L_TCHAR szMsg [L_MAXPATH] = _T(""); /* Load a bitmap at its own bits per pixel */ apUserPoint [0].x = 0; apUserPoint [0].y = 0; apUserPoint [1].x = 3; apUserPoint [1].y = 10; apUserPoint [2].x = 9; apUserPoint [2].y = -10; apUserPoint [3].x = 12; apUserPoint [3].y = 0; m_Bitmap.GetCurvePoints(Buf, apUserPoint, 4, NULL, 0); memset (&LightParams, 0, sizeof (LIGHTPARAMS)); LightParams.uStructSize = sizeof (LIGHTPARAMS); LightParams.uRAmp = 50; LightParams.uGAmp = 50; LightParams.uBAmp = 50; LightParams.uFlags = FL_FREEHAND | FL_ADD; LightParams.uFreq = 5000; LightParams.nAngle = 0; LightParams.pBuff = Buf; LightParams.uBuffCount = 13; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.FunctionalLight( &LightParams ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersAddnoise() { L_INT nRet; LIGHTPARAMS LightParams; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&LightParams, 0, sizeof (LIGHTPARAMS)); LightParams.uStructSize = sizeof (LIGHTPARAMS); LightParams.uRAmp = 1; LightParams.uFlags = FL_LINEAR_QUADRATIC | FL_QUADRATIC_OUTER; LightParams.uXOrigin = (L_UINT)m_Bitmap.GetWidth() / 2; LightParams.uYOrigin = (L_UINT)m_Bitmap.GetHeight() / 2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.FunctionalLight( &LightParams ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersAddfuncnoise() { L_INT nRet; LIGHTPARAMS LightParams; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&LightParams, 0, sizeof (LIGHTPARAMS)); LightParams.uStructSize = sizeof (LIGHTPARAMS); LightParams.uRAmp = 50; LightParams.uGAmp = 50; LightParams.uBAmp = 50; LightParams.uFlags = FL_TRIGONOMETRY | FL_CIRCLES | FL_ADD; LightParams.uXOrigin = m_Bitmap.GetWidth() / 2; LightParams.uYOrigin = m_Bitmap.GetHeight() / 2; LightParams.uFreq = 1500; LightParams.nPhase = 0; LightParams.nAngle = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.FunctionalLight( &LightParams ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMax() { L_INT nRet; L_UINT uDim; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MaxFilter( uDim ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMedian() { L_INT nRet; L_UINT uDim; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MedianFilter( uDim ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersMin() { L_INT nRet; L_UINT uDim; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 3; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MinFilter( uDim ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersDice() { L_INT nRet; L_UINT uXBlock, uYBlock, uRandomize, uFlags; COLORREF crColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uXBlock = m_Bitmap.GetWidth() / 2; uYBlock = m_Bitmap.GetHeight() / 2; uRandomize = 0; uFlags = DICE_SIZE; crColor = RGB(0, 0, 0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DiceEffect( uXBlock, uYBlock, uRandomize, uFlags, crColor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersGlassEffect() { L_INT nRet; L_UINT uCellWidth, uCellHeight, uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uCellWidth = 20; uCellHeight = 20; uFlags = GLASS_WFRQ | GLASS_HFRQ; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GlassEffect( uCellWidth, uCellHeight, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPuzzle() { L_INT nRet; L_UINT uXBlock, uYBlock, uRandomize, uFlags; COLORREF crColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uXBlock = m_Bitmap.GetWidth() / 8; uYBlock = m_Bitmap.GetHeight() / 8; uRandomize = 0; uFlags = BITMAP_RESIZE |PUZZLE_SHUFFLE | PUZZLE_SIZE; crColor = RGB(0, 0, 0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.PuzzleEffect( uXBlock, uYBlock, uRandomize, uFlags, crColor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPixelate() { L_INT nRet; L_UINT uCellWidth, uCellHeight, uFlags, uOpacity; POINT ptCenter; L_TCHAR szMsg [L_MAXPATH] = _T(""); uCellWidth = 10; uCellHeight = 10; uOpacity = 100; ptCenter.x = m_Bitmap.GetWidth()/2; ptCenter.y = m_Bitmap.GetHeight()/2; uFlags = PIX_AVR | PIX_RECT | PIX_WPER | PIX_HPER; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Pixelate( uCellWidth, uCellHeight, uOpacity, ptCenter, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPixelatePicturizeUsesameimage() { L_INT nRet; L_UINT uxDim, uyDim, uGammaFact; LBitmapBase Bitmap; L_TCHAR szMsg [L_MAXPATH] = _T(""); uxDim = 10; uyDim = 10; uGammaFact = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; Bitmap = m_Bitmap; nRet = m_Bitmap.PicturizeSingle( &Bitmap, uxDim, uyDim, uGammaFact ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPixelatePicturizeUsemultiplebitmaps() { L_INT nRet; L_UINT uxDim, uyDim, uLightnessFact; LBitmapBase Bitmap; LBitmapList BitmapList; L_TCHAR szMsg [L_MAXPATH] = _T(""); uxDim = 20; uyDim = 15; uLightnessFact = 200; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; BitmapList.Create(); Bitmap = m_Bitmap; BitmapList.InsertItem( &Bitmap, 0 ); nRet = m_Bitmap.PicturizeList( uxDim, uyDim, uLightnessFact, &BitmapList ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPixelatePicturizeSpecifydirectoryasasource() { L_INT nRet; L_UINT uxDim, uyDim, uLightnessFact; THUMBOPTIONS ThumbOption; MyFileBrowse2 MyBrowse; GETDIRECTORYDLGPARAMS DirectoryDlgParams ; L_TCHAR szMsg [L_MAXPATH] = _T(""); CMainFrame * pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); ZeroMemory ( &DirectoryDlgParams, sizeof (GETDIRECTORYDLGPARAMS)) ; DirectoryDlgParams.uStructSize = sizeof (GETDIRECTORYDLGPARAMS); DirectoryDlgParams.pszDirectory = (L_TCHAR *) malloc ( L_MAXPATH * 2 ) ; DirectoryDlgParams.pszTitle = _T("Select Images Folder") ; DirectoryDlgParams.nBuffSize = L_MAXPATH * sizeof(L_TCHAR) ; DirectoryDlgParams.pszFilter = NULL ; DirectoryDlgParams.nFilterIndex = 1 ; m_Bitmap.DialogFile()->SetDirectoryParams(&DirectoryDlgParams) ; nRet = m_Bitmap.DialogFile()->DoModalGetDirectory ( m_hWnd ) ; // Get the directory if ( nRet == SUCCESS_DLG_OK ) { ThumbOption.nWidth = 115; ThumbOption.nHeight = 115; ThumbOption.bResample = TRUE; ThumbOption.bMaintainAspect = TRUE; ThumbOption.bLoadStamp = FALSE; ThumbOption.nBits = 24; ThumbOption.crBackColor = RGB(0,0,0); ThumbOption.uCRFlags = 0; ThumbOption.uStructSize = sizeof(THUMBOPTIONS); pFrame->m_DirectoryList.Create(); pFrame->m_nBitmapListCount = 0; nRet = MyBrowse.BrowseDir( DirectoryDlgParams.pszDirectory, _T("*.jpg"), &ThumbOption, TRUE, FALSE, FALSE, 0, 4000*1024 ); if ( nRet != SUCCESS ) return; uxDim = 20; uyDim = 15; uLightnessFact = 200; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.PicturizeList( uxDim, uyDim, uLightnessFact, &pFrame->m_DirectoryList ); pFrame->m_DirectoryList.Destroy(); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } } RefreshBitmap(); } void CCLIPF32View::OnFiltersLens() { L_INT nRet; L_UINT uBright, uFlags; POINT ptCenter; COLORREF crColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uBright = 100; uFlags = LNS_TYPE_1; ptCenter.x = (LONG)(m_Bitmap.GetWidth() * 0.5); ptCenter.y = (LONG)(m_Bitmap.GetHeight() * 0.5); crColor = RGB(0, 0, 0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.LensFlare( ptCenter, uBright, uFlags, crColor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersLight() { L_INT nRet; L_UINT uLightNo, uBright, uAmbient; LIGHTINFO LightInfo; COLORREF crAmbientClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); LightInfo.uStructSize = sizeof (LIGHTINFO); LightInfo.ptCenter.x = (LONG)(m_Bitmap.GetWidth() * 0.5); LightInfo.ptCenter.y = (LONG)(m_Bitmap.GetHeight() * 0.5); LightInfo.uWidth = (LONG)(m_Bitmap.GetWidth() * 0.5); LightInfo.uHeight = (LONG)(m_Bitmap.GetHeight() * 0.5); LightInfo.nAngle = 0; LightInfo.uBright = 100; LightInfo.uEdge = 100; LightInfo.crFill = RGB(255,255,255); LightInfo.uOpacity = 100; LightInfo.uFlag = LGT_SPOTLIGHT; uLightNo = 1; uBright = 100; uAmbient = 100; crAmbientClr = RGB(255,255,255); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Light( &LightInfo, uLightNo, uBright, uAmbient, crAmbientClr ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersUnsharp() { L_INT nRet, nAmount, nRadius, nThreshold; L_UINT uColorType; L_TCHAR szMsg [L_MAXPATH] = _T(""); nAmount = 200; nRadius = 15; nThreshold = 50; uColorType = RGB_SPACE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.UnsharpMask( nAmount, nRadius, nThreshold, uColorType ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersConvmatrix() { L_INT nRet; LPUSERFLT UserFilter; L_TCHAR szMsg [L_MAXPATH] = _T(""); /* Allocate the user filter structure. And also we need a (3x3) matrix with 9 elements. */ UserFilter = (LPUSERFLT)malloc(sizeof(USERFLT) + 9 * sizeof(L_INT)); UserFilter->uStructSize = sizeof (USERFLT); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { UserFilter->ufltMatrix[i * 3 + j] = 1; } } UserFilter->ufltWidth = 3; UserFilter->ufltHeight = 3; UserFilter->ufltCenter.x = 1; UserFilter->ufltCenter.y = 1; UserFilter->ufltDivisor = 9; UserFilter->nfltOffset = 0; UserFilter->ufltFlag = UD_SUM; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.UserFilter( UserFilter ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnDetectionFft() { L_INT nRet; L_UINT uFlags; pFTARRAY pFtArray; L_TCHAR szMsg [L_MAXPATH] = _T(""); uFlags = FFT_FFT| FFT_GRAY; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; m_Bitmap.AllocFTArray( &pFtArray, sizeof(FTARRAY) ); nRet = m_Bitmap.FFT( pFtArray, uFlags ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } // Change the array data to show effect on the image nRet = m_Bitmap.FrqFilterMask ( pFtArray, FALSE ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } uFlags = FFT_IFFT| FFT_GRAY | FFT_IFFT_SCL | FFT_IFFT_BOTH; nRet = m_Bitmap.FFT( pFtArray, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } m_Bitmap.FreeFTArray(pFtArray); RefreshBitmap(); } void CCLIPF32View::OnUpdateDetectionFft(CCmdUI* pCmdUI) { L_INT nNum, nShift; L_BOOL bEnable = FALSE; nNum = m_Bitmap.GetWidth(); nShift = (L_INT)(log10(nNum) / log10(2)); if (((nNum >> nShift) << nShift) == nNum) { nNum = m_Bitmap.GetHeight(); nShift = (L_INT)(log10(nNum) / log10(2)); if (((nNum >> nShift) << nShift) == nNum) bEnable = TRUE; } if ( !m_Bitmap.IsAllocated() || (m_Bitmap.GetWidth() == 1) || (m_Bitmap.GetHeight() == 1) ) bEnable = FALSE; pCmdUI->Enable( bEnable ? TRUE : FALSE ); } void CCLIPF32View::OnDetectionDft() { L_INT nRet; L_UINT uFlags; RECT rcRange; pFTARRAY pFtArray; L_TCHAR szMsg [L_MAXPATH] = _T(""); rcRange.left = 0; rcRange.top = 0; rcRange.right = m_Bitmap.GetWidth()/2; rcRange.bottom = m_Bitmap.GetHeight()/2; uFlags = DFT_DFT | DFT_GRAY | DFT_RANGE | DFT_INSIDE_X | DFT_INSIDE_Y; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; m_Bitmap.AllocFTArray( &pFtArray, sizeof(FTARRAY) ); nRet = m_Bitmap.DFT( pFtArray, &rcRange, uFlags ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } uFlags = DFT_IDFT | DFT_GRAY | DFT_RANGE | DFT_INSIDE_X | DFT_INSIDE_Y | DFT_IDFT_SCL | DFT_IDFT_BOTH; nRet = m_Bitmap.DFT( pFtArray, &rcRange, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } m_Bitmap.FreeFTArray(pFtArray); RefreshBitmap(); } void CCLIPF32View::OnDetectionOnoffmask() { L_INT nRet; L_UINT uFlags; RECT rcRange; pFTARRAY pFtArray; L_TCHAR szMsg [L_MAXPATH] = _T(""); rcRange.left = 0; rcRange.top = 0; rcRange.right = m_Bitmap.GetWidth()/2; rcRange.bottom = m_Bitmap.GetHeight()/2; uFlags = DFT_DFT | DFT_GRAY | DFT_RANGE | DFT_INSIDE_X | DFT_INSIDE_Y; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; m_Bitmap.AllocFTArray( &pFtArray, sizeof(FTARRAY) ); nRet = m_Bitmap.DFT( pFtArray, &rcRange, uFlags ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("DFT"), MB_OK | MB_ICONERROR ); return; } nRet = m_Bitmap.FrqFilterMask ( pFtArray, TRUE ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("FrqFilterMask"), MB_OK | MB_ICONERROR ); return; } uFlags = DFT_IDFT | DFT_GRAY | DFT_RANGE | DFT_INSIDE_X | DFT_INSIDE_Y | DFT_IDFT_SCL | DFT_IDFT_BOTH; nRet = m_Bitmap.DFT( pFtArray, &rcRange, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("DFT"), MB_OK | MB_ICONERROR ); } m_Bitmap.FreeFTArray(pFtArray); RefreshBitmap(); } void CCLIPF32View::OnDetectionDisplayfourier() { L_INT nRet; L_UINT uFlags; RECT rcRange; pFTARRAY pFtArray; L_TCHAR szMsg [L_MAXPATH] = _T(""); rcRange.left = 0; rcRange.top = 0; rcRange.right = m_Bitmap.GetWidth()-1; rcRange.bottom = m_Bitmap.GetHeight()-1; uFlags = DFT_DFT | DFT_GRAY | DFT_RANGE | DFT_INSIDE_X | DFT_INSIDE_Y; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; m_Bitmap.AllocFTArray( &pFtArray, sizeof(FTARRAY) ); nRet = m_Bitmap.DFT( pFtArray, &rcRange, uFlags ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("DFT"), MB_OK | MB_ICONERROR ); return; } if(nRet == SUCCESS_ABORT) { m_Bitmap.FreeFTArray(pFtArray); EndWaitCursor() ; return; } nRet = m_Bitmap.FTDisplay( pFtArray, DSP_FT_MAG|DSP_FT_LOG); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("FTDisplay"), MB_OK | MB_ICONERROR ); } m_Bitmap.FreeFTArray(pFtArray); RefreshBitmap(); } void CCLIPF32View::OnDetectionConv() { L_INT nRet; L_UINT uNumOfPoints, uMaxPoints, uXStep, uYStep, uThreshold; OPENDLGPARAMS FOParm; OPENFILENAME OpenFileName; LDialogFile LeadDlg; LBitmapBase CorBitmap; RECT rcRect; RECT rcRgn; POINT Points[10] = {0}; L_TCHAR szBuf [L_MAXPATH] = _T(""); L_TCHAR szMsg [L_MAXPATH] = _T(""); // Smaller image is required here wsprintf ( szBuf, _T("Select an image with width and height less than (%d x %d)"), m_Bitmap.GetWidth(), m_Bitmap.GetHeight() ); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = szBuf; OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); if(LeadDlg.DoModalOpen(AfxGetMainWnd()->GetSafeHwnd()) == SUCCESS_DLG_OK) { // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; RefreshBitmap(); BeginWaitCursor(); LeadDlg.GetFileName(szBuf, sizeof (szBuf)); nRet = CorBitmap.Load( szBuf, 0, ORDER_BGRORGRAY, 0, NULL ); if (nRet == SUCCESS) { // change the view perspective for the bitmaps to TOP_LEFT m_Bitmap.ChangeViewPerspective(TOP_LEFT); CorBitmap.ChangeViewPerspective(TOP_LEFT); uMaxPoints = 10; uXStep = 1; uYStep = 1; uThreshold = 90; CorBitmap.Region()->GetRgnBounds(&rcRgn); nRet = m_Bitmap.Correlation(&CorBitmap, Points, uMaxPoints, &uNumOfPoints, uXStep, uYStep, uThreshold ); if (nRet == SUCCESS && uNumOfPoints) { // Release any previous region RECT rcOff = {0}; m_Bitmap.Region()->GetRgnBounds(&rcOff); m_Bitmap.Region()->Free(); for(int i = 0; i < (L_INT)uNumOfPoints; i++) { rcRect.left = Points[i].x + rcOff.left; rcRect.top = Points[i].y + rcOff.top; rcRect.right = rcRect.left + (rcRgn.right - rcRgn.left); rcRect.bottom = rcRect.top + (rcRgn.bottom - rcRgn.top); if(i) { m_Bitmap.Region()->SetRgnCombineMode(L_RGN_OR); m_Bitmap.Region()->SetRgnRect(&rcRect); } else { m_Bitmap.Region()->SetRgnCombineMode(L_RGN_SET); m_Bitmap.Region()->SetRgnRect(&rcRect); } } m_hRegion = m_Bitmap.Region()->GetRgnHandle(); } else if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { EndWaitCursor(); wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } if (!uNumOfPoints) { MessageBox ( _T("No matches found."), _T("Notice"), MB_OK | MB_ICONINFORMATION ); } CorBitmap.Free (); } EndWaitCursor(); } } void CCLIPF32View::OnDetectionSeg() { L_INT nRet; L_UINT uFlags, uThreshold; L_TCHAR szMsg [L_MAXPATH] = _T(""); uThreshold = 25; uFlags = SGM_RGB; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Segment( uThreshold, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnDetectionSkelton() { L_INT nRet; L_UINT uThreshold; L_TCHAR szMsg [L_MAXPATH] = _T(""); uThreshold = 200; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Skeleton( uThreshold ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorGray8() { L_INT nRet, nBitsPerPixel; L_TCHAR szMsg [L_MAXPATH] = _T(""); nBitsPerPixel = 8; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GrayScale( nBitsPerPixel ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorGray12() { L_INT nRet, nBitsPerPixel; L_TCHAR szMsg [L_MAXPATH] = _T(""); nBitsPerPixel = 12; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GrayScale( nBitsPerPixel ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorGray16() { L_INT nRet, nBitsPerPixel; L_TCHAR szMsg [L_MAXPATH] = _T(""); nBitsPerPixel = 16; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GrayScale( nBitsPerPixel ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAutolevel() { L_INT nRet; L_UINT uBlackClip, uWhiteClip, uFlags; LVLCLR LvlClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&LvlClr, 0, sizeof (LVLCLR)); LvlClr.uStructSize = sizeof (LVLCLR); uBlackClip = DEFAULT_BLACK_CLIP; uWhiteClip = DEFAULT_WHITE_CLIP; uFlags = AUTO_LEVEL; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AutoColorLevel( &LvlClr, uBlackClip, uWhiteClip, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAutocontrast() { L_INT nRet; L_UINT uBlackClip, uWhiteClip, uFlags; LVLCLR LvlClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&LvlClr, 0, sizeof (LVLCLR)); LvlClr.uStructSize = sizeof (LVLCLR); uBlackClip = DEFAULT_BLACK_CLIP; uWhiteClip = DEFAULT_WHITE_CLIP; uFlags = AUTO_CONTRAST; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AutoColorLevel( &LvlClr, uBlackClip, uWhiteClip, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAutoluminosity() { L_INT nRet; L_UINT uBlackClip, uWhiteClip, uFlags; LVLCLR LvlClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&LvlClr, 0, sizeof (LVLCLR)); LvlClr.uStructSize = sizeof (LVLCLR); uBlackClip = DEFAULT_BLACK_CLIP; uWhiteClip = DEFAULT_WHITE_CLIP; uFlags = AUTO_INTENSITY; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AutoColorLevel( &LvlClr, uBlackClip, uWhiteClip, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorBci() { L_INT nRet, nContrast, nBrightness, nIntensity; L_TCHAR szMsg [L_MAXPATH] = _T(""); nContrast = -146; nBrightness = 385; nIntensity = 240; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ContBrightInt( nContrast, nBrightness, nIntensity ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorLeveling() { L_INT nRet; L_UINT uFlags; LVLCLR LvlClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); LvlClr.uStructSize = sizeof (LVLCLR); LvlClr.master.uMinInput = 0; LvlClr.master.uMaxInput = 100; LvlClr.master.uMinOutput = 0; LvlClr.master.uMaxOutput = 255; LvlClr.master.uGamma = DEFAULT_GAMMA; LvlClr.red.uMinInput = 0; LvlClr.red.uMaxInput = 100; LvlClr.red.uMinOutput = 0; LvlClr.red.uMaxOutput = 255; LvlClr.red.uGamma = DEFAULT_GAMMA; LvlClr.green.uMinInput = 0; LvlClr.green.uMaxInput = 255; LvlClr.green.uMinOutput = 0; LvlClr.green.uMaxOutput = 100; LvlClr.green.uGamma = DEFAULT_GAMMA; LvlClr.blue.uMinInput = 0; LvlClr.blue.uMaxInput = 255; LvlClr.blue.uMinOutput = 0; LvlClr.blue.uMaxOutput = 100; LvlClr.blue.uGamma = DEFAULT_GAMMA; uFlags = LEVEL_MASTER | LEVEL_RED | LEVEL_GREEN | LEVEL_BLUE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorLevel( &LvlClr, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorBalancecolor() { L_INT nRet; BALANCING RedFactor, GreenFactor, BlueFactor; L_TCHAR szMsg [L_MAXPATH] = _T(""); RedFactor.uStructSize = sizeof (BALANCING); RedFactor.toRed = 0.25; RedFactor.toGreen = 0.25; RedFactor.toBlue = 0.5; GreenFactor.uStructSize = sizeof (BALANCING); GreenFactor.toRed = 0.3; GreenFactor.toGreen = 0.3; GreenFactor.toBlue = 0.4; BlueFactor.uStructSize = sizeof (BALANCING); BlueFactor.toRed = 0.1; BlueFactor.toGreen = 0.3; BlueFactor.toBlue = 0.6; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.BalanceColors( &RedFactor, &GreenFactor, &BlueFactor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorChannelmixer() { L_INT nRet; COLORDATA RedFactor, GreenFactor, BlueFactor; L_TCHAR szMsg [L_MAXPATH] = _T(""); RedFactor.uStructSize = sizeof (COLORDATA); RedFactor.nRedFactor = 100; RedFactor.nGreenFactor = 50; RedFactor.nBlueFactor = 0; RedFactor.nConstant = 0; GreenFactor.uStructSize = sizeof (COLORDATA); GreenFactor.nRedFactor = 0; GreenFactor.nGreenFactor = 100; GreenFactor.nBlueFactor = 0; GreenFactor.nConstant = 0; BlueFactor.uStructSize = sizeof (COLORDATA); BlueFactor.nRedFactor = 0; BlueFactor.nGreenFactor = 0; BlueFactor.nBlueFactor = 100; BlueFactor.nConstant = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ChannelMix( &RedFactor, &GreenFactor, &BlueFactor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorBalancecolors() { L_INT nRet; BOOL bLuminance; BALANCEDATA Shadow, MidTone, HighLight; L_TCHAR szMsg [L_MAXPATH] = _T(""); Shadow.uStructSize = sizeof (BALANCEDATA); Shadow.nRed = 60; Shadow.nGreen = 0; Shadow.nBlue = 0; MidTone.uStructSize = sizeof (BALANCEDATA); MidTone.nRed = 40; MidTone.nGreen = 0; MidTone.nBlue = 0; HighLight.uStructSize = sizeof (BALANCEDATA); HighLight.nRed = 70; HighLight.nGreen = 0; HighLight.nBlue = 0; bLuminance = FALSE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorIntensityBalance( &Shadow, &MidTone, &HighLight, bLuminance ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorDesat() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Desaturate(); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorFillbitmap() { L_INT nRet; COLORREF crFill; L_TCHAR szMsg [L_MAXPATH] = _T(""); crFill = RGB (0, 0, 255); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Fill( crFill ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorHsb() { L_INT nRet, nHue, nIntensity, nSaturation; L_UINT uHsiDataCount; HSIDATA HsiData[6]; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&HsiData, 0, sizeof (HSIDATA) * 6); nHue = 18000; nSaturation = 0; nIntensity = 0; uHsiDataCount = 6; //Color: Red HsiData[0].uStructSize = sizeof (HSIDATA); HsiData[0].nOuterLow = 0; HsiData[0].nOuterHigh = 359; HsiData[0].nInnerLow = 90; HsiData[0].nInnerHigh = 180; //Color: Yellow HsiData[1].uStructSize = sizeof (HSIDATA); HsiData[1].nOuterLow = 0; HsiData[1].nOuterHigh = 359; HsiData[1].nInnerLow = 90; HsiData[1].nInnerHigh = 180; //Color: Green HsiData[2].uStructSize = sizeof (HSIDATA); HsiData[2].nOuterLow = 0; HsiData[2].nOuterHigh = 359; HsiData[2].nInnerLow = 90; HsiData[2].nInnerHigh = 180; //Color: Cyan HsiData[3].uStructSize = sizeof (HSIDATA); HsiData[3].nOuterLow = 0; HsiData[3].nOuterHigh = 359; HsiData[3].nInnerLow = 90; HsiData[3].nInnerHigh = 180; //Color: Blue HsiData[4].uStructSize = sizeof (HSIDATA); HsiData[4].nOuterLow = 0; HsiData[4].nOuterHigh = 359; HsiData[4].nInnerLow = 90; HsiData[4].nInnerHigh = 180; //Color: Magentas HsiData[5].uStructSize = sizeof (HSIDATA); HsiData[5].nOuterLow = 0; HsiData[5].nOuterHigh = 359; HsiData[5].nInnerLow = 90; HsiData[5].nInnerHigh = 180; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ChangeHueSatInt( nHue, nSaturation, nIntensity, HsiData, uHsiDataCount ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorLightControl() { L_INT nRet; L_UINT uFlags, uLowerAvr, uAvrage, uUpperAvr; L_TCHAR szMsg [L_MAXPATH] = _T(""); uLowerAvr = 80; uAvrage = 150; uUpperAvr = 210; uFlags = YUV_SPACE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.LightControl( &uLowerAvr, &uAvrage, &uUpperAvr, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorMath() { L_INT nRet; L_UINT uMType, uFactor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uMType = MF_SQR; uFactor = 100; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MathFunction( uMType, uFactor ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorRepclr() { L_INT nRet, nHue, nSaturation, nBrightness; L_UINT uColorCount; COLORREPLACE ColorReplace; L_TCHAR szMsg [L_MAXPATH] = _T(""); ColorReplace.uStructSize = sizeof (COLORREPLACE); ColorReplace.crColor = RGB(0,0,0); ColorReplace.uFuzziness = 100; uColorCount = 1; nHue = 100; nSaturation = 0; nBrightness = 250; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorReplace( &ColorReplace, uColorCount, nHue, nSaturation, nBrightness ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorSampleTarget() { L_INT nRet; L_UINT uFlags; COLORREF crSample, crTarget; L_TCHAR szMsg [L_MAXPATH] = _T(""); crSample = RGB(50,50,50); crTarget = RGB(100,100,100); uFlags = SAMP_RGB| SAMP_MID; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.SampleTarget( crSample, crTarget, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorSelectivecolor() { L_INT nRet; SELCLR SelClr; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&SelClr, 0, sizeof(SELCLR)); /* Manipulate values */ SelClr.uStructSize = sizeof (SELCLR); SelClr.selClrs[SELCLR_RED].cCyan = -100; SelClr.selClrs[SELCLR_RED].cBlack = 0; SelClr.selClrs[SELCLR_RED].cMagenta = 0; SelClr.selClrs[SELCLR_RED].cYellow = 0; SelClr.selClrs[SELCLR_YELLOW].cCyan = 34; SelClr.selClrs[SELCLR_YELLOW].cBlack = 0; SelClr.selClrs[SELCLR_YELLOW].cMagenta = 100; SelClr.selClrs[SELCLR_YELLOW].cYellow = 40; SelClr.selClrs[SELCLR_GREEN].cCyan = 0; SelClr.selClrs[SELCLR_GREEN].cBlack = 100; SelClr.selClrs[SELCLR_GREEN].cMagenta = 0; SelClr.selClrs[SELCLR_GREEN].cYellow = 0; SelClr.selClrs[SELCLR_CYAN].cCyan = 0; SelClr.selClrs[SELCLR_CYAN].cBlack = 0; SelClr.selClrs[SELCLR_CYAN].cMagenta = 0; SelClr.selClrs[SELCLR_CYAN].cYellow = 0; SelClr.selClrs[SELCLR_BLUE].cCyan = 0; SelClr.selClrs[SELCLR_BLUE].cBlack = 0; SelClr.selClrs[SELCLR_BLUE].cMagenta = 0; SelClr.selClrs[SELCLR_BLUE].cYellow = 0; SelClr.selClrs[SELCLR_MAGENTA].cCyan = 0; SelClr.selClrs[SELCLR_MAGENTA].cBlack = 0; SelClr.selClrs[SELCLR_MAGENTA].cMagenta = 0; SelClr.selClrs[SELCLR_MAGENTA].cYellow = 0; SelClr.selClrs[SELCLR_WHITE].cCyan = 0; SelClr.selClrs[SELCLR_WHITE].cBlack = 0; SelClr.selClrs[SELCLR_WHITE].cMagenta = 0; SelClr.selClrs[SELCLR_WHITE].cYellow = 0; SelClr.selClrs[SELCLR_NEUTRAL].cCyan = -65; SelClr.selClrs[SELCLR_NEUTRAL].cMagenta = -39; SelClr.selClrs[SELCLR_NEUTRAL].cYellow = 63; SelClr.selClrs[SELCLR_NEUTRAL].cBlack = 0; SelClr.selClrs[SELCLR_BLACK].cCyan = 0; SelClr.selClrs[SELCLR_BLACK].cMagenta = 0; SelClr.selClrs[SELCLR_BLACK].cYellow = 0; SelClr.selClrs[SELCLR_BLACK].cBlack = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.SelectiveColor( &SelClr ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorSwapcolor() { L_INT nRet, nFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); nFlags = SWAP_RB; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.SwapColors( nFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAce() { L_INT nRet; L_UINT uFlag, uDim, uAmount; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 9; uAmount = 255; uFlag = ACE_EXP; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AdaptiveContrast( uDim, uAmount, uFlag ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorHistogramequalize() { L_INT nRet, nFlag; L_TCHAR szMsg [L_MAXPATH] = _T(""); nFlag = YUV_SPACE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.HistoEqualize( nFlag ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorLocalhisto() { L_INT nRet, nWidth, nHeight, nxExt, nyExt; L_UINT uType, uSmooth; L_TCHAR szMsg [L_MAXPATH] = _T(""); nWidth = m_Bitmap.GetWidth(); nHeight = m_Bitmap.GetHeight(); nxExt = 0; nyExt = 0; uType = YUV_SPACE; uSmooth = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.LocalHistoEqualize( nWidth, nHeight, nxExt, nyExt, uType, uSmooth ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorRemaphue() { L_UINT L_FAR * uMaskTable; L_UINT L_FAR * uHueTable; L_INT i, nRet, uLUTLen; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; if ( ((m_Bitmap.GetBitsPerPixel() == 16) && (m_Bitmap.IsGrayScale())) || m_Bitmap.GetBitsPerPixel() >= 48 ) uLUTLen= 65536; else if (m_Bitmap.GetBitsPerPixel() == 12 ) uLUTLen = 4096; else uLUTLen = 256; //Allocate tables uMaskTable = (L_UINT *)malloc (uLUTLen * sizeof(L_UINT)); uHueTable = (L_UINT *)malloc (uLUTLen * sizeof(L_UINT)); for ( i = 0; i < uLUTLen; i++ ) { uMaskTable[i] = 1; uHueTable[i] = (L_UINT)rand () % uLUTLen; } nRet = m_Bitmap.RemapHue( uMaskTable, uHueTable, NULL, NULL, uLUTLen ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } if(uMaskTable) free(uMaskTable); if(uHueTable) free (uHueTable); RefreshBitmap(); } void CCLIPF32View::OnColorRemapintensity() { L_INT nRet; L_UINT LookupTable[256]; L_TCHAR szMsg [L_MAXPATH] = _T(""); LookupTable[0] = 255; LookupTable[255] = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; m_Bitmap.GetFunctionalLookupTable(LookupTable, 256, 0, 255, 0, FLT_LINEAR); nRet = m_Bitmap.RemapIntensity( LookupTable, 256, CHANNEL_MASTER ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAutobinarysegment() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AutoBinary(); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorColorthreshold() { L_INT nRet; L_UINT uColorSpace; COMPDATA pCompData[3]; L_TCHAR szMsg [L_MAXPATH] = _T(""); uColorSpace = CLTH_RGB_SPACE; pCompData[0].uStructSize = sizeof (COMPDATA); for (int i=0; i < 3; i++) { pCompData[i].nMinRange = 128; pCompData[i].nMaxRange = 255; pCompData[i].uFlags = 0; } // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorThreshold( uColorSpace, pCompData ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorDynamicthreshold() { L_INT nRet; L_UINT uDim, uLocalContast; L_TCHAR szMsg [L_MAXPATH] = _T(""); uDim = 9; uLocalContast = 16; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DynamicBinary( uDim, uLocalContast ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorBinarysegment() { L_INT nRet; L_UINT uLow, uHigh, uChannel; COLORREF crInColor, crOutColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); uLow = 128; uHigh = 255; uChannel = RGB(0, 0, 0); crInColor = RGB(255, 255, 255); crOutColor = IDB_CHANNEL_MASTER; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.IntensityDetect( uLow, uHigh, crInColor, crOutColor, uChannel ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorClrres() { L_INT nRet, nBitsPerPixel; L_UINT uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); nBitsPerPixel = 8; uFlags = CRF_FIXEDPALETTE | CRF_FLOYDSTEINDITHERING; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorRes ( nBitsPerPixel, uFlags, NULL, NULL, 0 ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorColoredgray() { L_INT nRet, nRedFact, nGreenFact, nBlueFact, nRedGrayFact, nGreenGrayFact, nBlueGrayFact; L_TCHAR szMsg [L_MAXPATH] = _T(""); nRedFact = 100; nGreenFact = 300; nBlueFact = 600; nRedGrayFact = 200; nGreenGrayFact = 300; nBlueGrayFact = 500; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ConvertToColoredGray( nRedFact, nGreenFact, nBlueFact, nRedGrayFact, nGreenGrayFact, nBlueGrayFact ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorDuotone() { L_INT nRet, i; L_UINT uToneType, uDistType, uFlags; LPRGBQUAD pGradient[4]; L_TCHAR szMsg [L_MAXPATH] = _T(""); L_INT Curve[256]; COLORREF crColor; for(int nCount = 0; nCount < 4; nCount++) { pGradient[nCount] = (LPRGBQUAD) GlobalAllocPtr(GHND, sizeof(RGBQUAD) * 256); memset ( pGradient[nCount], 0, sizeof(RGBQUAD) * 256 ); } uToneType = DT_MONOTONE; uDistType = DT_USERDEFINE; uFlags = DT_REPLACE; crColor = RGB( 0, 255, 0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Change the bitmap to grayscale bitmap */ m_Bitmap.GrayScale (8); for ( i= 0; i < 256; i ++ ) { Curve[i]= i; } for ( i = 0; i < 256; i++) { pGradient[0][i].rgbRed = (Curve[i] * GetRValue(crColor)) / 255; pGradient[0][i].rgbGreen = (Curve[i] * GetGValue(crColor)) / 255; pGradient[0][i].rgbBlue = (Curve[i] * GetBValue(crColor)) / 255; } /* Apply Multitone conversion */ nRet = m_Bitmap.GrayScaleToMultitone( uToneType, uDistType, NULL, pGradient, uFlags ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } if ( pGradient ) { for ( i=0; i < 4; i ++ ) { if ( pGradient [i] ) { GlobalFreePtr (pGradient[i]); } } } RefreshBitmap(); } void CCLIPF32View::OnColorConverttogray() { L_INT nRet, nRedFact, nGreenFact, nBlueFact; L_TCHAR szMsg [L_MAXPATH] = _T(""); nRedFact = 100; nGreenFact = 300; nBlueFact = 600; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Apply Multitone conversion */ nRet = m_Bitmap.GrayScaleExt( nRedFact, nGreenFact, nBlueFact ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorHalftone() { L_INT nRet, nAngle; L_UINT uDim, uType; L_TCHAR szMsg [L_MAXPATH] = _T(""); uType = HT_PRINT; uDim = 3; nAngle = 4500; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Apply Multitone conversion */ nRet = m_Bitmap.HalfTone( uType, nAngle, uDim, (LBitmapList *)NULL ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnImageAnalysisHistogram() { HISTOGRAMDLGPARAMS DlgParams; L_INT nLowBits, nHighBits; L_TCHAR szMsg [L_MAXPATH] = _T(""); m_Bitmap.GetMinMaxBits(&nLowBits, &nHighBits); m_Bitmap.GetHandle()->LowBit = nLowBits; m_Bitmap.GetHandle()->HighBit = nHighBits; DlgParams.uStructSize = sizeof(HISTOGRAMDLGPARAMS); DlgParams.crRedChannelPen = RGB(255,0,0); DlgParams.crGreenChannelPen = RGB(0,255,0); DlgParams.crBlueChannelPen = RGB(0,0,255); DlgParams.crMasterPen = RGB(0,0,0 ) ; DlgParams.uDlgFlags = DLG_HISTOGRAM_SHOW_VIEWSTYLE | DLG_HISTOGRAM_USERPENCOLORS ; DlgParams.uHistogramFlags = HIST_LOWHIGH_BITS ; m_Bitmap.DialogImage()->SetHistogramParams(&DlgParams); m_Bitmap.DialogImage()->DoModalHistogram(m_hWnd); } void CCLIPF32View::OnImageGetrgnperimeter() { L_INT nRet; L_UINT puLength; L_TCHAR szBuffer[200] = _T("\0"); RECT rect; L_TCHAR szMsg [L_MAXPATH] = _T(""); SetRect (&rect, 0, 0, 200, 100); m_Bitmap.Region()->SetRgnRect( &rect ); nRet = m_Bitmap.GetRgnPerimeterLength( NULL, &puLength ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } wsprintf(szBuffer, _T("Region Perimeter Length = %d\n"), puLength); MessageBox(szBuffer, _T("Get Region Perimeter Length"), MB_OK); SetRect (&rect, 0, 0, 0, 0); m_Bitmap.Region()->SetRgnRect( &rect ); m_Bitmap.Region()->Free (); RefreshBitmap(); } void CCLIPF32View::OnImageGetferets() { L_INT nRet; L_UINT uFeretsDiameter, uFirstIndex, uSecondIndex, uSize; POINT L_FAR * pPoints; L_TCHAR szBuffer[200] = _T("\0"); RECT rect; L_TCHAR szMsg [L_MAXPATH] = _T(""); SetRect (&rect, 0, 0, 200, 100); m_Bitmap.Region()->SetRgnRect( &rect ); nRet = m_Bitmap.GetRgnContourPoints( NULL, &pPoints, &uSize ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("GetRgnContourPoints"), MB_OK | MB_ICONERROR ); return; } nRet = m_Bitmap.GetFeretsDiameter( pPoints, uSize, &uFeretsDiameter, &uFirstIndex, &uSecondIndex ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("GetFeretsDiameter"), MB_OK | MB_ICONERROR ); } wsprintf(szBuffer, _T("The Ferets = %d\n"), uFeretsDiameter); MessageBox(szBuffer, _T("Get Ferets Diameter"), MB_OK); SetRect (&rect, 0, 0, 0, 0); m_Bitmap.Region()->SetRgnRect( &rect ); m_Bitmap.Region()->Free (); GlobalFree(pPoints); RefreshBitmap(); } void CCLIPF32View::OnImageGetobjectinfow() { L_INT nRet; L_UINT puX, puY, puAngle, puRoundness; L_TCHAR szBuffer[200] = _T("\0"); L_TCHAR szMsg [L_MAXPATH] = _T(""); nRet = m_Bitmap.GetObjectInfo( &puX, &puY, (L_INT*)&puAngle, &puRoundness, TRUE ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } wsprintf(szBuffer, _T(" X\t\t = %d\n Y\t\t = %d\n Angle\t\t = %d\n Roundness\t = %d"), puX, puY, puAngle, puRoundness); MessageBox(szBuffer, _T("Get Weighted Object Info"), MB_OK); RefreshBitmap(); } void CCLIPF32View::OnImageGetobjectinfonw() { L_INT nRet; L_UINT puX, puY, puAngle, puRoundness; L_TCHAR szBuffer[200] = _T("\0"); L_TCHAR szMsg [L_MAXPATH] = _T(""); nRet = m_Bitmap.GetObjectInfo( &puX, &puY, (L_INT*)&puAngle, &puRoundness, FALSE ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } wsprintf(szBuffer, _T(" X\t\t = %d\n Y\t\t = %d\n Angle\t\t = %d\n Roundness\t = %d"), puX, puY, puAngle, puRoundness); MessageBox(szBuffer, _T("Get Non Weighted Object Info"), MB_OK); RefreshBitmap(); } void CCLIPF32View::OnImageRedeyeremove() { L_INT nRet, nLightness; L_UINT uThreshold; COLORREF crNewColor; L_TCHAR szMsg [L_MAXPATH] = _T(""); nLightness = 100; uThreshold = 128; crNewColor = RGB(5, 20, 10); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Apply Multitone conversion */ nRet = m_Bitmap.RemoveRedEye( crNewColor, uThreshold, nLightness ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnViewAddborder() { L_INT nRet; ADDBORDERINFO AddBorderInfo; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; memset (&AddBorderInfo, 0, sizeof (ADDBORDERINFO)); AddBorderInfo.uStructSize = sizeof(ADDBORDERINFO); AddBorderInfo.nLeftThickness = 40; AddBorderInfo.nTopThickness = 40; AddBorderInfo.nRightThickness = 40; AddBorderInfo.nBottomThickness = 40; AddBorderInfo.nLocation = BORDER_OUTSIDE; AddBorderInfo.nStyle = BORDER_STYLE_GRADIENT; AddBorderInfo.nEffectStyle = 0; AddBorderInfo.nGradientStyle = 0; AddBorderInfo.crGradientStart = RGB(255, 0, 0); AddBorderInfo.crGradientEnd = RGB(0, 0, 255); AddBorderInfo.nCurveIntensity = 0; AddBorderInfo.bSoftCurve = FALSE; AddBorderInfo.bShadow = FALSE; AddBorderInfo.nShadowSize = 0; AddBorderInfo.nShadowDirection = 0; AddBorderInfo.bBumpyShadow = FALSE; AddBorderInfo.pTileBitmap = NULL; nRet = m_Bitmap.AddBorder( &AddBorderInfo ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnViewAddframe() { L_INT nRet; ADDFRAMEINFO AddFrameInfo; OPENDLGPARAMS FOParm ; OPENFILENAME OpenFileName; LDialogFile LeadDlg; LBitmapBase Bitmap; L_TCHAR szFileName [L_MAXPATH] = _T(""); L_TCHAR szMsg [L_MAXPATH] = _T(""); memset ( &FOParm, 0, sizeof(OPENDLGPARAMS)) ; memset ( &OpenFileName, 0, sizeof(OPENFILENAME)) ; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Select Frame Bitmap"); OpenFileName.Flags = OFN_EXPLORER; FOParm.uStructSize = sizeof(OPENDLGPARAMS); FOParm.uDlgFlags = DLG_OPEN_SHOW_PROGRESSIVE | DLG_OPEN_SHOW_MULTIPAGE | DLG_OPEN_SHOW_LOADROTATED | DLG_OPEN_SHOW_LOADCOMPRESSED | DLG_OPEN_SHOW_FILEINFO | DLG_OPEN_SHOW_DELPAGE | DLG_OPEN_VIEWTOTALPAGES ; FOParm.bPreviewEnabled = TRUE; LeadDlg.SetOpenParams(&FOParm) ; LeadDlg.SetOpenFileName(&OpenFileName) ; LeadDlg.EnablePreview(TRUE); if(LeadDlg.DoModalOpen(m_hWnd) == SUCCESS_DLG_OK) { LeadDlg.GetFileName(szFileName, sizeof(szFileName)); if ( Bitmap.Load(szFileName, 0, ORDER_BGRORGRAY) == SUCCESS ) { // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; AddFrameInfo.uStructSize = sizeof(ADDFRAMEINFO); AddFrameInfo.pBitmapFrame = Bitmap.GetHandle(); AddFrameInfo.bKeepFrameState = FALSE; AddFrameInfo.bUseMask = FALSE; AddFrameInfo.nLocation = FRAME_INSIDE; AddFrameInfo.nQuality = FRAME_QUALITY_HIGH; AddFrameInfo.SmoothEdge = 50; AddFrameInfo.crMask = 0; nRet = m_Bitmap.AddFrame( &AddFrameInfo ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } } } RefreshBitmap(); } void CCLIPF32View::OnImageStar() { L_INT nRet; STARINFO StarInfo; L_TCHAR szMsg [L_MAXPATH] = _T(""); StarInfo.uStructSize = sizeof (STARINFO); StarInfo.nAngle = 0; StarInfo.nAngleOpac = 100; StarInfo.nBorderOpac = 100; StarInfo.nDistOpac = 0; StarInfo.nPhase = 0; StarInfo.nSpokeDiv = 0; StarInfo.pCenter.x = (LONG) (m_Bitmap.GetWidth() * 0.5); StarInfo.pCenter.y = (LONG) (m_Bitmap.GetHeight() * 0.5); StarInfo.uFlag = STR_INSIDE; StarInfo.uHoleSize = 50; StarInfo.uOpacity = 100; StarInfo.uSpoke = 5; StarInfo.uStarHeight = (L_UINT)(m_Bitmap.GetHeight() * 0.5); StarInfo.uStarWidth = (L_UINT)(m_Bitmap.GetWidth() * 0.5); StarInfo.crFillUpper = RGB(0, 0, 255); StarInfo.crFillLower = RGB(255, 0, 0); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DrawStar( &StarInfo ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnImageAddmessage() { L_INT nRet; LPADDMESGINFO pAddMesgInfo; L_TCHAR szMsg [L_MAXPATH] = _T(""); AddMsgDlg AddMsgDlg; CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->GetMainWnd(); if ( AddMsgDlg.DoModal() != IDOK ) return; pAddMesgInfo = new ADDMESGINFO; if(!pAddMesgInfo) return; memset(pAddMesgInfo, 0, sizeof(ADDMESGINFO)); pAddMesgInfo->uStructSize = sizeof(ADDMESGINFO); pAddMesgInfo->pStrMsg = new L_TCHAR[L_MAXPATH]; if(!pAddMesgInfo->pStrMsg) return; pAddMesgInfo->pStart = new POINT; if(!pAddMesgInfo->pStart) return; lstrcpy( (L_TCHAR *)pAddMesgInfo->pStrMsg, pFrame->m_strAddMsgText ); pAddMesgInfo->pPassword = NULL; pAddMesgInfo->pFileName = NULL; pAddMesgInfo->pDirectory = NULL; pAddMesgInfo->pStart->x = 0; pAddMesgInfo->pStart->y = 0; BeginWaitCursor() ; nRet = m_Bitmap.AddMessage( pAddMesgInfo ); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } else MessageBox (_T("The message was successfully added to the image."), _T("Notice"), MB_OK | MB_ICONINFORMATION ); RefreshBitmap(); } void CCLIPF32View::OnImageExtractmessage() { L_INT nRet; ADDMESGINFO AddMesgInfo; L_TCHAR szMsg [L_MAXPATH] = _T(""); memset (&AddMesgInfo, 0, sizeof (ADDMESGINFO)); AddMesgInfo.uStructSize = sizeof (ADDMESGINFO); AddMesgInfo.pStart = new POINT; if(!AddMesgInfo.pStart) return; AddMesgInfo.pStart->x = 0; AddMesgInfo.pStart->y = 0; nRet = m_Bitmap.ExtractMessage( &AddMesgInfo ); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } else MessageBox ( (L_TCHAR*)AddMesgInfo.pStrMsg, _T("Notice"), MB_OK | MB_ICONINFORMATION ); RefreshBitmap(); } void CCLIPF32View::OnImageResize() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor(); nRet = m_Bitmap.Size( m_Bitmap.GetWidth()/2, m_Bitmap.GetHeight()/2, SIZE_NORMAL ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RECT rcDest; SetRect(&rcDest,0,0,m_Bitmap.GetWidth(),m_Bitmap.GetHeight()); m_Bitmap.SetDstRect(&rcDest); RefreshBitmap(); } void CCLIPF32View::OnBrainAnalysis() { CKfmnRgnDlg KfmnRgnDlg; LBitmap lOrgBitmap; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; lOrgBitmap.Copy(m_Bitmap); KfmnRgnDlg.SetDlgParams(this); m_Bitmap.m_pKfmnDlg = &KfmnRgnDlg; KfmnRgnDlg.DoModal(); m_Bitmap.m_pKfmnDlg = NULL; m_Bitmap.SetHandle(lOrgBitmap.GetHandle()); RefreshBitmap(); } void CCLIPF32View::OnImageGraycoloration() { L_INT nRet, nBPP; L_UINT uCount, uMaxColor; GRAYCOLOR GrayColors[16]; LBitmapBase TmpBitmap; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; uMaxColor = GetBitmapMaxColors(); nBPP = m_Bitmap.GetBitsPerPixel(); GrayColors[0].uStructSize = sizeof (GRAYCOLOR); GrayColors[0].uThreshold = (L_UINT)(1 * uMaxColor / nBPP); GrayColors[0].crColor.rgbRed = 0; GrayColors[0].crColor.rgbGreen = 0; GrayColors[0].crColor.rgbBlue = 0; GrayColors[1].uStructSize = sizeof (GRAYCOLOR); GrayColors[1].uThreshold = (L_UINT)(2 * uMaxColor / nBPP); GrayColors[1].crColor.rgbRed = 0; GrayColors[1].crColor.rgbGreen = 0; GrayColors[1].crColor.rgbBlue = 127; GrayColors[2].uStructSize = sizeof (GRAYCOLOR); GrayColors[2].uThreshold = (L_UINT)(3 * uMaxColor / nBPP); GrayColors[2].crColor.rgbRed = 0; GrayColors[2].crColor.rgbGreen = 0; GrayColors[2].crColor.rgbBlue = 255; GrayColors[3].uStructSize = sizeof (GRAYCOLOR); GrayColors[3].uThreshold = (L_UINT)(4 * uMaxColor / nBPP); GrayColors[3].crColor.rgbRed = 0; GrayColors[3].crColor.rgbGreen = 127; GrayColors[3].crColor.rgbBlue = 0; GrayColors[4].uStructSize = sizeof (GRAYCOLOR); GrayColors[4].uThreshold = (L_UINT)(5 * uMaxColor / nBPP); GrayColors[4].crColor.rgbRed = 0; GrayColors[4].crColor.rgbGreen = 255; GrayColors[4].crColor.rgbBlue = 0; GrayColors[5].uStructSize = sizeof (GRAYCOLOR); GrayColors[5].uThreshold = (L_UINT)(6 * uMaxColor / nBPP); GrayColors[5].crColor.rgbRed = 0; GrayColors[5].crColor.rgbGreen = 255; GrayColors[5].crColor.rgbBlue = 127; GrayColors[6].uStructSize = sizeof (GRAYCOLOR); GrayColors[6].uThreshold = (L_UINT)(7 * uMaxColor / nBPP); GrayColors[6].crColor.rgbRed = 0; GrayColors[6].crColor.rgbGreen = 255; GrayColors[6].crColor.rgbBlue = 255; GrayColors[7].uStructSize = sizeof (GRAYCOLOR); GrayColors[7].uThreshold = (L_UINT)(8 * uMaxColor / nBPP); GrayColors[7].crColor.rgbRed = 127; GrayColors[7].crColor.rgbGreen = 0; GrayColors[7].crColor.rgbBlue = 0; GrayColors[8].uStructSize = sizeof (GRAYCOLOR); GrayColors[8].uThreshold = (L_UINT)(9 * uMaxColor / nBPP); GrayColors[8].crColor.rgbRed = 255; GrayColors[8].crColor.rgbGreen = 0; GrayColors[8].crColor.rgbBlue = 0; GrayColors[9].uStructSize = sizeof (GRAYCOLOR); GrayColors[9].uThreshold = (L_UINT)(10 * uMaxColor / nBPP); GrayColors[9].crColor.rgbRed = 255; GrayColors[9].crColor.rgbGreen = 0; GrayColors[9].crColor.rgbBlue = 127; GrayColors[10].uStructSize = sizeof (GRAYCOLOR); GrayColors[10].uThreshold = (L_UINT)(11 * uMaxColor / nBPP); GrayColors[10].crColor.rgbRed = 255; GrayColors[10].crColor.rgbGreen = 0; GrayColors[10].crColor.rgbBlue = 255; GrayColors[11].uStructSize = sizeof (GRAYCOLOR); GrayColors[11].uThreshold = (L_UINT)(12 * uMaxColor / nBPP); GrayColors[11].crColor.rgbRed = 255; GrayColors[11].crColor.rgbGreen = 127; GrayColors[11].crColor.rgbBlue = 0; GrayColors[12].uStructSize = sizeof (GRAYCOLOR); GrayColors[12].uThreshold = (L_UINT)(13 * uMaxColor / nBPP); GrayColors[12].crColor.rgbRed = 255; GrayColors[12].crColor.rgbGreen = 255; GrayColors[12].crColor.rgbBlue = 0; GrayColors[13].uStructSize = sizeof (GRAYCOLOR); GrayColors[13].uThreshold = (L_UINT)(14 * uMaxColor / nBPP); GrayColors[13].crColor.rgbRed = 127; GrayColors[13].crColor.rgbGreen = 255; GrayColors[13].crColor.rgbBlue = 255; GrayColors[14].uStructSize = sizeof (GRAYCOLOR); GrayColors[14].uThreshold = (L_UINT)(15 * uMaxColor / nBPP); GrayColors[14].crColor.rgbRed = 255; GrayColors[14].crColor.rgbGreen = 255; GrayColors[14].crColor.rgbBlue = 255; GrayColors[15].uStructSize = sizeof (GRAYCOLOR); GrayColors[15].uThreshold = (L_UINT)(16 * uMaxColor / nBPP); GrayColors[15].crColor.rgbRed = 127; GrayColors[15].crColor.rgbGreen = 127; GrayColors[15].crColor.rgbBlue = 127; uCount = 16; BeginWaitCursor(); TmpBitmap = m_Bitmap; TmpBitmap.Allocate (); nRet = m_Bitmap.ColorizeGray( TmpBitmap.GetHandle(), GrayColors, uCount ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } m_Bitmap.Copy( TmpBitmap ); RefreshBitmap(); } L_UINT CCLIPF32View::GetBitmapMaxColors () { L_UINT uMaxColors = 0; switch ( m_Bitmap.GetBitsPerPixel() ) { case 12: case 48: case 64: uMaxColors = 65535; break; case 16: if ( m_Bitmap.IsGrayScale() ) { uMaxColors = 65535; } else { uMaxColors = 255; } break; default: uMaxColors = 255; break; } return uMaxColors; } void CCLIPF32View::OnUpdateImageGraycoloration(CCmdUI* pCmdUI) { L_INT nBPP; L_BOOL bGrayScale; nBPP = m_Bitmap.GetBitsPerPixel(); bGrayScale = m_Bitmap.IsGrayScale(); if ( !m_Bitmap.IsAllocated() || !bGrayScale || nBPP == 1 ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnImageDsa() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DigitalSubtract( &m_Bitmap, 0 ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnImageCr() { L_INT nRet; L_UINT uContrast, uEdgeLevels, uEdgeCoeff, uLatitudeLevels, uLatitudeCoeff, uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uContrast = 1500; uEdgeLevels = MSE_DEFAULT; uEdgeCoeff = MSE_DEFAULT; uLatitudeLevels = MSE_DEFAULT; uLatitudeCoeff = MSE_DEFAULT; uFlags = MSE_GAUSSIAN; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MultiScaleEnhancement( uContrast, uEdgeLevels, uEdgeCoeff, uLatitudeLevels, uLatitudeCoeff, uFlags ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnImageBitmapselector() { L_INT nRet; L_UINT uThreshold, uSrcLowBit, uSrcHighBit; L_BOOL bCombine; COLORREF crColor; LBitmapBase TmpBitmap; L_TCHAR szMsg [L_MAXPATH] = _T(""); crColor = RGB(0, 0, 255); uSrcLowBit = 0; uSrcHighBit = m_Bitmap.GetBitsPerPixel() - 1; uThreshold = 0; bCombine = TRUE; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; TmpBitmap = m_Bitmap; TmpBitmap.Allocate (); nRet = m_Bitmap.SelectData( TmpBitmap.GetHandle(), crColor, uSrcLowBit, uSrcHighBit, uThreshold, bCombine ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } m_Bitmap.Copy( TmpBitmap ); RefreshBitmap(); } void CCLIPF32View::OnUpdateImageBitmapselector(CCmdUI* pCmdUI) { L_INT nBPP; L_BOOL bGrayScale; nBPP = m_Bitmap.GetBitsPerPixel(); bGrayScale = m_Bitmap.IsGrayScale(); if ( !m_Bitmap.IsAllocated() || !bGrayScale || nBPP == 1 ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnImageShiftbitmap() { L_INT nRet; L_UINT uSrcLowBit, uSrcHighBit, uDstLowBit, uDstBitsPerPixel; LBitmapBase TmpBitmap; L_TCHAR szMsg [L_MAXPATH] = _T(""); uSrcLowBit = 0; uSrcHighBit = 7; uDstLowBit = 1; uDstBitsPerPixel = 8; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; TmpBitmap = m_Bitmap; TmpBitmap.Allocate (); nRet = m_Bitmap.ShiftData( TmpBitmap.GetHandle(), uSrcLowBit, uSrcHighBit, uDstLowBit, uDstBitsPerPixel ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); return; } m_Bitmap.Copy( TmpBitmap ); RefreshBitmap(); } void CCLIPF32View::OnUpdateImageShiftbitmap(CCmdUI* pCmdUI) { L_INT nBPP; L_BOOL bGrayScale; nBPP = m_Bitmap.GetBitsPerPixel(); bGrayScale = m_Bitmap.IsGrayScale(); if ( !m_Bitmap.IsAllocated() || !bGrayScale || nBPP == 1 ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnImageSubtractbackground() { L_INT nRet; L_UINT uRollingBall, uShrinkSize, uBrightness, uFlags; L_TCHAR szMsg [L_MAXPATH] = _T(""); uRollingBall = 50; uShrinkSize = SBK_DEPEND; uBrightness = 100; uFlags = 0; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.SubtractBackground( uRollingBall, uShrinkSize, uBrightness, uFlags ); EndWaitCursor(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnUpdateImageAnalysisHistogram(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageGetrgnperimeter(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageGetferets(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageGetobjectinfow(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageGetobjectinfonw(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageRedeyeremove(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateImageAddborder(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageAddframe(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageAddstar(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageAddmessage(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageExtractmessage(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageResize(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageMedicalDsa(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageMedicalCr(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageMedicalSubtractbackground(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorGray8(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorGray12(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorGray16(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorAutolevel(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorAutocontrast(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorAutoluminosity(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorBci(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorLeveling(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorBalancecolor(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorChannelmixer(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorBalancecolors(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorDesat(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorFillbitmap(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorHsb(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorLightControl(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorMath(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorRepclr(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorSampleTarget(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorSelectivecolor(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorSwapcolor(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorAce(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorHistogramequalize(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorLocalhisto(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorRemaphue(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorRemapintensity(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorAutobinarysegment(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorColorthreshold(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorDynamicthreshold(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorBinarysegment(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorClrres(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorColoredgray(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorDuotone(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorConverttogray(CCmdUI* pCmdUI) { if ( !m_Bitmap.IsAllocated() || m_Bitmap.IsGrayScale() ) pCmdUI->Enable( FALSE ); else pCmdUI->Enable( TRUE ); } void CCLIPF32View::OnUpdateColorHalftone(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersShadow(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersShear(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersSmooth(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersSphere(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersSpiral(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersStatis(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersSwirl(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersTunnel(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersUnsharp(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersWave(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersWavezoom(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersWind(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersWvrad(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersRippel(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersReveffect(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPuzzle(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPolar(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPlaneBend(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPlane(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPixelate(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPinch(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersOpacity(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersOcean(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersNum(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMzoom(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMultiply(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMrad(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMotionblur(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMin(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMedian(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersMax(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersLight(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersLens(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersImpress(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersHandwave(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersGlow(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersGlassEffect(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersGaussianblur(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFreehandnoise(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFreeRadBend(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFreePlaneBend(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFindedges(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFademask(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersEdgedetection(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersDry(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersDice(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersDeinterlace(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersCylender(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersCubismEffect(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersConvmatrix(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersComsts(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersCombine(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersBump(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersBnd(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersAntialias(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersAging(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersAddbitmap(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersAddnoise(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersAddfuncnoise(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPixelatePicturizeUsesameimage(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPixelatePicturizeUsemultiplebitmaps(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPixelatePicturizeSpecifydirectoryasasource(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionDft(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionOnoffmask(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionDisplayfourier(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionConv(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionSeg(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionSkelton(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->GetMainWnd(); if ( nChar == VK_ESCAPE && pFrame->m_bInProcess ) pFrame->m_bAbortProcess = TRUE; CView::OnKeyDown(nChar, nRepCnt, nFlags); } void CCLIPF32View::OnUpdateFiltersMosaictiles(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPerspective(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersRomanmosaic(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersZigzag(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersColoredballs(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPointillist(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersColoredpencile(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersDiffuseglow(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersDisplacement(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersEmbossext(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPerlinenoise(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersFragment(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersPlasma(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersVignnet(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersBrickstexture(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersCanvas(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersClouds(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateFiltersOffset(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionCorrelationlist(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateDetectionDeskewext(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorAdjusttint(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() && !m_Bitmap.IsGrayScale() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorYuvgamma(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorColoredhalftone(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorHalftonepattern(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateColorHighpassfilter(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnUpdateImageMedicalBrainanalysis(CCmdUI* pCmdUI) { if ( m_Bitmap.IsAllocated() ) pCmdUI->Enable( TRUE ); else pCmdUI->Enable( FALSE ); } void CCLIPF32View::OnFiltersMosaictiles() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); MOSAICTILESINFO MosaicInfo; /* Structure which store the required parameters*/ /*Fill the structures with the required parameters, the effect is applied using rectangular tiles, with black border color*/ memset(&MosaicInfo,0,sizeof(MOSAICTILESINFO)); MosaicInfo.uStructSize = sizeof(MOSAICTILESINFO); MosaicInfo.crBorderColor = RGB(0, 0, 0); MosaicInfo.crTilesColor = RGB(255, 255, 255); MosaicInfo.uFlags = MSCT_CART | MSCT_SHADOWGRAY; MosaicInfo.uTileHeight = m_Bitmap.GetHeight()/5; MosaicInfo.uTileWidth = m_Bitmap.GetWidth()/5; MosaicInfo.uOpacity = 50; MosaicInfo.uShadowThreshold= 0; MosaicInfo.uPenWidth = 7; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MosaicTiles(&MosaicInfo); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPerspective() { L_INT nRet; POINT pNewLocations [4]; L_TCHAR szMsg [L_MAXPATH] = _T(""); pNewLocations [0].x=m_Bitmap.GetWidth()*3/9; pNewLocations [0].y=m_Bitmap.GetHeight()*1/12; pNewLocations [1].x=m_Bitmap.GetWidth()*3/4; pNewLocations [1].y=m_Bitmap.GetHeight()*2/12; pNewLocations [2].x=m_Bitmap.GetWidth()*2/10; pNewLocations [2].y=m_Bitmap.GetHeight()*8/10; pNewLocations [3].x=m_Bitmap.GetWidth()*10/11; pNewLocations [3].y=m_Bitmap.GetHeight()*7/10; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Perspective(pNewLocations,RGB(255,255,255), PERSPECTIVE_IMAGE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersRomanmosaic() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.RomanMosaic(15, 15, 5, SHADOW_E, 0, RGB(0,0,0), RMN_RECT | RMN_SHADOWGRAY); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersZigzag() { L_INT nRet; POINT CenterPt; L_TCHAR szMsg [L_MAXPATH] = _T(""); CenterPt.x = m_Bitmap.GetWidth()/2; CenterPt.y = m_Bitmap.GetHeight()/2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Apply ZigZag waves from the center of the image*/ nRet = m_Bitmap.ZigZag(50, 1000, 10, 0, CenterPt, 0, FILL_RPT | ZG_POND); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersColoredballs() { L_INT nRet; COLORREF pBallColors[7]; L_TCHAR szMsg [L_MAXPATH] = _T(""); pBallColors[0] = RGB(230,50,50); pBallColors[1] = RGB(230,200,160); pBallColors[2] = RGB(255,255,128); pBallColors[3] = RGB(240,50,100); pBallColors[4] = RGB(255,255,180); pBallColors[5] = RGB(170,240,100); pBallColors[6] = RGB(255,255,255); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColoredBalls(1000, 25, 15, 4500, RGB(255,255,255), RGB(255,0,0), RGB(255,255,0), pBallColors, 7, 64, 10, 100, CLRBALLS_SHADING_CIRCULAR|CLRBALLS_STICKER|CLRBALLS_IMAGE|CLRBALLS_BALLCLR_OPACITY); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPointillist() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Pointillist(25, RGB(255,255,255), POINTILLIST_COLOR | POINTILLIST_POINT); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersColoredpencile() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColoredPencil(50, 3); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersDiffuseglow() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DiffuseGlow(500, 500, 200, 50, RGB(255, 255, 255)); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersDisplacement() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; /* Shift the image according to the displacement map*/ nRet = m_Bitmap.DisplaceMap(m_Bitmap.GetHandle(), 5, 5, RGB(0,0,0), FILL_CLR|DSPL_TILE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersEmbossext() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.MaskConvolution(500, 45, 3, MSKC_EMBOSS); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPerlinenoise() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Perlin(0, 10, 8, 50, RGB (0, 0, 0), RGB (255, 0, 0), (L_INT) m_Bitmap.GetWidth() / 2, (L_INT) m_Bitmap.GetHeight() / 2, 4, 20, PRL_PURE |PRL_CIRCLE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersFragment() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Fragment( 4, 100); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersPlasma() { L_INT nRet; PLASMAINFO PlasmaInfo; L_TCHAR szMsg [L_MAXPATH] = _T(""); PlasmaInfo.uStructSize = sizeof(PLASMAINFO); PlasmaInfo.uShift = 0; PlasmaInfo.uOpacity = 50; PlasmaInfo.uSize = 300; PlasmaInfo.uFlags = PLSTYP_DIAGONAL | PLSCLR_RGB2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.PlasmaFilter(&PlasmaInfo); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersVignnet() { L_INT nRet; VIGNETTEINFO VignetteInfo; /* Structure which store the required parameters*/ L_TCHAR szMsg [L_MAXPATH] = _T(""); /*Fill the structures with the required parameters, Vignette shape is ellipse, Feathering inside the vignette object, the ellipse is centered, fading color is blue*/ VignetteInfo.uStructSize = sizeof(VIGNETTEINFO); VignetteInfo.crVigColor = RGB(0,0,255); VignetteInfo.nFading = 50; VignetteInfo.uFlags = VIG_ELLIPSE | VIG_FILLIN; VignetteInfo.uFadingRate = 100; VignetteInfo.uHeight = m_Bitmap.GetHeight()/ 2; VignetteInfo.uWidth = m_Bitmap.GetWidth()/ 2; VignetteInfo.ptCenter.x = m_Bitmap.GetWidth()/ 2; VignetteInfo.ptCenter.y = m_Bitmap.GetHeight()/ 2; // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Vignette(&VignetteInfo); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersBrickstexture() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.BricksTexture(60, 20, 0, 0, 3, 4, 315, 33, 20, 0, 10, 0, 0, BRICKS_SMOOTHEDOUT); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersCanvas() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Canvas(&m_Bitmap, 100, 100, 0, 0, 10, CANVAS_SHIFT); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersClouds() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Clouds( 1000, 4, 10, 10, RGB(255,255,255), RGB(0,0,0), CLD_DIFFERENCE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnFiltersOffset() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.Offset(m_Bitmap.GetWidth() / 2, m_Bitmap.GetHeight() / 2, 0, FILL_WRAP); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnDetectionCorrelationlist() { L_INT nRet; POINT Points[50] = {0}; L_UINT puListIndex [50] = {0}; L_UINT uNumOfPoints = 0 ; LBitmap Bitmap1, Bitmap2; LBitmapList BitmapList; L_TCHAR szMsg [L_MAXPATH] = _T(""); RECT rcRgn, rcRect; CString csFileName; CRect rcClientRect; CCLIPF32App * pTheApp = (CCLIPF32App *)AfxGetApp(); BitmapList.Create(); // Load the 'LetterA.cmp' image file csFileName.Format(TEXT("%s\\LetterA.cmp"), pTheApp->m_csImagesPath); nRet = Bitmap1.Load((L_TCHAR *)(LPCTSTR)csFileName,0,ORDER_BGR); if( nRet!=SUCCESS ) { MessageBox ("Couldn't load \" " +csFileName+ " \" !", MB_OK); return; } // Load the 'LetterR.cmp' image file csFileName.Format(TEXT("%s\\LetterR.cmp"), pTheApp->m_csImagesPath); nRet = Bitmap2.Load((L_TCHAR *)(LPCTSTR)csFileName,0,ORDER_BGR); if( nRet!=SUCCESS ) { MessageBox ("Couldn't load \" " +csFileName+ " \" !", MB_OK); return; } //"All the images in the list should have the same dimensions"// Bitmap1.Region()->GetRgnBounds(&rcRgn); // Load the 'clean.tif' image file csFileName.Format(TEXT("%s\\clean.tif"), pTheApp->m_csImagesPath); nRet = m_Bitmap.Load((L_TCHAR *)(LPCTSTR)csFileName,0,ORDER_BGR); GetClientRect(rcClientRect); OnSize(0, rcClientRect.right, rcClientRect.bottom); if( nRet!=SUCCESS ) { MessageBox ("Couldn't load \" " +csFileName+ " \" !", MB_OK); return; } RefreshBitmap(); BeginWaitCursor(); // change the view perspective for the bitmaps to TOP_LEFT m_Bitmap.ChangeViewPerspective(TOP_LEFT); Bitmap1.ChangeViewPerspective(TOP_LEFT); Bitmap2.ChangeViewPerspective(TOP_LEFT); nRet = BitmapList.InsertItem(&Bitmap1); nRet = BitmapList.InsertItem(&Bitmap2); nRet = m_Bitmap.CorrelationList(BitmapList.GetHandle(), Points, puListIndex, 50 , &uNumOfPoints, 1, 1, 90); if (nRet == SUCCESS && uNumOfPoints) { // Release any previous region RECT rcOff = {0}; m_Bitmap.Region()->GetRgnBounds(&rcOff); m_Bitmap.Region()->Free(); for(int i = 0; i < (L_INT)uNumOfPoints; i++) { rcRect.left = Points[i].x + rcOff.left; rcRect.top = Points[i].y + rcOff.top; rcRect.right = rcRect.left + (rcRgn.right - rcRgn.left); rcRect.bottom = rcRect.top + (rcRgn.bottom - rcRgn.top); if(i) { m_Bitmap.Region()->SetRgnCombineMode(L_RGN_OR); m_Bitmap.Region()->SetRgnRect(&rcRect); } else { m_Bitmap.Region()->SetRgnCombineMode(L_RGN_SET); m_Bitmap.Region()->SetRgnRect(&rcRect); } } EndWaitCursor(); m_hRegion = m_Bitmap.Region()->GetRgnHandle(); } BitmapList.SetHandle(NULL, 0); BitmapList.Destroy(); if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf(szMsg, _T("Function failed with error code: %d"), nRet); MessageBox(szMsg, _T("ERROR"), MB_OK | MB_ICONERROR); } } void CCLIPF32View::OnDetectionDeskewext() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.DeskewExt(NULL, 1000, 2, 0, DSKW_PROCESS | DSKW_NOFILL| DSKW_LINEAR| DSKW_DOCUMENTIMAGE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorAdjusttint() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.AdjustTint(-6500,2000); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorYuvgamma() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.GammaCorrectExt(250, YUV_SPACE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorColoredhalftone() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.ColorHalfTone(15, 10800, 16200, 9000,4500); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorHalftonepattern() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.HalfTonePattern(100, 200, 12, 2, 4500, RGB(255,255,255), RGB(255,0,0), HTPATTERN_LINE); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnColorHighpassfilter() { L_INT nRet; L_TCHAR szMsg [L_MAXPATH] = _T(""); // Load the original bitmap if ( LoadOriginalBitmap() != SUCCESS ) return; BeginWaitCursor() ; nRet = m_Bitmap.HighPassFilter(10, 100); EndWaitCursor() ; if (nRet != SUCCESS && nRet != SUCCESS_ABORT) { wsprintf (szMsg, _T("Function failed with error code: %d"), nRet); MessageBox (szMsg, _T("ERROR"), MB_OK | MB_ICONERROR ); } RefreshBitmap(); } void CCLIPF32View::OnChangeCursor(LPCTSTR idCursor) { SetCursor(LoadCursor(NULL, idCursor)); } BOOL CCLIPF32View::OnEraseBkgnd(CDC* pDC) { return(TRUE); } void CCLIPF32View::OnVScroll(UINT nCode, UINT nPos, CScrollBar* pScrollBar) { L_INT nScrollInc; /* Vertical Increment for Scroll */ m_bInScroll = TRUE; switch (nCode) { case SB_BOTTOM: /* Increment by Difference between Max scroll and current scroll position */ nScrollInc = m_nVScrollMax - m_nVScrollPos; break; case SB_TOP: /* Decrement by current scroll position */ nScrollInc = -m_nVScrollPos; break; case SB_LINEDOWN: /* Increment by one step */ nScrollInc = m_nVScrollStep; break; case SB_LINEUP: /* Decrement by one step */ nScrollInc = -m_nVScrollStep; break; case SB_PAGEDOWN: /* Increment by Maximum */ nScrollInc = max (m_nVScrollStep, (m_cyClient - m_nVScrollStep)); break; case SB_PAGEUP: /* Decrement by Maximum */ nScrollInc = -max (m_nVScrollStep, (m_cyClient - m_nVScrollStep)); break; case SB_THUMBPOSITION: /* Increment by Difference between Current scroll position and THUMB position */ nScrollInc = nPos - m_nVScrollPos; break; default: /* No increment */ nScrollInc = 0; break; } nScrollInc = max (-m_nVScrollPos, min (nScrollInc, (m_nVScrollMax - m_nVScrollPos))); if (nScrollInc) { /* if Scroll increment is greater than nScrollInc, Increment scroll position by nScrollInc */ m_nVScrollPos += nScrollInc; /* Reposition the picture at (0, -nScrollInc) */ OffsetRect (&m_rcView, 0, -nScrollInc); /* Scroll up the window by nSrollInc */ ScrollWindow (0, -nScrollInc, NULL, NULL); /* Set new scroll position at current scroll position */ SetScrollPos (SB_VERT, m_nVScrollPos, TRUE); m_Bitmap.SetDstRect(&m_rcView); /* Update window */ UpdateWindow(); } m_bInScroll = FALSE; // TODO: Add your message handler code here and/or call default CView::OnVScroll(nCode, nPos, pScrollBar); } void CCLIPF32View::OnHScroll(UINT nCode, UINT nPos, CScrollBar* pScrollBar) { L_INT nScrollInc; /* Horizontal Increment for scroll */ m_bInScroll = TRUE; switch (nCode) { /* Decrement by current scroll position */ case SB_LEFT: nScrollInc = -m_nHScrollPos; break; /* Increment by the difference between Max scroll and current scroll position */ case SB_RIGHT: nScrollInc = m_nHScrollMax - m_nHScrollPos; break; /* Decrement by one step */ case SB_LINELEFT: nScrollInc = -m_nHScrollStep; break; /* Increment by one step */ case SB_LINERIGHT: nScrollInc = m_nHScrollStep; break; /* Decrement by Maximum */ case SB_PAGELEFT: nScrollInc = -max (m_nHScrollStep, (m_cxClient - m_nHScrollStep)); break; /* Increment by Maximum */ case SB_PAGERIGHT: nScrollInc = max (m_nHScrollStep, (m_cxClient - m_nHScrollStep)); break; /* Increment by difference between current scroll position and THUMB position */ case SB_THUMBPOSITION: nScrollInc = nPos - m_nHScrollPos; break; /* No Increment */ default: nScrollInc = 0; break; } nScrollInc = max (-m_nHScrollPos, min (nScrollInc, (m_nHScrollMax - m_nHScrollPos))); if (nScrollInc) { /* if Scroll increment is greater than nScrollInc, Increment scroll position by nScrollInc */ m_nHScrollPos += nScrollInc; /* Reposition the picture at (0, -nScrollInc) */ OffsetRect (&m_rcView, -nScrollInc, 0); /* Scroll left the window by nSrollInc */ ScrollWindow(-nScrollInc, 0, NULL, NULL); /* Set new scroll position at current scroll position; */ SetScrollPos ( SB_HORZ, m_nHScrollPos, TRUE); m_Bitmap.SetDstRect(&m_rcView); /* Update window */ UpdateWindow(); } m_bInScroll = FALSE; // TODO: Add your message handler code here and/or call default CView::OnHScroll(nCode, nPos, pScrollBar); } void CCLIPF32View::OnSize(UINT nState, int nCx, int nCy) { static BOOL fSizeInUse = FALSE; L_INT nWidth, nHeight, nVScroll, nHScroll; DWORD dwStyle; if (!fSizeInUse) { fSizeInUse = TRUE; if (nState != SIZEICONIC) /* If window is normal */ { if (!m_Bitmap.IsAllocated()) /* If Flags is not allocated */ { /* set width and height to ZERO */ nWidth = 0; nHeight = 0; } else /* If Flags allocated */ { /* Scale the Bitmap Width to new Width */ nWidth = m_Bitmap.GetWidth(); /* Scale the Bitmap Height to new Height */ nHeight = m_Bitmap.GetHeight(); } /* Set client dimensions to current width and height */ m_cxClient = nCx; m_cyClient = nCy; dwStyle = GetStyle() ; /* Get Vertical scroll arrow width */ nVScroll = GetSystemMetrics (SM_CXVSCROLL); /* Get Horizontal scroll arrow width */ nHScroll = GetSystemMetrics (SM_CXHSCROLL); /* If Vertical scroll */ if (WS_VSCROLL & dwStyle) m_cxClient += nVScroll; /* If Horizontal scroll */ if (WS_HSCROLL & dwStyle) m_cyClient += nHScroll; /* If client width < current width */ if (m_cxClient < nWidth) { m_cyClient -= nHScroll; if (m_cyClient < nHeight) m_cxClient -= nVScroll; } /* If client height < current height */ else if (m_cyClient < nHeight) { m_cxClient -= nVScroll; if (m_cxClient < nWidth) m_cyClient -= nHScroll; } /* Set Horizontal scroll step = 1/10 of client width, if > 1 */ m_nHScrollStep = max (1, m_cxClient / SCROLL_RATIO); /* Set Vertical scroll step = 1/10 of client height, if > 1 */ m_nVScrollStep = max (1, m_cyClient / SCROLL_RATIO); /* Set vertical scroll range */ m_nVScrollMax = max (0, (nHeight - m_cyClient /*- 1*/)); /* Set vertical scroll position */ m_nVScrollPos = max (0, min (m_nVScrollPos, m_nVScrollMax)); /* Set horizontal scroll range */ m_nHScrollMax = max (0, (nWidth - m_cxClient /*- 1*/)); /* Set horizontal scroll position */ m_nHScrollPos = max (0, min (m_nHScrollPos, m_nHScrollMax)); /* If Flags allocated */ if (m_Bitmap.IsAllocated()) { /* Set rcView to new width and new height */ SetRect (&m_rcView, 0, 0, nWidth, nHeight); /* Set offset by current scroll position */ OffsetRect (&m_rcView, -m_nHScrollPos, -m_nVScrollPos); } /* Set horizontal scroll range = nHScrollMax */ SetScrollRange (SB_HORZ, 0, m_nHScrollMax, FALSE); /* Set horizontal scroll position */ SetScrollPos (SB_HORZ, m_nHScrollPos, TRUE); /* Set vertical scroll range = nVScrollMax */ SetScrollRange (SB_VERT, 0, m_nVScrollMax, FALSE); /* Set vertical scroll position */ SetScrollPos (SB_VERT, m_nVScrollPos, TRUE); } else /* If window is iconized */ { /* Retain the x-client and y-client area */ m_cxClient = nCx; m_cyClient = nCy; /* set client area */ SetRect (&m_rcView, 0, 0, m_cxClient, m_cyClient); } fSizeInUse = FALSE; } m_Bitmap.SetDstRect(&m_rcView); HandlePalette(WM_QUERYNEWPALETTE,NULL); Invalidate(TRUE); UpdateWindow(); //parent's handler: CView::OnSize(nState, nCx, nCy); } L_BOOL CCLIPF32View::HandlePalette(UINT uMsg,HWND hWnd) { HDC hDC; switch(uMsg) { case WM_PALETTECHANGED: if(m_hWnd== hWnd) return TRUE; case WM_SYSCOLORCHANGE: case WM_QUERYNEWPALETTE: hDC = ::GetDC(m_hWnd); HPALETTE hPalette = m_Bitmap.CreatePaintPalette(hDC); L_UINT uColor=0; if(hPalette) { HPALETTE oldPalette = ::SelectPalette(hDC,hPalette,(uMsg==WM_PALETTECHANGED)); uColor=::RealizePalette(hDC); ::SelectPalette(hDC,oldPalette,TRUE); } ::ReleaseDC(m_hWnd,hDC); if(uColor!=0) { InvalidateRect(NULL,false); UpdateWindow(); return TRUE; } break; } return FALSE; } void CCLIPF32View::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { if(bActivate && pActivateView == this) { HandlePalette(WM_QUERYNEWPALETTE,NULL); Invalidate(TRUE); UpdateWindow(); } CView::OnActivateView(bActivate, pActivateView, pDeactiveView); } L_VOID CCLIPF32View::RefreshBitmap() { m_hRegion = NULL; HandlePalette(WM_QUERYNEWPALETTE,NULL); Invalidate(TRUE); UpdateWindow(); } void CCLIPF32View::OnTimer(UINT nIDEvent) { if(m_uTimer == nIDEvent) { LBitmapTimer(); } } void CCLIPF32View::LBitmapTimer() { RGNXFORM XForm; HDC hDC; if(m_hRegion != NULL) { hDC = ::GetDC(GetSafeHwnd()); if (!hDC) return; m_Bitmap.Paint()->SetDC(hDC); XForm.uViewPerspective = TOP_LEFT; XForm.nXScalarNum = 1; XForm.nXScalarDen = 1; XForm.nYScalarNum = 1; XForm.nYScalarDen = 1; XForm.nXOffset = -::GetScrollPos(GetSafeHwnd(), SB_HORZ); XForm.nYOffset = -::GetScrollPos(GetSafeHwnd(), SB_VERT); m_uFrameType = (m_uFrameType + 1) % 8; m_Bitmap.Paint()->FrameRgn(m_uFrameType, &XForm); ::ReleaseDC(GetSafeHwnd(), hDC); m_Bitmap.Paint()->SetDC(NULL); } } void CCLIPF32View::OnDestroy() { m_hRegion = NULL; KillTimer(m_uTimer); CView::OnDestroy(); }