#include "ImgPF.h" static L_BOOL HToneDlg_OnInitDialog (HWND hWnd, HWND hWndFocus, LPARAM lParam); static L_VOID HToneDlg_OnCommand (HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify); static L_VOID HToneDlg_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT uCode, L_INT nPos); static L_VOID HToneDlg_OnTimer (HWND hWnd, L_INT nID); static L_VOID HToneDlg_OnPaint (HWND hWnd); static L_VOID L_ApplyFilter (HWND hWnd); static L_VOID GetHalfToneImages (HWND hWnd); static L_BOOL CALLBACK HToneEnum (HWND hWnd, LPARAM lParam); static L_VOID ChangePos (HWND hWnd, L_INT nID, L_BOOL uFlags, L_INT nDistance); static L_INT L_FAR L_EXPORT BrowseBitmaps(pBITMAPHANDLE pBitmap, L_TCHAR L_FAR *pszFile, pFILEINFO pInfo, L_INT nStatusCode, L_INT nPercent, L_VOID L_FAR *pUserData); L_INT nBitmapNum; #ifdef UNICODE extern HFONT ghDlgFont; #endif// UNICODE L_BOOL CALLBACK HToneWndProc(HWND hWnd, L_UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { HANDLE_MSG(hWnd, WM_INITDIALOG, HToneDlg_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, HToneDlg_OnCommand); HANDLE_MSG(hWnd, WM_HSCROLL, HToneDlg_OnHScroll); HANDLE_MSG(hWnd, WM_TIMER, HToneDlg_OnTimer); HANDLE_MSG(hWnd, WM_PAINT, HToneDlg_OnPaint); case WM_USER_UPDATEVIEW: StatusProc.ProgressValue = 100; L_ApplyFilter (hWnd); break; } return FALSE; } static L_VOID GetHalfToneImages(HWND hWnd) { EnumChildWindows (hWndClient, HToneEnum, (LONG)hWnd); ListBox_SetCurSel(GetDlgItem(hWnd, IDC_HTONE_ALL_LST), 0); } static L_BOOL CALLBACK HToneEnum(HWND hWnd, LPARAM lParam) { pCHILDDATA pData; HWND hDlg; L_TCHAR StripName[255]; L_INT nCount; hDlg = (HWND)lParam; pData = (pCHILDDATA) GetWindowLong(hWnd, GWL_USERDATA); if (!pData) return FALSE; memset(StripName, 0, sizeof(StripName)); Strip(StripName, pData->pszTitle); nCount = ListBox_GetCount(GetDlgItem(hDlg, IDC_HTONE_ALL_LST)); ListBox_AddString(GetDlgItem(hDlg, IDC_HTONE_ALL_LST), StripName); ListBox_SetItemData(GetDlgItem(hDlg, IDC_HTONE_ALL_LST), nCount, (LONG)pData); return TRUE; } static L_BOOL HToneDlg_OnInitDialog(HWND hWnd, HWND hWndFocus, LPARAM lParam) { LPHTONEDLGDATA pHToneDlgData; pCHILDDATA pData; HWND hWndParent; L_INT nSlider; L_INT nRangeMax[] = {30, 360}; L_INT nRangeMin[] = {2, -360}; L_INT nPosInit [] = {2, 0}; RECT rcRgn; RECT rcButton; hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA(hWndParent); pHToneDlgData = (LPHTONEDLGDATA)lParam; hGlobalWnd = hWnd; MoveDialogToMiddle(hWnd); SetWindowLong(hWnd, GWL_USERDATA, (long)pHToneDlgData); //MEMDISK...// MemorizeAndCopyBitmap (hWndParent, &pHToneDlgData->LeadBitmap); GetHalfToneImages(hWnd); GetWindowRect(GetDlgItem(hWnd, IDC_HTONE_INV_TXT), &rcRgn); GetWindowRect(GetDlgItem(hWnd, IDOK), &rcButton); ComboBox_AddString(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), TEXT("None")); ComboBox_AddString(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), TEXT("Use multiple bitmaps")); ComboBox_AddString(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), TEXT("Specify Directory as a source")); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), 0); ListBox_SetCurSel (GetDlgItem(hWnd, IDC_HTONE_INC_LST), 0); ListBox_SetCurSel (GetDlgItem(hWnd, IDC_HTONE_ALL_LST), 0); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DEL_BTN), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), FALSE); pHToneDlgData->nDistance = rcButton.top - rcRgn.bottom; GetWindowRect(GetDlgItem(hWnd, IDC_HTONE_ADD_BTN), &rcButton); pHToneDlgData->nDistance2 = rcButton.bottom - rcRgn.bottom; StatusProc.bProgress = TRUE; StatusProc.bInvalidate = FALSE; StatusProc.bEnd = FALSE; StatusProc.DlgWnd = hWnd; StatusProc.ProgressValue = 100; StatusProc.ProgWnd = GetDlgItem(hWnd, IDC_HTONE_PROG); Progress_SetRange(StatusProc.ProgWnd, 0, 100); Progress_SetPos(StatusProc.ProgWnd, 0); pHToneDlgData->nSldBaseID = IDC_HTONE_DIM_SLD; pHToneDlgData->nEdtBaseID = IDC_HTONE_DIM_EDT; pHToneDlgData->nRdoBaseID = IDC_HTONE_PRINT_RAD; pHToneDlgData->bAllList = TRUE; pHToneDlgData->nSlideNum = 2; pHToneDlgData->uDim = nPosInit[0]; pHToneDlgData->nComboIndex = 1; pHToneDlgData->nAngle = nPosInit[1]; pHToneDlgData->uFlag = 0; EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DIM_SLD), FALSE); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DIM_EDT), FALSE); SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT, pHToneDlgData->uDim * pHToneDlgData->uDim + 1, FALSE); SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT1, pHToneDlgData->uDim * pHToneDlgData->uDim + 1, FALSE); CreateAngleControl(GetDlgItem(hWnd, IDC_HTONE_ANGL_SLD), IDC_HTONE_ANGL_EDT, FROM_0_TO_360, 1, APPLY_ON_MOVE); for (nSlider = 0; nSlider < pHToneDlgData->nSlideNum; nSlider++) { if (!nSlider) Trackbar_SetTheRange(GetDlgItem(hWnd, pHToneDlgData->nSldBaseID + nSlider), TRUE, nRangeMin[nSlider], nRangeMax[nSlider]); SetDlgItemInt(hWnd, pHToneDlgData->nEdtBaseID + nSlider, nPosInit[nSlider], TRUE); SetNumericEditBox(GetDlgItem(hWnd, pHToneDlgData->nEdtBaseID + nSlider), nRangeMin[nSlider], nRangeMax[nSlider], 1, 0, FALSE); } Button_SetCheck(GetDlgItem(hWnd, IDC_HTONE_PRINT_RAD), TRUE); L_CreateBitmapList(&pHToneDlgData->hListDirectory); L_CreateBitmapList(&pHToneDlgData->hListMultiple); HToneDlg_OnCommand(hWnd, IDC_HTONE_SRC_COM, GetDlgItem(hWnd, IDC_HTONE_SRC_COM), 0); ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); InvalidateRect(GetDlgItem(hWnd, IDC_HTONE_ANGL_SLD), NULL, FALSE); #ifdef UNICODE SetControlFont ( hWnd, ghDlgFont ) ; #endif// UNICODE L_ApplyFilter(hWnd); pData->uTimerID = SetTimer(hWnd, 1, 100, NULL); return TRUE; } static L_VOID HToneDlg_OnPaint (HWND hWnd) { HDC hDC; PAINTSTRUCT ps; LPHTONEDLGDATA pHToneDlgData; pCHILDDATA pListData, pData; HWND hWndCtl; HPALETTE hPalette, hSavedPalette; RECT rcRect; HWND hWndParent; RECT rcImage; pHToneDlgData = (LPHTONEDLGDATA)GetWindowLong(hWnd, GWL_USERDATA); hWndCtl = GetDlgItem(hWnd, pHToneDlgData->bAllList || !ListBox_GetCount(GetDlgItem(hWnd, IDC_HTONE_INC_LST)) ? IDC_HTONE_ALL_LST : IDC_HTONE_INC_LST); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient, SendMessage); pData = LOCKCHILDDATA(hWndParent); pListData = (pCHILDDATA)ListBox_GetItemData(hWndCtl, ListBox_GetCurSel(hWndCtl)); hDC = BeginPaint(GetDlgItem(hWnd, IDC_HTONE_SEL_TXT), &ps); hPalette = L_CreatePaintPalette(hDC, (pData == pListData) ? &pHToneDlgData->LeadBitmap : &pListData->LeadBitmap); hSavedPalette = SelectPalette(hDC, hPalette, FALSE); RealizePalette(hDC); GetClientRect(GetDlgItem(hWnd, IDC_HTONE_SEL_TXT), &rcImage); FillRect(hDC, &rcImage, (HBRUSH) COLOR_WINDOW); FitImageToWindow(rcImage, &pListData->LeadBitmap, &rcRect); L_PaintDC(hDC, (pData == pListData) ? &pHToneDlgData->LeadBitmap : &pListData->LeadBitmap, NULL, NULL, &rcRect, NULL, SRCCOPY); SelectPalette(hDC, hSavedPalette, FALSE); DeletePalette(hPalette); EndPaint(GetDlgItem(hWnd, IDC_HTONE_SEL_TXT), &ps); UNLOCKCHILDDATA(hWndParent); } static L_VOID HToneDlg_OnTimer (HWND hWnd, L_INT nID) { Dialog_Timer(nID); } L_VOID ChangePos(HWND hWnd, L_INT nID, L_BOOL uFlags, L_INT nDistance) { HWND hWndCtl; RECT rcRect; POINT TmpPoint; hWndCtl = GetDlgItem(hWnd, nID); GetWindowRect(hWndCtl, &rcRect); TmpPoint.x = rcRect.left; TmpPoint.y = rcRect.top; ScreenToClient(hWnd, &TmpPoint); MoveWindow(hWndCtl, TmpPoint.x, uFlags ? TmpPoint.y + nDistance : TmpPoint.y - nDistance, RECTWIDTH(&rcRect), RECTHEIGHT(&rcRect), TRUE); } static L_VOID Positioning(HWND hWnd) { LPHTONEDLGDATA pHToneDlgData = (LPHTONEDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); RECT rcRect; L_INT nResult; L_INT nDistance[3] = {0, pHToneDlgData->nDistance, pHToneDlgData->nDistance2}; ShowWindow(GetDlgItem(hWnd, IDC_HTONE_ALL_LST), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_INC_LST), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_ADD_BTN), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_DEL_BTN), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_LST_FRM), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_SEL_TXT), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_VLDLBL_TXT1),(pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_VALID_TXT1), (pHToneDlgData->nComboIndex == 1)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_DIR_EDT), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_DIR_FRM), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_DIR_BTN), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_COUNT_TXT), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_CNTLBL_TXT), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_VLDLBL_TXT), (pHToneDlgData->nComboIndex == 2)); ShowWindow(GetDlgItem(hWnd, IDC_HTONE_VALID_TXT), (pHToneDlgData->nComboIndex == 2)); nResult = nDistance[pHToneDlgData->nComboIndex] - nDistance[pHToneDlgData->nPreIndex]; ChangePos(hWnd, IDOK, TRUE, nResult); ChangePos(hWnd, IDCANCEL, TRUE, nResult); ChangePos(hWnd, IDC_HTONE_PROG, TRUE, nResult); GetWindowRect(hWnd, &rcRect); MoveWindow(hWnd, rcRect.left, rcRect.top , RECTWIDTH(&rcRect), RECTHEIGHT(&rcRect) + nResult, TRUE); } static L_VOID HToneDlg_OnCommand(HWND hWnd, L_INT nID, HWND hWndCtl, L_UINT uCodeNotify) { LPHTONEDLGDATA pHToneDlgData; L_INT nValue; pCHILDDATA pData, pListData; HWND hWndParent; L_INT nRangeMax[] = {255, 360}; L_INT nRangeMin[] = {2, -360}; L_INT nIndex; L_TCHAR szStripName[255]; HWND hWndAll, hWndInc; L_UINT uOldFlag; pHToneDlgData = (LPHTONEDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); hWndAll = GetDlgItem(hWnd, IDC_HTONE_ALL_LST); hWndInc = GetDlgItem(hWnd, IDC_HTONE_INC_LST); switch (nID) { case IDC_HTONE_ANGL_EDT: nValue = GetDlgItemInt(hWnd, nID, NULL, TRUE); if ((uCodeNotify == EN_CHANGE) && nValue != pHToneDlgData->nAngle) { pHToneDlgData->nAngle = nValue; DrawAngleControl(GetDlgItem(hWnd, IDC_HTONE_ANGL_SLD), nValue); L_ApplyFilter(hWnd); } break; case IDCANCEL: pHToneDlgData->uListCount = ListBox_GetCount(GetDlgItem(hWnd, IDC_HTONE_INC_LST)); StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE ; StatusProc.ProgressValue = 100 ; EndDialog(hWnd, FALSE); break; case IDOK: pHToneDlgData->uListCount = ListBox_GetCount(GetDlgItem(hWnd, IDC_HTONE_INC_LST)); ShowStatusWindow(FALSE); StatusProc.bStillWork = TRUE; StatusProc.bInvalidate = TRUE; StatusProc.bEnd = TRUE; EndDialog(hWnd, TRUE); break; case IDC_HTONE_SRC_COM: if (ComboBox_GetCurSel(hWndCtl) != pHToneDlgData->nComboIndex) { pHToneDlgData->nPreIndex = pHToneDlgData->nComboIndex; if ((ComboBox_GetCurSel(hWndCtl) == 0) && (pHToneDlgData->uFlag == 7)) ComboBox_SetCurSel(hWndCtl, 1); pHToneDlgData->nComboIndex = ComboBox_GetCurSel(hWndCtl); Positioning(hWnd); if (((pHToneDlgData->nPreIndex == 1 || pHToneDlgData->nPreIndex == 2)) && ((pHToneDlgData->nComboIndex == 1 || pHToneDlgData->nComboIndex == 2))) { InvalidateRect(hWndCtl, NULL, FALSE); L_ApplyFilter (hWnd); } } break; case IDC_HTONE_ADD_BTN: nIndex = ListBox_GetCurSel(hWndAll); pListData = (pCHILDDATA)ListBox_GetItemData(hWndAll, nIndex); L_InsertBitmapListItem(pHToneDlgData->hListMultiple, ListBox_GetCount(hWndInc), (pData == pListData) ? &pHToneDlgData->LeadBitmap : &pListData->LeadBitmap); memset(szStripName, 0, sizeof(szStripName)); Strip(szStripName, pListData->pszTitle); ListBox_AddString(hWndInc, szStripName); ListBox_SetItemData(hWndInc, ListBox_GetCount(hWndInc) - 1, pListData); ListBox_DeleteString(hWndAll, nIndex); ListBox_SetCurSel(hWndAll, max(0, nIndex - 1)); ListBox_SetCurSel(hWndInc, ListBox_GetCount(hWndInc) - 1); if (ListBox_GetCount(hWndAll) == 0) { EnableWindow(hWndCtl, FALSE); pHToneDlgData->bAllList = FALSE; } InvalidateRect(hWnd, NULL, FALSE); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DEL_BTN), TRUE); L_ApplyFilter (hWnd); break; case IDC_HTONE_DEL_BTN: nIndex = ListBox_GetCurSel(hWndInc); pListData = (pCHILDDATA)ListBox_GetItemData(hWndInc, nIndex); L_RemoveBitmapListItem(pHToneDlgData->hListMultiple, nIndex, NULL); memset(szStripName, 0, sizeof(szStripName)); Strip(szStripName, pListData->pszTitle); ListBox_DeleteString(hWndInc, nIndex); ListBox_AddString(hWndAll, szStripName); ListBox_SetItemData(hWndAll, ListBox_GetCount(hWndAll) - 1, pListData); ListBox_SetCurSel(hWndInc, max(0, nIndex - 1)); ListBox_SetCurSel(hWndAll, ListBox_GetCount(hWndAll) - 1); if (ListBox_GetCount(hWndInc) == 0) { EnableWindow(hWndCtl, FALSE); pHToneDlgData->bAllList = TRUE; } InvalidateRect(hWnd, NULL, FALSE); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_ADD_BTN), TRUE); L_ApplyFilter (hWnd); break; case IDC_HTONE_ALL_LST: case IDC_HTONE_INC_LST: if (!ListBox_GetCount(hWndCtl)) break; pHToneDlgData->bAllList = IDC_HTONE_ALL_LST - nID + 1; InvalidateRect(hWnd, NULL, FALSE); break; case IDC_HTONE_DIR_BTN: { GETDIRECTORYDLGPARAMS DirectoryDlgParams ; L_TCHAR szTitle [ 50 ] = TEXT("Browse For Folder:") ; THUMBOPTIONS ThumbOption; L_INT nRet; nBitmapNum = 0; ZeroMemory (&DirectoryDlgParams, sizeof(GETDIRECTORYDLGPARAMS)); DirectoryDlgParams.uStructSize = sizeof (GETDIRECTORYDLGPARAMS); DirectoryDlgParams.pszDirectory = malloc ( L_MAXPATH * 2 ) ; DirectoryDlgParams.pszTitle = TEXT("Select Border Images Folder") ; DirectoryDlgParams.nBuffSize = L_MAXPATH ; DirectoryDlgParams.pszFilter = NULL ; DirectoryDlgParams.nFilterIndex = 1 ; nRet = L_DlgGetDirectory ( hWnd, &DirectoryDlgParams ) ; // Get the Border 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); SetDlgItemText(hWnd, IDC_HTONE_DIR_EDT, DirectoryDlgParams.pszDirectory); L_GetBitmapListCount(pHToneDlgData->hListDirectory, &nIndex); L_DeleteBitmapListItems(pHToneDlgData->hListDirectory, 0, nIndex); EnableWindow(GetDlgItem(hGlobalWnd, IDOK), FALSE); L_BrowseDir(DirectoryDlgParams.pszDirectory, TEXT("*.*"), &ThumbOption, 0, TRUE, FALSE, 0, 4000*1024, (BROWSEDIRCALLBACK)BrowseBitmaps, &pHToneDlgData->hListDirectory); L_ApplyFilter (hWnd); } } break; case IDC_HTONE_PRINT_RAD: case IDC_HTONE_VIEW_RAD: case IDC_HTONE_RECT_RAD: case IDC_HTONE_CIRC_RAD: case IDC_HTONE_ELPS_RAD: case IDC_HTONE_RAND_RAD: case IDC_HTONE_LINR_RAD: case IDC_HTONE_USDF_RAD: if (pHToneDlgData->uFlag != (L_UINT)(nID - IDC_HTONE_PRINT_RAD)) { uOldFlag = pHToneDlgData->uFlag; pHToneDlgData->uFlag = nID - IDC_HTONE_PRINT_RAD; EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DIM_EDT), (pHToneDlgData->uFlag > 1)); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_DIM_SLD), (pHToneDlgData->uFlag > 1)); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_ANGL_EDT), !(nID == IDC_HTONE_RECT_RAD || nID == IDC_HTONE_CIRC_RAD || nID == IDC_HTONE_RAND_RAD || nID == IDC_HTONE_USDF_RAD)); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_ANGL_SLD), !(nID == IDC_HTONE_RECT_RAD || nID == IDC_HTONE_CIRC_RAD || nID == IDC_HTONE_RAND_RAD || nID == IDC_HTONE_USDF_RAD)); EnableWindow(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), (pHToneDlgData->uFlag == 7)); ComboBox_SetCurSel(GetDlgItem(hWnd, IDC_HTONE_SRC_COM), (pHToneDlgData->uFlag == 7) ? 1 : 0); pHToneDlgData->uDim = 2; SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT1, 5, FALSE); SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT, 5, FALSE); SetDlgItemInt(hWnd, IDC_HTONE_DIM_EDT, 2, FALSE); Trackbar_SetTheRange(GetDlgItem(hWnd, IDC_HTONE_DIM_SLD), TRUE, 2, (pHToneDlgData->uFlag != 7) ? 30 : 10); EditNumericEditBox(GetDlgItem(hWnd, IDC_HTONE_DIM_EDT), 2, (pHToneDlgData->uFlag != 7) ? 30 : 10, 1, 0, FALSE, EDT_MODFY_MIN | EDT_MODFY_MAX); HToneDlg_OnCommand(hWnd, IDC_HTONE_SRC_COM, GetDlgItem(hWnd, IDC_HTONE_SRC_COM), 0); L_ApplyFilter(hWnd); InvalidateRect(hWndParent, NULL, FALSE); } break; } if (nID >= pHToneDlgData->nEdtBaseID && nID < pHToneDlgData->nEdtBaseID + pHToneDlgData->nSlideNum) { if (uCodeNotify == EN_CHANGE) { nValue = GetDlgItemInt(hWnd, nID, NULL, TRUE); nIndex = nID - pHToneDlgData->nEdtBaseID; Trackbar_SetPos(GetDlgItem(hWnd, pHToneDlgData->nSldBaseID + nIndex), TRUE, nValue); if (nValue < nRangeMin[nIndex]) { nValue = nRangeMin[nIndex]; SetDlgItemInt(hWnd, nID, nRangeMin[nIndex], TRUE); return; } if (nValue > nRangeMax[nIndex]) { nValue = nRangeMax[nIndex]; SetDlgItemInt(hWnd, nID, nRangeMax[nIndex], TRUE); return; } switch(nIndex) { case 0: if ((L_INT)pHToneDlgData->uDim == nValue) return; pHToneDlgData->uDim = nValue; SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT, pHToneDlgData->uDim * pHToneDlgData->uDim + 1, FALSE); SetDlgItemInt(hWnd, IDC_HTONE_VALID_TXT1, pHToneDlgData->uDim * pHToneDlgData->uDim + 1, FALSE); break; case 1: if (pHToneDlgData->nAngle == nValue) return; pHToneDlgData->nAngle = nValue; break; } L_ApplyFilter (hWnd); } } } static L_VOID HToneDlg_OnHScroll (HWND hWnd, HWND hWndCtl, L_UINT uCode, L_INT nPos) { LPHTONEDLGDATA pHToneDlgData = (LPHTONEDLGDATA) GetWindowLong(hWnd, GWL_USERDATA); SetDlgItemInt(hWnd, GetDlgCtrlID(hWndCtl) - pHToneDlgData->nSlideNum , Trackbar_GetPos(hWndCtl), TRUE); } static L_VOID L_ApplyFilter (HWND hWnd) { pCHILDDATA pData; L_INT nRet = 0; HWND hWndParent; LPHTONEDLGDATA pHToneDlgData; if ( 100 != StatusProc.ProgressValue ) { StatusProc.bKillProgress = TRUE ; return ; } pHToneDlgData = (LPHTONEDLGDATA) GetWindowLong(hWnd,GWL_USERDATA); hWndParent = FORWARD_WM_MDIGETACTIVE(hWndClient,SendMessage); pData = LOCKCHILDDATA (hWndParent); FreeMemorizedBitmap (hWndParent); L_CopyBitmap(&pData->LeadBitmap, &pHToneDlgData->LeadBitmap, sizeof(BITMAPHANDLE)); if (pHToneDlgData->nComboIndex) { L_INT nCount; if (pHToneDlgData->nComboIndex == 1) L_GetBitmapListCount(pHToneDlgData->hListMultiple, &nCount); else L_GetBitmapListCount(pHToneDlgData->hListDirectory, &nCount); if (nCount < (L_INT)(pHToneDlgData->uDim * pHToneDlgData->uDim + 1)) nRet = SUCCESS; } if (!nRet) nRet = L_HalfToneBitmap(&pData->LeadBitmap, pHToneDlgData->uFlag, pHToneDlgData->nAngle * 100, pHToneDlgData->uDim, pHToneDlgData->nComboIndex == 1 ? pHToneDlgData->hListMultiple : pHToneDlgData->hListDirectory); if(nRet == SUCCESS) { InvalidateRect(hWndParent, NULL, FALSE); StatusProc.ProgressValue = 100; Progress_SetPos(StatusProc.ProgWnd , 0); if(StatusProc.bEnd) { StatusProc.bProgress = FALSE; StatusProc.bKillProgress = TRUE; } } } static L_INT L_FAR L_EXPORT BrowseBitmaps(pBITMAPHANDLE pBitmap, L_TCHAR L_FAR *pszFile, pFILEINFO pInfo, L_INT nStatusCode, L_INT nPercent, L_VOID L_FAR *pUserData) { BITMAPHANDLE TmpBitmap; L_INT nRet; if ( nStatusCode == SUCCESS_RETRY) { pHBITMAPLIST phList; phList = (pHBITMAPLIST) pUserData ; nRet = L_LoadBitmap(pszFile, &TmpBitmap, sizeof(BITMAPHANDLE), ORDER_BGRORGRAY, 0, 0, NULL); nRet = L_InsertBitmapListItem(*phList, nBitmapNum, &TmpBitmap); nBitmapNum++; if (nBitmapNum == (L_INT)GetDlgItemInt(hGlobalWnd, IDC_HTONE_VALID_TXT, NULL, FALSE)) EnableWindow(GetDlgItem(hGlobalWnd, IDOK), TRUE); SetDlgItemInt(hGlobalWnd, IDC_HTONE_COUNT_TXT, nBitmapNum, FALSE); } return SUCCESS; }