/*[]=====================================================================[]*/ /*[] LeadTools Run Time Library - Version 14 []*/ /*[] []*/ /*[] []*/ /*[] Copyright (c) 1991-2004 LEAD Technologies, Inc. []*/ /*[] All Rights Reserved. []*/ /*[]=====================================================================[]*/ #include "ImgPF.h" static L_BOOL DFTstDlg_OnCommand (HWND hWnd, L_INT id, HWND hWndCtl, L_UINT codeNotify); static L_BOOL DFTstDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_BOOL DFTstDlg_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT nCode, L_INT nPos); static L_VOID L_ApplyFilter (HWND hWnd); L_BOOL CALLBACK DFTstDlgProc(HWND hWnd, L_UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { HANDLE_MSG (hWnd, WM_COMMAND, DFTstDlg_OnCommand); HANDLE_MSG (hWnd, WM_INITDIALOG, DFTstDlg_OnInitDialog); HANDLE_MSG (hWnd, WM_HSCROLL, DFTstDlg_OnHScroll); } return FALSE; } static L_BOOL DFTstDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam) { LPFTDATA pDFTData = (LPFTDATA)lParam; HWND hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pCHILDDATA pData = LOCKCHILDDATA (hWndParent); L_INT nRangeMax[] = {pData->LeadBitmap.Width - 1, pData->LeadBitmap.Width - 1, pData->LeadBitmap.Height - 1, pData->LeadBitmap.Height - 1}; L_INT nRangeMin[] = {0, 0, 0, 0}; L_INT nPosInit [] = {0, pData->LeadBitmap.Width - 1, 0, pData->LeadBitmap.Height - 1}; L_INT nSlider; SetWindowLong(hWnd,GWL_USERDATA,(LONG)pDFTData); MoveDialogToMiddle(hWnd); Progress_SetRange(StatusProc.ProgWnd, 0, 100); Progress_SetPos(StatusProc.ProgWnd, 0); StatusProc.bProgress = TRUE; StatusProc.bKillProgress = FALSE; StatusProc.bInvalidate = FALSE; StatusProc.bEnd = FALSE; StatusProc.DlgWnd = hWnd; StatusProc.ProgressValue = 100; StatusProc.ProgWnd = GetDlgItem(hWnd, IDC_DFT_ST_PROG); UpdateWindow(hWnd); ShowWindow(hWnd, SW_SHOW); pDFTData->nRadioNum = 4; pDFTData->nSlideNum = 4; pDFTData->uFlags = DFT_GRAY | DFT_INSIDE_X | DFT_INSIDE_Y; pDFTData->nRdoBaseID = IDC_DFT_ST_RED_RAD; pDFTData->nSldBaseID = IDC_DFT_ST_XMIN_SLD; pDFTData->nEdtBaseID = IDC_DFT_ST_XMIN_EDT; pDFTData->rcRange.left = 0; pDFTData->rcRange.top = 0; pDFTData->rcRange.right = pData->LeadBitmap.Width - 1; pDFTData->rcRange.bottom = pData->LeadBitmap.Height - 1; for (nSlider = 0; nSlider < pDFTData->nSlideNum; nSlider++) { Trackbar_SetRange(GetDlgItem(hWnd, pDFTData->nSldBaseID + nSlider), FALSE, nRangeMin[nSlider], nRangeMax[nSlider]); SetDlgItemInt(hWnd, pDFTData->nEdtBaseID + nSlider, nPosInit[nSlider], FALSE); SetNumericEditBox(GetDlgItem(hWnd, pDFTData->nEdtBaseID + nSlider), nRangeMin[nSlider], nRangeMax[nSlider], 1, 0, FALSE); Trackbar_SetPos(GetDlgItem(hWnd, pDFTData->nSldBaseID + nSlider), TRUE, nPosInit[nSlider]); } Button_SetCheck(GetDlgItem(hWnd, IDC_DFT_ST_GRAY_RAD), TRUE); Button_SetCheck(GetDlgItem(hWnd, IDC_DFT_ST_XKEP_CHK), TRUE); Button_SetCheck(GetDlgItem(hWnd, IDC_DFT_ST_YKEP_CHK), TRUE); InvalidateRect(hWndParent, NULL, FALSE); return ( TRUE ); } static L_BOOL DFTstDlg_OnCommand (HWND hWnd, L_INT id, HWND hWndCtl, L_UINT codeNotify) { L_INT nIndex; LPFTDATA pDFTData; HWND hCtl; L_INT nValue; pDFTData = (LPFTDATA) GetWindowLong(hWnd, GWL_USERDATA); if (id >= pDFTData->nRdoBaseID && id < pDFTData->nRdoBaseID + pDFTData->nRadioNum) { nIndex = id - pDFTData->nRdoBaseID; pDFTData->uFlags &= 0xffffff0f; if (nIndex == 3) pDFTData->uFlags |= DFT_GRAY; else pDFTData->uFlags |= (pDFTData->nRadioNum - (nIndex + 1)) << 4; return TRUE; } if (id >= pDFTData->nEdtBaseID && id < pDFTData->nEdtBaseID + pDFTData->nSlideNum) { if(codeNotify == EN_CHANGE) { nValue = GetDlgItemInt(hWnd, id, NULL, TRUE); hCtl = GetDlgItem(hWnd,id + pDFTData->nSlideNum); nIndex = id - pDFTData->nEdtBaseID; switch (nIndex) { case 0: if(nValue > pDFTData->rcRange.right) nValue = pDFTData->rcRange.right; pDFTData->rcRange.left = nValue; break; case 1: if(nValue < pDFTData->rcRange.left) nValue = pDFTData->rcRange.left; pDFTData->rcRange.right = nValue; break; case 2: if(nValue > pDFTData->rcRange.bottom) nValue = pDFTData->rcRange.bottom; pDFTData->rcRange.top = nValue; break; case 3: if(nValue < pDFTData->rcRange.top) nValue = pDFTData->rcRange.top; pDFTData->rcRange.bottom = nValue; break; } Trackbar_SetPos(hCtl, TRUE, nValue); } return TRUE; } switch (id) { case IDC_DFT_ST_XKEP_CHK: pDFTData->uFlags ^= Button_GetCheck(hWndCtl) ? DFT_INSIDE_X : DFT_OUTSIDE_X; pDFTData->uFlags ^= Button_GetCheck(hWndCtl) ? DFT_OUTSIDE_X : DFT_INSIDE_X; break; case IDC_DFT_ST_YKEP_CHK: pDFTData->uFlags ^= Button_GetCheck(hWndCtl) ? DFT_INSIDE_Y : DFT_OUTSIDE_Y; pDFTData->uFlags ^= Button_GetCheck(hWndCtl) ? DFT_OUTSIDE_Y : DFT_INSIDE_Y; break; case IDC_DFT_ST_NEXT_BTN: L_ApplyFilter (hWnd); break; case IDCANCEL: StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; StatusProc.ProgressValue = 100 ; EndDialog(hWnd, FALSE); break; } return TRUE; } static L_BOOL DFTstDlg_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT nCode, L_INT nPos) { LPFTDATA pDFTData = (LPFTDATA) GetWindowLong(hWnd, GWL_USERDATA); SetDlgItemInt(hWnd, GetDlgCtrlID(hWndCtl) - pDFTData->nSlideNum , Trackbar_GetPos(hWndCtl), TRUE); return TRUE; } static L_VOID L_ApplyFilter (HWND hWnd) { pCHILDDATA pData; L_INT nRet = 0; HWND hWndParent; LPFTDATA pDFTData; if (100 != StatusProc.ProgressValue) { return; } pDFTData = (LPFTDATA) GetWindowLong(hWnd,GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); //L_AllocFTArray(&pData->LeadBitmap, &pDFTData->pFtArray, sizeof(FTARRAY)); nRet = L_DFTBitmap(&pData->LeadBitmap, pDFTData->pFtArray, &pDFTData->rcRange, DFT_DFT | pDFTData->uFlags | DFT_RANGE ); if(nRet == SUCCESS) { StatusProc.ProgressValue = 100; EndDialog(hWnd, TRUE); Progress_SetPos(StatusProc.ProgWnd , 0); } //L_FreeFTArray(pDFTData->pFtArray); }