#pragma once // 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_ #include "SDef.h" #include #include #include //#define MSIZE 3 typedef struct { char val; UCHAR dir; } SVD; #define NBDIR 4 class CSDirection { int m_lX, m_lY; std::unique_ptr m_dir; std::array, NBDIR> m_df; 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_)