【VC开源代码栏目提醒】:网学会员鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“CellView.cpp”一文,供大家参考学习
// CellView.cpp : implementation of the CCellView class
//
#include "stdafx.h"
#include "Cell.h"
#include "CellDoc.h"
#include "CellView.h"
#include "HSI.h"
#include "HSIDlg.h"
#include "HistogramDlg.h"
#include "Set.h"
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define MAX_HOLE 625
#define BITMAP_ID 0x4D42 // universal id for a bitmap
#define DISTANCE(x0,y0,x1,y1) sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1))
/////////////////////////////
// GLOBALS
HBITMAP g_hBitmap=NULL;
CString g_csFileName; // current open file name
int g_nMapWidth=0;
int g_nMapHeight=0;
//bool g_bImgBufferChanged;
RGB spec_rgb = { 0xff, 0x00, 0x00 }; // 标识色
//RGB * g_pOrgImgBuffer; // 全局的原始图像数据
RGB * g_pImgBuffer; // 全局的图像数据
//RGB * g_pImgBufferBack; // 全局的图像数据 用于redo
BYTE * g_pSobelResult; // Soble运算的结果
HSI * g_pHSIBuffer; // 全局的HSI数据
FLAGS * g_pFlags; // 全局的标志量
FLAGS * g_pFlagsBack; // 全局的标志量
bool g_bDir4Ero=false;
bool g_bDir4Dil=false;
long g_nCellCount=0;
long g_nCellTotArea=0;
/////////////////////////////////////////////////////////////////////////////
// 用于某些特定函数中的全局
CPoint scroll_lefttop; // scroll bar 左上角
double huegap,intgap,satgap; // 在FindInVectorHSI中使用.提高效率
long tot_area,tot_x,tot_y,max_radius; // 用于递归
vector<CENTER_POINT> points_temp; // 用于临时存储CENTER_POINT
int *qh; //queue handle
int *qs, *qst, *qr; //queue save, start, read
long qSz; //queue size (physical)
int xt, yt; //temporary x and y locations
/////////////////////////////////////////////////////////////////////////////
// CCellView
IMPLEMENT_DYNCREATE(CCellView, CScrollView)
BEGIN_MESSAGE_MAP(CCellView, CScrollView)
//{{AFX_MSG_MAP(CCellView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_COMMAND(ID_PROC_HSI, OnProcHsi)
ON_WM_SETCURSOR()
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_COMMAND(ID_PROC_SOBEL, OnProcSobel)
ON_COMMAND(ID_DISP_SOBEL, OnDispSobel)
ON_COMMAND(ID_PROC_HISTOGRAM, OnProcHistogram)
ON_COMMAND(ID_PROC_SPEC_COLOR, OnProcSpecColor)
ON_COMMAND(ID_DISP_EDGE, OnDispEdge)
ON_COMMAND(ID_DISP_REGION, OnDispRegion)
ON_COMMAND(ID_PROC_RELOAD, OnProcReload)
ON_COMMAND(ID_PROC_FINDCENTER, OnProcFindCenter)
ON_COMMAND(ID_PROC_SOBEL_CORRECT, OnProcSobelCorrect)
ON_COMMAND(ID_PROC_FORCE_KILL, OnProcForceKill)
ON_COMMAND(ID_PROC_FORCE_SELE, OnProcForceSele)
ON_COMMAND(ID_PROC_DILATION, OnProcDilation)
ON_COMMAND(ID_PROC_EROSION, OnProcErosion)
ON_COMMAND(ID_PROC_SMOOTH, OnProcSmooth)
ON_COMMAND(ID_PROC_STAT, OnProcStat)
ON_COMMAND(ID_PROC_FILLHOLE, FillHoles)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CCellView construction/destruction
CCellView::CCellView()
{
// TODO: add construction code here
m_DragRectSize.cx = 1;
m_DragRectSize.cy = 1;
g_csFileName = "";
g_pImgBuffer = NULL;
// g_pOrgImgBuffer = NULL;
// g_pImgBufferBack = NULL;
g_pHSIBuffer = NULL;
g_pFlags = NULL;
g_pFlagsBack = NULL;
g_pSobelResult= NULL;
// 所有布尔量初始化
// g_b