-
Notifications
You must be signed in to change notification settings - Fork 76
/
EMMPM.h
99 lines (79 loc) · 3.71 KB
/
EMMPM.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* ============================================================================
* Copyright (c) 2009-2016 BlueQuartz Software, LLC
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* Neither the name of BlueQuartz Software, the US Air Force, nor the names of its
* contributors may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The code contained herein was partially funded by the followig contracts:
* United States Air Force Prime Contract FA8650-07-D-5800
* United States Air Force Prime Contract FA8650-10-D-5210
* United States Prime Contract Navy N00173-07-C-2068
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#pragma once
#include <QtCore/QString>
#include "SIMPLib/SIMPLib.h"
#include "SIMPLib/Common/SIMPLibSetGetMacros.h"
#include "SIMPLib/Common/Observable.h"
#include "EMMPMLib/EMMPMLib.h"
#include "EMMPMLib/Core/EMMPM_Data.h"
#include "EMMPMLib/Core/InitializationFunctions.h"
#include "EMMPMLib/Common/StatsDelegate.h"
class EMMPMLib_EXPORT EMMPM : public Observable
{
Q_OBJECT;
public:
SIMPL_SHARED_POINTERS(EMMPM);
SIMPL_STATIC_NEW_MACRO(EMMPM);
SIMPL_TYPE_MACRO(EMMPM);
virtual ~EMMPM();
SIMPL_INSTANCE_PROPERTY(EMMPM_Data::Pointer, Data);
SIMPL_INSTANCE_PROPERTY(InitializationFunction::Pointer, InitializationFunction)
SIMPL_POINTER_PROPERTY(StatsDelegate, StatsDelegate)
SIMPL_INSTANCE_PROPERTY(int, ErrorCode)
/**
* @brief This returns a string that is displayed in the GUI. It should be readable
* and understandable by humans.
*/
virtual const QString getHumanLabel() const;
/**
* @brief Main entry point for running the EMMPM algorithm. The Inputs and
* Files parameters mush be non nullptr and properly initialized with input
* values and input images. A new output Image will be allocated for you if one
* is NOT provided. YOU are responsible for cleaning up the memory that is allocated
* by that process.
* @param data The Structure to use
* @param callbacks The list of callback functions
*/
void execute();
void printData(EMMPM_Data::Pointer data);
protected:
EMMPM();
public:
EMMPM(const EMMPM&) = delete; // Copy Constructor Not Implemented
EMMPM(EMMPM&&) = delete; // Move Constructor Not Implemented
EMMPM& operator=(const EMMPM&) = delete; // Copy Assignment Not Implemented
EMMPM& operator=(EMMPM&&) = delete; // Move Assignment Not Implemented
};