// ImageVisualView.cpp : implementation of the CImageVisualView class
//
#include "stdafx.h"
#include "ImageVisual.h"
#include "ImageVisualDoc.h"
#include "ImageVisualView.h"
#include "math.h"
#include "DialogPointLiner.h"
#include "DialogPointThreTrans.h"
#include "DialogPointWinTrans.h"
#include "DialogPointGrayStretch.h"
#include "DialogGeoTranslation.h"
#include "DialogGeoZoom.h"
#include "DialogWatermarkPatchwork.h"
#include "FloatDCT.h"
#include "Dwt.h"
#include "math.h"
#include "DialogEnhanSmooth.h"
#include "ColorTable.h"
#include "DialogColor.h"
#include "DialogShapeErosion.h"
#include "Edgecontour.h"
#include "DialogHuffman.h"
#include "DialogShannon.h"
#include "Pcx.h"
#define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr
DECLARE_HANDLE(HDIB);// DIB句柄
#define PI 3.14159
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView
IMPLEMENT_DYNCREATE(CImageVisualView, CScrollView)
BEGIN_MESSAGE_MAP(CImageVisualView, CScrollView)
//{{AFX_MSG_MAP(CImageVisualView)
ON_COMMAND(ID_MARK_READ, OnMarkRead)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_INSERT_WATERMARK, OnInsertWatermark)
ON_COMMAND(ID_DRAW_WATERMARK, OnDrawWatermark)
ON_COMMAND(ID_TOOL_PSNR, OnToolPsnr)
ON_COMMAND(ID_TOOL_INTENSITY, OnToolIntensity)
ON_COMMAND(ID_POINT_INVERT, OnPointInvert)
ON_COMMAND(ID_POINT_LINER, OnPointLiner)
ON_COMMAND(ID_POINT_THRESHOLD_TRANS, OnPointThresholdTrans)
ON_COMMAND(ID_IMAGE_BAKE, OnImageBake)
ON_COMMAND(ID_POINT_WIN_TRANS, OnPointWinTrans)
ON_COMMAND(ID_POINT_GRAY_STRETCH, OnPointGrayStretch)
ON_COMMAND(ID_POINT_INTE_EQUALIZE, OnPointInteEqualize)
ON_COMMAND(ID_GEO_TRANSLATION, OnGeoTranslation)
ON_COMMAND(ID_GEO_MIRROR_S, OnGeoMirrorS)
ON_COMMAND(ID_GEO_MIRROR_H, OnGeoMirrorH)
ON_COMMAND(ID_GEO_ROTATION, OnGeoRotation)
ON_COMMAND(ID_GEO_ZOOM, OnGeoZoom)
ON_COMMAND(ID_WATERMARK_PATCHWORK, OnWatermarkPatchwork)
ON_COMMAND(ID_RESTORE_BLURDIB, OnRestoreBlurdib)
ON_COMMAND(ID_WATERMARK_PATCHWORK_DRAW, OnWatermarkPatchworkDraw)
ON_COMMAND(ID_WATERMARK_HASH_ONEWAY, OnWatermarkHashOneway)
ON_COMMAND(ID_WATERMARK_DRAW_HASH, OnWatermarkDrawHash)
ON_COMMAND(ID_WATERMARK_T_DCT_GRAY, OnWatermarkTDctGray)
ON_COMMAND(ID_LOSS_FDCT, OnLossFdct)
ON_COMMAND(ID_WATERMARK_T_DCT_GRAY_DRAW, OnWatermarkTDctGrayDraw)
ON_COMMAND(ID_W_TEST, OnWTest)
ON_COMMAND(ID_WATERMARK_T_FLOAT_WAVELET_EMMBEND, OnWatermarkTFloatWaveletEmmbend)
ON_COMMAND(ID_COMPRESS_DCT, OnCompressDct)
ON_COMMAND(ID_VISUALWATERMARK_DCT, OnVisualwatermarkDct)
ON_COMMAND(ID_VISUALWATERMARK_DCT_DRAW, OnVisualwatermarkDctDraw)
ON_COMMAND(ID_GEO_ROTATION_ANY_ANGLE, OnGeoRotationAnyAngle)
ON_COMMAND(ID_GEO_ROTATION_INTERPOLATION, OnGeoRotationInterpolation)
ON_COMMAND(ID_Z_FOURIER, OnZFourier)
ON_COMMAND(ID_Z_FOURIER_INVERT, OnZFourierInvert)
ON_COMMAND(ID_Z_DCT, OnZDct)
ON_COMMAND(ID_Z_DCT_INVERT, OnZDctInvert)
ON_COMMAND(ID_Z_WALSH, OnZWalsh)
ON_COMMAND(ID_Z_WALSH_INVERT, OnZWalshInvert)
ON_COMMAND(ID_ENHA_SMOOTH, OnEnhaSmooth)
ON_COMMAND(ID_ENHAN_GUASS, OnEnhanGuass)
ON_COMMAND(ID_ENHAN_MEDIAN_FILTER, OnEnhanMedianFilter)
ON_COMMAND(ID_ENHAN_GRADSHARP, OnEnhanGradsharp)
ON_COMMAND(ID_ENHAN_LAPLATH, OnEnhanLaplath)
ON_COMMAND(ID_ENHAN_GUASS_SHARP, OnEnhanGuassSharp)
ON_COMMAND(ID_FILE_COLOR, OnFileColor)
ON_COMMAND(ID_FILE_COLOR_GRADE, OnFileColorGrade)
ON_COMMAND(ID_FILE_256_GRAY, OnFile256Gray)
ON_COMMAND(ID_SHAPE_EROSION, OnShapeErosion)
ON_COMMAND(ID_SHAPE_DILATION, OnShapeDilation)
ON_COMMAND(ID_SHAPE_OPEN, OnShapeOpen)
ON_COMMAND(ID_SHAPE_CLOSE, OnShapeClose)
ON_COMMAND(ID_SHAPE_THIN, OnShapeThin)
ON_COMMAND(ID_EDGE_SOBEL, OnEdgeSobel)
ON_COMMAND(ID_ENDGE_ROBERT, OnEndgeRobert)
ON_COMMAND(ID_EDGE_PREWITT, OnEdgePrewitt)
ON_COMMAND(ID_EDGE_KIRSCH, OnEdgeKirsch)
ON_COMMAND(ID_EDGE_GUASS, OnEdgeGuass)
ON_COMMAND(ID_EDGE_LINE, OnEdgeLine)
ON_COMMAND(ID_EDGE_CONTOUR, OnEdgeContour)
ON_COMMAND(ID_EDGE_TRACE, OnEdgeTrace)
ON_COMMAND(ID_EDGE_FILL_SIMPLE, OnEdgeFillSimple)
ON_COMMAND(ID_EDGE_SCAN, OnEdgeScan)
ON_COMMAND(ID_DISMENBER_THRESHOLD, OnDismenberThreshold)
ON_COMMAND(ID_DISMENBER_HPROJECT, OnDismenberHproject)
ON_COMMAND(ID_DISMENBER_VPROJECT, OnDismenberVproject)
ON_COMMAND(ID_DISMENBER_ADD, OnDismenberAdd)
ON_COMMAND(ID_DISMENBER_MINUS, OnDismenberMinus)
ON_COMMAND(ID_DISMENBER_T, OnDismenberT)
ON_COMMAND(ID_RESTORE_BLUR, OnRestoreBlur)
ON_COMMAND(ID_RESTORE_INVERT_BLUR, OnRestoreInvertBlur)
ON_COMMAND(ID_RESTORE_BLUR_NOISE, OnRestoreBlurNoise)
ON_COMMAND(ID_RESTORE_WIENER, OnRestoreWiener)
ON_COMMAND(ID_RESTORE_NOISE_RANDOM, OnRestoreNoiseRandom)
ON_COMMAND(ID_RESTORE_SALT_NOISE, OnRestoreSaltNoise)
ON_COMMAND(ID_COMPRESS_HUFFMAN, OnCompressHuffman)
ON_COMMAND(ID_COMPRESS_SHANNON, OnCompressShannon)
ON_COMMAND(ID_COMPRESS_PCX_SAVE, OnCompressPcxSave)
ON_COMMAND(ID_COMPRESS_PCX_OP, OnCompressPcxOp)
ON_COMMAND(ID_COMPRESS_LOADPCX, OnCompressLoadpcx)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView construction/destruction
CImageVisualView::CImageVisualView()
{
// TODO: add construction code here
blDrawMark=FALSE;
blTran=FALSE;
m_nMarkHeight=64;
m_nMarkWidth=64;
}
CImageVisualView::~CImageVisualView()
{
}
BOOL CImageVisualView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView drawing
void CImageVisualView::OnDraw(CDC* pDC)
{
CImageVisualDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CSize sizeDib=pDoc->m_dibOriPic.GetDimensions ();
pDoc->m_dibOriPic.Draw(pDC,CPoint(0,0),sizeDib);
if(pnMarkPic!=NULL){
sizeDib=m_dibMarkPic.GetDimensions ();
m_dibMarkPic.Draw(pDC,CPoint(pDoc->m_nOriWidth,0),sizeDib);
}
if(blDrawMark)
{
sizeDib=m_dibDrawMark.GetDimensions ();
m_dibDrawMark.Draw(pDC,CPoint(pDoc->m_nOriWidth,m_nMarkHeight),sizeDib);
}
}
void CImageVisualView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView printing
BOOL CImageVisualView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CImageVisualView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CImageVisualView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView diagnostics
#ifdef _DEBUG
void CImageVisualView::AssertValid() const
{
CScrollView::AssertValid();
}
void CImageVisualView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CImageVisualDoc* CImageVisualView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageVisualDoc)));
return (CImageVisualDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CImageVisualView message handlers
void CImageVisualView::OnMarkRead()
{
// TODO: Add your command han
评论0