FLImaging 6.5.8.1
GUIDialogKernel.h
1#pragma once
2
11#include "GUIDialogSheet.h"
12
13
15namespace FLImaging
16{
18 namespace GUI
19 {
20 class CInternalDialogKernel;
21 class CGUIGridLayout;
22
30 {
36
42 };
43
50 class FL_EXPORT CGUIDialogKernel : public CGUIDialogSheet
51 {
52 DECLARE_DYNAMIC(CGUIDialogKernel)
53 public:
54 enum class EKernelSettingRow : int32_t
55 {
56 ChEdit = 0, // Image channel edit ctrl
57 KWEdit, // Kernel width edit ctrl
58 KHEdit, // Kernel height edit ctrl
59 ChCombo, // Select channel combobox
60 SKCheck, // Same Kernel check box
61 };
62
63 public:
69 CGUIDialogKernel(CWnd* pParent = nullptr);
70
79
87 CGUIDialogKernel(int32_t i32KernelWidth, int32_t i32KernelHeight, CWnd* pParent = nullptr);
88
96
106 static CGUIDialogKernel* CreateModelessDialog(EKernelType eKernelType, int32_t i32KernelWidth, int32_t i32KernelHeight);
107
118 virtual const CResult SetGUIKernelPreviewRange(int32_t i32StartPosX, int32_t i32StartPosY, int32_t i32Width, int32_t i32Height);
119
125 virtual int32_t GetImageChannel() const;
126
134 virtual const CResult SetImageChannel(int32_t i32ImageChannel);
135
144 virtual const CResult SetKernelSize(int32_t i32KernelWidth, int32_t i32KernelHeight);
145
151 virtual int32_t GetKernelWidth() const;
152
160 virtual const CResult SetKernelWidth(int32_t i32KernelWidth);
161
167 virtual int32_t GetKernelHeight() const;
168
176 virtual const CResult SetKernelHeight(int32_t i32KernelHeight);
177
185 virtual const CResult SetDefaultKernelFillValue(double f64DefaultKernelValue);
186
201 virtual const CResult SetDecimalPlace(uint8_t u8DecimalPlace = 3);
202
212 virtual uint8_t GetDecimalPlace() const;
213
223
233
243 virtual const CResult GetKernel(int32_t i32SelectedChannel, Base::CFLArray< Base::CFLArray<double> >& flaKernel);
244
254 virtual const CResult GetKernel(int32_t i32SelectedChannel, Base::CFLArray< Base::CFLArray<float> >& flaKernel);
255
265 virtual const CResult SetKernel(int32_t i32SelectedChannel, const Base::CFLArray< Base::CFLArray<double> >& flaKernel);
266
276 virtual const CResult SetKernel(int32_t i32SelectedChannel, const Base::CFLArray< Base::CFLArray<float> >& flaKernel);
277
287
297
308 virtual const CResult SetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const double& f64Value);
309
320 virtual const CResult SetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const float& f32Value);
321
330 virtual double GetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col);
331
337 virtual bool IsSameKernelOnEachChannel() const;
338
344 virtual void SetSameKernelOnEachChannel(bool bSameKernelOnEachChannel);
345
352 virtual EKernelType GetKernelType() const;
353
360 virtual void SetKernelType(EKernelType eKernelType);
361
367 virtual BOOL OnInitDialog() override;
368
377 virtual const CResult Load(const wchar_t* pWcsFileNameWithPath);
378
387 virtual const CResult Save(const wchar_t* pWcsFileNameWithPath);
388
401
414
427
440
441 DeclareGetClassType();
442
443 protected:
444 //virtual void ConvertValueToString(double f64Val, Base::CFLString<wchar_t>& strOut) const;
445 virtual BOOL PreTranslateMessage(MSG* pMsg) override;
446 virtual void OnOK() override;
447 virtual void OnCancel() override;
448 virtual const CResult AddPresetLayout();
449
450 virtual const CResult ConvertKernelArrayToString(
452 Base::CFLString<wchar_t>& flstrKernelOut);
453
454 virtual const CResult ConvertKernelArrayToString(
456 Base::CFLString<wchar_t>& flstrKernelOut);
457
458 virtual const CResult ConvertStringToKernelArray(
459 const Base::CFLString<wchar_t>& flstrKernel,
460 int32_t& i32ImageChannelOut, int32_t& i32KernelWidthOut, int32_t& i32KernelHeightOut,
462
463 virtual const CResult ConvertStringToKernelArray(
464 const Base::CFLString<wchar_t>& flstrKernel,
465 int32_t& i32ImageChannelOut, int32_t& i32KernelWidthOut, int32_t& i32KernelHeightOut,
467
468 virtual const CResult InternalSetKernel(int32_t i32SelectedChannel,
469 const Base::CFLArray<Base::CFLArray<double>>& fla2Kernel);
470 virtual const CResult InternalSetKernel(int32_t i32SelectedChannel,
471 const Base::CFLArray<Base::CFLArray<float>>& fla2Kernel);
472 virtual const CResult InternalSetKernel(
474 virtual const CResult InternalSetKernel(
476 virtual const CResult InternalSetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const double& f64Value);
477 virtual const CResult InternalSetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const float& f32Value);
478
479 virtual const CResult InternalSetImageChannel(int32_t i32ImageChannel);
480 virtual const CResult InternalSetKernelSize(int32_t i32KernelWidth, int32_t i32KernelHeight);
481 virtual const CResult InternalSetKernelWidth(int32_t i32KernelWidth);
482 virtual const CResult InternalSetKernelHeight(int32_t i32KernelHeight);
483 virtual const CResult InternalSetSameKernelOnEachChannel(bool bSameKernelOnEachChannel);
484
485 virtual bool IsKernelArrayInitialized();
486 virtual bool InitKernelArray();
487 virtual bool FillKernelArray();
488 virtual bool FillDialogKernelTable(int32_t i32SelectedChannel);
489
490 virtual bool SetImageChannelOnDialog(int32_t i32ImageChannel);
491 virtual bool SetKernelWidthOnDialog(int32_t i32KernelWidth);
492 virtual bool SetKernelHeightOnDialog(int32_t i32KernelHeight);
493 virtual bool SetSelectedChannelOnDialog(int32_t i32SelectedChannel);
494 virtual bool SetCheckBoxSameKernelOnEachChannelOnDialog(BOOL bCheck);
495
496 virtual bool OnKernelSizeChanged();
497 virtual bool OnImageChannelChanged(int32_t i32ImageChannel);
498 virtual bool OnChannelSelected(int32_t i32SelectedChannel);
499 virtual bool OnCheckBoxSameKernelClicked(BOOL bCheck);
500 virtual bool OnKernelValueChanged(const Base::CFLString<wchar_t>& strValue, int32_t i32Row, int32_t i32Col);
501 virtual bool OnDecimalPlaceChanged(const Base::CFLString<wchar_t>& strValue);
502
503 // Kernel Value 레이아웃의 크기 계산
504 // AdjustLayout() 함수 안에서 이 함수와 m_pGridKernel->SetSize(i32Width, i32Height); 를 호출합니다.
505 virtual bool CalcLayoutSizeOfKernelValue(int32_t& i32Width, int32_t& i32Height, int32_t i32MinWidth = 576, int32_t i32MinHeight = 287);
506 virtual bool AdjustLayout() override;
507
508 DECLARE_MESSAGE_MAP()
509 LRESULT OnLoadButtonClicked(WPARAM wParam, LPARAM lParam);
510 LRESULT OnSaveButtonClicked(WPARAM wParam, LPARAM lParam);
511 afx_msg void OnSize(UINT nType, int cx, int cy);
512 afx_msg void OnEndSheetInPlaceEdit(NMHDR* pNMHDR, LRESULT* pResult);
513
514 protected:
515 int32_t m_i32ImageChannel;
516 int32_t m_i32KernelWidth;
517 int32_t m_i32KernelHeight;
518 uint8_t m_u8DecimalPlace;
519
520 Base::CFLString<wchar_t> m_strFormatStringFloat;
521
522 double m_f64DefaultKernelFillValue;
523
524 bool m_bKernelArrayInitialized;
525 bool m_bSameKernelOnEachChannel;
526
527 EKernelType m_eKernelType;
528
529 CGUIGridLayout* m_pGridKernelIO;
530 CGUIGridLayout* m_pGridDecimalPlace;
531 CGUIGridLayout* m_pGridKernelSetting;
532 CGUIGridLayout* m_pGridKernel;
533
534 Base::CFLArray< Base::CFLArray< Base::CFLArray<double> > > m_flaKernel;
535
536 CInternalDialogKernel* m_pInternal;
537 friend class CInternalDialogKernel;
538 };
539 }
540}
Template type 의 배열 클래스.
Definition RangeTree.h:19
Template type 의 문자열 클래스
Definition INIUtilities.h:20
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
Definition GUIDialogKernel.h:51
virtual const CResult SetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const float &f32Value)
다이얼로그에 커널 배열을 특정 채널, 행, 열 위치에 대해 float 타입으로 지정하는 함수로, 다이얼로그에 채워지는 값을 지정할 수 있습니다.
static const CResult ConvertStringToKernelArray(Base::CFLString< wchar_t > &flstrKernel, Base::CFLArray< Base::CFLArray< float > > &flaReturn)
문자열을 CFLArray<CFLArray<float>> 형태의 커널로 변환하는 함수
virtual const CResult SetKernelHeight(int32_t i32KernelHeight)
커널의 높이를 지정하는 함수
virtual double GetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col)
사용자가 다이얼로그에 입력한 커널 값을 얻어 오는 함수
static const CResult ConvertStringToKernelArray(Base::CFLString< wchar_t > &flstrKernel, Base::CFLArray< Base::CFLArray< double > > &flaReturn)
문자열을 CFLArray<CFLArray<double>> 형태의 커널로 변환하는 함수
virtual EKernelType GetKernelType() const
다이얼로그의 커널 입력 타입을 반환
CGUIDialogKernel(int32_t i32KernelWidth, int32_t i32KernelHeight, CWnd *pParent=nullptr)
초기화 생성자
static const CResult ConvertStringToKernelArray(Base::CFLString< wchar_t > &flstrKernel, Base::CFLArray< Base::CFLArray< Base::CFLArray< float > > > &flaReturn)
문자열을 CFLArray<CFLArray<float>> 형태의 커널로 변환하는 함수
virtual void SetKernelType(EKernelType eKernelType)
다이얼로그의 커널 입력 타입을 지정
virtual const CResult GetKernel(Base::CFLArray< Base::CFLArray< Base::CFLArray< float > > > &flaKernel)
사용자가 다이얼로그에 입력한 커널 배열을 float 타입으로 얻어 오는 함수로, 순서는 채널, Row, Column 입니다. 예를 들어 0채널의 row = 3,...
virtual const CResult SetDecimalPlace(uint8_t u8DecimalPlace=3)
좌표의 소수점 표시 자릿수를 설정합니다. 소수점 둘째 자리까지 표시하려면(예 : 0.01, 2.54 등) 2 를 인자로 전달합니다. 가능한 값의 범위는 0~20입니다.
virtual int32_t GetKernelHeight() const
커널의 높이를 얻어 오는 함수
CGUIDialogKernel(const CGUIDialogKernel &rhs)
복사 생성자(레퍼런스)
virtual uint8_t GetDecimalPlace() const
좌표의 소수점 표시 자릿수를 얻어 옵니다. 소수점 둘째 자리까지 표시하도록 설정된 경우(예 : 0.01, 2.54 등) 2를 반환합니다.
virtual const CResult SetKernel(const Base::CFLArray< Base::CFLArray< Base::CFLArray< double > > > &flaKernel)
다이얼로그에 커널 배열을 특정 채널에 대해 double 타입으로 지정하는 함수로, 다이얼로그 초기 팝업 시 채워지는 값을 미리 지정할 수 있습니다.
virtual const CResult SetKernel(int32_t i32SelectedChannel, const Base::CFLArray< Base::CFLArray< float > > &flaKernel)
다이얼로그에 커널 배열을 특정 채널에 대해 float 타입으로 지정하는 함수로, 다이얼로그에 채워지는 값을 지정할 수 있습니다.
virtual const CResult SetGUIKernelPreviewRange(int32_t i32StartPosX, int32_t i32StartPosY, int32_t i32Width, int32_t i32Height)
다이얼로그의 커널 입력 창에서 미리보기 및 편집할 커널의 범위를 지정합니다.예를 들어 1023x1023 사이즈 커널에서 x=1001, y=1001 로 지정하고 width = 2,...
virtual const CResult SetKernel(const Base::CFLArray< Base::CFLArray< Base::CFLArray< float > > > &flaKernel)
다이얼로그에 커널 배열을 특정 채널에 대해 float 타입으로 지정하는 함수로, 다이얼로그 초기 팝업 시 채워지는 값을 미리 지정할 수 있습니다.
virtual int32_t GetKernelWidth() const
커널의 너비를 얻어 오는 함수
virtual bool IsSameKernelOnEachChannel() const
모든 채널에 대해 동일한 커널을 적용하는지 각 채널에 각각의 커널을 지정하는지 여부를 얻어 오는 함수
virtual int32_t GetImageChannel() const
지정한 이미지 채널을 얻어 오는 함수
virtual BOOL OnInitDialog() override
다이얼로그 초기화 함수
virtual void SetSameKernelOnEachChannel(bool bSameKernelOnEachChannel)
모든 채널에 대해 동일한 커널을 적용할지 각 채널에 각각의 커널을 지정할지 여부를 지정하는 함수
virtual const CResult Load(const wchar_t *pWcsFileNameWithPath)
.dat 또는 .ini 확장자의 커널 파일 로드
static const CResult ConvertStringToKernelArray(Base::CFLString< wchar_t > &flstrKernel, Base::CFLArray< Base::CFLArray< Base::CFLArray< double > > > &flaReturn)
문자열을 CFLArray<CFLArray<double>> 형태의 커널로 변환하는 함수
virtual const CResult SetKernelSize(int32_t i32KernelWidth, int32_t i32KernelHeight)
커널의 너비와 높이를 지정하는 함수
virtual const CResult Save(const wchar_t *pWcsFileNameWithPath)
.dat 또는 .ini 확장자의 커널 파일 저장
virtual const CResult SetImageChannel(int32_t i32ImageChannel)
이미지 채널을 지정하는 함수
virtual const CResult GetKernel(int32_t i32SelectedChannel, Base::CFLArray< Base::CFLArray< float > > &flaKernel)
사용자가 다이얼로그에 입력한 커널 배열을 특정 채널에 대해 float 타입으로 얻어 오는 함수
virtual const CResult GetKernel(Base::CFLArray< Base::CFLArray< Base::CFLArray< double > > > &flaKernel)
사용자가 다이얼로그에 입력한 커널 배열을 double 타입으로 얻어 오는 함수로, 순서는 채널, Row, Column 입니다. 예를 들어 0채널의 row = 3,...
virtual const CResult SetKernelWidth(int32_t i32KernelWidth)
커널의 너비를 지정하는 함수
static CGUIDialogKernel * CreateModelessDialog(EKernelType eKernelType, int32_t i32KernelWidth, int32_t i32KernelHeight)
Modeless dialog 를 생성하는 함수
virtual const CResult GetKernel(int32_t i32SelectedChannel, Base::CFLArray< Base::CFLArray< double > > &flaKernel)
사용자가 다이얼로그에 입력한 커널 배열을 특정 채널에 대해 double 타입으로 얻어 오는 함수
CGUIDialogKernel(CWnd *pParent=nullptr)
초기화 생성자
virtual const CResult SetKernel(int32_t i32SelectedChannel, const Base::CFLArray< Base::CFLArray< double > > &flaKernel)
다이얼로그에 커널 배열을 특정 채널에 대해 double 타입으로 지정하는 함수로, 다이얼로그에 채워지는 값을 지정할 수 있습니다.
virtual const CResult SetKernelValue(int32_t i32SelectedChannel, int32_t i32Row, int32_t i32Col, const double &f64Value)
다이얼로그에 커널 배열을 특정 채널, 행, 열 위치에 대해 double 타입으로 지정하는 함수로, 다이얼로그에 채워지는 값을 지정할 수 있습니다.
virtual const CResult SetDefaultKernelFillValue(double f64DefaultKernelValue)
커널의 기본 값을 지정하는 함수로, 지정한 값이 기본으로 다이얼로그의 입력 창에 입력됩니다.
virtual ~CGUIDialogKernel()
기본 소멸자
EKernelType
커널 입력 형식
Definition GUIDialogKernel.h:30
@ EKernelType_UserDefined
사용자가 커널을 입력하는 형태
Definition GUIDialogKernel.h:35
@ EKernelType_Predefined
미리 정의된 커널을 이용하는 형태
Definition GUIDialogKernel.h:41