/*[]=====================================================================[]*/ /*[] LeadTools Run Time Library - Version 14 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2004 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ #include "ImgPF.h" static L_BOOL GlowDialog_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify); static L_BOOL GlowDialog_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT nCode, L_INT nPos); static L_BOOL GlowDialog_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_VOID GlowDialog_OnTimer (HWND hWnd, L_INT nID); static L_VOID L_ApplyFilter (HWND hWnd); L_BOOL CALLBACK GlowDlgProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, GlowDialog_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, GlowDialog_OnInitDialog); HANDLE_MSG (hWnd, WM_HSCROLL, GlowDialog_OnHScroll); HANDLE_MSG (hWnd, WM_TIMER, GlowDialog_OnTimer); case WM_USER_UPDATEVIEW: StatusProc.ProgressValue = 100; L_ApplyFilter (hWnd); break; } return FALSE; } static L_BOOL GlowDialog_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { LPGLWDLGDATA pGlwDlgData; HWND hWndParent; pCHILDDATA pData; RECT rcRgn; L_INT nSlider; L_INT nRangeMax[] = { 32, 20 , 255}; L_INT nRangeMin[] = { 2, 1 , 0}; L_INT nPosInit [] = { 3, 1 , 0}; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); pGlwDlgData = (LPGLWDLGDATA)lParam; SetWindowLong(hWnd,GWL_USERDATA,(LONG)pGlwDlgData); MoveDialogToMiddle(hWnd); //MEMDISK...// MemorizeAndCopyBitmap (hWndParent, &pGlwDlgData->Bitmap); L_GetBitmapRgnBounds(&pGlwDlgData->Bitmap, NULL, &rcRgn); ShowWindow(hWnd, SW_SHOW); StatusProc.bProgress = TRUE; StatusProc.bInvalidate = FALSE; StatusProc.bEnd = FALSE; StatusProc.DlgWnd = hWnd; StatusProc.ProgressValue = 100; StatusProc.ProgWnd = GetDlgItem(hWnd, IDC_GLW_PROG); Progress_SetRange(StatusProc.ProgWnd, 0, 100); Progress_SetPos(StatusProc.ProgWnd, 0); if (Is16Bit(&pData->LeadBitmap)) { nRangeMax[2] = pData->LeadBitmap.BitsPerPixel == 12 ? 0xfff : 0xffff; } pGlwDlgData->uSize = nPosInit[0]; pGlwDlgData->uBright = nPosInit[1]; pGlwDlgData->uThresh = nPosInit[2]; pGlwDlgData->nSlideNum = 3; pGlwDlgData->nSldBaseID = IDC_GLW_SIZ_SLD; pGlwDlgData->nEdtBaseID = IDC_GLW_SIZ_EDT; for(nSlider = 0; nSlider < pGlwDlgData->nSlideNum; nSlider++) { Trackbar_SetTheRange(GetDlgItem(hWnd, pGlwDlgData->nSldBaseID + nSlider), TRUE, nRangeMin[nSlider], nRangeMax[nSlider]); Trackbar_SetPos (GetDlgItem(hWnd, pGlwDlgData->nSldBaseID + nSlider), TRUE, nPosInit[nSlider] ); SetDlgItemInt(hWnd, pGlwDlgData->nEdtBaseID + nSlider, nPosInit[nSlider], FALSE); SetNumericEditBox(GetDlgItem(hWnd, pGlwDlgData->nEdtBaseID + nSlider), nRangeMin[nSlider], nRangeMax[nSlider], 1, 0, 0); } pData->uTimerID = SetTimer(hWnd, 1, 100, NULL); L_ApplyFilter (hWnd); return ( TRUE ); } static L_VOID GlowDialog_OnTimer (HWND hWnd, L_INT nID) { Dialog_Timer(nID); } static L_BOOL GlowDialog_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT codeNotify) { LPGLWDLGDATA pGlwDlgData; HWND hWndParent; HWND hCtl; pCHILDDATA pData; L_INT nValue; L_INT nIndex; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); pGlwDlgData = (LPGLWDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); if(nID >= pGlwDlgData->nEdtBaseID && nID < (pGlwDlgData->nEdtBaseID + pGlwDlgData->nSlideNum)) { if(codeNotify == EN_CHANGE) { nValue = GetDlgItemInt(hWnd, nID, NULL, TRUE); hCtl = GetDlgItem(hWnd, nID + pGlwDlgData->nSlideNum); nIndex = nID - pGlwDlgData->nEdtBaseID; Trackbar_SetPos (hCtl, TRUE, nValue); switch (nIndex) { case 0: if(pGlwDlgData->uSize == (L_UINT)nValue) return TRUE; pGlwDlgData->uSize = nValue; break; case 1: if(pGlwDlgData->uBright == (L_UINT)nValue) return TRUE; pGlwDlgData->uBright = nValue; break; case 2: if(pGlwDlgData->uThresh == (L_UINT)nValue) return TRUE; pGlwDlgData->uThresh = nValue; break; } L_ApplyFilter (hWnd); } } switch(nID) { case IDCANCEL: StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; StatusProc.ProgressValue = 100; EndDialog(hWnd, FALSE); break; case IDOK: ShowStatusWindow(FALSE); StatusProc.bStillWork = TRUE; StatusProc.bInvalidate = TRUE; StatusProc.bEnd = TRUE; EndDialog(hWnd, TRUE); break; } return TRUE; } static L_BOOL GlowDialog_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT nCode, L_INT nPos) { LPGLWDLGDATA pGlwDlgData = (LPGLWDLGDATA)GetWindowLong(hWnd, GWL_USERDATA); return (SetDlgItemInt(hWnd, GetDlgCtrlID(hWndCtl) - pGlwDlgData->nSlideNum, Trackbar_GetPos(hWndCtl), TRUE)); } static L_VOID L_ApplyFilter (HWND hWnd) { pCHILDDATA pData; L_INT nRet = 0; HWND hWndParent; LPGLWDLGDATA pGlwDlgData; if ( 100 != StatusProc.ProgressValue ) { StatusProc.bKillProgress = TRUE ; return ; } pGlwDlgData = (LPGLWDLGDATA) GetWindowLong(hWnd,GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); FreeMemorizedBitmap (hWndParent); //MEMDISK// L_CopyBitmap(&pData->LeadBitmap, &pGlwDlgData->Bitmap, sizeof(BITMAPHANDLE)); nRet = L_GlowFilterBitmap(&pData->LeadBitmap, pGlwDlgData->uSize, pGlwDlgData->uBright, pGlwDlgData->uThresh); if(nRet == SUCCESS) { InvalidateRect(hWndParent, NULL, FALSE); StatusProc.ProgressValue = 100; Progress_SetPos(StatusProc.ProgWnd , 0); if(StatusProc.bEnd) { StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; } } }