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
29 enum EKernelType
30 {
35 EKernelType_UserDefined = 0x0000,
36
41 EKernelType_Predefined = 0x0001,
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
222 virtual const CResult GetKernel(Base::CFLArray < Base::CFLArray< Base::CFLArray<double> > >& flaKernel);
223
232 virtual const CResult GetKernel(Base::CFLArray < Base::CFLArray< Base::CFLArray<float> > >& flaKernel);
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
286 virtual const CResult SetKernel(const Base::CFLArray< Base::CFLArray< Base::CFLArray<double> > >& flaKernel);
287
296 virtual const CResult SetKernel(const Base::CFLArray< Base::CFLArray< Base::CFLArray<float> > >& flaKernel);
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
400 static const CResult ConvertStringToKernelArray(Base::CFLString<wchar_t>& flstrKernel, Base::CFLArray<Base::CFLArray<Base::CFLArray<double>>>& flaReturn);
401
413 static const CResult ConvertStringToKernelArray(Base::CFLString<wchar_t>& flstrKernel, Base::CFLArray<Base::CFLArray<Base::CFLArray<float>>>& flaReturn);
414
426 static const CResult ConvertStringToKernelArray(Base::CFLString<wchar_t>& flstrKernel, Base::CFLArray<Base::CFLArray<double>>& flaReturn);
427
439 static const CResult ConvertStringToKernelArray(Base::CFLString<wchar_t>& flstrKernel, Base::CFLArray<Base::CFLArray<float>>& flaReturn);
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 array class.
Definition RangeTree.h:19
Template type string class.
Definition INIUtilities.h:20
FLImaging module execution result object.
Definition ResultsDef.h:1514
Definition GUIDialogKernel.h:51
virtual const CResult SetDecimalPlace(uint8_t u8DecimalPlace=3)
Sets the number of decimal places displayed for the coordinates. To display up to the second decimal ...
CGUIDialogKernel(const CGUIDialogKernel &rhs)
Copy constructor by reference.
virtual uint8_t GetDecimalPlace() const
Gets the number of decimal places displayed for the coordinates. If set to display up to the second d...
virtual ~CGUIDialogKernel()
Default destructor.