Blob Blame Raw


// SDirection.h: interface for the CSDirection class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_)
#define AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "SDef.h"

#include <vector>

using namespace std;

//#define MSIZE 3

typedef struct {
	char val;
	UCHAR dir;
} SVD;

#define NBDIR 4

class CSDirection
{
	int m_lX, m_lY;
	UCHAR *m_dir;
	SXYW *m_df[NBDIR];
	int m_lDf;

	void null();
	void makeDir(UCHAR *sel);
	UCHAR getDir(const int xx, const int yy, UCHAR *sel);
	void makeDirFilter(const int sens);
	UCHAR equalizeDir_GTE50(UCHAR *sel, const int xx, const int yy, const int d);
	UCHAR equalizeDir_LT50(UCHAR *sel, const int xx, const int yy, const int d);
	void equalizeDir(UCHAR *sel, const int d);
	double adjustAngle(const short sum[4], const int Ima,
					   const int Im45, const int Ip45);
	double getAngle(const short sum[4], short ma);
	UCHAR blurRadius(UCHAR *sel, const int xx, const int yy, const int dBlur);
	void blurRadius(const int dBlur);
	void setDir01();
	bool isContourBorder(const int xx, const int yy, const int border);
	void setContourBorder(const int border);

public:
	CSDirection();
	CSDirection(const int lX, const int lY, const UCHAR *sel, const int sens);
	CSDirection(const int lX, const int lY, const UCHAR *sel, const int sens, const int border);
	virtual ~CSDirection();

	void doDir();
	void doRadius(const double rH, const double rLR,
				  const double rV, const double rRL, const int dBlur);
	void getResult(UCHAR *sel);
};

#endif // !defined(AFX_SDIRECTION_H__C672AFF1_1A65_11D6_B99E_0040F674BE6A__INCLUDED_)