p align="left">ON_UPDATE_COMMAND_UI(ID_EDIT_BRIGHTNESSANDCONTRAST, OnUpdateEditBrightnessandcontrast) ON_UPDATE_COMMAND_UI(ID_EDIT_INVERTCOLORS, OnUpdateEditInvertcolors) ON_COMMAND(ID_EDIT_STOP, OnEditStop) ON_UPDATE_COMMAND_UI(ID_EDIT_STOP, OnUpdateEditStop) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CBMDoc construction/destruction CBMDoc::CBMDoc():m_EventDoTransform(FALSE, TRUE) { // TODO: add one-time construction code here m_pCurBM=NULL; m_bEditable=FALSE; m_pCurFilter=NULL; } CBMDoc::~CBMDoc() { } BOOL CBMDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; } // Адрес пикселя pCurPix=m_pData+y*DataStrLength+x*3; // Яркость рассчитывается как 0.3*Red+0.59*Green+0.11*Blue, // но пиксельные данные хранятся в файле BMP, в порядке BGR Brightness=(BYTE)((0.11*(*pCurPix) + 0.59*(*(pCurPix+1))+ 0.3*(*(pCurPix+2)))*Range/256); pHist[Brightness]+=1; } return TRUE; }; // stdafx.cpp : source file that includes just the standard includes //BMViewer.pch will be the pre-compiled header //stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // BMDoc.h : interface of the CBMDoc class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_) #define AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <afxmt.h> #include "Raster.h" #include "Filter.h" #define UM_STARTTRANSFORMWM_USER+0x8000 #define UM_ENDOFTRANSFORMUM_STARTTRANSFORM+1 class CBMDoc : public CDocument { protected: // create from serialization only CBMDoc(); DECLARE_DYNCREATE(CBMDoc) // Attributes public: // Флаги BOOLm_bEditable;// можем ли редактировать данные CEventm_EventDoTransform; // событие - выполняется преобразование // Статистика LONGm_lExecutedPercent; // Данные CRaster m_BM[2];// два буфера для изображений CRaster *m_pCurBM;// указатель на активный буфер //Фильтры CFilter*m_pCurFilter; CBrightCont m_BrightContFilter; CInvertColors m_InvertColorsFilter; CBlurm_BlurFilter; CSharpm_SharpFilter; // Operations public: CSize GetCurrentBMSize(); //Возвращает номер активного буфера intGetNCurrentBM(); //Возвращает указатель на текущую картинку CRaster* GetCurrentBMPtr(); //Возвращает указатель на буфер CRaster* GetBufferBMPtr(); //Поменять текущее изображение и буффер местами void SwapBM(); //Нарисовать текущее изображение void DrawCurrent(); // Создает буфер заданного размера // (при вызове без аргументов размер равен текущей картинке) // совместимый с текущей картинкой BOOL CreateCompatibleBuffer(LONG width=0, LONG height=0); //Запускает поток преобразования void Transform(); protected: //Функция потока преобразования static UINT ThreadProc(LPVOID pv); //Цикл преобразования с использованием активного фильтра void TransformLoop(); //Посылает сообщение всем окнам void InformAllViews(UINT msg, WPARAM wPar=0, LPARAM lPar=0); public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CBMDoc) public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); virtual BOOL OnOpenDocument(LPCTSTR lpszPathName); virtual BOOL OnSaveDocument(LPCTSTR lpszPathName); //}}AFX_VIRTUAL // Implementation public: void Onio(); virtual ~CBMDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: //{{AFX_MSG(CBMDoc) afx_msg void OnEditUndo(); afx_msg void OnEditBrightnessandcontrast(); afx_msg void OnEditInvertcolors(); afx_msg void OnEditBlur(); afx_msg void OnEditSharp(); afx_msg void OnUpdateEditBlur(CCmdUI* pCmdUI); afx_msg void OnUpdateEditSharp(CCmdUI* pCmdUI); afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI); afx_msg void OnUpdateEditBrightnessandcontrast(CCmdUI* pCmdUI); afx_msg void OnUpdateEditInvertcolors(CCmdUI* pCmdUI); afx_msg void OnEditStop(); afx_msg void OnUpdateEditStop(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_) // BMView.h : interface of the CBMView class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_) #define AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CBMView : public CScrollView { // Идентификатор таймера UINT m_nTimer; // Заголовок окна CString m_strOrgTitle; //Виртуальный экран CBitmap m_VirtScreenBitmap;// растр CDCm_VirtScreenDC;// контекст // Масштаб вывода картинки doublem_dScale; intm_nStretchMode; protected: // create from serialization only CBMView(); DECLARE_DYNCREATE(CBMView) // Attributes public: CBMDoc* GetDocument(); // Operations public: BOOL UpdateVirtualScreen(); void OnStartTimer(); void OnStopTimer(); afx_msg LONG OnStartTransform(UINT wParam, LONG lParam); afx_msg LONG OnEndTransform(UINT wParam, LONG lParam); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CBMView) public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void OnInitialUpdate(); protected: virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnDraw(CDC* pDC); virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint); virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo); //}}AFX_VIRTUAL // Implementation public: virtual ~CBMView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: //{{AFX_MSG(CBMView) afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnTimer(UINT nIDEvent); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnViewZoomin(); afx_msg void OnViewZoomout(); afx_msg void OnViewStretchhalftone(); afx_msg void OnUpdateViewStretchhalftone(CCmdUI* pCmdUI); afx_msg void OnViewStretchcoloroncolor(); afx_msg void OnUpdateViewStretchcoloroncolor(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #ifndef _DEBUG // debug version in BMView.cpp inline CBMDoc* CBMView::GetDocument() { return (CBMDoc*)m_pDocument; } #endif ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_) // BMViewer.h : main header file for the BMVIEWER application // #if !defined(AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_) #define AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CBMApp: // See BMViewer.cpp for the implementation of this class // class CBMApp : public CWinApp { public: CBMApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CBMApp) public: virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CBMApp) afx_msg void OnAppAbout(); afx_msg void OnFileNew(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_) //BrightContDlg.h #if !defined(AFX_BRIGHTCONTDLG_H__310F8D78_02DE_4055_A8DD_609EFC475802__INCLUDED_) #define AFX_BRIGHTCONTDLG_H__310F8D78_02DE_4055_A8DD_609EFC475802__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // BrightContDlg.h : header file // ///////////////////////////////////////////////////////////////////////////// // CBrightContDlg dialog class CBrightContDlg : public CDialog { // Construction public: CBrightContDlg(CWnd* pParent = NULL); // standard constructor int m_iBrightnessOffset; int m_iContrastOffset; // Dialog Data
Страницы: 1, 2, 3, 4, 5, 6
|