/*[]=====================================================================[]*/ /*[] LeadTools Run Time Library - Version 14 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2004 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ #include "ImgPF.h" static L_BOOL SAMTRDialog_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_BOOL SAMTRDialog_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_VOID L_ApplyFilter (HWND hWnd); static L_VOID SAMTRDialog_OnTimer (HWND hWnd, L_INT nID); L_INT nWidthRange; L_INT nHeightRange; L_BOOL CALLBACK SAMTRDialogProc (HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG (hWnd, WM_COMMAND, SAMTRDialog_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, SAMTRDialog_OnInitDialog); HANDLE_MSG (hWnd, WM_TIMER, SAMTRDialog_OnTimer); case WM_USER_UPDATEVIEW: StatusProc.ProgressValue = 100; L_ApplyFilter (hWnd); break; } return FALSE; } static L_BOOL SAMTRDialog_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) { LPSAMPTRDATA pSampleData; pCHILDDATA pData; HWND hWndParent; L_INT nPosInit [] = { 50, 50, 50, 255, 255, 255}; L_INT nEdit; MoveDialogToMiddle(hWnd); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); pSampleData = (LPSAMPTRDATA) lParam; SetWindowLong(hWnd, GWL_USERDATA, (LONG)pSampleData); //MEMDISK...// MemorizeAndCopyBitmap (hWndParent, &pSampleData->Bitmap); StatusProc.bProgress = TRUE; StatusProc.bInvalidate = FALSE; StatusProc.bEnd = FALSE; StatusProc.DlgWnd = hWnd; StatusProc.ProgressValue = 100; StatusProc.ProgWnd = GetDlgItem(hWnd, IDC_ST_PROG); Progress_SetRange(StatusProc.ProgWnd, 0, 100); Progress_SetPos(StatusProc.ProgWnd, 0); ComboBox_AddString(GetDlgItem(hWnd, IDC_ST_CHNL_COM), TEXT("Red")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ST_CHNL_COM), TEXT("Green")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ST_CHNL_COM), TEXT("Blue")); ComboBox_AddString(GetDlgItem(hWnd, IDC_ST_CHNL_COM), TEXT("RGB")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_ST_CHNL_COM), 3); EnableWindow(GetDlgItem(hWnd, IDC_ST_SA_BLUE_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_ST_TR_BLUE_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_ST_TR_GREEN_EDT), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_ST_SA_GREEN_EDT), FALSE); pSampleData->nSaRed = 0; pSampleData->nSaGreen = 0; pSampleData->nSaBlue = 0; pSampleData->nTrRed = 50; pSampleData->nTrGreen = 50; pSampleData->nTrBlue = 50; pSampleData->uToneFlag = SAMP_MID; pSampleData->uChannelFlag = SAMP_RGB; pSampleData->nEditNum = 6; pSampleData->nEdtBaseID = IDC_ST_SA_RED_EDT; pSampleData->nRadioNum = 3; pSampleData->nRdoBaseID = IDC_ST_LOW_RAD; for (nEdit = 0; nEdit < pSampleData->nEditNum; nEdit++) { SetDlgItemInt(hWnd, pSampleData->nEdtBaseID + nEdit, nPosInit[nEdit], FALSE); SetNumericEditBox(GetDlgItem(hWnd, pSampleData->nEdtBaseID + nEdit), 0, 255, 1, 0, FALSE); } Button_SetCheck(GetDlgItem(hWnd, IDC_ST_MID_RAD), TRUE); pData->uTimerID = SetTimer(hWnd, 1, 100, NULL); ShowWindow(hWnd, SW_SHOW); L_ApplyFilter (hWnd); return TRUE; } static L_VOID SAMTRDialog_OnTimer (HWND hWnd, L_INT nID) { Dialog_Timer(nID); } static L_BOOL SAMTRDialog_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { LPSAMPTRDATA pSampleData; pCHILDDATA pData; HWND hWndParent; L_INT nValue; L_INT nComIndex; L_INT nIndex; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); pSampleData = (LPSAMPTRDATA) GetWindowLong(hWnd, GWL_USERDATA); if (nID >= pSampleData->nRdoBaseID && nID < pSampleData->nRdoBaseID + pSampleData->nRadioNum) { pSampleData->uToneFlag = (nID - pSampleData->nRdoBaseID + 1) << 4; L_ApplyFilter (hWnd); } if (nID >= pSampleData->nEdtBaseID && nID < pSampleData->nEdtBaseID + pSampleData->nEditNum) { if(uCodeNotify == EN_CHANGE) { nValue = GetDlgItemInt(hWnd, nID, NULL, FALSE); nIndex = nID - pSampleData->nEdtBaseID; if(nValue > 255) { SetDlgItemInt(hWnd, nID, 255, FALSE); return FALSE; } else { switch(nIndex) { case 0: if (pSampleData->nSaRed == nValue) return FALSE; pSampleData->nSaRed = nValue; break; case 1: if (pSampleData->nSaGreen == nValue) return FALSE; pSampleData->nSaGreen = nValue; break; case 2: if (pSampleData->nSaBlue == nValue) return FALSE; pSampleData->nSaBlue = nValue; break; case 3: if (pSampleData->nTrRed == nValue) return FALSE; pSampleData->nTrRed = nValue; break; case 4: if (pSampleData->nTrGreen == nValue) return FALSE; pSampleData->nTrGreen = nValue; break; case 5: if (pSampleData->nTrBlue == nValue) return FALSE; pSampleData->nTrBlue = nValue; break; } } L_ApplyFilter (hWnd); } } switch(nID) { case IDC_ST_CHNL_COM: if (uCodeNotify == CBN_SELCHANGE) { nComIndex = (ComboBox_GetCurSel(GetDlgItem(hWnd, IDC_ST_CHNL_COM))) + 1; for (nIndex = 0; nIndex < pSampleData->nEditNum; nIndex ++) EnableWindow(GetDlgItem(hWnd, pSampleData->nEdtBaseID + nIndex), nComIndex == 4 ? TRUE : FALSE); if (nComIndex != 4) { nIndex = nComIndex - 1; EnableWindow(GetDlgItem(hWnd, pSampleData->nEdtBaseID + nIndex), TRUE); EnableWindow(GetDlgItem(hWnd, pSampleData->nEdtBaseID + nIndex + 3), TRUE); } pSampleData->uChannelFlag = nComIndex; InvalidateRect(hWndCtl, NULL, FALSE); L_ApplyFilter (hWnd); } break; case IDCANCEL: StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; StatusProc.ProgressValue = 100 ; EndDialog(hWnd, FALSE); break; case IDOK: StatusProc.bInvalidate = TRUE; StatusProc.bEnd = TRUE; ShowStatusWindow(FALSE); StatusProc.bStillWork = TRUE; EndDialog(hWnd, TRUE); break; } return TRUE; } static L_VOID L_ApplyFilter (HWND hWnd) { pCHILDDATA pData; L_INT nRet = 0; HWND hWndParent; LPSAMPTRDATA pSampleData; if ( 100 != StatusProc.ProgressValue ) { StatusProc.bKillProgress = TRUE ; return; } pSampleData = (LPSAMPTRDATA) GetWindowLong(hWnd,GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); FreeMemorizedBitmap (hWndParent); //MEMDISK// L_CopyBitmap(&pData->LeadBitmap, &pSampleData->Bitmap, sizeof(BITMAPHANDLE)); nRet = L_SampleTargetBitmap(&pData->LeadBitmap, RGB(pSampleData->nSaRed, pSampleData->nSaGreen, pSampleData->nSaBlue), RGB(pSampleData->nTrRed, pSampleData->nTrGreen, pSampleData->nTrBlue), pSampleData->uToneFlag | pSampleData->uChannelFlag); if(nRet == SUCCESS) { InvalidateRect(hWndParent, NULL, FALSE); StatusProc.ProgressValue = 100; Progress_SetPos(StatusProc.ProgWnd , 0); if(StatusProc.bEnd) { StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; } } }