📄 picviewerdoc.cpp
字号:
// PicViewerDoc.cpp : implementation of the CPicViewerDoc class
//
#include "stdafx.h"
#include "PicViewer.h"
#include "AdjRGBDlg.h"
#include "AdjHS.h"
#include "AdjBrightDlg.h"
#include "MosaicDlg.h"
#include "SmoothAVG.h"
#include "StripeDlg.h"
#include "MixdibDlg.h"
#include "AdjustFrameDlg.h"
#include "AdjustSizeDlg.h"
#include "RotateDlg.h"
#include "EmbossDlg.h"
#include "WindyDlg.h"
#include "SharpDlg.h"
#include "SelectFileDlg.h"
#include "PicViewerDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc
IMPLEMENT_DYNCREATE(CPicViewerDoc, CDocument)
BEGIN_MESSAGE_MAP(CPicViewerDoc, CDocument)
//{{AFX_MSG_MAP(CPicViewerDoc)
ON_COMMAND(IDMI_EMBOSS, OnEmboss)
ON_COMMAND(IDMI_NEGTIVE, OnNegtive)
ON_COMMAND(IDMI_SHARP, OnSharp)
ON_COMMAND(IDMI_FLIP, OnFlip)
ON_COMMAND(IDMI_MIRROR, OnMirror)
ON_COMMAND(IDMI_ROTATE90, OnRotate90)
ON_COMMAND(IDMI_ROTATE270, OnRotate270)
ON_COMMAND(IDMI_MOSAIC, OnMosaic)
ON_COMMAND(IDMI_COUNTCOLOR, OnCountcolor)
ON_COMMAND(IDMI_ADJUST_RGB, OnAdjustRgb)
ON_COMMAND(IDMI_ADJUST_BRIGHT, OnAdjustBright)
ON_COMMAND(IDMI_SMOOTH_AVG, OnSmoothAvg)
ON_COMMAND(IDMI_ADJUST_HUE, OnAdjustHue)
ON_COMMAND(IDMI_STRIPE, OnStripe)
ON_COMMAND(IDMI_MIXDIB, OnMixdib)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_COMMAND(IDMI_COLUMN, OnColumn)
ON_COMMAND(IDMI_ERASEFRAME, OnEraseframe)
ON_COMMAND(IDMI_ADDFRAME, OnAddframe)
ON_UPDATE_COMMAND_UI(IDMI_ROTATE90, OnUpdateRotate90)
ON_UPDATE_COMMAND_UI(IDMI_ROTATE270, OnUpdateRotate270)
ON_UPDATE_COMMAND_UI(IDMI_MIRROR, OnUpdateMirror)
ON_UPDATE_COMMAND_UI(IDMI_FLIP, OnUpdateFlip)
ON_UPDATE_COMMAND_UI(IDMI_ADDFRAME, OnUpdateAddframe)
ON_UPDATE_COMMAND_UI(IDMI_ERASEFRAME, OnUpdateEraseframe)
ON_COMMAND(IDMI_ADJUST_SIZE, OnAdjustSize)
ON_UPDATE_COMMAND_UI(IDMI_ADJUST_SIZE, OnUpdateAdjustSize)
ON_COMMAND(IDMI_ROTATE_ANGLE, OnRotateAngle)
ON_UPDATE_COMMAND_UI(IDMI_ROTATE_ANGLE, OnUpdateRotateAngle)
ON_UPDATE_COMMAND_UI(IDMI_ADJUST_RGB, OnUpdateAdjustRgb)
ON_UPDATE_COMMAND_UI(IDMI_ADJUST_BRIGHT, OnUpdateAdjustBright)
ON_UPDATE_COMMAND_UI(IDMI_ADJUST_HUE, OnUpdateAdjustHue)
ON_UPDATE_COMMAND_UI(IDMI_NEGTIVE, OnUpdateNegtive)
ON_UPDATE_COMMAND_UI(IDMI_EMBOSS, OnUpdateEmboss)
ON_COMMAND(IDMI_CONVERT_TO32, OnConvertTo32)
ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO32, OnUpdateConvertTo32)
ON_COMMAND(IDMI_WINDY, OnWindy)
ON_UPDATE_COMMAND_UI(IDMI_WINDY, OnUpdateWindy)
ON_UPDATE_COMMAND_UI(IDMI_SHARP, OnUpdateSharp)
ON_UPDATE_COMMAND_UI(IDMI_COLUMN, OnUpdateColumn)
ON_UPDATE_COMMAND_UI(IDMI_STRIPE, OnUpdateStripe)
ON_UPDATE_COMMAND_UI(IDMI_SMOOTH_AVG, OnUpdateSmoothAvg)
ON_COMMAND(IDMI_CONVOL_SHARP1, OnConvolSharp1)
ON_COMMAND(IDMI_CONVOL_SHARP2, OnConvolSharp2)
ON_COMMAND(IDMI_CONVOL_SHARP3, OnConvolSharp3)
ON_COMMAND(IDMI_CONVOL_SMOOTH1, OnConvolSmooth1)
ON_COMMAND(IDMI_CONVOL_SMOOTH2, OnConvolSmooth2)
ON_COMMAND(IDMI_CONVOL_SMOOTH3, OnConvolSmooth3)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP1, OnUpdateConvolSharp1)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP2, OnUpdateConvolSharp2)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SHARP3, OnUpdateConvolSharp3)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH1, OnUpdateConvolSmooth1)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH2, OnUpdateConvolSmooth2)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_SMOOTH3, OnUpdateConvolSmooth3)
ON_COMMAND(IDMI_CONVOL_ENHANCE_H, OnConvolEnhanceH)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_H, OnUpdateConvolEnhanceH)
ON_COMMAND(IDMI_CONVOL_ENHANCE_V, OnConvolEnhanceV)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_V, OnUpdateConvolEnhanceV)
ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP1, OnConvolEnhanceLap1)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP1, OnUpdateConvolEnhanceLap1)
ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP2, OnConvolEnhanceLap2)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP2, OnUpdateConvolEnhanceLap2)
ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP3, OnConvolEnhanceLap3)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP3, OnUpdateConvolEnhanceLap3)
ON_COMMAND(IDMI_CONVOL_ENHANCE_LAP4, OnConvolEnhanceLap4)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_LAP4, OnUpdateConvolEnhanceLap4)
ON_COMMAND(IDMI_CONVOL_ENHANCE_VH, OnConvolEnhanceVh)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_ENHANCE_VH, OnUpdateConvolEnhanceVh)
ON_COMMAND(IDMI_CONVOL_USER, OnConvolUser)
ON_UPDATE_COMMAND_UI(IDMI_CONVOL_USER, OnUpdateConvolUser)
ON_UPDATE_COMMAND_UI(IDMI_MOSAIC, OnUpdateMosaic)
ON_COMMAND(IDMI_EFFECT_UNDO, OnEffectUndo)
ON_UPDATE_COMMAND_UI(IDMI_EFFECT_UNDO, OnUpdateEffectUndo)
ON_COMMAND(IDMI_EFFECT_REDO, OnEffectRedo)
ON_UPDATE_COMMAND_UI(IDMI_EFFECT_REDO, OnUpdateEffectRedo)
ON_UPDATE_COMMAND_UI(IDMI_COUNTCOLOR, OnUpdateCountcolor)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(IDMI_CONVERT_GRAY, OnConvertGray)
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
ON_COMMAND(IDMI_SPHERE, OnSphere)
ON_UPDATE_COMMAND_UI(IDMI_SPHERE, OnUpdateSphere)
ON_UPDATE_COMMAND_UI(IDMI_PICKKEYCOLOR, OnUpdatePickkeycolor)
ON_COMMAND(IDMI_PICKKEYCOLOR, OnPickkeycolor)
ON_COMMAND(IDMI_CONVERT_TO24, OnConvertTo24)
ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO24, OnUpdateConvertTo24)
ON_UPDATE_COMMAND_UI(IDMI_CONVERT_GRAY, OnUpdateConvertGray)
ON_COMMAND(IDMI_SPLITE_CHANNEL, OnSpliteChannel)
ON_UPDATE_COMMAND_UI(IDMI_SPLITE_CHANNEL, OnUpdateSpliteChannel)
ON_COMMAND(IDMI_VIEW_REALSIZE, OnViewRealsize)
ON_UPDATE_COMMAND_UI(IDMI_VIEW_REALSIZE, OnUpdateViewRealsize)
ON_COMMAND(IDMI_CONVERT_TO16, OnConvertTo16)
ON_UPDATE_COMMAND_UI(IDMI_CONVERT_TO16, OnUpdateConvertTo16)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
ON_COMMAND(IDMI_SELECT_ALL, OnSelectAll)
ON_UPDATE_COMMAND_UI(IDMI_SELECT_ALL, OnUpdateSelectAll)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc construction/destruction
CPicViewerDoc::CPicViewerDoc()
{ m_bFirstShow = TRUE ; }
CPicViewerDoc::~CPicViewerDoc()
{ }
/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc serialization
void CPicViewerDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc diagnostics
#ifdef _DEBUG
void CPicViewerDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CPicViewerDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPicViewerDoc commands
void CPicViewerDoc::OnEmboss()
{
// TODO: Add your command handler code here
CEmbossDlg dlg (NULL, &this->m_fPic) ;
dlg.DoModal () ;
this->AttachPic () ;
}
void CPicViewerDoc::OnNegtive()
{
// TODO: Add your command handler code here
m_fPic.Negate () ;
this->AttachPic () ;
}
void CPicViewerDoc::AttachPic()
{
m_DDB.Attach (m_fPic.GetDDB_Handle ()) ;
this->UpdateAllViews (NULL) ;
}
void CPicViewerDoc::OnSharp()
{
// TODO: Add your command handler code here
CSharpDlg dlg (NULL, &m_fPic) ;
if (dlg.DoModal () == IDOK)
this->AttachPic () ;
}
void CPicViewerDoc::OnFlip()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
m_fPic.Flip () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnMirror()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
m_fPic.Mirror () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnRotate90()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
m_fPic.Rotate90 () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnRotate270()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
m_fPic.Rotate270 () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnMosaic()
{
// TODO: Add your command handler code here
CMosaicDlg dlg (NULL, &m_fPic) ;
if (dlg.DoModal () == IDOK)
this->AttachPic () ;
}
void CPicViewerDoc::OnCountcolor()
{
// TODO: Add your command handler code here
TCHAR Buffer[32] ;
::wsprintf (Buffer, "使用颜色数目为 : %i", this->m_fPic.ColorsUsed ()) ;
::fooMsgBox (Buffer) ;
}
void CPicViewerDoc::OnAdjustRgb()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
CAdjRGBDlg DibRGB (NULL, &this->m_fPic) ;
DibRGB.DoModal () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnAdjustBright()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
CAdjBrightDlg DibBri (NULL, &this->m_fPic) ;
DibBri.DoModal () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnSmoothAvg()
{
// TODO: Add your command handler code here
CSmoothAVG dlg (NULL, &this->m_fPic) ;
if (dlg.DoModal () == IDOK)
this->AttachPic () ;
}
void CPicViewerDoc::OnAdjustHue()
{
// TODO: Add your command handler code here
if (m_fPic.GetHandle())
{
CAdjHSDlg DibBri (NULL, &this->m_fPic) ;
DibBri.DoModal () ;
this->AttachPic () ;
}
}
void CPicViewerDoc::OnStripe()
{
// TODO: Add your command handler code here
CStripeDlg Dib (NULL, &this->m_fPic) ;
if (Dib.DoModal () == IDOK)
this->AttachPic () ;
}
void CPicViewerDoc::OnMixdib()
{
// TODO: Add your command handler code here
CMixdibDlg Dib (NULL, &this->m_fPic) ;
Dib.DoModal () ;
this->AttachPic () ;
}
void CPicViewerDoc::OnEditCopy()
{
if (m_fPic.HasSelection ())
{
RECT box ;
m_fPic.GetBoundBox (&box) ;
m_fPic.CopyToClipboard (&box) ;
}
else
m_fPic.CopyToClipboard (NULL) ;
}
void CPicViewerDoc::OnUpdateEditCopy(CCmdUI* pCmdUI)
{ pCmdUI->Enable (m_fPic.GetHandle () != NULL) ; }
void CPicViewerDoc::OnColumn()
{
// TODO: Add your command handler code here
m_fPic.Column () ;
this->AttachPic () ;
}
//=========================================================================
void CPicViewerDoc::OnEraseframe()
{
RECT rc ;
CAdjustFrameDlg dlg (NULL, &rc) ;
if (dlg.DoModal () == IDOK)
m_fPic.EraseFrame (rc.left, rc.top, rc.right, rc.bottom) ;
this->AttachPic () ;
}
void CPicViewerDoc::OnAddframe()
{
RECT rc ;
CAdjustFrameDlg dlg (NULL, &rc) ;
if (dlg.DoModal () == IDOK)
m_fPic.AddFrame (rc.left, rc.top, rc.right, rc.bottom) ;
this->AttachPic () ;
}
//=========================================================================
void CPicViewerDoc::OnUpdateRotate90(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}
void CPicViewerDoc::OnUpdateRotate270(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}
void CPicViewerDoc::OnUpdateMirror(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}
void CPicViewerDoc::OnUpdateFlip(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.GetHandle () != NULL) ;
}
void CPicViewerDoc::OnUpdateAddframe(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}
void CPicViewerDoc::OnUpdateEraseframe(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 8) ;
}
void CPicViewerDoc::OnAdjustSize()
{
// TODO: Add your command handler code here
CAdjustSizeDlg dlg (NULL, &m_fPic) ;
dlg.DoModal () ;
this->AttachPic () ;
}
void CPicViewerDoc::OnUpdateAdjustSize(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.GetHandle () != NULL) ;
}
void CPicViewerDoc::OnRotateAngle()
{
// TODO: Add your command handler code here
CRotateDlg dlg (NULL, &m_fPic) ;
dlg.DoModal () ;
this->AttachPic () ;
}
void CPicViewerDoc::OnUpdateRotateAngle(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.GetHandle() != NULL) ;
}
void CPicViewerDoc::OnUpdateAdjustRgb(CCmdUI* pCmdUI)
{ pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ; }
void CPicViewerDoc::OnUpdateAdjustBright(CCmdUI* pCmdUI)
{ pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ; }
void CPicViewerDoc::OnUpdateAdjustHue(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ;
}
void CPicViewerDoc::OnUpdateNegtive(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable ((m_fPic.ColorBits() != 16) && (m_fPic.ColorBits() > 0)) ;
}
void CPicViewerDoc::OnUpdateEmboss(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable (m_fPic.ColorBits() >= 24) ;
}
void CPicViewerDoc::OnWindy()
{
// TODO: Add your command handler code here
CWindyDlg Dib (NULL, &this->m_fPic) ;
Dib.DoModal () ;
this->AttachPic () ;
}
void CPicViewerDoc::OnUpdateWindy(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable ((m_fPic.GetHandle() != NULL) && (m_fPic.ColorBits() >= 24)) ;
}
void CPicViewerDoc::OnUpdateSharp(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable ((m_fPic.GetHandle() != NULL) && (m_fPic.ColorBits() >= 24)) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -