ImageProcessView.cpp
Upload User: ty781003
Upload Date: 2018-03-14
Package Size: 6070k
Code Size: 20k
Category:

Special Effects

Development Platform:

Visual C++

  1. // ImageProcessView.cpp : implementation of the CImageProcessView class
  2. //
  3. #include "stdafx.h"
  4. #include "ImageProcess.h"
  5. #include "MainFrm.h"
  6. #include "ConvoluteDlg.h"
  7. #include "ImageProcessDoc.h"
  8. #include "ImageProcessView.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CImageProcessView
  16. IMPLEMENT_DYNCREATE(CImageProcessView, CScrollView)
  17. BEGIN_MESSAGE_MAP(CImageProcessView, CScrollView)
  18. //{{AFX_MSG_MAP(CImageProcessView)
  19. ON_COMMAND(IDM_EAST, OnEast)
  20. ON_UPDATE_COMMAND_UI(IDM_EAST, OnUpdateEast)
  21. ON_COMMAND(IDM_HF1, OnHf1)
  22. ON_UPDATE_COMMAND_UI(IDM_HF1, OnUpdateHf1)
  23. ON_COMMAND(IDM_HF2, OnHf2)
  24. ON_UPDATE_COMMAND_UI(IDM_HF2, OnUpdateHf2)
  25. ON_COMMAND(IDM_HF3, OnHf3)
  26. ON_UPDATE_COMMAND_UI(IDM_HF3, OnUpdateHf3)
  27. ON_COMMAND(IDM_HORZ, OnHorz)
  28. ON_UPDATE_COMMAND_UI(IDM_HORZ, OnUpdateHorz)
  29. ON_COMMAND(IDM_LAP1, OnLap1)
  30. ON_UPDATE_COMMAND_UI(IDM_LAP1, OnUpdateLap1)
  31. ON_COMMAND(IDM_LAP2, OnLap2)
  32. ON_UPDATE_COMMAND_UI(IDM_LAP2, OnUpdateLap2)
  33. ON_COMMAND(IDM_LAP3, OnLap3)
  34. ON_UPDATE_COMMAND_UI(IDM_LAP3, OnUpdateLap3)
  35. ON_COMMAND(IDM_LAP4, OnLap4)
  36. ON_UPDATE_COMMAND_UI(IDM_LAP4, OnUpdateLap4)
  37. ON_COMMAND(IDM_LF1, OnLf1)
  38. ON_UPDATE_COMMAND_UI(IDM_LF1, OnUpdateLf1)
  39. ON_COMMAND(IDM_LF2, OnLf2)
  40. ON_UPDATE_COMMAND_UI(IDM_LF2, OnUpdateLf2)
  41. ON_COMMAND(IDM_LF3, OnLf3)
  42. ON_UPDATE_COMMAND_UI(IDM_LF3, OnUpdateLf3)
  43. ON_COMMAND(IDM_NORTH, OnNorth)
  44. ON_UPDATE_COMMAND_UI(IDM_NORTH, OnUpdateNorth)
  45. ON_COMMAND(IDM_NORTHEAST, OnNortheast)
  46. ON_UPDATE_COMMAND_UI(IDM_NORTHEAST, OnUpdateNortheast)
  47. ON_COMMAND(IDM_NORTHWEST, OnNorthwest)
  48. ON_UPDATE_COMMAND_UI(IDM_NORTHWEST, OnUpdateNorthwest)
  49. ON_COMMAND(IDM_SOUTH, OnSouth)
  50. ON_UPDATE_COMMAND_UI(IDM_SOUTH, OnUpdateSouth)
  51. ON_COMMAND(IDM_SOUTHEAST, OnSoutheast)
  52. ON_UPDATE_COMMAND_UI(IDM_SOUTHEAST, OnUpdateSoutheast)
  53. ON_COMMAND(IDM_SOUTHWEST, OnSouthwest)
  54. ON_UPDATE_COMMAND_UI(IDM_SOUTHWEST, OnUpdateSouthwest)
  55. ON_COMMAND(IDM_VERT, OnVert)
  56. ON_UPDATE_COMMAND_UI(IDM_VERT, OnUpdateVert)
  57. ON_COMMAND(IDM_VERTHORZ, OnVerthorz)
  58. ON_UPDATE_COMMAND_UI(IDM_VERTHORZ, OnUpdateVerthorz)
  59. ON_COMMAND(IDM_WEST, OnWest)
  60. ON_UPDATE_COMMAND_UI(IDM_WEST, OnUpdateWest)
  61. ON_COMMAND(IDM_SOBEL, OnSobel)
  62. ON_UPDATE_COMMAND_UI(IDM_SOBEL, OnUpdateSobel)
  63. ON_COMMAND(IDM_HOUGH, OnHough)
  64. ON_UPDATE_COMMAND_UI(IDM_HOUGH, OnUpdateHough)
  65. ON_COMMAND(IDM_MEDIANFILTER, OnMedianfilter)
  66. ON_UPDATE_COMMAND_UI(IDM_MEDIANFILTER, OnUpdateMedianfilter)
  67. ON_COMMAND(IDM_CLOSE_H, OnCloseH)
  68. ON_UPDATE_COMMAND_UI(IDM_CLOSE_H, OnUpdateCloseH)
  69. ON_COMMAND(IDM_CLOSE_V, OnCloseV)
  70. ON_UPDATE_COMMAND_UI(IDM_CLOSE_V, OnUpdateCloseV)
  71. ON_COMMAND(IDM_DILATION_H, OnDilationH)
  72. ON_UPDATE_COMMAND_UI(IDM_DILATION_H, OnUpdateDilationH)
  73. ON_COMMAND(IDM_DILATION_V, OnDilationV)
  74. ON_UPDATE_COMMAND_UI(IDM_DILATION_V, OnUpdateDilationV)
  75. ON_COMMAND(IDM_EROSION_H, OnErosionH)
  76. ON_UPDATE_COMMAND_UI(IDM_EROSION_H, OnUpdateErosionH)
  77. ON_COMMAND(IDM_EROSION_V, OnErosionV)
  78. ON_UPDATE_COMMAND_UI(IDM_EROSION_V, OnUpdateErosionV)
  79. ON_COMMAND(IDM_OPEN_H, OnOpenH)
  80. ON_UPDATE_COMMAND_UI(IDM_OPEN_H, OnUpdateOpenH)
  81. ON_COMMAND(IDM_OPEN_V, OnOpenV)
  82. ON_UPDATE_COMMAND_UI(IDM_OPEN_V, OnUpdateOpenV)
  83. ON_COMMAND(IDM_THIN, OnThin)
  84. ON_UPDATE_COMMAND_UI(IDM_THIN, OnUpdateThin)
  85. ON_COMMAND(IDM_FFT, OnFft)
  86. ON_UPDATE_COMMAND_UI(IDM_FFT, OnUpdateFft)
  87. ON_COMMAND(IDM_DCT, OnDct)
  88. ON_UPDATE_COMMAND_UI(IDM_DCT, OnUpdateDct)
  89. ON_COMMAND(IDM_REVERSE, OnReverse)
  90. ON_UPDATE_COMMAND_UI(IDM_REVERSE, OnUpdateReverse)
  91. ON_COMMAND(IDM_WALH, OnWalh)
  92. ON_UPDATE_COMMAND_UI(IDM_WALH, OnUpdateWalh)
  93. ON_COMMAND(IDM_CONTOUR_H, OnContourH)
  94. ON_UPDATE_COMMAND_UI(IDM_CONTOUR_H, OnUpdateContourH)
  95. ON_COMMAND(IDM_CONTOUR_V, OnContourV)
  96. ON_UPDATE_COMMAND_UI(IDM_CONTOUR_V, OnUpdateContourV)
  97. //}}AFX_MSG_MAP
  98. // Standard printing commands
  99. ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
  100. ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
  101. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
  102. ON_MESSAGE(WM_REALIZEPAL, OnRealizePal)
  103. END_MESSAGE_MAP()
  104. /////////////////////////////////////////////////////////////////////////////
  105. // CImageProcessView construction/destruction
  106. CImageProcessView::CImageProcessView()
  107. {
  108. // TODO: add construction code here
  109. }
  110. CImageProcessView::~CImageProcessView()
  111. {
  112. }
  113. BOOL CImageProcessView::PreCreateWindow(CREATESTRUCT& cs)
  114. {
  115. // TODO: Modify the Window class or styles here by modifying
  116. //  the CREATESTRUCT cs
  117. return CScrollView::PreCreateWindow(cs);
  118. }
  119. /////////////////////////////////////////////////////////////////////////////
  120. // CImageProcessView drawing
  121. void CImageProcessView::OnDraw(CDC* pDC)
  122. {
  123. CImageProcessDoc* pDoc = GetDocument();
  124. ASSERT_VALID(pDoc);
  125. if (! pDoc->m_pDib->IsEmpty())
  126. pDoc->m_pDib->Display(pDC, 0, 0);
  127. }
  128. void CImageProcessView::OnInitialUpdate()
  129. {
  130. CScrollView::OnInitialUpdate();
  131. CImageProcessDoc* pDoc = GetDocument();
  132. CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
  133. SetScrollSizes(MM_TEXT, sizeTotal);
  134. CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  135. ASSERT_KINDOF(CMainFrame, pAppFrame);
  136. CRect rc;
  137. pAppFrame->GetClientRect(&rc);
  138. if (rc.Width() >= sizeTotal.cx && rc.Height() >= sizeTotal.cy &&
  139. (sizeTotal.cx>0 || sizeTotal.cy>0))
  140. ResizeParentToFit(FALSE);
  141. }
  142. /////////////////////////////////////////////////////////////////////////////
  143. // CImageProcessView printing
  144. BOOL CImageProcessView::OnPreparePrinting(CPrintInfo* pInfo)
  145. {
  146. // default preparation
  147. return DoPreparePrinting(pInfo);
  148. }
  149. void CImageProcessView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  150. {
  151. // TODO: add extra initialization before printing
  152. }
  153. void CImageProcessView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  154. {
  155. // TODO: add cleanup after printing
  156. }
  157. /////////////////////////////////////////////////////////////////////////////
  158. // CImageProcessView diagnostics
  159. #ifdef _DEBUG
  160. void CImageProcessView::AssertValid() const
  161. {
  162. CScrollView::AssertValid();
  163. }
  164. void CImageProcessView::Dump(CDumpContext& dc) const
  165. {
  166. CScrollView::Dump(dc);
  167. }
  168. CImageProcessDoc* CImageProcessView::GetDocument() // non-debug version is inline
  169. {
  170. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageProcessDoc)));
  171. return (CImageProcessDoc*)m_pDocument;
  172. }
  173. #endif //_DEBUG
  174. /////////////////////////////////////////////////////////////////////////////
  175. // CImageProcessView message handlers
  176. LRESULT CImageProcessView::OnRealizePal(WPARAM wParam, LPARAM lParam)
  177. {
  178. ASSERT(wParam != NULL);
  179. CImageProcessDoc* pDoc = GetDocument();
  180. if (pDoc->m_pDib->IsEmpty())
  181. return 0L;  // must be a new document
  182. CPalette* pPal = pDoc->m_pDib->GetPalette();
  183. if (pPal != NULL)
  184. {
  185. CWnd* pAppFrame = AfxGetApp()->m_pMainWnd;
  186. CClientDC appDC(pAppFrame);
  187. // All views but one should be a background palette.
  188. // wParam contains a handle to the active view, so the SelectPalette
  189. // bForceBackground flag is FALSE only if wParam == m_hWnd (this view)
  190. CPalette* oldPalette = appDC.SelectPalette(pPal, ((HWND)wParam) != m_hWnd);
  191. if (oldPalette != NULL)
  192. {
  193. UINT nColorsChanged = appDC.RealizePalette();
  194. if (nColorsChanged > 0)
  195. GetDocument()->UpdateAllViews(NULL);
  196. appDC.SelectPalette(oldPalette, TRUE);
  197. }
  198. else
  199. {
  200. TRACE0("tSelectPalette failed!n");
  201. }
  202. }
  203. return 0L;
  204. }
  205. void CImageProcessView::OnHorz() 
  206. {
  207. EdgeEnhance(HORZ);
  208. }
  209. void CImageProcessView::OnUpdateHorz(CCmdUI* pCmdUI) 
  210. {
  211. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  212. }
  213. void CImageProcessView::OnLap1() 
  214. {
  215. EdgeEnhance(LAP1);
  216. }
  217. void CImageProcessView::OnUpdateLap1(CCmdUI* pCmdUI) 
  218. {
  219. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  220. }
  221. void CImageProcessView::OnLap2() 
  222. {
  223. EdgeEnhance(LAP2);
  224. }
  225. void CImageProcessView::OnUpdateLap2(CCmdUI* pCmdUI) 
  226. {
  227. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  228. }
  229. void CImageProcessView::OnLap3() 
  230. {
  231. EdgeEnhance(LAP3);
  232. }
  233. void CImageProcessView::OnUpdateLap3(CCmdUI* pCmdUI) 
  234. {
  235. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  236. }
  237. void CImageProcessView::OnLap4() 
  238. {
  239. EdgeEnhance(LAP4);
  240. }
  241. void CImageProcessView::OnUpdateLap4(CCmdUI* pCmdUI) 
  242. {
  243. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  244. }
  245. void CImageProcessView::OnVert() 
  246. {
  247. EdgeEnhance(VERT);
  248. }
  249. void CImageProcessView::OnUpdateVert(CCmdUI* pCmdUI) 
  250. {
  251. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  252. }
  253. void CImageProcessView::OnVerthorz() 
  254. {
  255. EdgeEnhance(VERTHORZ);
  256. }
  257. void CImageProcessView::OnUpdateVerthorz(CCmdUI* pCmdUI) 
  258. {
  259. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  260. }
  261. void CImageProcessView::OnHf1() 
  262. {
  263. CConvoluteDlg FD(1,10,3,this);
  264. if (FD.DoModal() == IDOK)
  265. {
  266. CImageProcessDoc* pDoc = GetDocument();
  267. pDoc->m_pDib->HighPass(FD.m_nStreng, FILTER1);
  268. pDoc->SetModifiedFlag(TRUE);
  269. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  270. pDoc->UpdateAllViews(NULL);
  271. }
  272. }
  273. void CImageProcessView::OnUpdateHf1(CCmdUI* pCmdUI) 
  274. {
  275. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  276. }
  277. void CImageProcessView::OnHf2() 
  278. {
  279. CConvoluteDlg FD(1,10,3,this);
  280. if (FD.DoModal() == IDOK)
  281. {
  282. CImageProcessDoc* pDoc = GetDocument();
  283. pDoc->m_pDib->HighPass(FD.m_nStreng, FILTER2);
  284. pDoc->SetModifiedFlag(TRUE);
  285. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  286. pDoc->UpdateAllViews(NULL);
  287. }
  288. }
  289. void CImageProcessView::OnUpdateHf2(CCmdUI* pCmdUI) 
  290. {
  291. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  292. }
  293. void CImageProcessView::OnHf3() 
  294. {
  295. CConvoluteDlg FD(1,10,3,this);
  296. if (FD.DoModal() == IDOK)
  297. {
  298. CImageProcessDoc* pDoc = GetDocument();
  299. pDoc->m_pDib->HighPass(FD.m_nStreng, FILTER3);
  300. pDoc->SetModifiedFlag(TRUE);
  301. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  302. pDoc->UpdateAllViews(NULL);
  303. }
  304. }
  305. void CImageProcessView::OnUpdateHf3(CCmdUI* pCmdUI) 
  306. {
  307. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  308. }
  309. void CImageProcessView::OnLf1() 
  310. {
  311. CConvoluteDlg FD(1,10,3,this);
  312. if (FD.DoModal() == IDOK)
  313. {
  314. CImageProcessDoc* pDoc = GetDocument();
  315. pDoc->m_pDib->LowPass(FD.m_nStreng, FILTER1);
  316. pDoc->SetModifiedFlag(TRUE);
  317. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  318. pDoc->UpdateAllViews(NULL);
  319. }
  320. }
  321. void CImageProcessView::OnUpdateLf1(CCmdUI* pCmdUI) 
  322. {
  323. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  324. }
  325. void CImageProcessView::OnLf2() 
  326. {
  327. CConvoluteDlg FD(1,10,3,this);
  328. if (FD.DoModal() == IDOK)
  329. {
  330. CImageProcessDoc* pDoc = GetDocument();
  331. pDoc->m_pDib->LowPass(FD.m_nStreng, FILTER2);
  332. pDoc->SetModifiedFlag(TRUE);
  333. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  334. pDoc->UpdateAllViews(NULL);
  335. }
  336. }
  337. void CImageProcessView::OnUpdateLf2(CCmdUI* pCmdUI) 
  338. {
  339. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  340. }
  341. void CImageProcessView::OnLf3() 
  342. {
  343. CConvoluteDlg FD(1,10,3,this);
  344. if (FD.DoModal() == IDOK)
  345. {
  346. CImageProcessDoc* pDoc = GetDocument();
  347. pDoc->m_pDib->LowPass(FD.m_nStreng, FILTER3);
  348. pDoc->SetModifiedFlag(TRUE);
  349. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  350. pDoc->UpdateAllViews(NULL);
  351. }
  352. }
  353. void CImageProcessView::OnUpdateLf3(CCmdUI* pCmdUI) 
  354. {
  355. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  356. }
  357. void CImageProcessView::OnEast() 
  358. {
  359. EdgeEnhance(EAST);
  360. }
  361. void CImageProcessView::OnUpdateEast(CCmdUI* pCmdUI) 
  362. {
  363. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  364. }
  365. void CImageProcessView::OnNorth() 
  366. {
  367. EdgeEnhance(NORTH);
  368. }
  369. void CImageProcessView::OnUpdateNorth(CCmdUI* pCmdUI) 
  370. {
  371. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  372. }
  373. void CImageProcessView::OnNortheast() 
  374. {
  375. EdgeEnhance(NORTHEAST);
  376. }
  377. void CImageProcessView::OnUpdateNortheast(CCmdUI* pCmdUI) 
  378. {
  379. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  380. }
  381. void CImageProcessView::OnNorthwest() 
  382. {
  383. EdgeEnhance(NORTHWEST);
  384. }
  385. void CImageProcessView::OnUpdateNorthwest(CCmdUI* pCmdUI) 
  386. {
  387. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  388. }
  389. void CImageProcessView::OnSouth() 
  390. {
  391. EdgeEnhance(SOUTH);
  392. }
  393. void CImageProcessView::OnUpdateSouth(CCmdUI* pCmdUI) 
  394. {
  395. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  396. }
  397. void CImageProcessView::OnSoutheast() 
  398. {
  399. EdgeEnhance(SOUTHEAST);
  400. }
  401. void CImageProcessView::OnUpdateSoutheast(CCmdUI* pCmdUI) 
  402. {
  403. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  404. }
  405. void CImageProcessView::OnSouthwest() 
  406. {
  407. EdgeEnhance(SOUTHWEST);
  408. }
  409. void CImageProcessView::OnUpdateSouthwest(CCmdUI* pCmdUI) 
  410. {
  411. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  412. }
  413. void CImageProcessView::OnWest() 
  414. {
  415. EdgeEnhance(WEST);
  416. }
  417. void CImageProcessView::OnUpdateWest(CCmdUI* pCmdUI) 
  418. {
  419. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  420. }
  421. void CImageProcessView::OnSobel() 
  422. {
  423. EdgeEnhance(SOBEL);
  424. }
  425. void CImageProcessView::OnUpdateSobel(CCmdUI* pCmdUI) 
  426. {
  427. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  428. }
  429. void CImageProcessView::OnHough() 
  430. {
  431. EdgeEnhance(HOUGH);
  432. }
  433. void CImageProcessView::OnUpdateHough(CCmdUI* pCmdUI) 
  434. {
  435. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  436. }
  437. void CImageProcessView::EdgeEnhance(int nAlgorithm) 
  438. {
  439. CConvoluteDlg FD(1,10,3,this);
  440. if (FD.DoModal() == IDOK)
  441. {
  442. CImageProcessDoc* pDoc = GetDocument();
  443. pDoc->m_pDib->EdgeEnhance(FD.m_nStreng, nAlgorithm);
  444. pDoc->SetModifiedFlag(TRUE);
  445. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  446. pDoc->UpdateAllViews(NULL);
  447. }
  448. }
  449. void CImageProcessView::OnMedianfilter() 
  450. {
  451. CImageProcessDoc* pDoc = GetDocument();
  452. pDoc->m_pDib->MedianFilter();
  453. pDoc->SetModifiedFlag(TRUE);
  454. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  455. pDoc->UpdateAllViews(NULL);
  456. }
  457. void CImageProcessView::OnUpdateMedianfilter(CCmdUI* pCmdUI) 
  458. {
  459. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  460. }
  461. void CImageProcessView::OnErosionH() 
  462. {
  463. CImageProcessDoc* pDoc = GetDocument();
  464. pDoc->m_pDib->Erosion(TRUE);
  465. pDoc->SetModifiedFlag(TRUE);
  466. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  467. pDoc->UpdateAllViews(NULL);
  468. }
  469. void CImageProcessView::OnErosionV() 
  470. {
  471. CImageProcessDoc* pDoc = GetDocument();
  472. pDoc->m_pDib->Erosion(FALSE);
  473. pDoc->SetModifiedFlag(TRUE);
  474. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  475. pDoc->UpdateAllViews(NULL);
  476. }
  477. void CImageProcessView::OnUpdateErosionH(CCmdUI* pCmdUI) 
  478. {
  479. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  480. }
  481. void CImageProcessView::OnUpdateErosionV(CCmdUI* pCmdUI) 
  482. {
  483. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  484. }
  485. void CImageProcessView::OnDilationH() 
  486. {
  487. CImageProcessDoc* pDoc = GetDocument();
  488. pDoc->m_pDib->Erosion(TRUE);
  489. pDoc->SetModifiedFlag(TRUE);
  490. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  491. pDoc->UpdateAllViews(NULL);
  492. }
  493. void CImageProcessView::OnUpdateDilationH(CCmdUI* pCmdUI) 
  494. {
  495. // TODO: Add your command update UI handler code here
  496. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  497. }
  498. void CImageProcessView::OnDilationV() 
  499. {
  500. CImageProcessDoc* pDoc = GetDocument();
  501. pDoc->m_pDib->Dilation(FALSE);
  502. pDoc->SetModifiedFlag(TRUE);
  503. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  504. pDoc->UpdateAllViews(NULL);
  505. }
  506. void CImageProcessView::OnUpdateDilationV(CCmdUI* pCmdUI) 
  507. {
  508. // TODO: Add your command update UI handler code here
  509. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  510. }
  511. void CImageProcessView::OnCloseH() 
  512. {
  513. // TODO: Add your command handler code here
  514. CImageProcessDoc* pDoc = GetDocument();
  515. pDoc->m_pDib->MorphClose(TRUE);
  516. pDoc->SetModifiedFlag(TRUE);
  517. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  518. pDoc->UpdateAllViews(NULL);
  519. }
  520. void CImageProcessView::OnUpdateCloseH(CCmdUI* pCmdUI) 
  521. {
  522. // TODO: Add your command update UI handler code here
  523. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  524. }
  525. void CImageProcessView::OnCloseV() 
  526. {
  527. // TODO: Add your command handler code here
  528. CImageProcessDoc* pDoc = GetDocument();
  529. pDoc->m_pDib->MorphClose(FALSE);
  530. pDoc->SetModifiedFlag(TRUE);
  531. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  532. pDoc->UpdateAllViews(NULL);
  533. }
  534. void CImageProcessView::OnUpdateCloseV(CCmdUI* pCmdUI) 
  535. {
  536. // TODO: Add your command update UI handler code here
  537. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  538. }
  539. void CImageProcessView::OnOpenH() 
  540. {
  541. // TODO: Add your command handler code here
  542. CImageProcessDoc* pDoc = GetDocument();
  543. pDoc->m_pDib->MorphOpen(TRUE);
  544. pDoc->SetModifiedFlag(TRUE);
  545. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  546. pDoc->UpdateAllViews(NULL);
  547. }
  548. void CImageProcessView::OnUpdateOpenH(CCmdUI* pCmdUI) 
  549. {
  550. // TODO: Add your command update UI handler code here
  551. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  552. }
  553. void CImageProcessView::OnOpenV() 
  554. {
  555. // TODO: Add your command handler code here
  556. CImageProcessDoc* pDoc = GetDocument();
  557. pDoc->m_pDib->MorphOpen(FALSE);
  558. pDoc->SetModifiedFlag(TRUE);
  559. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  560. pDoc->UpdateAllViews(NULL);
  561. }
  562. void CImageProcessView::OnUpdateOpenV(CCmdUI* pCmdUI) 
  563. {
  564. // TODO: Add your command update UI handler code here
  565. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  566. }
  567. void CImageProcessView::OnThin() 
  568. {
  569. // TODO: Add your command handler code here
  570. CImageProcessDoc* pDoc = GetDocument();
  571. pDoc->m_pDib->Thinning();
  572. pDoc->SetModifiedFlag(TRUE);
  573. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  574. pDoc->UpdateAllViews(NULL);
  575. }
  576. void CImageProcessView::OnUpdateThin(CCmdUI* pCmdUI) 
  577. {
  578. // TODO: Add your command update UI handler code here
  579. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  580. }
  581. void CImageProcessView::OnReverse() 
  582. {
  583. // TODO: Add your command handler code here
  584. CImageProcessDoc* pDoc = GetDocument();
  585. pDoc->m_pDib->Reverse();
  586. pDoc->SetModifiedFlag(TRUE);
  587. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  588. pDoc->UpdateAllViews(NULL);
  589. }
  590. void CImageProcessView::OnUpdateReverse(CCmdUI* pCmdUI) 
  591. {
  592. // TODO: Add your command update UI handler code here
  593. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  594. }
  595. void CImageProcessView::OnFft() 
  596. {
  597. // TODO: Add your command handler code here
  598. CImageProcessDoc* pDoc = GetDocument();
  599. pDoc->m_pDib->FFT();
  600. pDoc->SetModifiedFlag(TRUE);
  601. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  602. pDoc->UpdateAllViews(NULL);
  603. }
  604. void CImageProcessView::OnUpdateFft(CCmdUI* pCmdUI) 
  605. {
  606. // TODO: Add your command update UI handler code here
  607. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  608. }
  609. void CImageProcessView::OnDct() 
  610. {
  611. // TODO: Add your command handler code here
  612. CImageProcessDoc* pDoc = GetDocument();
  613. pDoc->m_pDib->DCT();
  614. pDoc->SetModifiedFlag(TRUE);
  615. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  616. pDoc->UpdateAllViews(NULL);
  617. }
  618. void CImageProcessView::OnUpdateDct(CCmdUI* pCmdUI) 
  619. {
  620. // TODO: Add your command update UI handler code here
  621. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  622. }
  623. void CImageProcessView::OnWalh() 
  624. {
  625. // TODO: Add your command handler code here
  626. CImageProcessDoc* pDoc = GetDocument();
  627. pDoc->m_pDib->WALh();
  628. pDoc->SetModifiedFlag(TRUE);
  629. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  630. pDoc->UpdateAllViews(NULL);
  631. }
  632. void CImageProcessView::OnUpdateWalh(CCmdUI* pCmdUI) 
  633. {
  634. // TODO: Add your command update UI handler code here
  635. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  636. }
  637. void CImageProcessView::OnContourH() 
  638. {
  639. // TODO: Add your command handler code here
  640. CImageProcessDoc* pDoc = GetDocument();
  641. pDoc->m_pDib->Contour(TRUE);
  642. pDoc->SetModifiedFlag(TRUE);
  643. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  644. pDoc->UpdateAllViews(NULL);
  645. }
  646. void CImageProcessView::OnUpdateContourH(CCmdUI* pCmdUI) 
  647. {
  648. // TODO: Add your command update UI handler code here
  649. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  650. }
  651. void CImageProcessView::OnContourV() 
  652. {
  653. // TODO: Add your command handler code here
  654. CImageProcessDoc* pDoc = GetDocument();
  655. pDoc->m_pDib->Contour(FALSE);
  656. pDoc->SetModifiedFlag(TRUE);
  657. OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
  658. pDoc->UpdateAllViews(NULL);
  659. }
  660. void CImageProcessView::OnUpdateContourV(CCmdUI* pCmdUI) 
  661. {
  662. // TODO: Add your command update UI handler code here
  663. pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
  664. }