Browse Source

First commit

master
Hessam 3 years ago
commit
2c8c6c7abc
  1. 2495
      Doxyfile
  2. 21
      logic/.qmake.stash
  3. 1
      logic/.tr-dummies/debug/trcond.cpp
  4. 1
      logic/.tr-dummies/trcond.cpp
  5. 2
      logic/.ts-sources.pri
  6. 21
      logic/include/mvvmCore/MvvmApp.h
  7. 20
      logic/include/utils/ColorImageProvider.h
  8. 111
      logic/include/viewModel/BaseViewModel.h
  9. 39
      logic/include/viewModel/EMeasureTab.h
  10. 56
      logic/include/viewModel/EMenuTab.h
  11. 109
      logic/include/viewModel/MainViewModel.h
  12. 34
      logic/include/viewModel/UsmMimic.h
  13. 27
      logic/include/viewModel/bMode/display/BModeDisplayViewModel.h
  14. 27
      logic/include/viewModel/bMode/display/gray/GrayMap.h
  15. 89
      logic/include/viewModel/bMode/display/gray/GrayMapManager.h
  16. 24
      logic/include/viewModel/bMode/display/gray/Knob.h
  17. 48
      logic/include/viewModel/bMode/display/gray/KnobManager.h
  18. 21
      logic/include/viewModel/bMode/display/tint/BaseTintMap.h
  19. 27
      logic/include/viewModel/bMode/display/tint/TintMap.h
  20. 54
      logic/include/viewModel/bMode/display/tint/TintMapManager.h
  21. 88
      logic/include/viewModel/bMode/setting/BModeSettingViewModel.h
  22. 22
      logic/include/viewModel/cine/display/CineDisplayViewModel.h
  23. 40
      logic/include/viewModel/cine/setting/CineSettingViewModel.h
  24. 16
      logic/include/viewModel/exception/VmError.h
  25. 47
      logic/include/viewModel/image/BImageContainer.h
  26. 85
      logic/include/viewModel/image/ImageViewModel.h
  27. 31
      logic/include/viewModel/image/MImageContainer.h
  28. 27
      logic/include/viewModel/mMode/display/MModeDisplayViewModel.h
  29. 20
      logic/include/viewModel/mMode/display/dtoInternal/MModeDisplayPresetValues.h
  30. 19
      logic/include/viewModel/mMode/setting/DataMModeSetting.h
  31. 40
      logic/include/viewModel/mMode/setting/MModeSettingViewModel.h
  32. 167
      logic/include/viewModel/measurement/MeasureViewModel.h
  33. 57
      logic/include/viewModel/probe/ProbeViewModel.h
  34. 32
      logic/include/viewModel/simulation/SimulationViewModel.h
  35. 56
      logic/include/viewModel/tgc/TgcViewModel.h
  36. 34
      logic/include/viewModel/trackball/TrackballViewModel.h
  37. 30
      logic/include/viewModel/user/DialogViewModel.h
  38. 25
      logic/include/viewModel/user/UserViewModel.h
  39. 94
      logic/include/viewModel/utils/AutoProperty.h
  40. 28
      logic/include/viewModel/utils/UsButtonDoubleText.h
  41. 93
      logic/include/viewModel/utils/UsImage.h
  42. 50
      logic/include/viewModel/utils/UsInfoBox.h
  43. 34
      logic/include/viewModel/utils/UsJoystick.h
  44. 25
      logic/include/viewModel/utils/UsList.h
  45. 50
      logic/include/viewModel/utils/UsMultiButton.h
  46. 19
      logic/include/viewModel/utils/UsRadioButton.h
  47. 60
      logic/include/viewModel/utils/UsSimpleButton.h
  48. 92
      logic/include/viewModel/utils/UsSpinBox.h
  49. 23
      logic/include/viewModel/utils/UsSwitchButton.h
  50. 14
      logic/include/viewModel/utils/UsTrackball.h
  51. 21
      logic/include/viewModel/utils/UsViewControl.h
  52. 28
      logic/lib/Kernels/BWConvertor.cl
  53. 76
      logic/lib/Kernels/DynCont.cl
  54. 103
      logic/lib/Kernels/Enhance.cl
  55. 74
      logic/lib/Kernels/GrayMap.cl
  56. 87
      logic/lib/Kernels/Persist.cl
  57. 75
      logic/lib/Kernels/Rejection.cl
  58. 132
      logic/lib/Kernels/ScanConversion.cl
  59. 199
      logic/lib/Kernels/Sri.cl
  60. 101
      logic/lib/Kernels/TintMap.cl
  61. 29
      logic/logic.pro
  62. 5
      logic/logic.qrc
  63. 4
      logic/mvvm_core_de.ts
  64. 4
      logic/mvvm_core_template.ts
  65. 8
      logic/settings.xml
  66. 38
      logic/src/mvvmCore/MvvmApp.cpp
  67. 17
      logic/src/utils/ColorImageProvider.cpp
  68. 160
      logic/src/viewModel/BaseViewModel.cpp
  69. 136
      logic/src/viewModel/MainViewModel.cpp
  70. 63
      logic/src/viewModel/bMode/display/BModeDisplayViewModel.cpp
  71. 71
      logic/src/viewModel/bMode/display/gray/GrayMap.cpp
  72. 209
      logic/src/viewModel/bMode/display/gray/GrayMapManager.cpp
  73. 25
      logic/src/viewModel/bMode/display/gray/Knob.cpp
  74. 131
      logic/src/viewModel/bMode/display/gray/KnobManager.cpp
  75. 35
      logic/src/viewModel/bMode/display/tint/BaseTintMap.cpp
  76. 40
      logic/src/viewModel/bMode/display/tint/TintMap.cpp
  77. 82
      logic/src/viewModel/bMode/display/tint/TintMapManager.cpp
  78. 224
      logic/src/viewModel/bMode/setting/BModeSettingViewModel.cpp
  79. 71
      logic/src/viewModel/cine/display/CineDisplayViewModel.cpp
  80. 71
      logic/src/viewModel/cine/setting/CineSettingViewModel.cpp
  81. 10
      logic/src/viewModel/image/BImageContainer.cpp
  82. 119
      logic/src/viewModel/image/ImageViewModel.cpp
  83. 13
      logic/src/viewModel/image/MImageContainer.cpp
  84. 58
      logic/src/viewModel/mMode/display/MModeDisplayViewModel.cpp
  85. 77
      logic/src/viewModel/mMode/setting/MModeSettingViewModel.cpp
  86. 98
      logic/src/viewModel/measurement/MeasureViewModel.cpp
  87. 137
      logic/src/viewModel/probe/ProbeViewModel.cpp
  88. 76
      logic/src/viewModel/simulation/SimulationViewModel.cpp
  89. 83
      logic/src/viewModel/tgc/TgcViewModel.cpp
  90. 70
      logic/src/viewModel/trackball/TrackballViewModel.cpp
  91. 86
      logic/src/viewModel/user/DialogViewModel.cpp
  92. 79
      logic/src/viewModel/user/UserViewModel.cpp
  93. 14
      pri/core.pri
  94. 7
      sono.pro

2495
Doxyfile

File diff suppressed because it is too large

21
logic/.qmake.stash

@ -0,0 +1,21 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 7
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++ \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/x86_64-w64-mingw32 \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/backward \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include-fixed \
C:/Qt/Tools/mingw730_64/x86_64-w64-mingw32/include
QMAKE_CXX.LIBDIRS = \
C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0 \
C:/Qt/Tools/mingw730_64/lib/gcc \
C:/Qt/Tools/mingw730_64/x86_64-w64-mingw32/lib \
C:/Qt/Tools/mingw730_64/lib

1
logic/.tr-dummies/debug/trcond.cpp

@ -0,0 +1 @@
created

1
logic/.tr-dummies/trcond.cpp

@ -0,0 +1 @@
created

2
logic/.ts-sources.pri

@ -0,0 +1,2 @@
BUILD_SOURCES += .tr-dummies/trcond.cpp qrc_logic.cpp moc_MvvmApp.cpp moc_MainViewModel.cpp moc_Bip.cpp moc_BipTester.cpp moc_ConfigurationManager.cpp moc_Csm.cpp moc_DatabaseManager.cpp moc_Evocator.cpp moc_Hardware.cpp moc_Player.cpp moc_ScenarioGenerator.cpp moc_Ssm.cpp moc_UsEventReceiver.cpp moc_UsEventSender.cpp moc_UsModule.cpp moc_UserInputRelay.cpp moc_ApplicationStarter.cpp moc_FolderViewModel.cpp moc_ImageViewModel.cpp moc_PresetViewModel.cpp moc_ProbeViewModel.cpp moc_SimulationViewModel.cpp moc_TgcViewModel.cpp moc_TrackballViewModel.cpp moc_BaseStrategy.cpp moc_BipCore.cpp moc_EImageMode.cpp moc_KernelInputFetcher.cpp moc_OpenClHelper.cpp moc_BipTesterCore.cpp moc_CsmCore.cpp moc_EMenuTab.cpp moc_Hid.cpp moc_EConsole.cpp moc_DatabaseManagerCore.cpp moc_EDatabaseRequest.cpp moc_XmlReader.cpp moc_EvocatorCore.cpp moc_HardwareCore.cpp moc_HardwarePacketEngine.cpp moc_PlayerCore.cpp moc_QueueReader.cpp moc_QueueWriter.cpp moc_ECommandResult.cpp moc_ECommandType.cpp moc_UserInputRelayCore.cpp moc_BModeDisplayViewModel.cpp moc_BModeInfoViewModel.cpp moc_BModeLayoutViewModel.cpp moc_BModeSettingViewModel.cpp moc_CineDisplayViewModel.cpp moc_CineLayoutViewModel.cpp moc_CineSettingViewModel.cpp moc_ProcessQueue.cpp moc_ConsoleButton.cpp moc_IControl.cpp moc_DynamicContrastB.cpp moc_EnhanceB.cpp moc_FrameFilter.cpp moc_GrayMapB.cpp moc_Persist.cpp moc_RejectionB.cpp moc_ScanConversionB.cpp moc_TintMap.cpp moc_PreProcess.cpp moc_Sri.cpp moc_TwoDProcessQueue.cpp
for(src, BUILD_SOURCES): SOURCES += $$PWD/$$src

21
logic/include/mvvmCore/MvvmApp.h

@ -0,0 +1,21 @@
#ifndef MVVMAPP_H
#define MVVMAPP_H
#include <QtMvvmCore/CoreApp>
class MvvmApp : public QtMvvm::CoreApp
{
Q_OBJECT
public:
explicit MvvmApp(QObject *parent = nullptr);
protected:
void performRegistrations() override;
int startApp(const QStringList &arguments) override;
};
#undef coreApp
#define coreApp static_cast<mvvmApp*>(CoreApp::instance())
#endif // MVVMAPP_H

20
logic/include/utils/ColorImageProvider.h

@ -0,0 +1,20 @@
#ifndef COLORIMAGEPROVIDER_H
#define COLORIMAGEPROVIDER_H
#include <QImage>
#include <QQuickImageProvider>
#include <QDebug>
class ColorImageProvider : public QQuickImageProvider
{
public:
ColorImageProvider();
QPixmap requestPixmap(const QString& id, QSize* size, const QSize& requestedSize) override;
void setPic(QPixmap pixmap, quint32 width, quint32 height);
private:
QPixmap _pixmap;
};
#endif

111
logic/include/viewModel/BaseViewModel.h

@ -0,0 +1,111 @@
#ifndef BASEVIEWMODEL_H
#define BASEVIEWMODEL_H
#include <QObject>
#include <QMutex>
#include <QtMvvmCore/ViewModel>
#include "viewModel/utils/AutoProperty.h"
#include "viewModel/utils/UsMultiButton.h"
#include "viewModel/utils/UsSpinBox.h"
#include "viewModel/utils/UsSwitchButton.h"
#include "viewModel/utils/UsJoystick.h"
#include "viewModel/utils/UsRadioButton.h"
#include "viewModel/utils/UsInfoBox.h"
#include "viewModel/utils/UsTrackball.h"
#include "viewModel/utils/UsList.h"
#include "viewModel/utils/UsImage.h"
#include "viewModel/utils/UsButtonDoubleText.h"
#define SINGLETON(NAME) \
private: \
static NAME* _instance; \
static QMutex _mutex; \
public: \
static NAME* getInstance() \
{ \
if(!_instance) \
{ \
_mutex.lock(); \
if(!_instance) \
{ \
_instance = new NAME(); \
} \
_mutex.unlock(); \
} \
return _instance; \
}
#define SINGLETON_DEF(NAME) \
NAME* NAME::_instance; \
QMutex NAME::_mutex;
//macro defenition
//Place this in each and every class that inherits from BaseViewModel
//so that you dont have to type all this again
//uncrustify off
#define US_VIEW_MODEL(VIEW_MODEL_NAME) \
private: \
void prepareData() override; \
void sendData(bool sync = false) override; \
void setInitialValue() override; \
void turnOnMinimalMode() override; \
void turnOffMinimalMode() override; \
explicit VIEW_MODEL_NAME(); \
public: \
virtual void init() override; \
#define APPLY_DIFF_COMMAND(PROPERTY) \
auto diffValue = GET_VALUE(request, 0, qint16); \
auto nextValue = getNextValue(PROPERTY() + diffValue, 0, PROPERTY ## Values().length() - 1); \
PROPERTY(nextValue); \
//uncrustify on
/*************************************************************************************************/
class BaseViewModel : public QtMvvm::ViewModel
{
Q_OBJECT
private:
int _awaitingSend;
bool isSendingAllowed();
virtual void setInitialValue() = 0;
virtual void prepareData() = 0;
virtual void sendData(bool sync = false) = 0;
virtual void turnOnMinimalMode() = 0;
virtual void turnOffMinimalMode() = 0;
protected:
bool _isMinimal;
void allowSending();
void blockSending();
virtual void send(bool sync = false) final;
virtual QList<QString> arithmeticSeries(int start, int end, int step) final;
virtual QList<QString> arithmeticSeries(float start,
float end,
float step,
int precision) final;
public:
explicit BaseViewModel();
void start();
virtual void init() = 0;
void changeMode(bool minimal);
virtual int getNextValue(const int estimatedValue, const int lowerBound,
const int upperBound) final;
};
#endif //BASEVIEWMODEL_H

39
logic/include/viewModel/EMeasureTab.h

@ -0,0 +1,39 @@
#ifndef EMEASURETAB_H
#define EMEASURETAB_H
#include <QtCore>
#include <QMetaType>
class EMeasureTab : public QObject
{
Q_OBJECT
private:
//Private constructor prevent the enumeration class from being instantiated
explicit EMeasureTab(QObject* parent = nullptr);
public:
enum eMeasureTab : quint8
{
EMPTY_TAB,
B_TAB,
M_TAB,
PW_TAB,
};
Q_ENUM(eMeasureTab)
static int qtEnumToInt(const eMeasureTab qtEnum)
{
return QMetaEnum::fromType<eMeasureTab>().value(qtEnum);
}
static QString qtEnumToString(const eMeasureTab qtEnum)
{
return QString(QMetaEnum::fromType<eMeasureTab>().valueToKey(qtEnum));
}
};
Q_DECLARE_METATYPE(EMeasureTab::eMeasureTab);
#endif //EMEASURETAB_H

56
logic/include/viewModel/EMenuTab.h

@ -0,0 +1,56 @@
#ifndef EMENUTAB_H
#define EMENUTAB_H
#include <QtCore>
#include <QMetaType>
class EMenuTab : public QObject
{
Q_OBJECT
private:
//Private constructor prevent the enumeration class from being instantiated
explicit EMenuTab(QObject* parent = nullptr);
public:
enum eMenuTab : quint8
{
EMPTY_TAB,
B_TAB,
M_TAB,
C_TAB,
PW_TAB,
PD_TAB,
CINE_TAB,
TGC_TAB
};
Q_ENUM(eMenuTab)
static int qtEnumToInt(const eMenuTab qtEnum)
{
return QMetaEnum::fromType<eMenuTab>().value(qtEnum);
}
static QString qtEnumToString(const eMenuTab qtEnum)
{
return QString(QMetaEnum::fromType<eMenuTab>().valueToKey(qtEnum));
}
static eMenuTab qtStringToEnum(const QString stringEnum)
{
auto e = QMetaEnum::fromType<eMenuTab>();
for(int i = 0; i < e.keyCount(); i++)
{
const char* name = e.key(i);
if(QString(name) == stringEnum)
{
return static_cast<EMenuTab::eMenuTab>(e.value(i));
}
}
}
};
Q_DECLARE_METATYPE(EMenuTab::eMenuTab);
#endif //EMENUTAB_H

109
logic/include/viewModel/MainViewModel.h

@ -0,0 +1,109 @@
#ifndef MAINVIEWMODEL_H
#define MAINVIEWMODEL_H
#include <QtMvvmCore/ViewModel>
#include <QTimer>
#include <QPixmap>
#include "utils/ColorImageProvider.h"
#include "viewModel/utils/AutoProperty.h"
#include "viewModel/probe/ProbeViewModel.h"
#include "viewModel/bMode/display/BModeDisplayViewModel.h"
#include "viewModel/bMode/setting/BModeSettingViewModel.h"
#include "viewModel/mMode/display/MModeDisplayViewModel.h"
#include "viewModel/mMode/setting/MModeSettingViewModel.h"
#include "viewModel/cine/display/CineDisplayViewModel.h"
#include "viewModel/cine/setting/CineSettingViewModel.h"
#include "viewModel/tgc/TgcViewModel.h"
#include "viewModel/simulation/SimulationViewModel.h"
#include "viewModel/trackball/TrackballViewModel.h"
#include "viewModel/image/ImageViewModel.h"
#include "viewModel/user/UserViewModel.h"
#include "viewModel/user/DialogViewModel.h"
#include "viewModel/measurement/MeasureViewModel.h"
class MainViewModel : public QtMvvm::ViewModel
{
Q_OBJECT
private:
static MainViewModel* _instance;
void init();
void start();
QList<BaseViewModel*> _vms;
/**************************************************************************/
//ViewModel
US_PROPERTY_VIEW_ONLY(bool, showSplash, true)
US_PROPERTY_VIEW_ONLY(QString, splashMessage, "Loading sono application")
US_PROPERTY_VIEW_ONLY(ProbeViewModel*, probeViewModel,
ProbeViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(BModeDisplayViewModel*, bModeDisplayViewModel,
BModeDisplayViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(BModeSettingViewModel*, bModeSettingViewModel,
BModeSettingViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(CineDisplayViewModel*, cineDisplayViewModel,
CineDisplayViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(CineSettingViewModel*, cineSettingViewModel,
CineSettingViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(TgcViewModel*, tgcViewModel,
TgcViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(SimulationViewModel*, simulationViewModel,
SimulationViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(TrackballViewModel*, trackballViewModel,
TrackballViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(ImageViewModel*, imageViewModel,
ImageViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(MModeDisplayViewModel*, mModeDisplayViewModel,
MModeDisplayViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(MModeSettingViewModel*, mModeSettingViewModel,
MModeSettingViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(UserViewModel*, userViewModel,
UserViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(DialogViewModel*, dialogViewModel,
DialogViewModel::getInstance())
US_PROPERTY_VIEW_ONLY(MeasureViewModel*, measureViewModel,
MeasureViewModel::getInstance())
public:
Q_INVOKABLE explicit MainViewModel(QObject* parent = nullptr);
Q_INVOKABLE void close();
Q_INVOKABLE void onConfirmButton();
static MainViewModel* getInstance();
signals:
void showMessageBox();
};
#endif //MAINVIEWMODEL_H

34
logic/include/viewModel/UsmMimic.h

@ -0,0 +1,34 @@
#ifndef USMMIMIC_H
#define USMMIMIC_H
#define INSTANCE(OBJ) OBJ::getInstance()
#define CONNECT_COMMAND_LINE(SENDER, RECEIVER) \
do { \
connect(EVENT_SENDER(SENDER), &UsEventSender::commandRequest, \
EVENT_RECEIVER(RECEIVER), &UsEventReceiver::newCommandRequest); \
connect(EVENT_RECEIVER(RECEIVER), &UsEventReceiver::commandResponse, \
EVENT_SENDER(SENDER), &UsEventSender::newCommandResponse, Qt::DirectConnection); \
} while(0)
#define SEND_FORGET_ASYNC(COMMAND, RECEIVER, ARGS) \
_eventSender->sendAsyncRequest(ECommandType::COMMAND, RECEIVER, ARGS)
#define SEND_FORGET_ASYNC_NO_ARG(COMMAND, RECEIVER) \
_eventSender->sendAsyncRequest(ECommandType::COMMAND, RECEIVER, {})
#define SEND_ASYNC(COMMAND, RECEIVER, ARGS, SUCCESS, FAILURE) \
_eventSender->sendAsyncRequest(ECommandType::COMMAND, RECEIVER, ARGS, SUCCESS, FAILURE)
#define SEND_ASYNC_NO_ARG(COMMAND, RECEIVER, SUCCESS, FAILURE) \
_eventSender->sendAsyncRequest(ECommandType::COMMAND, RECEIVER, {}, SUCCESS, FAILURE)
#define SEND_SYNC(COMMAND, RECEIVER, ARGS) \
_eventSender->sendSyncRequest(ECommandType::COMMAND, RECEIVER, ARGS)
#define SEND_SYNC_NO_ARG(COMMAND, RECEIVER) \
_eventSender->sendSyncRequest(ECommandType::COMMAND, RECEIVER, {})
#define GET_VALUE(REQUEST, INDEX, TYPE) REQUEST.getValueList()[INDEX].value<TYPE>()
#endif //USMMIMIC_H

27
logic/include/viewModel/bMode/display/BModeDisplayViewModel.h

@ -0,0 +1,27 @@
#ifndef BMODEDISPLAYVIEWMODEL_H
#define BMODEDISPLAYVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/bMode/display/tint/TintMapManager.h"
#include "viewModel/bMode/display/gray/GrayMapManager.h"
class BModeDisplayViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(BModeDisplayViewModel)
SINGLETON(BModeDisplayViewModel)
private:
US_PROPERTY_VIEW_ONLY(TintMapManager*, tintManager, new TintMapManager)
US_PROPERTY_VIEW_ONLY(GrayMapManager*, grayMapManager, new GrayMapManager)
//uncrustify off
public slots:
//uncrustify on
void newTintMap();
void newGrayMap();
};
#endif //BMODEDISPLAYVIEWMODEL_H

27
logic/include/viewModel/bMode/display/gray/GrayMap.h

@ -0,0 +1,27 @@
#ifndef GRAYMAP_H
#define GRAYMAP_H
#include "viewModel/utils/UsViewControl.h"
class GrayMap : public UsViewControl
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(QString, name, "")
US_PROPERTY_VIEW_ONLY(QString, icon, "")
private:
QList<quint8> _grayMap;
QList<quint8> _knobData;
public:
GrayMap();
void init(QList<qint32> grayMap, quint32 number);
void init(QList<qint32> grayMap, QList<qint32> knobData, quint32 number);
QList<quint8> value();
QList<quint8> knobData();
};
#endif //GRAYMAP_H

89
logic/include/viewModel/bMode/display/gray/GrayMapManager.h

@ -0,0 +1,89 @@
#ifndef GRAYMAPMANAGER_H
#define GRAYMAPMANAGER_H
#include <QMetaType>
#include "viewModel/utils/UsSimpleButton.h"
#include "viewModel/utils/UsList.h"
#include "viewModel/bMode/display/gray/GrayMap.h"
#include "viewModel/bMode/display/gray/KnobManager.h"
#include "viewModel/exception/VmError.h"
class GrayMapManager : public QObject
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(QString, grayMapTitle, "Gray Map")
US_PROPERTY_CUSTOM_SETTER_INTERNAL(qint32, grayMap, 0)
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, grayMapReset, 0)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap0, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap1, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap2, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap3, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap4, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap5, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap6, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap7, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap8, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap9, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap10, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap11, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap12, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap13, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap14, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap15, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap16, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMap17, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMapUser1, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMapUser2, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(GrayMap*, grayMapUser3, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(KnobManager*, knobManager, new KnobManager)
US_LIST(int, currentGrayMapData)
US_SIMPLE_BUTTON(grayMapSaveAs, "Save As", "", true, true)
private:
QString _userName;
GrayMap* getGrayMap(qint32 index);
void setKnobs(GrayMap* grayMap);
QList<quint8> intListToU8List(QList<int> list);
QList<int> u8ListToIntList(QList<quint8> list);
quint32 getUserId();
bool isCustomGrayMapSelected();
void initDefaultGrayMaps();
void initUserGrayMaps(bool throwExp);
public:
GrayMapManager();
void setUserName(const QString& userName);
void init();
QList<quint8> getGrayMapData();
void setIndex(qint32 index);
signals:
void grayMapReady();
//uncrustify off
public slots:
void newCustomGrayMap(const QList<quint8>& grayMap);
void saveGrayMap(int slotNumber);
//uncrustify on
};
Q_DECLARE_METATYPE(GrayMapManager*)
#endif //GRAYMAPMANAGER_H

24
logic/include/viewModel/bMode/display/gray/Knob.h

@ -0,0 +1,24 @@
#ifndef KNOB_H
#define KNOB_H
#include <QObject>
#include "viewModel/utils/AutoProperty.h"
class Knob : public QObject
{
Q_OBJECT
US_PROPERTY_CUSTOM_SETTER_INTERNAL(int, posX, 0)
US_PROPERTY_CUSTOM_SETTER_INTERNAL(int, posY, 0)
public:
Knob();
QPoint getPos();
signals:
void knobDataReady();
};
#endif //KNOB_H

48
logic/include/viewModel/bMode/display/gray/KnobManager.h

@ -0,0 +1,48 @@
#ifndef KNOBMANAGER_H
#define KNOBMANAGER_H
#include "viewModel/bMode/display/gray/Knob.h"
class KnobManager : public QObject
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(Knob*, knob1, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob2, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob3, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob4, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob5, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob6, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob7, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(Knob*, knob8, Q_NULLPTR)
private:
Knob* getKnob(qint32 index);
void connectKnobs();
void disconnectKnobs();
public:
KnobManager();
void setKnobData(const QPoint& p1,
const QPoint& p2,
const QPoint& p3,
const QPoint& p4,
const QPoint& p5,
const QPoint& p6,
const QPoint& p7,
const QPoint& p8);
QList<qint32> getKnobData();
signals:
void grayCurveReady(const QList<quint8>& grayMap);
//uncrustify off
public slots:
void newKnobData();
//uncrustify on
};
#endif //KNOBMANAGER_H

21
logic/include/viewModel/bMode/display/tint/BaseTintMap.h

@ -0,0 +1,21 @@
#ifndef BASETINTMAP_H
#define BASETINTMAP_H
#include <QtCore>
class BaseTintMap
{
private:
quint8 _r;
quint8 _g;
quint8 _b;
public:
BaseTintMap();
void setTintColor(quint8 r, quint8 g, quint8 b);
QString toString();
QList<quint8> value();
};
#endif //BASETINTMAP_H

27
logic/include/viewModel/bMode/display/tint/TintMap.h

@ -0,0 +1,27 @@
#ifndef TINTMAP_H
#define TINTMAP_H
#include "viewModel/utils/UsViewControl.h"
#include "viewModel/bMode/display/tint/BaseTintMap.h"
class TintMap : public UsViewControl
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(QString, name, "")
US_PROPERTY_VIEW_ONLY(QString, displayColor, "")
private:
QList<BaseTintMap> _tintMap;
public:
TintMap();
~TintMap() override;
void init(QList<QList<qint32> > tint);
QString toString(qint32 index);
QList<QList<quint8> > value();
};
#endif //TINTMAP_H

54
logic/include/viewModel/bMode/display/tint/TintMapManager.h

@ -0,0 +1,54 @@
#ifndef TINTMAPMANAGER_H
#define TINTMAPMANAGER_H
#include "viewModel/utils/AutoProperty.h"
#include "viewModel/bMode/display/tint/TintMap.h"
class TintMapManager : public QObject
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(QString, tintMapTitle, "Tint Map")
US_PROPERTY_CUSTOM_SETTER_INTERNAL(qint32, tintMap, 0)
US_PROPERTY_VIEW_ONLY(QStringList, tintMapColor, {})
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap0, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap1, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap2, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap3, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap4, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap5, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap6, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap7, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap8, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap9, Q_NULLPTR)
US_PROPERTY_VIEW_ONLY(TintMap*, tintMap10, Q_NULLPTR)
private:
TintMap* getTintMap(qint32 index);
QList<quint8> _grayMapData;
void calcTintBar();
public:
TintMapManager();
QList<QList<quint8> > getTintMapData();
void setIndex(qint32 index);
//uncrustify off
public slots:
void grayMapChanged(QList<quint8> grayMap);
//uncrustify on
signals:
void tintMapReady();
};
#endif //TINTMAPMANAGER_H

88
logic/include/viewModel/bMode/setting/BModeSettingViewModel.h

@ -0,0 +1,88 @@
#ifndef BMODESETTINGVIEWMODEL_H
#define BMODESETTINGVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class BModeSettingViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(BModeSettingViewModel)
SINGLETON(BModeSettingViewModel)
private:
/**************************************************************************************************/
US_MULTI_BUTTON(sri, "SRI", (QList<QString>({""})), "", "", true, true, 0, false)
US_SPIN_BOX(persist, "Persist", (QList<QString>({""})), "", "", true, false, 1)
US_MULTI_BUTTON(frameFilter, "Frame Filter", (QList<QString>({""})), "", "",
true, true, 0, false)
US_SPIN_BOX(oti, "OTI", (QList<QString>({"Solid", "Normal", "Adipose", "Cystic"})),
"", "", true, true, 0)
US_MULTI_BUTTON(criFilter, "CRI Filter", (QList<QString>({"Low", "Mid", "High"})),
"", "", true, true, 0, false)
US_MULTI_BUTTON_CUSTOM_SETTER(lineFilter, "Line Filter", (QList<QString>({"Low", "High"})),
"", "", true, true, 0, false)
US_MULTI_BUTTON_CUSTOM_SETTER_BYPASS_ONLY(cri, "CRI", QList<QString>({""}),
"", "", true, true, 0, false)
US_SPIN_BOX(lineDensity, "Line Dens.", (QList<QString>({"Low", "Norm", "High"})),
"", "", true, true, 0)
US_SWITCH_BUTTON_CUSTOM_SETTER(ffc, "FFC", "", true, true, false)
US_SWITCH_BUTTON_CUSTOM_SETTER(hi, "HI", "", true, true, false)
US_SWITCH_BUTTON(virtualConvex, "Virtual Convex", "", true, true, false)
US_SWITCH_BUTTON_CUSTOM_SETTER(maxAngle, "Max Angle", "", true, true, false)
US_SPIN_BOX_CUSTOM_SETTER(frequency, "Frequency", {""}, "", "", true, true, 0)
US_SPIN_BOX(ao, "AO", (QList<QString>({""})), "", "%", true, true, 0)
US_SPIN_BOX_CUSTOM_SETTER(enhance,
"Enhance",
(QList<QString>({"Off", "1", "2", "3", "4", "5"})),
"",
"",
true,
true,
0)
US_SWITCH_BUTTON_INTERNAL(enhanceOff, "Enhance off", "", true, true, false)
US_SPIN_BOX(reject, "Reject", (QList<QString>({""})), "", "", true, true, 0)
US_SPIN_BOX(dynamicContrast, "Dy.Cnt.", (QList<QString>({""})), "", "", true, true, 0)
US_JOYSTICK_NUMBER(angle, "Angle", "", "°", true, true, 0)
US_PROPERTY(bool, pi, true)
US_INFO_BOX(depth, "Depth", (QList<QString>({""})), "", "cm", true, true, 0)
US_INFO_BOX(focusPoints, "Foc.Pnt.", (QList<QString>({"0"})),
"", "", true, true, 0)
US_INFO_BOX_CUSTOM_SETTER(focusNumber, "Foc.Num.", (QList<QString>({"0"})),
"", "", true, true, 0)
US_INFO_BOX(gain, "Gain", (QList<QString>({""})), "", "dB", true, true, 0)
US_INFO_BOX_BOOL(hdZoom, "HD.Zoom", true, true, false)
quint8 _mla;
quint8 _stb;
public:
void freezeChanged(bool freeze);
};
#endif //BMODESETTINGVIEWMODEL_H

22
logic/include/viewModel/cine/display/CineDisplayViewModel.h

@ -0,0 +1,22 @@
#ifndef CINEDISPLAYVIEWMODEL_H
#define CINEDISPLAYVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class CineDisplayViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(CineDisplayViewModel)
SINGLETON(CineDisplayViewModel)
private:
US_RADIO_BUTTON(cineDirection, 0)
US_SIMPLE_BUTTON(cineForward, "", "qrc:/UI/Images/Icon/Forward.svg", true, true)
US_SIMPLE_BUTTON(cineBackward, "", "qrc:/UI/Images/Icon/Backward.svg", true, true)
US_SIMPLE_BUTTON(cineForwardBackward, "", "qrc:/UI/Images/Icon/ForwardBackward.svg", true, true)
};
#endif //CINEDISPLAYVIEWMODEL_H

40
logic/include/viewModel/cine/setting/CineSettingViewModel.h

@ -0,0 +1,40 @@
#ifndef CINESETTINGVIEWMODEL_H
#define CINESETTINGVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class CineSettingViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(CineSettingViewModel)
SINGLETON(CineSettingViewModel)
private:
US_SWITCH_BUTTON(cineRepeat, "", "", true, true, false)
US_SWITCH_BUTTON(cinePlay, "", "", true, true, false)
US_SWITCH_BUTTON(cineOriginalClip, "Maximize", "", true, true, false)
US_JOYSTICK_NUMBER(cineStart, "Start", "", "", true, true, 20)
US_JOYSTICK_NUMBER(cineEnd, "End", "", "", true, true, 80)
US_SPIN_BOX(cineSpeed, "Speed", (QList<QString>({"0.5", "1", "1.5", "2"})),
"", "x", true, true, 1)
US_JOYSTICK_NUMBER(cineNumber, "Cine#", "", "", true, true, 50)
US_PROPERTY_VIEW_ONLY(bool, freezed, false)
US_PROPERTY_VIEW_ONLY(float, cineElapsedTime, 1)
US_PROPERTY_VIEW_ONLY(float, cineTotalTime, 101)
US_PROPERTY_VIEW_ONLY(quint32, cineSavedFrame, 100)
US_PROPERTY_VIEW_ONLY(quint32, cineTotalFrame, 201)
US_SIMPLE_BUTTON(cine, "", "", false, true)
};
#endif //CINESETTINGVIEWMODEL_H

16
logic/include/viewModel/exception/VmError.h

@ -0,0 +1,16 @@
#ifndef VMERROR_H
#define VMERROR_H
class VmError
{
public:
enum eVmErrorCode
{
corruptedData,
databaseReadFailed,
databaseWriteFailed,
};
};
#endif //VMERROR_H

47
logic/include/viewModel/image/BImageContainer.h

@ -0,0 +1,47 @@
#ifndef BIMAGECONTAINER_H
#define BIMAGECONTAINER_H
#include <QObject>
#include <QPoint>
#include "viewModel/utils/UsImage.h"
class BImageContainer : public QObject
{
Q_OBJECT
US_IMAGE_B(image,
"",
0,
0,
0,
(QList<QString>({"1"})),
false,
false,
true,
true,
0,
0,
0,
0,
0,
0,
false,
false,
false,
false,
0,
0,
0,
0,
0,
0,
false)
public:
BImageContainer();
};
#endif //BIMAGECONTAINER_H

85
logic/include/viewModel/image/ImageViewModel.h

@ -0,0 +1,85 @@
#ifndef IMAGEVIEWMODEL_H
#define IMAGEVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/image/BImageContainer.h"
#include "viewModel/image/MImageContainer.h"
#include "utils/ColorImageProvider.h"
class ImageViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(ImageViewModel)
SINGLETON(ImageViewModel)
private:
BImageContainer* _activeImageB;
//B-Mode Image Size
US_PROPERTY_CUSTOM_SETTER(qint16, sonoBImageW, 0)
US_PROPERTY_CUSTOM_SETTER(qint16, sonoBImageH, 0)
US_PROPERTY_INTERNAL(int, imageNumber, 0)
//M-Mode Image Size
US_PROPERTY_CUSTOM_SETTER(quint16, sonoMImageW, 0)
US_PROPERTY_CUSTOM_SETTER(quint16, sonoMImageH, 0)
US_PROPERTY_VIEW_ONLY(QString, imageSriSource, "qrc:/UI/Images/SonoImage/USImageDummy.png")
US_PROPERTY_VIEW_ONLY(QString, annotationBSource, "")
US_PROPERTY_VIEW_ONLY(QString, annotationMSource, "")
US_SWITCH_BUTTON_CUSTOM_SETTER(sriB, "B+SRI", "", true, true, false)
US_SPIN_BOX_CUSTOM_SETTER_INTERNAL(scale, "Scale", (QList<QString>({""})), "", "", true, true,
0)
US_PROPERTY_VIEW_ONLY(BImageContainer*, image1, new BImageContainer)
US_PROPERTY_VIEW_ONLY(BImageContainer*, image2, new BImageContainer)
US_PROPERTY_VIEW_ONLY(BImageContainer*, image3, new BImageContainer)
US_PROPERTY_VIEW_ONLY(BImageContainer*, image4, new BImageContainer)
US_PROPERTY_VIEW_ONLY(MImageContainer*, imageM, new MImageContainer)
US_SWITCH_BUTTON_INTERNAL(xl, "", "", true, true, false)
US_SPIN_BOX_INTERNAL(bMSize,
"B/M",
(QList<QString>({"40/60", "50/50", "60/40"})),
"",
"",
true,
true,
1)
US_SWITCH_BUTTON(bMDirection, "", "", true, true, true)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(mirror, "", "qrc:/UI/Images/Icon/FlipHorizontal.svg",
true, true, false)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(flip, "", "qrc:/UI/Images/Icon/FlipVertical.svg",
true, true, false)
US_JOYSTICK_SIMPLE(framePerSecond, "FPS", "", "Hz", true, true, 0)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(single, "Single", "", true, true, false)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(dual, "Dual", "", true, true, false)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(quad, "Quad", "", true, true, false)
US_PROPERTY_VIEW_ONLY(bool, mModeEnable, false)
US_PROPERTY_VIEW_ONLY(bool, mModeLineSelected, false)
public:
ColorImageProvider* imageProviderB;
ColorImageProvider* imageProviderM;
ColorImageProvider* imageProviderAnnot;
};
#endif //IMAGEVIEWMODEL_H

31
logic/include/viewModel/image/MImageContainer.h

@ -0,0 +1,31 @@
#ifndef MIMAGECONTAINER_H
#define MIMAGECONTAINER_H
#include <QObject>
#include "viewModel/utils/UsImage.h"
class MImageContainer : public QObject
{
Q_OBJECT
US_IMAGE_M(image,
"",
0,
0,
0,
0,
0,
0,
false,
0,
0,
0,
0,
false)
public:
MImageContainer();
};
#endif //MIMAGECONTAINER_H

27
logic/include/viewModel/mMode/display/MModeDisplayViewModel.h

@ -0,0 +1,27 @@
#ifndef MMODEDISPLAYVIEWMODEL_H
#define MMODEDISPLAYVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/bMode/display/tint/TintMapManager.h"
#include "viewModel/bMode/display/gray/GrayMapManager.h"
class MModeDisplayViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(MModeDisplayViewModel)
SINGLETON(MModeDisplayViewModel)
private:
US_PROPERTY_VIEW_ONLY(TintMapManager*, tintManager, new TintMapManager)
US_PROPERTY_VIEW_ONLY(GrayMapManager*, grayMapManager, new GrayMapManager)
//uncrustify off
public slots:
//uncrustify on
void newTintMap();
void newGrayMap();
};
#endif //MMODEDISPLAYVIEWMODEL_H

20
logic/include/viewModel/mMode/display/dtoInternal/MModeDisplayPresetValues.h

@ -0,0 +1,20 @@
#ifndef MMODEDISPLAYPRESETVALUES_H
#define MMODEDISPLAYPRESETVALUES_H
#include <QObject>
#include <QMetaType>
#include "model/ssm/dtoInternal/SsmPresetValues.h"
struct MModeDisplayPresetValues_t {
int grayMap;
int tintMap;
void init(SsmPresetValues_t temp)
{
grayMap = temp.grayMapM;
tintMap = temp.tintMapM;
}
};
#endif //MMODEDISPLAYPRESETVALUES_H

19
logic/include/viewModel/mMode/setting/DataMModeSetting.h

@ -0,0 +1,19 @@
#ifndef DATAMMODESETTING_H
#define DATAMMODESETTING_H
#include <QMetaType>
struct DataMModeSetting_t
{
qint32 gain;
quint32 enhance;
quint32 reject;
quint32 dynamicContrast;
float lineAzimuth;
bool quality;
quint32 speed;
};
Q_DECLARE_METATYPE(DataMModeSetting_t)
#endif //DATAMMODESETTING_H

40
logic/include/viewModel/mMode/setting/MModeSettingViewModel.h

@ -0,0 +1,40 @@
#ifndef MMODESETTINGVIEWMODEL_H
#define MMODESETTINGVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/mMode/setting/DataMModeSetting.h"
class MModeSettingViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(MModeSettingViewModel)
SINGLETON(MModeSettingViewModel)
private:
int _lastEnhance;
US_SWITCH_BUTTON(mModeEnable, "M Mode", "", true, true, false)
US_PROPERTY(float, azimuthIntercept, 0)
US_SPIN_BOX(speed, "Speed", (QList<QString>({"1", "2", "3", "4", "5", "6"})),
"", "", true, true, 1)
US_SWITCH_BUTTON(bMQuality, "B|M Quality", "", true, true, false)
US_SPIN_BOX(enhance, "Enhance", (QList<QString>({""})), "", "", true, true, 0)
US_SWITCH_BUTTON_INTERNAL(enhanceOff, "Enhance off", "", true, true, false)
US_SPIN_BOX(reject, "Reject", (QList<QString>({""})), "", "", true, true, 0)
US_SPIN_BOX(dynamicContrast, "Dy.Cnt.", (QList<QString>({""})), "", "", true, true, 0)
US_INFO_BOX(gain, "Gain", (QList<QString>({""})), "", "dB", true, true, 0)
void applyPreset();
};
#endif //MMODESETTINGVIEWMODEL_H

167
logic/include/viewModel/measurement/MeasureViewModel.h

@ -0,0 +1,167 @@
#ifndef MEASUREVIEWMODEL_H
#define MEASUREVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/EMeasureTab.h"
class MeasureViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(MeasureViewModel)
SINGLETON(MeasureViewModel)
private:
US_RADIO_BUTTON(currentPreset, 0)
US_SIMPLE_BUTTON(preset0, "Factory", "", true, true)
US_SIMPLE_BUTTON(preset1, "Custom 1", "", true, false)
US_SIMPLE_BUTTON(preset2, "Custom 2", "", true, false)
US_SIMPLE_BUTTON(preset3, "Custom 3", "", true, false)
US_RADIO_BUTTON(currentApplication, 0)
US_SIMPLE_BUTTON(application0, "Application 0", "", true, true)
US_SIMPLE_BUTTON(application1, "Application 1", "", true, false)
US_SIMPLE_BUTTON(application2, "Application 2", "", true, false)
US_SIMPLE_BUTTON(application3, "Application 3", "", true, false)
US_SIMPLE_BUTTON(application4, "Application 4", "", true, false)
US_SIMPLE_BUTTON(application5, "Application 5", "", true, false)
US_SIMPLE_BUTTON(application6, "Application 6", "", true, false)
US_SIMPLE_BUTTON(application7, "Application 7", "", true, false)
US_SIMPLE_BUTTON(application8, "Application 8", "", true, false)
US_SIMPLE_BUTTON(application9, "Application 9", "", true, false)
US_RADIO_BUTTON(currentSubCategory, 0)
US_SIMPLE_BUTTON(subCategory0, "Generic", "", true, true)
US_SIMPLE_BUTTON(subCategory1, "sub cat 1", "", true, false)
US_SIMPLE_BUTTON(subCategory2, "sub cat 2", "", true, false)
US_SIMPLE_BUTTON(subCategory3, "sub cat 3", "", false, false)
US_SIMPLE_BUTTON(subCategory4, "sub cat 4", "", false, false)
US_SIMPLE_BUTTON(subCategory5, "sub cat 5", "", false, false)
US_SIMPLE_BUTTON(subCategory6, "sub cat 6", "", false, false)
US_SIMPLE_BUTTON(subCategory7, "sub cat 7", "", false, false)
US_PROPERTY(EMeasureTab::eMeasureTab, activeTabMeasure, EMeasureTab::B_TAB)
US_PROPERTY_VIEW_ONLY(bool, bModeEnable, true)
US_PROPERTY_VIEW_ONLY(bool, mModeEnable, true)
US_PROPERTY_VIEW_ONLY(bool, pwModeEnable, true)
US_RADIO_BUTTON(currentPage, 0)
US_RADIO_BUTTON_CUSTOM_SETTER(currentStudyPage0, 0)
US_SIMPLE_BUTTON(page0Study0, "Generic Dist.", "", true, true)
US_SIMPLE_BUTTON(page0Study1, "Generic Area", "", true, true)
US_SIMPLE_BUTTON(page0Study2, "Study 0-2", "", true, false)
US_SIMPLE_BUTTON(page0Study3, "Study 0-3", "", true, false)
US_RADIO_BUTTON(currentStudyPage1, 1)
US_SIMPLE_BUTTON(page1Study0, "Study 1-0", "", true, false)
US_SIMPLE_BUTTON(page1Study1, "Study 1-1", "", true, false)
US_SIMPLE_BUTTON(page1Study2, "Study 1-2", "", true, false)
US_SIMPLE_BUTTON(page1Study3, "Study 1-3", "", true, false)
US_RADIO_BUTTON(currentStudyPage2, 2)
US_SIMPLE_BUTTON(page2Study0, "Study 2-0", "", true, false)
US_SIMPLE_BUTTON(page2Study1, "Study 2-1", "", true, false)
US_SIMPLE_BUTTON(page2Study2, "Study 2-2", "", true, false)
US_SIMPLE_BUTTON(page2Study3, "Study 2-3", "", true, false)
US_RADIO_BUTTON(currentStudyPage3, 0)
US_SIMPLE_BUTTON(page3Study0, "Study 3-0", "", true, false)
US_SIMPLE_BUTTON(page3Study1, "Study 3-1", "", true, false)
US_SIMPLE_BUTTON(page3Study2, "Study 3-2", "", true, false)
US_SIMPLE_BUTTON(page3Study3, "Study 3-3", "", true, false)
US_RADIO_BUTTON(currentStudyPage4, 0)
US_SIMPLE_BUTTON(page4Study0, "Study 4-0", "", true, false)
US_SIMPLE_BUTTON(page4Study1, "Study 4-1", "", true, false)
US_SIMPLE_BUTTON(page4Study2, "Study 4-2", "", true, false)
US_SIMPLE_BUTTON(page4Study3, "Study 4-3", "", true, false)
US_RADIO_BUTTON(currentParameter, 0)
US_DOUBLE_TEXT_BUTTON(parameter0, "Parameter 0", true, true, "0")
US_DOUBLE_TEXT_BUTTON(parameter1, "Parameter 1", true, true, "2")
US_DOUBLE_TEXT_BUTTON(parameter2, "Parameter 2", true, true, "8")
US_DOUBLE_TEXT_BUTTON(parameter3, "Parameter 3", true, true, "")
US_DOUBLE_TEXT_BUTTON(parameter4, "Parameter 4", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter5, "Parameter 5", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter6, "Parameter 6", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter7, "Parameter 7", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter8, "Parameter 8", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter9, "Parameter 9", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter10, "Parameter 10", false, false, "")
US_DOUBLE_TEXT_BUTTON(parameter11, "Parameter 11", false, false, "")
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(clearAll, "Clear All", "", true, true, true)
US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(deleteLast, "Delete Last", "", true, true, true)
US_SWITCH_BUTTON(worksheet, "Worksheet", "", true, true, true)
US_SPIN_BOX(resultSize, "Result Size", (QList<QString>({"1", "2", "3"})), "", "", true, true, 0)
US_SWITCH_BUTTON(resultPos, "Result Pos.", "", true, true, false)
US_JOYSTICK_NUMBER(resultOpacity, "Opacity", "", "", true, true, 0)
US_SWITCH_BUTTON(resultOff, "Off", "", true, true, false)
US_SPIN_BOX(type, "Type", (QList<QString>({"Sys", "Def", "---"})), "", "", true, true, 0)
US_SPIN_BOX(side, "Side", (QList<QString>({"Right", "Left"})), "", "", true, true, 0)
US_QUAD_TEXT_BUTTON(calc0, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc1, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc2, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc3, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc4, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc5, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc6, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc7, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc8, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc9, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc10, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc11, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc12, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc13, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc14, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc15, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc16, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc17, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc18, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc19, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc20, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc21, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc22, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc23, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc24, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc25, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc26, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc27, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc28, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc29, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc30, "", "", "", "", false, true)
US_QUAD_TEXT_BUTTON(calc31, "", "", "", "", false, true)
US_PROPERTY_VIEW_ONLY(quint32, measureInfoHorizontalPosition, 20)
US_PROPERTY_VIEW_ONLY(quint32, measureInfoVerticalPosition, 100)
US_SPIN_BOX_INTERNAL(measureInfoFontSize,
"Font Size",
(QList<QString>({"8", "10", "12", "14", "16", "18", "20", "22", "24",
"26"})),
"",
"",
true,
true,
3)
US_SPIN_BOX_INTERNAL(measureInfoTransparency,
"Trancparency",
(QList<QString>({})),
"",
"",
true,
true,
2)
};
#endif //MEASUREVIEWMODEL_H

57
logic/include/viewModel/probe/ProbeViewModel.h

@ -0,0 +1,57 @@
#ifndef PROBEVIEWMODEL_H
#define PROBEVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#define NOT_SELECTED -1
class ProbeViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(ProbeViewModel)
SINGLETON(ProbeViewModel)
private:
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, isProbePageShown, false)
US_PROPERTY_VIEW_ONLY(bool, allowProbeView, true)
US_PROPERTY_CUSTOM_SETTER(bool, saveAndExit, false)
US_PROPERTY_VIEW_ONLY(int, savedProbeIndex, -1)
US_PROPERTY_VIEW_ONLY(int, savedFolderIndex, -1)
US_PROPERTY_VIEW_ONLY(int, savedPresetIndex, -1)
US_RADIO_BUTTON_CUSTOM_SETTER_INTERNAL(currentProbe, -1)
US_SIMPLE_BUTTON(probe0, "", "", true, true)
US_SIMPLE_BUTTON(probe1, "", "", true, true)
US_SIMPLE_BUTTON(probe2, "", "", true, true)
US_SIMPLE_BUTTON(probe3, "", "", true, true)
US_PROPERTY_VIEW_ONLY(QString, probe0Error, "")
US_PROPERTY_VIEW_ONLY(QString, probe1Error, "")
US_PROPERTY_VIEW_ONLY(QString, probe2Error, "")
US_PROPERTY_VIEW_ONLY(QString, probe3Error, "")
US_RADIO_BUTTON_CUSTOM_SETTER_INTERNAL(currentFolder, -1)
US_SIMPLE_BUTTON(folder0, "", "", true, true)
US_SIMPLE_BUTTON(folder1, "", "", true, true)
US_SIMPLE_BUTTON(folder2, "", "", true, true)
US_SIMPLE_BUTTON(folder3, "", "", true, true)
US_SIMPLE_BUTTON(folder4, "", "", true, true)
US_SIMPLE_BUTTON(folder5, "", "", true, true)
US_SIMPLE_BUTTON(folder6, "", "", true, true)
US_SIMPLE_BUTTON(folder7, "", "", true, true)
US_RADIO_BUTTON_CUSTOM_SETTER_INTERNAL(currentPreset, -1)
US_SIMPLE_BUTTON(preset0, "", "", true, true)
US_SIMPLE_BUTTON(preset1, "", "", true, true)
US_SIMPLE_BUTTON(preset2, "", "", true, true)
US_SIMPLE_BUTTON(preset3, "", "", true, true)
US_SIMPLE_BUTTON(preset4, "", "", true, true)
US_SIMPLE_BUTTON(preset5, "", "", true, true)
US_SIMPLE_BUTTON(preset6, "", "", true, true)
US_SIMPLE_BUTTON(preset7, "", "", true, true)
};
#endif //PROBEVIEWMODEL_H

32
logic/include/viewModel/simulation/SimulationViewModel.h

@ -0,0 +1,32 @@
#ifndef SIMULATIONVIEWMODEL_H
#define SIMULATIONVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class SimulationViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(SimulationViewModel)
SINGLETON(SimulationViewModel)
private:
US_SWITCH_BUTTON(rxTesterMode, "Run Test", "", true, true, false)
US_SWITCH_BUTTON(simulationTest, "Test Mode", "", true, true, false)
US_SWITCH_BUTTON(oneshot, "Compare", "", true, true, true)
US_SWITCH_BUTTON(autoIncrement, "Auto Increment", "", true, true, true)
US_SWITCH_BUTTON(upload, "Upload", "", true, true, false)
US_SWITCH_BUTTON(freeTest1, "Meas. h5", "", true, true, false)
US_SWITCH_BUTTON(freeTest2, "Test 2", "", true, true, false)
US_SWITCH_BUTTON(freeTest3, "Test 3", "", true, true, false)
US_SWITCH_BUTTON(freeTest4, "Test 4", "", true, true, false)
US_SWITCH_BUTTON(freeTest5, "Test 5", "", true, true, false)
US_PROPERTY(QString, simulationFolder, "")
US_SIMPLE_BUTTON(workingDirOpen, "Open", "", true, true)
US_PROPERTY_INTERNAL(bool, openDialog, false)
};
#endif //SIMULATIONVIEWMODEL_H

56
logic/include/viewModel/tgc/TgcViewModel.h

@ -0,0 +1,56 @@
#ifndef TGCVIEWMODEL_H
#define TGCVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class TgcViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(TgcViewModel)
SINGLETON(TgcViewModel)
private:
//Default Buttons
US_PROPERTY_VIEW_ONLY(QString, tgcResetStr, "2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault0, "819, 819, 819, 819, 819, 819, 819, 819")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault1, "2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault2, "3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault3, "1229, 1433, 1638, 1843, 2048, 2253, 2458, 2662")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault4, "901, 1187, 1475, 1761, 2048, 2335, 2621, 2908")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault5, "410, 819, 1229, 1638, 2048, 2458, 2867, 3277")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault6, "2662, 2458, 2253, 2048, 1843, 1638, 1433, 1229")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault7, "2908, 2621, 2335, 2048, 1761, 1475, 1187, 901")
US_PROPERTY_VIEW_ONLY(QString, tgcDefault8, "3277, 2867, 2458, 2048, 1638, 1229, 819, 410")
//User Buttons
US_PROPERTY(QString, tgcUser1, "819, 819, 819, 819, 819, 819, 819, 819")
US_PROPERTY(QString, tgcUser2, "2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048")
US_PROPERTY(QString, tgcUser3, "3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277")
//Slider
US_PROPERTY(float, tgc0, 2048)
US_PROPERTY(float, tgc1, 2048)
US_PROPERTY(float, tgc2, 2048)
US_PROPERTY(float, tgc3, 2048)
US_PROPERTY(float, tgc4, 2048)
US_PROPERTY(float, tgc5, 2048)
US_PROPERTY(float, tgc6, 2048)
US_PROPERTY(float, tgc7, 2048)
//Save As
US_SIMPLE_BUTTON(tgcSaveAs, "Save As", "", true, true)
US_SIMPLE_BUTTON(tgcUserButton1, "User 1", "", true, true)
US_SIMPLE_BUTTON(tgcUserButton2, "User 2", "", true, true)
US_SIMPLE_BUTTON(tgcUserButton3, "User 3", "", true, true)
//Reset
US_SIMPLE_BUTTON(tgcReset, "Reset", "qrc:/UI/Images/Icon/Reset.svg", true, true)
US_PROPERTY_VIEW_ONLY(bool, enabled, true)
//Joysticks
};
#endif //TGCVIEWMODEL_H

34
logic/include/viewModel/trackball/TrackballViewModel.h

@ -0,0 +1,34 @@
#ifndef TRACKBALLVIEWMODEL_H
#define TRACKBALLVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class TrackballViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(TrackballViewModel)
SINGLETON(TrackballViewModel)
private:
US_TRACKBALL(centerTrackball1, "pos", true, true)
US_TRACKBALL(centerTrackball2, "center", true, false)
US_TRACKBALL(upTrackball1, "Up 1", true, true)
US_TRACKBALL(upTrackball2, "Up 2", true, false)
US_TRACKBALL(downTrackball1, "Down 1", true, true)
US_TRACKBALL(downTrackball2, "Down 2", true, false)
US_TRACKBALL(rightTrackball1, "Right 1", false, false)
US_TRACKBALL(rightTrackball2, "Right 2", false, true)
US_TRACKBALL(leftTrackball1, "Left 1", true, true)
US_TRACKBALL(leftTrackball2, "Left 2", true, false)
US_TRACKBALL(upRightTrackball, "", true, true)
US_TRACKBALL(downRightTrackball, "", true, true)
US_TRACKBALL(upLeftTrackball, "", true, true)
US_TRACKBALL(downLeftTrackball, "", true, true)
};
#endif //TRACKBALLVIEWMODEL_H

30
logic/include/viewModel/user/DialogViewModel.h

@ -0,0 +1,30 @@
#ifndef DIALOGVIEWMODEL_H
#define DIALOGVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
class DialogViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(DialogViewModel)
SINGLETON(DialogViewModel)
private:
US_PROPERTY_VIEW_ONLY(QString, title, "title")
US_PROPERTY_VIEW_ONLY(bool, showDialog, false)
US_PROPERTY_VIEW_ONLY(bool, modal, false)
US_PROPERTY_VIEW_ONLY(QString, text, "text")
US_PROPERTY_VIEW_ONLY(QString, detail, "detail")
US_PROPERTY_VIEW_ONLY(bool, detailEn, false)
US_PROPERTY_VIEW_ONLY(QString, btn1Text, "btn1")
US_PROPERTY_VIEW_ONLY(QString, btn2Text, "btn2")
US_PROPERTY_VIEW_ONLY(QString, btn3Text, "btn3")
public:
Q_INVOKABLE void btn1Clicked();
Q_INVOKABLE void btn2Clicked();
Q_INVOKABLE void btn3Clicked();
};
#endif //DIALOGVIEWMODEL_H

25
logic/include/viewModel/user/UserViewModel.h

@ -0,0 +1,25 @@
#ifndef USERVIEWMODEL_H
#define USERVIEWMODEL_H
#include "viewModel/BaseViewModel.h"
#include "viewModel/EMenuTab.h"
class UserViewModel : public BaseViewModel
{
Q_OBJECT
US_VIEW_MODEL(UserViewModel)
SINGLETON(UserViewModel)
private:
US_PROPERTY(EMenuTab::eMenuTab, activeTab, EMenuTab::B_TAB)
US_PROPERTY_VIEW_ONLY(bool, viewTGC, false)
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, viewMeasurement, false)
US_PROPERTY_VIEW_ONLY(bool, viewMeasurementMonitor, false)
US_PROPERTY_VIEW_ONLY(bool, viewMeasurementCalculation, false)
US_PROPERTY_VIEW_ONLY(bool, viewMeasurementTopBar, false)
};
#endif //USERVIEWMODEL_H

94
logic/include/viewModel/utils/AutoProperty.h

@ -0,0 +1,94 @@
#ifndef AUTOPROPERTY_H
#define AUTOPROPERTY_H
#include <QObject>
//See Gist Comment for description, usage, warnings and license information
#define US_PROPERTY(TYPE, NAME, DEFAULT_VALUE) \
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
TYPE NAME() const { return _ ## NAME; } \
void NAME ## Internal(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
emit NAME ## Changed(value); \
} \
void NAME(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
emit NAME ## Changed(value); \
send(); \
} \
Q_SIGNAL void NAME ## Changed(TYPE value); \
private: \
TYPE _ ## NAME = DEFAULT_VALUE; \
/*************************************************************************************************/
#define US_PROPERTY_CUSTOM_SETTER(TYPE, NAME, DEFAULT_VALUE) \
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
TYPE NAME() const { return _ ## NAME; } \
void NAME ## Internal(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
emit NAME ## Changed(value); \
} \
void NAME(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
NAME ## Handle(); \
emit NAME ## Changed(value); \
send(); \
} \
Q_SIGNAL void NAME ## Changed(TYPE value); \
private: \
TYPE _ ## NAME = DEFAULT_VALUE; \
void NAME ## Handle();
/*************************************************************************************************/
#define US_PROPERTY_VIEW_ONLY(TYPE, NAME, DEFAULT_VALUE) \
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
TYPE NAME() const { return _ ## NAME; } \
void NAME(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
emit NAME ## Changed(value); \
} \
Q_SIGNAL void NAME ## Changed(TYPE value); \
protected: \
TYPE _ ## NAME = DEFAULT_VALUE; \
/*************************************************************************************************/
#define US_PROPERTY_INTERNAL(TYPE, NAME, DEFAULT_VALUE) \
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
TYPE NAME() const { return _ ## NAME; } \
void NAME(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
emit NAME ## Changed(value); \
} \
Q_SIGNAL void NAME ## Changed(TYPE value); \
private: \
TYPE _ ## NAME = DEFAULT_VALUE; \
/*************************************************************************************************/
#define US_PROPERTY_CUSTOM_SETTER_INTERNAL(TYPE, NAME, DEFAULT_VALUE) \
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
TYPE NAME() const { return _ ## NAME; } \
void NAME(TYPE value) { \
if(_ ## NAME == value)return; \
_ ## NAME = value; \
NAME ## Handle(); \
emit NAME ## Changed(value); \
} \
Q_SIGNAL void NAME ## Changed(TYPE value); \
private: \
TYPE _ ## NAME = DEFAULT_VALUE; \
void NAME ## Handle();
#endif //AUTOPROPERTY_H

28
logic/include/viewModel/utils/UsButtonDoubleText.h

@ -0,0 +1,28 @@
#ifndef USBUTTONDOUBLETEXT_H
#define USBUTTONDOUBLETEXT_H
#include "UsSimpleButton.h"
#define US_DOUBLE_TEXT_BUTTON(NAME, \
TITLE, \
ENABLE, \
VISIBLE, \
INFO) \
US_SIMPLE_BUTTON(NAME, TITLE, "", ENABLE, VISIBLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Info, INFO)
#define US_QUAD_TEXT_BUTTON(NAME, \
TEXT_0, \
TEXT_1, \
TEXT_2, \
TEXT_3, \
VISIBLE, \
LINE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Text0, TEXT_0) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Text1, TEXT_1) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Text2, TEXT_2) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Text3, TEXT_3) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Line, LINE)
#endif //USBUTTONDOUBLETEXT_H

93
logic/include/viewModel/utils/UsImage.h

@ -0,0 +1,93 @@
#ifndef USIMAGE_H
#define USIMAGE_H
#include "AutoProperty.h"
#define US_IMAGE_B(NAME, \
IMAGE, \
IMAGE_X, \
IMAGE_Y, \
SCALE, \
SCALE_VALUES, \
MIRROR, \
FLIP, \
ACTIVE, \
SHOW_INDICATOR, \
INDICATOR_X, \
INDICATOR_Y, \
FOCUS_POINT_1, \
FOCUS_POINT_2, \
FOCUS_POINT_3, \
FOCUS_POINT_4, \
FOCUS_POINT_1_ENABLE, \
FOCUS_POINT_2_ENABLE, \
FOCUS_POINT_3_ENABLE, \
FOCUS_POINT_4_ENABLE, \
FOCUS_POINT_X, \
FOCUS_POINT_Y, \
RULER_LENGTH, \
RULER_LINE_DISTANCE, \
RULER_X, \
RULER_Y, \
RULER_SMALL_LINE_ENABLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Source, IMAGE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## X, IMAGE_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## Y, IMAGE_Y) \
US_PROPERTY_VIEW_ONLY(int, NAME ## Scale, SCALE) \
US_PROPERTY_VIEW_ONLY(float, NAME ## HiddenScale, 1) \
US_PROPERTY_VIEW_ONLY(QStringList, NAME ## ScaleValues, SCALE_VALUES) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Mirror, MIRROR) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Flip, FLIP) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Active, ACTIVE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## ShowIndicator, SHOW_INDICATOR) \
US_PROPERTY_VIEW_ONLY(int, NAME ## IndicatorX, INDICATOR_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## IndicatorY, INDICATOR_Y) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPoint1, FOCUS_POINT_1) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPoint2, FOCUS_POINT_2) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPoint3, FOCUS_POINT_3) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPoint4, FOCUS_POINT_4) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## FocusPoint1Enable, FOCUS_POINT_1_ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## FocusPoint2Enable, FOCUS_POINT_2_ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## FocusPoint3Enable, FOCUS_POINT_3_ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## FocusPoint4Enable, FOCUS_POINT_4_ENABLE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPointX, FOCUS_POINT_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## FocusPointY, FOCUS_POINT_Y) \
US_PROPERTY_VIEW_ONLY(int, NAME ## RulerLength, RULER_LENGTH) \
US_PROPERTY_VIEW_ONLY(int, NAME ## RulerLineDistance, RULER_LINE_DISTANCE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## RulerX, RULER_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## RulerY, RULER_Y) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## RulerSmallLineEnable, RULER_SMALL_LINE_ENABLE)
#define US_IMAGE_M(NAME, \
IMAGE, \
IMAGE_X, \
IMAGE_Y, \
VERTICAL_RULER_LENGTH, \
VERTICAL_RULER_LINE_DISTANCE, \
VERTICAL_RULER_X, \
VERTICAL_RULER_Y, \
VERTICAL_RULER_SMALL_LINE_ENABLE, \
HORIZONTAL_RULER_LENGTH, \
HORIZONTAL_RULER_LINE_DISTANCE, \
HORIZONTAL_RULER_X, \
HORIZONTAL_RULER_Y, \
HORIZONTAL_RULER_SMALL_LINE_ENABLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Source, IMAGE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## X, IMAGE_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## Y, IMAGE_Y) \
US_PROPERTY_VIEW_ONLY(int, NAME ## VerticalRulerLength, VERTICAL_RULER_LENGTH) \
US_PROPERTY_VIEW_ONLY(int, NAME ## VerticalRulerLineDistance, VERTICAL_RULER_LINE_DISTANCE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## VerticalRulerX, VERTICAL_RULER_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## VerticalRulerY, VERTICAL_RULER_Y) \
US_PROPERTY_VIEW_ONLY(bool, \
NAME ## VerticalRulerSmallLineEnable, \
VERTICAL_RULER_SMALL_LINE_ENABLE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## HorizontalRulerLength, HORIZONTAL_RULER_LENGTH) \
US_PROPERTY_VIEW_ONLY(int, NAME ## HorizontalRulerLineDistance, HORIZONTAL_RULER_LINE_DISTANCE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## HorizontalRulerX, HORIZONTAL_RULER_X) \
US_PROPERTY_VIEW_ONLY(int, NAME ## HorizontalRulerY, HORIZONTAL_RULER_Y) \
US_PROPERTY_VIEW_ONLY(bool, \
NAME ## HorizontalRulerSmallLineEnable, \
HORIZONTAL_RULER_SMALL_LINE_ENABLE)
#endif //USIMAGE_H

50
logic/include/viewModel/utils/UsInfoBox.h

@ -0,0 +1,50 @@
#ifndef USINFOBOX_H
#define USINFOBOX_H
#include "AutoProperty.h"
#define US_INFO_BOX(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QStringList, NAME ## Values, VALUES) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Prefix, PREFIX) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Suffix, SUFFIX) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY(int, NAME, DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## Diff, 0)
#define US_INFO_BOX_CUSTOM_SETTER(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QStringList, NAME ## Values, VALUES) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Prefix, PREFIX) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Suffix, SUFFIX) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY_CUSTOM_SETTER(int, NAME, DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(int, NAME ## Diff, 0)
#define US_INFO_BOX_BOOL(NAME, \
TITLE, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY(bool, NAME, DEFAULT_VALUE)
#endif //USINFOBOX_H

34
logic/include/viewModel/utils/UsJoystick.h

@ -0,0 +1,34 @@
#ifndef USJOYSTICK_H
#define USJOYSTICK_H
#include "AutoProperty.h"
#define US_JOYSTICK_SIMPLE(NAME, \
TITLE, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Prefix, PREFIX) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Suffix, SUFFIX) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY_VIEW_ONLY(int, NAME, DEFAULT_VALUE)
#define US_JOYSTICK_NUMBER(NAME, \
TITLE, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Prefix, PREFIX) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Suffix, SUFFIX) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE) \
US_PROPERTY(int, NAME, DEFAULT_VALUE)
#endif //USJOYSTICK_H

25
logic/include/viewModel/utils/UsList.h

@ -0,0 +1,25 @@
#ifndef USLIST_H
#define USLIST_H
#include <QList>
#define US_LIST(TYPE, NAME) \
Q_PROPERTY(QList<TYPE> NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
public: \
QList<TYPE> NAME() const { return _ ## NAME; } \
void NAME(QList<TYPE> value) { \
if(_ ## NAME == value){ return; } \
_ ## NAME.clear(); \
for(int i = 0; i < value.length(); i++) \
{ \
_ ## NAME.append(value[i]); \
} \
emit NAME ## Changed(value); \
NAME ## Handle(); \
} \
Q_SIGNAL void NAME ## Changed(QList<TYPE> value); \
private: \
QList<TYPE> _ ## NAME; \
void NAME ## Handle();
#endif //USLIST_H

50
logic/include/viewModel/utils/UsMultiButton.h

@ -0,0 +1,50 @@
#ifndef USMULTIBUTTON_H
#define USMULTIBUTTON_H
#include "UsSpinBox.h"
#define US_MULTI_BUTTON(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE, \
BYPASS) \
US_SPIN_BOX(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY(bool, NAME ## Bypass, BYPASS) \
#define US_MULTI_BUTTON_CUSTOM_SETTER(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE, \
BYPASS) \
US_SPIN_BOX_CUSTOM_SETTER(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER(bool, NAME ## Bypass, BYPASS) \
#define US_MULTI_BUTTON_CUSTOM_SETTER_BYPASS_ONLY(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE, \
BYPASS) \
US_SPIN_BOX(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER(bool, NAME ## Bypass, BYPASS) \
#endif //USMULTIBUTTON_H

19
logic/include/viewModel/utils/UsRadioButton.h

@ -0,0 +1,19 @@
#ifndef USRADIOBUTTON_H
#define USRADIOBUTTON_H
#include "AutoProperty.h"
#define US_RADIO_BUTTON(NAME, DEFAULT_VALUE) \
US_PROPERTY(int, NAME, DEFAULT_VALUE) \
#define US_RADIO_BUTTON_CUSTOM_SETTER(NAME, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER(int, NAME, DEFAULT_VALUE) \
#define US_RADIO_BUTTON_CUSTOM_SETTER_INTERNAL(NAME, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(int, NAME, DEFAULT_VALUE) \
#define US_RADIO_BUTTON_INTERNAL(NAME, DEFAULT_VALUE) \
US_PROPERTY_INTERNAL(int, NAME, DEFAULT_VALUE) \
#endif //USRADIOBUTTON_H

60
logic/include/viewModel/utils/UsSimpleButton.h

@ -0,0 +1,60 @@
#ifndef USSIMPLEBUTTON_H
#define USSIMPLEBUTTON_H
#include "AutoProperty.h"
#define US_SIMPLE_BUTTON_PROPERTY_1(NAME) US_SIMPLE_BUTTON_BASE(NAME, "fake title", "", true, \
true)
#define US_SIMPLE_BUTTON_PROPERTY_2(NAME, TITLE) US_SIMPLE_BUTTON_BASE(NAME, \
TITLE, \
"", \
true, \
true)
#define US_SIMPLE_BUTTON_PROPERTY_3(NAME, TITLE, IMAGE) \
US_SIMPLE_BUTTON_BASE(NAME, TITLE, IMAGE, true, true)
#define US_SIMPLE_BUTTON_PROPERTY_4(NAME, TITLE, IMAGE, ENABLE) \
US_SIMPLE_BUTTON_BASE(NAME, TITLE, IMAGE, ENABLE, true)
#define US_SIMPLE_BUTTON_PROPERTY_5(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_SIMPLE_BUTTON_BASE(NAME, TITLE, IMAGE, ENABLE, VISIBLE)
#define US_SIMPLE_BUTTON_ROUTER(A, B, C, D, E, FUNC, ...) FUNC
#define US_SIMPLE_BUTTON(...) \
US_SIMPLE_BUTTON_ROUTER(__VA_ARGS__, \
US_SIMPLE_BUTTON_PROPERTY_5(__VA_ARGS__), \
US_SIMPLE_BUTTON_PROPERTY_4(__VA_ARGS__), \
US_SIMPLE_BUTTON_PROPERTY_3(__VA_ARGS__), \
US_SIMPLE_BUTTON_PROPERTY_2(__VA_ARGS__), \
US_SIMPLE_BUTTON_PROPERTY_1(__VA_ARGS__), \
)
#define US_SIMPLE_BUTTON_BASE(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Image, IMAGE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE)
#include "UsViewControl.h"
class UsSimpleButton : public UsViewControl
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(QString, title, "")
US_PROPERTY_VIEW_ONLY(QString, image, "")
US_PROPERTY_VIEW_ONLY(int, value, 0)
public:
UsSimpleButton(const QString& _title, const QString& _image, bool visible,
bool enable) : UsViewControl(visible, enable)
{
title(_title);
image(_image);
}
};
#endif //USSIMPLEBUTTON_H

92
logic/include/viewModel/utils/UsSpinBox.h

@ -0,0 +1,92 @@
#ifndef USSPINBOX_H
#define USSPINBOX_H
#include "AutoProperty.h"
#define US_SPIN_BOX_SHELL(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(QStringList, NAME ## Values, VALUES) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Prefix, PREFIX) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Suffix, SUFFIX) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Visible, VISIBLE)
#define US_SPIN_BOX(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_SPIN_BOX_SHELL(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY(int, NAME, DEFAULT_VALUE)
#define US_SPIN_BOX_INTERNAL(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_SPIN_BOX_SHELL(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_INTERNAL(int, NAME, DEFAULT_VALUE)
#define US_SPIN_BOX_CUSTOM_SETTER(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_SPIN_BOX_SHELL(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER(int, NAME, DEFAULT_VALUE)
#define US_SPIN_BOX_CUSTOM_SETTER_INTERNAL(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE) \
US_SPIN_BOX_SHELL(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(int, NAME, DEFAULT_VALUE)
#define US_POPUP_BUTTON(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE, \
SHOW_ACTIVE_BUTTON, RESET) \
US_SPIN_BOX(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_INTERNAL(bool, NAME ## ShowActiveButton, SHOW_ACTIVE_BUTTON) \
US_PROPERTY_INTERNAL(bool, NAME ## Reset, RESET) \
#define US_POPUP_BUTTON_CUSTOM_SETTER(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, \
DEFAULT_VALUE, SHOW_ACTIVE_BUTTON, RESET) \
US_SPIN_BOX_CUSTOM_SETTER(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_INTERNAL(bool, NAME ## ShowActiveButton, SHOW_ACTIVE_BUTTON) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, NAME ## Reset, RESET) \
#define US_POPUP_BUTTON_CUSTOM_SETTER_CUSTOM_SHOW(NAME, \
TITLE, \
VALUES, \
PREFIX, \
SUFFIX, \
ENABLE, \
VISIBLE, \
DEFAULT_VALUE, \
SHOW_ACTIVE_BUTTON, \
RESET) \
US_SPIN_BOX_CUSTOM_SETTER(NAME, TITLE, VALUES, PREFIX, SUFFIX, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, NAME ## ShowActiveButton, SHOW_ACTIVE_BUTTON) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, NAME ## Reset, RESET) \
#endif //USSPINBOX_H

23
logic/include/viewModel/utils/UsSwitchButton.h

@ -0,0 +1,23 @@
#ifndef USSWITCHBUTTON_H
#define USSWITCHBUTTON_H
#include "AutoProperty.h"
#define US_SWITCH_BUTTON(NAME, TITLE, IMAGE, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_SIMPLE_BUTTON(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_PROPERTY(bool, NAME, DEFAULT_VALUE) \
#define US_SWITCH_BUTTON_INTERNAL(NAME, TITLE, IMAGE, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_SIMPLE_BUTTON(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_PROPERTY_INTERNAL(bool, NAME, DEFAULT_VALUE) \
#define US_SWITCH_BUTTON_CUSTOM_SETTER(NAME, TITLE, IMAGE, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_SIMPLE_BUTTON(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_PROPERTY_CUSTOM_SETTER(bool, NAME, DEFAULT_VALUE) \
#define US_SWITCH_BUTTON_CUSTOM_SETTER_INTERNAL(NAME, TITLE, IMAGE, ENABLE, VISIBLE, DEFAULT_VALUE) \
US_SIMPLE_BUTTON(NAME, TITLE, IMAGE, ENABLE, VISIBLE) \
US_PROPERTY_CUSTOM_SETTER_INTERNAL(bool, NAME, DEFAULT_VALUE) \
#endif //USSWITCHBUTTON_H

14
logic/include/viewModel/utils/UsTrackball.h

@ -0,0 +1,14 @@
#ifndef USTRACKBALL_H
#define USTRACKBALL_H
#include "AutoProperty.h"
#define US_TRACKBALL(NAME, \
TITLE, \
ENABLE, \
ACTIVE) \
US_PROPERTY_VIEW_ONLY(QString, NAME ## Title, TITLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Enable, ENABLE) \
US_PROPERTY_VIEW_ONLY(bool, NAME ## Active, ACTIVE)
#endif //USTRACKBALL_H

21
logic/include/viewModel/utils/UsViewControl.h

@ -0,0 +1,21 @@
#ifndef USVIEWCONTROL_H
#define USVIEWCONTROL_H
#include "AutoProperty.h"
class UsViewControl : public QObject
{
Q_OBJECT
US_PROPERTY_VIEW_ONLY(bool, visible, true)
US_PROPERTY_VIEW_ONLY(bool, enable, true)
public:
UsViewControl(bool vis = true, bool en = true)
{
visible(vis);
enable(en);
}
};
#endif //USVIEWCONTROL_H

28
logic/lib/Kernels/BWConvertor.cl

@ -0,0 +1,28 @@
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input
{
int test;
};
kernel void BWConvertor(read_only image2d_t frame, read_write image2d_t outImage, struct input params) {
int2 gid = (int2)(get_global_id(0), get_global_id(1));
int2 size = get_image_dim(frame);
if(all(gid < size)){
uint4 pixel = read_imageui(frame, sampler, gid);
float4 color = convert_float4(pixel) / 255;
//color.xyz = 0.2126*color.x + 0.7152*color.y + 0.0722*color.z;
int a = 0.3*pixel.x + 0.59*pixel.y + 0.11*pixel.z;
pixel.x = a;
pixel.y = a;
pixel.z = a;
write_imageui(outImage, gid, pixel);
}
}

76
logic/lib/Kernels/DynCont.cl

@ -0,0 +1,76 @@
// #define TEST
#define X 100
#define Y 100
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int gain;
int dyn_cont_selector;
float gamma;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void DynCont(read_only image2d_t input_frame, read_write image2d_t output_frame, global TYPE_FLT* scratch_pad, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
TYPE_FLT output_data = 0;
if (params.dyn_cont_selector >= 12)
{
output_data = log2((params.gamma - 1) * input + 1) / log2(params.gamma);
}
else
{
output_data = pow(input, params.gamma);
}
output_data = output_data * pow(10.0, params.gain / 20.0);
if(output_data < 0)
output_data = 0;
if(output_data > 1)
output_data = 1;
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
write_imageui(output_frame, gid, pixel);
}

103
logic/lib/Kernels/Enhance.cl

@ -0,0 +1,103 @@
#define TEST
#define X 221
#define Y 218
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int filter_width;
int filter_height;
int width;
int height;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void Enhance(read_only image2d_t input_frame, read_write image2d_t output_frame, global TYPE_FLT* filter, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
TYPE_FLT output_data = 0;
int p = params.filter_height;
int q = params.filter_width;
int lag1 = (p - 1) / 2;
int lag2 = (q - 1) / 2;
if(gid.x >= lag2 && gid.x < params.width - lag2 && gid.y >= lag1 && gid.y < params.height - lag1)
{
for(int i = -lag1; i <= lag1 ; i++)
{
for(int j = -lag2; j <= lag2 ; j++)
{
output_data += read_data(input_frame, gid.x + j, gid.y + i) * filter[(i + lag1) * q + (j + lag2)];
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("data[%d, %d] = %f\n", gid.x + j, gid.y + i, read_data(input_frame, gid.x + j, gid.y + i));
printf("w[%d, %d] = %f\n", i + lag1, j + lag2, filter[(i + lag1) * q + (j + lag2)]);
printf("out = %f\n", output_data);
}
#endif
}
}
}
else
{
output_data = input;
}
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("out = %.12f\n", output_data);
}
#endif
if(output_data < 0)
output_data = 0;
if(output_data > 1)
output_data = 1;
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
write_imageui(output_frame, gid, pixel);
}

74
logic/lib/Kernels/GrayMap.cl

@ -0,0 +1,74 @@
// #define TEST
#define X 100
#define Y 100
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int gray_map_selector;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void GrayMap(read_only image2d_t input_frame, read_write image2d_t output_frame, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
TYPE_FLT output_data = 0;
double gama[17] = {0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.67, 0.75, 1, 1.33, 1.5, 2, 2.5, 3.33, 5, 10, 20};
if(params.gray_map_selector == 17)
{
output_data = 255 * log2(input / 255 + 1);
}
else
{
output_data = 255 * pow((input / 255.0), gama[params.gray_map_selector]);
}
uchar out = (uchar)output_data;
#ifdef TEST
if(gid.x == X && gid.y == Y)
printf("%u ---", out);
#endif
uint4 pixel;
pixel.x = out;
pixel.y = out;
pixel.z = out;
pixel.w = 255;
write_imageui(output_frame, gid, pixel);
}

87
logic/lib/Kernels/Persist.cl

@ -0,0 +1,87 @@
#define TEST
#define X 8
#define Y 40
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int number;
int mode;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void Persist(read_only image2d_t input_frame, write_only image2d_t output_frame, write_only image2d_t sum_frame, read_only image2d_t last_sum, read_only image2d_t removed_frame, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
TYPE_FLT output_data = 0;
TYPE_FLT sum = 0;
if(params.mode == 0)
{
sum = input;
}
else if(params.mode == 1)
{
sum = read_data(last_sum, gid.x, gid.y);
sum += input;
if(gid.x == X && gid.y == Y)
printf("last = %f -- inp = %f\n", read_data(last_sum, gid.x, gid.y), input);
}
else if(params.mode == 2)
{
sum = read_data(last_sum, gid.x, gid.y);
TYPE_FLT sub = read_data(removed_frame, gid.x, gid.y);
sum = sum + input - sub;
}
output_data = sum / params.number;
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
write_imageui(output_frame, gid, pixel);
out = *((TYPE_INT*)(&sum));
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
write_imageui(sum_frame, gid, pixel);
}

75
logic/lib/Kernels/Rejection.cl

@ -0,0 +1,75 @@
#define TEST
#define X 0
#define Y 0
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input
{
int rejectThr;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void Rejection(read_only image2d_t input_frame, read_write image2d_t output_frame,
struct input params) {
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT output_data = 0;
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
output_data = input;
if(output_data < (params.rejectThr / 256.0f))
output_data = 0;
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("out: %.9f | in: %.9f | th: %.9f |", output_data, input, (params.rejectThr / 256.0f));
}
#endif
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("out: %.15f | ", output_data);
}
#endif
write_imageui(output_frame, gid, pixel);
}

132
logic/lib/Kernels/ScanConversion.cl

@ -0,0 +1,132 @@
#define TEST
#define X 0
#define Y 0
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input
{
int output_width;
int grid_x_size;
int grid_z_size;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
TYPE_FLT mabs(TYPE_FLT arg)
{
if (arg < 0)
return -arg;
return arg;
}
kernel void ScanConversion(read_only image2d_t input_frame, read_write image2d_t output_frame,
global TYPE_FLT* grid_x, global TYPE_FLT* grid_z,
global TYPE_FLT* query_x, global TYPE_FLT* query_z,
struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT dx = grid_x[1] - grid_x[0];
TYPE_FLT dz = grid_z[1] - grid_z[0];
TYPE_FLT x = query_x[gid.y * params.output_width + gid.x];
TYPE_FLT z = query_z[gid.y * params.output_width + gid.x];
int grid_x_index = 0;
int grid_z_index = 0;
if(mabs(x - grid_x[params.grid_x_size - 1]) < EPSILSON)
grid_x_index = params.grid_x_size - 2;
else
grid_x_index = floor((x - grid_x[0]) / dx);
if(mabs(z - grid_z[params.grid_z_size - 1]) < EPSILSON)
{
grid_z_index = params.grid_z_size - 2;
}
else
{
grid_z_index = floor((z - grid_z[0]) / dz);
}
TYPE_FLT output_data = 0;
if(grid_x_index >= 0 && grid_x_index < params.grid_x_size - 1 &&
grid_z_index >= 0 && grid_z_index < params.grid_z_size - 1)
{
//matrix simplification
TYPE_FLT a11 = grid_z[grid_z_index + 1] - z;
TYPE_FLT a12 = z - grid_z[grid_z_index];
TYPE_FLT b11 = read_data(input_frame, grid_x_index, grid_z_index);
TYPE_FLT b12 = read_data(input_frame, grid_x_index + 1, grid_z_index);
TYPE_FLT b21 = read_data(input_frame, grid_x_index, grid_z_index + 1);
TYPE_FLT b22 = read_data(input_frame, grid_x_index + 1, grid_z_index + 1);
TYPE_FLT c11 = grid_x[grid_x_index + 1] - x;
TYPE_FLT c21 = x - grid_x[grid_x_index];
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("dx: %.9f | ", dx);
printf("dz: %.9f | ", dz);
printf("x: %.9f | ", x);
printf("z: %.9f | ", z);
printf("grid_x_index: %d | ", grid_x_index);
printf("grid_z_index: %d | ", grid_z_index);
printf("a11: %.9f | ", a11);
printf("a12: %.9f | ", a12);
printf("b11: %.9f | ", b11);
printf("b12: %.9f | ", b12);
printf("b21: %.9f | ", b21);
printf("b22: %.9f | ", b22);
printf("c11: %.9f | ", c11);
printf("c21: %.9f | ", c21);
}
#endif
output_data = (c11 * (a11 * b11 + a12 * b21) + c21 * (a11 * b12 + a12 * b22)) / (dx * dz);
}
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
printf("out: %.15f | ", output_data);
}
#endif
write_imageui(output_frame, gid, pixel);
}

199
logic/lib/Kernels/Sri.cl

@ -0,0 +1,199 @@
// #define TEST
#define X 95
#define Y 22
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int state;
int sri;
int width;
int height;
};
TYPE_FLT read_data(image2d_t input_frame, int x, int z)
{
int2 gid = (int2)(x, z);
uint4 pixel = read_imageui(input_frame, sampler, gid);
TYPE_INT temp = (TYPE_INT)((TYPE_INT)pixel.x & MASK) |
(TYPE_INT)(((TYPE_INT)pixel.y & MASK) << SHIFT) |
(TYPE_INT)(((TYPE_INT)pixel.z & MASK) << (SHIFT * 2)) |
(TYPE_INT)(((TYPE_INT)pixel.w & MASK) << (SHIFT * 3));
TYPE_FLT raw_data = *((TYPE_FLT*)(&temp));
return raw_data;
}
kernel void Sri(read_only image2d_t input_frame, read_write image2d_t output_frame, local TYPE_FLT* sum, global TYPE_FLT* scratch_pad, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
TYPE_FLT input = read_data(input_frame, gid.x, gid.y);
TYPE_FLT output_data = 0;
if(params.sri == 0)
{
output_data = input;
}
else if(params.state == 1 || params.state == 4)
{
uint local_id = get_local_id(0);
uint group_size = get_local_size(0);
sum[local_id] = input;
uint is_odd = group_size % 2;
// Loop for computing localMaxes : divide WorkGroup into 2 parts
for (uint stride = group_size / 2; stride > 0; stride /= 2)
{
// Waiting
barrier(CLK_LOCAL_MEM_FENCE);
if (local_id < stride)
sum[local_id] += sum[local_id + stride];
if (local_id == 0)
{
if(is_odd)
sum[local_id] += sum[2 * stride];
is_odd = stride % 2;
}
}
// Write result into scratchPad[nWorkGroups]
if (local_id == 0)
{
scratch_pad[get_group_id(1)] = sum[0];
}
return;
}
else if(params.state == 2 || params.state == 5)
{
uint local_id = get_local_id(0);
uint group_size = get_local_size(0);
sum[local_id] = scratch_pad[gid.x];
uint is_odd = group_size % 2;
// Loop for computing localMaxes : divide WorkGroup into 2 parts
for (uint stride = group_size / 2; stride > 0; stride /= 2)
{
// Waiting
barrier(CLK_LOCAL_MEM_FENCE);
if (local_id < stride)
sum[local_id] += sum[local_id + stride];
if (local_id == 0)
{
if(is_odd)
sum[local_id] += sum[2 * stride];
is_odd = stride % 2;
}
}
// Write result into scratchPad[nWorkGroups]
if (local_id == 0)
{
scratch_pad[0] = sum[0] / (params.width * params.height);
}
return;
}
else if(params.state == 3)
{
TYPE_FLT mean = scratch_pad[0];
output_data = pow((input - mean), 2);
}
else if(params.state == 6)
{
int temp[5] = {3, 3, 5, 7, 7};
int p = temp[params.sri - 1];
int q = params.width > 1 ? p : 1;
float alpha = 1 - 0.25 * (params.sri - 1);
TYPE_FLT rho2 = scratch_pad[0];
int lag1 = (p - 1) / 2;
int lag2 = (q - 1) / 2;
float window[49];
int window_size = p * q;
for(int i = 0; i < window_size; i++)
window[i] = 0;
if(gid.x >= lag2 && gid.x < params.width - lag2 && gid.y >= lag1 && gid.y < params.height - lag1)
{
for(int i = -lag1; i <= lag1 ; i++)
{
for(int j = -lag2; j <= lag2 ; j++)
{
window[(i + lag1) * q + (j + lag2)] = read_data(input_frame, gid.x + j, gid.y + i);
}
}
#ifdef TEST
if(gid.x == X && gid.y == Y)
{
for(int i = 0; i < window_size; i++)
printf("[%d] > %f; ", i, window[i]);
}
#endif
float mean = 0;
for(int i = 0; i < window_size; i++)
{
mean += window[i];
}
mean /= window_size;
for(int i = 0; i < window_size; i++)
{
window[i] = pow((window[i] - mean), 2);
}
float sigma2 = 0;
for(int i = 0; i < window_size; i++)
{
sigma2 += window[i];
}
sigma2 /= window_size;
output_data = mean + alpha * (sigma2 / (sigma2 + rho2)) * (input - mean);
}
else
{
output_data = input;
}
if(output_data < 0)
output_data = 0;
}
TYPE_INT out = *((TYPE_INT*)(&output_data));
uint4 pixel;
pixel.x = (TYPE_INT)(out & MASK);
pixel.y = (TYPE_INT)((out >> SHIFT) & MASK);
pixel.z = (TYPE_INT)((out >> (SHIFT *2)) & MASK);
pixel.w = (TYPE_INT)((out >> (SHIFT * 3)) & MASK);
write_imageui(output_frame, gid, pixel);
}

101
logic/lib/Kernels/TintMap.cl

@ -0,0 +1,101 @@
// #define TEST
#define X 100
#define Y 100
//#define USE_DBL
#ifdef USE_DBL
#define TYPE_FLT double
#define TYPE_INT long
#define MASK 0xFFFF
#define SHIFT 16
#define EPSILSON 4.94065645841247E-324
#else
#define TYPE_FLT float
#define TYPE_INT int
#define MASK 0x00FF
#define SHIFT 8
#define EPSILSON 1.401298E-45
#endif
constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
CLK_ADDRESS_CLAMP_TO_EDGE |
CLK_FILTER_LINEAR;
struct input {
int tint_map_selector;
};
kernel void TintMap(read_only image2d_t input_frame, read_write image2d_t output_frame, struct input params)
{
int2 gid = (int2)(get_global_id(0), get_global_id(1));
uint4 pixel = read_imageui(input_frame, sampler, gid);
private float r_step, g_step, b_step;
private int r_base, g_base, b_base;
switch(params.tint_map_selector)
{
//gray
case 0:
r_base = g_base = b_base = 0;
r_step = g_step = b_step = 1.0;
break;
//blue
case 1:
r_base = g_base = b_base = 0;
r_step = g_step = 0 ;
b_step = 1.0f;
break;
//cool blue
case 2:
r_base = 0;
g_base = b_base = 255;
r_step = 1.0f;
g_step = -1.0f;
b_step = 0;
break;
//copper
case 3:
r_base = g_base = b_base = 0;
r_step = 1.0f;
g_step = 0.7812f;
b_step = 0.4975f;
break;
//otherwise
case 4:
r_base = g_base = b_base = 0;
r_step = g_step = b_step = 1.0f;
break;
}
uchar data = pixel.x;
if(data > 0)
{
float r = r_base + data * r_step;
if(r < 0) r = 0;
if(r > 255) r = 255;
float g = g_base + data * g_step;
if(g < 0) g = 0;
if(g > 255) g = 255;
float b = b_base + data * b_step;
if(b < 0) b = 0;
if(b > 255) b = 255;
#ifdef TEST
if(gid.x == X && gid.y == Y)
printf("%u ---", out);
#endif
pixel.x = (uchar)b;
pixel.y = (uchar)g;
pixel.z = (uchar)r;
pixel.w = 255;
}
write_imageui(output_frame, gid, pixel);
}

29
logic/logic.pro

@ -0,0 +1,29 @@
TEMPLATE = lib
QT += mvvmcore quick
# Creating a static library is typically more efficient. You can still create a shared library if you want to
CONFIG += staticlib
CONFIG += debug
TARGET = logic
DEFINES += QT_DEPRECATED_WARNINGS \
QT_QPA_EGLFS_HIDECURSOR
SOURCES += $$files(src/*.cpp, true) \
HEADERS += $$files(include/*.h, true)
RESOURCES += \
logic.qrc
INCLUDEPATH += "$$PWD/include" \
"$$PWD/include/lib" \
$$PWD/..
TRANSLATIONS += mvvm_core_de.ts \
mvvm_core_template.ts
DISTFILES += $$TRANSLATIONS
QTMVVM_TS_SETTINGS = settings.xml
_never_true_condition: SOURCES += $$files($$PWD/.ts-dummy/*)
# Uncomment the following line to automatically generated and update settings translations when building
#PRE_TARGETDEPS += qtmvvm-tsgen

5
logic/logic.qrc

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/etc">
<file>settings.xml</file>
</qresource>
</RCC>

4
logic/mvvm_core_de.ts

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de_DE">
</TS>

4
logic/mvvm_core_template.ts

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
</TS>

8
logic/settings.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig>
<Entry key="property"
type="bool"
title="&amp;Check me"
tooltip="I am a checkbox!"
default="false" />
</SettingsConfig>

38
logic/src/mvvmCore/MvvmApp.cpp

@ -0,0 +1,38 @@
#include "mvvmCore/MvvmApp.h"
#include "viewModel/MainViewModel.h"
#include <QtCore/QCommandLineParser>
MvvmApp::MvvmApp(QObject* parent) :
CoreApp(parent)
{
QCoreApplication::setApplicationName(QStringLiteral("mvvm"));
QCoreApplication::setApplicationVersion(QStringLiteral("1.0.0"));
QCoreApplication::setOrganizationName(QStringLiteral("Example Organization"));
}
void MvvmApp::performRegistrations()
{
//if you are using a qt resource (e.g. "mvvmcore.qrc"), initialize it here
Q_INIT_RESOURCE(logic);
}
int MvvmApp::startApp(const QStringList& arguments)
{
QCommandLineParser parser;
parser.addVersionOption();
parser.addHelpOption();
//add more options
//shows help or version automatically
if(!autoParse(parser, arguments))
{
return EXIT_SUCCESS;
}
//show a viewmodel to complete the startup
show<MainViewModel>();
return EXIT_SUCCESS;
}

17
logic/src/utils/ColorImageProvider.cpp

@ -0,0 +1,17 @@
#include "utils/ColorImageProvider.h"
ColorImageProvider::ColorImageProvider() : QQuickImageProvider(QQuickImageProvider::Pixmap)
{
}
QPixmap ColorImageProvider::requestPixmap(const QString& id, QSize* size,
const QSize& requestedSize)
{
return _pixmap;
}
void ColorImageProvider::setPic(QPixmap pixmap, quint32 width, quint32 height)
{
_pixmap = pixmap;
_pixmap = _pixmap.scaled(width, height, Qt::AspectRatioMode::KeepAspectRatio);
}

160
logic/src/viewModel/BaseViewModel.cpp

@ -0,0 +1,160 @@
#include "include/viewModel/BaseViewModel.h"
#include "viewModel/UsmMimic.h"
/*************************************************************************************************/
/**
* @brief BaseViewModel::BaseViewModel
* @param parent
*/
/*************************************************************************************************/
BaseViewModel::BaseViewModel()
{
_awaitingSend = 1;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::start
*/
/*************************************************************************************************/
void BaseViewModel::start()
{
setInitialValue();
allowSending();
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::changeMode
* @param minimal
*/
/*************************************************************************************************/
void BaseViewModel::changeMode(bool minimal)
{
if(minimal)
{
turnOnMinimalMode();
}
else
{
turnOffMinimalMode();
}
_isMinimal = minimal;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::send
*/
/*************************************************************************************************/
void BaseViewModel::send(bool sync)
{
if(isSendingAllowed())
{
prepareData();
sendData(sync);
}
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::arithmeticSeries
*/
/*************************************************************************************************/
QList<QString> BaseViewModel::arithmeticSeries(float start, float end, float step, int precision)
{
QList<QString> series;
float temp = start;
for(temp = start; temp <= end; temp += step)
{
series.append({QString::number(temp, 'g', precision)});
}
return series;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::arithmeticSeries
* @param start
* @param end
* @param step
* @return
*/
/*************************************************************************************************/
QList<QString> BaseViewModel::arithmeticSeries(int start, int end, int step)
{
QList<QString> series;
int temp = start;
for(temp = start; temp <= end; temp += step)
{
series.append({QString::number(temp)});
}
return series;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::allowSending
*/
/*************************************************************************************************/
void BaseViewModel::allowSending()
{
_awaitingSend--;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::blockSending
*/
/*************************************************************************************************/
void BaseViewModel::blockSending()
{
_awaitingSend++;
}
/*************************************************************************************************/
/**
* @brief BaseViewModel::isSendingPossible
*/
/*************************************************************************************************/
bool BaseViewModel::isSendingAllowed()
{
return _awaitingSend == 0;
}
/*************************************************************************************************/
/**
* @brief This function change differential value to absolute value
* @param estimated value is previous value plus diff value
* @param lowerBound is minimum range of spinBox
* @param upperBound is maximum range of spinBox
* @return next valid value
*/
/*************************************************************************************************/
int BaseViewModel::getNextValue(const int estimatedValue, const int lowerBound,
const int upperBound)
{
int result = estimatedValue;
if(result > upperBound)
{
result = upperBound;
}
else if(result < lowerBound)
{
result = lowerBound;
}
return result;
}

136
logic/src/viewModel/MainViewModel.cpp

@ -0,0 +1,136 @@
#include <QtMvvmCore/SettingsViewModel>
#include <QtConcurrent/QtConcurrent>
#include "viewModel/MainViewModel.h"
#include "viewModel/UsmMimic.h"
MainViewModel* MainViewModel::_instance;
/*************************************************************************************************/
/**
* @brief Hook is called after all objects init are called
* @details The purpose of this hook is mainly to start any internal
* thread and functionality if any exist, requests can work here
* @return nething
*/
/*************************************************************************************************/
MainViewModel::MainViewModel(QObject* parent) :
ViewModel(parent)
{
_instance = this;
_vms.push_back(_probeViewModel);
_vms.push_back(_bModeDisplayViewModel);
_vms.push_back(_bModeSettingViewModel);
_vms.push_back(_mModeDisplayViewModel);
_vms.push_back(_mModeSettingViewModel);
_vms.push_back(_cineDisplayViewModel);
_vms.push_back(_cineSettingViewModel);
_vms.push_back(_tgcViewModel);
_vms.push_back(_simulationViewModel);
_vms.push_back(_trackballViewModel);
_vms.push_back(_imageViewModel);
_vms.push_back(_userViewModel);
_vms.push_back(_dialogViewModel);
_vms.push_back(_measureViewModel);
}
void MainViewModel::close()
{
qDebug() << "we are closing guys";
}
void MainViewModel::onConfirmButton()
{
emit showMessageBox();
}
/*************************************************************************************************/
/**
* @brief Hook is called after all objects init are called
* @details The purpose of this hook is mainly to start any internal
* thread and functionality if any exist, requests can work here
* @return nething
*/
/*************************************************************************************************/
MainViewModel* MainViewModel::getInstance()
{
return _instance;
}
/*************************************************************************************************/
/**
* @brief Hook is called after all objects init are called
* @details The purpose of this hook is mainly to start any internal
* thread and functionality if any exist, requests can work here
* @return nething
*/
/*************************************************************************************************/
void MainViewModel::init()
{
_probeViewModel->init();
_bModeDisplayViewModel->init();
_bModeSettingViewModel->init();
_mModeDisplayViewModel->init();
_mModeSettingViewModel->init();
_cineDisplayViewModel->init();
_cineSettingViewModel->init();
_tgcViewModel->init();
_simulationViewModel->init();
_trackballViewModel->init();
_imageViewModel->init();
_userViewModel->init();
_dialogViewModel->init();
_measureViewModel->init();
}
/*************************************************************************************************/
/**
* @brief Hook is called after all objects init are called
* @details The purpose of this hook is mainly to start any internal
* thread and functionality if any exist, requests can work here
* @return nething
*/
/*************************************************************************************************/
void MainViewModel::start()
{
_probeViewModel->start();
_bModeDisplayViewModel->start();
_bModeSettingViewModel->start();
_mModeDisplayViewModel->start();
_mModeSettingViewModel->start();
_cineDisplayViewModel->start();
_cineSettingViewModel->start();
_tgcViewModel->start();
_simulationViewModel->start();
_trackballViewModel->start();
_imageViewModel->start();
_userViewModel->start();
_dialogViewModel->start();
_measureViewModel->start();
}

63
logic/src/viewModel/bMode/display/BModeDisplayViewModel.cpp

@ -0,0 +1,63 @@
#include "viewModel/bMode/display/BModeDisplayViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(BModeDisplayViewModel)
/*************************************************************************************************/
BModeDisplayViewModel::BModeDisplayViewModel()
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::init()
{
connect(_grayMapManager, &GrayMapManager::grayMapReady, this,
&BModeDisplayViewModel::newGrayMap);
connect(_tintManager, &TintMapManager::tintMapReady, this,
&BModeDisplayViewModel::newTintMap);
}
/*************************************************************************************************/
void BModeDisplayViewModel::setInitialValue()
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::prepareData()
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::turnOffMinimalMode()
{
}
/*************************************************************************************************/
void BModeDisplayViewModel::newTintMap()
{
send();
}
/*************************************************************************************************/
void BModeDisplayViewModel::newGrayMap()
{
_tintManager->grayMapChanged(_grayMapManager->getGrayMapData());
send();
}

71
logic/src/viewModel/bMode/display/gray/GrayMap.cpp

@ -0,0 +1,71 @@
#include "viewModel/bMode/display/gray/GrayMap.h"
#include "viewModel/exception/VmError.h"
#define GRAY_MAP_LENGTH 256
GrayMap::GrayMap()
{
}
/*************************************************************************************************/
void GrayMap::init(QList<qint32> grayMap, quint32 number)
{
if(grayMap.length() != GRAY_MAP_LENGTH)
{
}
_grayMap.clear();
_knobData.clear();
for(auto i = 0; i < grayMap.length(); i++)
{
_grayMap.append(static_cast<quint8>(grayMap[i]));
}
name(QString::number(number + 1));
icon(QString("qrc:/UI/Images/GrayMap/grayMap%1.svg").arg(number));
_knobData.append({0, 36, 73, 109, 146, 182, 219, 255, _grayMap[0], _grayMap[36], _grayMap[73],
_grayMap[109], _grayMap[146], _grayMap[182], _grayMap[219], _grayMap[255]});
}
/*************************************************************************************************/
void GrayMap::init(QList<qint32> grayMap, QList<qint32> knobData, quint32 number)
{
init(grayMap, number);
_knobData.clear();
_knobData.append(static_cast<quint8>(knobData[0]));
_knobData.append(static_cast<quint8>(knobData[1]));
_knobData.append(static_cast<quint8>(knobData[2]));
_knobData.append(static_cast<quint8>(knobData[3]));
_knobData.append(static_cast<quint8>(knobData[4]));
_knobData.append(static_cast<quint8>(knobData[5]));
_knobData.append(static_cast<quint8>(knobData[6]));
_knobData.append(static_cast<quint8>(knobData[7]));
_knobData.append(_grayMap[knobData[0]]);
_knobData.append(_grayMap[knobData[1]]);
_knobData.append(_grayMap[knobData[2]]);
_knobData.append(_grayMap[knobData[3]]);
_knobData.append(_grayMap[knobData[4]]);
_knobData.append(_grayMap[knobData[5]]);
_knobData.append(_grayMap[knobData[6]]);
_knobData.append(_grayMap[knobData[7]]);
name("User " + QString::number(number));
}
/*************************************************************************************************/
QList<quint8> GrayMap::value()
{
return _grayMap;
}
/*************************************************************************************************/
QList<quint8> GrayMap::knobData()
{
return _knobData;
}

209
logic/src/viewModel/bMode/display/gray/GrayMapManager.cpp

@ -0,0 +1,209 @@
#include "viewModel/bMode/display/gray/GrayMapManager.h"
#include <QRandomGenerator>
#define GRAY_MAP_COUNT 18
#define USER_GRAY_MAP_COUNT 3
#define caseReturnGrayMap(x) case x: \
if(_grayMap ## x == Q_NULLPTR) \
{ \
grayMap ## x(new GrayMap); \
} \
return _grayMap ## x;
#define INIT_USER_GRAY_MAP(NUM) \
if(_grayMapUser ## NUM != Q_NULLPTR) \
{ \
delete _grayMapUser ## NUM; \
} \
grayMapUser ## NUM(new GrayMap); \
_grayMapUser ## NUM->init(data.grayMapData[NUM - 1], data.knobData[NUM - 1], NUM);
/*************************************************************************************************/
GrayMap* GrayMapManager::getGrayMap(qint32 index)
{
switch(index)
{
caseReturnGrayMap(0)
caseReturnGrayMap(1)
caseReturnGrayMap(2)
caseReturnGrayMap(3)
caseReturnGrayMap(4)
caseReturnGrayMap(5)
caseReturnGrayMap(6)
caseReturnGrayMap(7)
caseReturnGrayMap(8)
caseReturnGrayMap(9)
caseReturnGrayMap(10)
caseReturnGrayMap(11)
caseReturnGrayMap(12)
caseReturnGrayMap(13)
caseReturnGrayMap(14)
caseReturnGrayMap(15)
caseReturnGrayMap(16)
caseReturnGrayMap(17)
case 18:
if(_grayMapUser1 == Q_NULLPTR)
{
grayMapUser1(new GrayMap);
}
return _grayMapUser1;
case 19:
if(_grayMapUser2 == Q_NULLPTR)
{
grayMapUser2(new GrayMap);
}
return _grayMapUser2;
case 20:
if(_grayMapUser3 == Q_NULLPTR)
{
grayMapUser3(new GrayMap);
}
return _grayMapUser3;
}
}
/*************************************************************************************************/
void GrayMapManager::initDefaultGrayMaps()
{
}
/*************************************************************************************************/
void GrayMapManager::initUserGrayMaps(bool throwExp)
{
}
/*************************************************************************************************/
GrayMapManager::GrayMapManager()
{
connect(_knobManager, &KnobManager::grayCurveReady, this, &GrayMapManager::newCustomGrayMap);
for(auto i = 0; i < 18; i++)
{
QList<qint32> g;
QRandomGenerator f;
for(auto j = 0; j < 256; j++)
g.append(f.bounded(256));
auto t = getGrayMap(i);
t->init(g, i);
}
}
/*************************************************************************************************/
void GrayMapManager::setUserName(const QString& userName)
{
_userName = userName;
}
/*************************************************************************************************/
void GrayMapManager::init()
{
initDefaultGrayMaps();
initUserGrayMaps(true);
}
/*************************************************************************************************/
QList<quint8> GrayMapManager::getGrayMapData()
{
return intListToU8List(_currentGrayMapData);
}
/*************************************************************************************************/
void GrayMapManager::setIndex(qint32 index)
{
grayMap(index);
}
/*************************************************************************************************/
void GrayMapManager::saveGrayMap(int slotNumber)
{
}
/*************************************************************************************************/
void GrayMapManager::grayMapHandle()
{
if(isCustomGrayMapSelected())
{
initUserGrayMaps(false);
}
auto gm = getGrayMap(grayMap());
currentGrayMapData(u8ListToIntList(gm->value()));
setKnobs(gm);
}
/*************************************************************************************************/
void GrayMapManager::currentGrayMapDataHandle()
{
emit grayMapReady();
}
/*************************************************************************************************/
void GrayMapManager::grayMapResetHandle()
{
grayMapHandle();
}
/*************************************************************************************************/
void GrayMapManager::newCustomGrayMap(const QList<quint8>& grayMap)
{
currentGrayMapData(u8ListToIntList(grayMap));
}
/*************************************************************************************************/
void GrayMapManager::setKnobs(GrayMap* grayMap)
{
auto data = grayMap->knobData();
QPoint pos1(data[0], data[8]);
QPoint pos2(data[1], data[9]);
QPoint pos3(data[2], data[10]);
QPoint pos4(data[3], data[11]);
QPoint pos5(data[4], data[12]);
QPoint pos6(data[5], data[13]);
QPoint pos7(data[6], data[14]);
QPoint pos8(data[7], data[15]);
_knobManager->setKnobData(pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8);
}
/*************************************************************************************************/
QList<quint8> GrayMapManager::intListToU8List(QList<int> list)
{
QList<quint8> l;
for(auto i = 0; i < list.length(); i++)
{
l.append(static_cast<quint8>(list[i]));
}
return l;
}
/*************************************************************************************************/
QList<int> GrayMapManager::u8ListToIntList(QList<quint8> list)
{
QList<int> l;
for(auto i = 0; i < list.length(); i++)
{
l.append(static_cast<int>(list[i]));
}
return l;
}
/*************************************************************************************************/
bool GrayMapManager::isCustomGrayMapSelected()
{
return grayMap() >= GRAY_MAP_COUNT;
}

25
logic/src/viewModel/bMode/display/gray/Knob.cpp

@ -0,0 +1,25 @@
#include "viewModel/bMode/display/gray/Knob.h"
#include <QPoint>
Knob::Knob()
{
}
/*************************************************************************************************/
QPoint Knob::getPos()
{
return QPoint(_posX, _posY);
}
/*************************************************************************************************/
void Knob::posXHandle()
{
emit knobDataReady();
}
/*************************************************************************************************/
void Knob::posYHandle()
{
emit knobDataReady();
}

131
logic/src/viewModel/bMode/display/gray/KnobManager.cpp

@ -0,0 +1,131 @@
#include "viewModel/bMode/display/gray/KnobManager.h"
#define caseReturnKnob(x) case x: \
if(_knob ## x == Q_NULLPTR) \
{ \
knob ## x(new Knob); \
} \
return _knob ## x;
/*************************************************************************************************/
Knob* KnobManager::getKnob(qint32 index)
{
switch(index)
{
caseReturnKnob(1)
caseReturnKnob(2)
caseReturnKnob(3)
caseReturnKnob(4)
caseReturnKnob(5)
caseReturnKnob(6)
caseReturnKnob(7)
caseReturnKnob(8)
}
}
/*************************************************************************************************/
void KnobManager::connectKnobs()
{
for(auto i = 1; i < 9; i++)
{
auto knob = getKnob(i);
connect(knob, &Knob::knobDataReady, this, &KnobManager::newKnobData);
}
}
/*************************************************************************************************/
void KnobManager::disconnectKnobs()
{
for(auto i = 1; i < 9; i++)
{
auto knob = getKnob(i);
disconnect(knob, &Knob::knobDataReady, this, &KnobManager::newKnobData);
}
}
/*************************************************************************************************/
KnobManager::KnobManager()
{
}
/*************************************************************************************************/
void KnobManager::setKnobData(const QPoint& p1,
const QPoint& p2,
const QPoint& p3,
const QPoint& p4,
const QPoint& p5,
const QPoint& p6,
const QPoint& p7,
const QPoint& p8)
{
disconnectKnobs();
_knob1->posX(p1.x());
_knob1->posY(p1.y());
_knob2->posX(p2.x());
_knob2->posY(p2.y());
_knob3->posX(p3.x());
_knob3->posY(p3.y());
_knob4->posX(p4.x());
_knob4->posY(p4.y());
_knob5->posX(p5.x());
_knob5->posY(p5.y());
_knob6->posX(p6.x());
_knob6->posY(p6.y());
_knob7->posX(p7.x());
_knob7->posY(p7.y());
_knob8->posX(p8.x());
_knob8->posY(p8.y());
connectKnobs();
}
/*************************************************************************************************/
QList<qint32> KnobManager::getKnobData()
{
auto pos1 = getKnob(1)->getPos();
auto pos2 = getKnob(2)->getPos();
auto pos3 = getKnob(3)->getPos();
auto pos4 = getKnob(4)->getPos();
auto pos5 = getKnob(5)->getPos();
auto pos6 = getKnob(6)->getPos();
auto pos7 = getKnob(7)->getPos();
auto pos8 = getKnob(8)->getPos();
QList<qint32> knob;
knob.append(pos1.x());
knob.append(pos2.x());
knob.append(pos3.x());
knob.append(pos4.x());
knob.append(pos5.x());
knob.append(pos6.x());
knob.append(pos7.x());
knob.append(pos8.x());
return knob;
}
/*************************************************************************************************/
void KnobManager::newKnobData()
{
auto pos1 = getKnob(1)->getPos();
auto pos2 = getKnob(2)->getPos();
auto pos3 = getKnob(3)->getPos();
auto pos4 = getKnob(4)->getPos();
auto pos5 = getKnob(5)->getPos();
auto pos6 = getKnob(6)->getPos();
auto pos7 = getKnob(7)->getPos();
auto pos8 = getKnob(8)->getPos();
}

35
logic/src/viewModel/bMode/display/tint/BaseTintMap.cpp

@ -0,0 +1,35 @@
#include "viewModel/bMode/display/tint/BaseTintMap.h"
BaseTintMap::BaseTintMap()
{
}
/*************************************************************************************************/
void BaseTintMap::setTintColor(quint8 r, quint8 g, quint8 b)
{
_r = r;
_g = g;
_b = b;
}
/*************************************************************************************************/
QString BaseTintMap::toString()
{
QString str = "#";
str += QString("%1").arg(_r, 2, 16, QLatin1Char('0'));
str += QString("%1").arg(_g, 2, 16, QLatin1Char('0'));
str += QString("%1").arg(_b, 2, 16, QLatin1Char('0'));
return str;
}
/*************************************************************************************************/
QList<quint8> BaseTintMap::value()
{
QList<quint8> list;
list.append(_r);
list.append(_g);
list.append(_b);
return list;
}

40
logic/src/viewModel/bMode/display/tint/TintMap.cpp

@ -0,0 +1,40 @@
#include "viewModel/bMode/display/tint/TintMap.h"
#include "viewModel/exception/VmError.h"
#define TINT_LENGTH 256
#define TINT_COLOR_LENGTH 3
TintMap::TintMap()
{
}
/*************************************************************************************************/
TintMap::~TintMap()
{
}
/*************************************************************************************************/
void TintMap::init(QList<QList<qint32> > tint)
{
}
/*************************************************************************************************/
QString TintMap::toString(qint32 index)
{
return _tintMap[index].toString();
}
/*************************************************************************************************/
QList<QList<quint8> > TintMap::value()
{
QList<QList<quint8> > list;
for(auto i = 0; i < _tintMap.length(); i++)
{
list.append(_tintMap[i].value());
}
return list;
}

82
logic/src/viewModel/bMode/display/tint/TintMapManager.cpp

@ -0,0 +1,82 @@
#include "viewModel/bMode/display/tint/TintMapManager.h"
#include "viewModel/exception/VmError.h"
#define TINT_MAP_COUNT 11
#define caseReturnTintMap(x) case x: \
if(_tintMap ## x == Q_NULLPTR) \
{ \
tintMap ## x(new TintMap); \
} \
return _tintMap ## x;
TintMap* TintMapManager::getTintMap(qint32 index)
{
switch(index)
{
caseReturnTintMap(0)
caseReturnTintMap(1)
caseReturnTintMap(2)
caseReturnTintMap(3)
caseReturnTintMap(4)
caseReturnTintMap(5)
caseReturnTintMap(6)
caseReturnTintMap(7)
caseReturnTintMap(8)
caseReturnTintMap(9)
caseReturnTintMap(10)
}
}
/*************************************************************************************************/
void TintMapManager::calcTintBar()
{
auto tint = getTintMap(tintMap());
tintMapColor().clear();
QStringList temp;
foreach(auto grayMap, _grayMapData)
{
temp.append(tint->toString(grayMap));
}
tintMapColor(temp);
}
/*************************************************************************************************/
TintMapManager::TintMapManager()
{
}
/*************************************************************************************************/
void TintMapManager::grayMapChanged(QList<quint8> grayMap)
{
_grayMapData = grayMap;
calcTintBar();
}
/*************************************************************************************************/
QList<QList<quint8> > TintMapManager::getTintMapData()
{
auto tm = getTintMap(tintMap());
return tm->value();
}
/*************************************************************************************************/
void TintMapManager::tintMapHandle()
{
calcTintBar();
emit tintMapReady();
}
/*************************************************************************************************/
void TintMapManager::setIndex(qint32 index)
{
tintMap(index);
}

224
logic/src/viewModel/bMode/setting/BModeSettingViewModel.cpp

@ -0,0 +1,224 @@
#include "viewModel/bMode/setting/BModeSettingViewModel.h"
#include <QDebug>
#include <cmath>
#include <float.h>
#include <QtMath>
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(BModeSettingViewModel)
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::BModeSettingViewModel
* @param parent
*/
/*************************************************************************************************/
BModeSettingViewModel::BModeSettingViewModel()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::init
*/
/*************************************************************************************************/
void BModeSettingViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::setInitialValue
*/
/*************************************************************************************************/
void BModeSettingViewModel::setInitialValue()
{
sriValues(arithmeticSeries(1, 5, 1));
persistValues(arithmeticSeries(1, 8, 1));
frameFilterValues(arithmeticSeries(1, 6, 1));
criValues(arithmeticSeries(1, 8, 1));
aoValues(arithmeticSeries(1, 100, 1));
rejectValues(arithmeticSeries(0, 255, 5));
dynamicContrastValues(arithmeticSeries(1, 12, 1));
gainValues(arithmeticSeries(-25, 15, 1));
hdZoom(false);
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::sendData
*/
/*************************************************************************************************/
void BModeSettingViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::prepareData
*/
/*************************************************************************************************/
void BModeSettingViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::prepareData
*/
/*************************************************************************************************/
void BModeSettingViewModel::turnOnMinimalMode()
{
blockSending();
auto enable = false;
lineFilterEnable(enable);
ffcEnable(enable);
hiEnable(enable);
aoEnable(enable);
lineDensityEnable(enable);
virtualConvexEnable(enable);
angleEnable(enable);
frequencyEnable(enable);
depthEnable(enable);
focusNumberEnable(enable);
focusPointsEnable(enable);
hdZoomEnable(enable);
otiEnable(enable);
maxAngleEnable(enable);
maxAngleVisible(enable);
angleVisible(enable);
criEnable(enable);
allowSending();
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void BModeSettingViewModel::turnOffMinimalMode()
{
blockSending();
auto enable = true;
lineFilterEnable(enable);
ffcEnable(enable);
hiEnable(enable);
aoEnable(enable);
lineDensityEnable(enable);
virtualConvexEnable(enable);
angleEnable(enable);
frequencyEnable(enable);
depthEnable(enable);
focusNumberEnable(enable);
focusPointsEnable(enable);
hdZoomEnable(enable);
otiEnable(enable);
maxAngleEnable(enable);
criEnable(enable);
allowSending();
}
void BModeSettingViewModel::criBypassHandle()
{
//_eventSender->sendSyncRequest(ECommandType::criChanged, SSM_NAME, {getCriEnableStatus()});
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::ffcHandle
*/
/*************************************************************************************************/
void BModeSettingViewModel::ffcHandle()
{
if(_ffc)
{
hi(false);
}
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::hiHandle
*/
/*************************************************************************************************/
void BModeSettingViewModel::hiHandle()
{
if(_hi)
{
ffc(false);
}
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::frequencyHandle
*/
/*************************************************************************************************/
void BModeSettingViewModel::frequencyHandle()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::maxAngleHandle
*/
/*************************************************************************************************/
void BModeSettingViewModel::maxAngleHandle()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::focusNumberHandle
*/
/*************************************************************************************************/
void BModeSettingViewModel::focusNumberHandle()
{
}
/*************************************************************************************************/
/**
* @brief BModeSettingViewModel::freezeChanged
* @param freeze
*/
/*************************************************************************************************/
void BModeSettingViewModel::freezeChanged(bool freeze)
{
}
/*************************************************************************************************/
void BModeSettingViewModel::lineFilterHandle()
{
}
void BModeSettingViewModel::lineFilterBypassHandle()
{
}
void BModeSettingViewModel::enhanceHandle()
{
enhanceOff(enhance() == 0);
}

71
logic/src/viewModel/cine/display/CineDisplayViewModel.cpp

@ -0,0 +1,71 @@
#include "viewModel/cine/display/CineDisplayViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(CineDisplayViewModel)
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::CineDisplayViewModel
* @param parent
*/
/*************************************************************************************************/
CineDisplayViewModel::CineDisplayViewModel()
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::init
*/
/*************************************************************************************************/
void CineDisplayViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::setInitialValue
*/
/*************************************************************************************************/
void CineDisplayViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::sendData
*/
/*************************************************************************************************/
void CineDisplayViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::prepareData
*/
/*************************************************************************************************/
void CineDisplayViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::prepareData
*/
/*************************************************************************************************/
void CineDisplayViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief CineDisplayViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void CineDisplayViewModel::turnOffMinimalMode()
{
}

71
logic/src/viewModel/cine/setting/CineSettingViewModel.cpp

@ -0,0 +1,71 @@
#include "viewModel/cine/setting/CineSettingViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(CineSettingViewModel)
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::CineSettingViewModel
* @param parent
*/
/*************************************************************************************************/
CineSettingViewModel::CineSettingViewModel()
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::init
*/
/*************************************************************************************************/
void CineSettingViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::setInitialValue
*/
/*************************************************************************************************/
void CineSettingViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::sendData
*/
/*************************************************************************************************/
void CineSettingViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::prepareData
*/
/*************************************************************************************************/
void CineSettingViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::prepareData
*/
/*************************************************************************************************/
void CineSettingViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief CineSettingViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void CineSettingViewModel::turnOffMinimalMode()
{
}

10
logic/src/viewModel/image/BImageContainer.cpp

@ -0,0 +1,10 @@
#include "viewModel/image/BImageContainer.h"
#define FOCUS_POINT_X 15
#define RULER_X 5
#define ONE_CM 0.01f
#define RULER_PIXEL_LIMIT 55
BImageContainer::BImageContainer()
{
}

119
logic/src/viewModel/image/ImageViewModel.cpp

@ -0,0 +1,119 @@
#include "viewModel/image/ImageViewModel.h"
#include <QPixmap>
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(ImageViewModel)
/*************************************************************************************************/
ImageViewModel::ImageViewModel()
{
imageProviderB = new ColorImageProvider();
imageProviderM = new ColorImageProvider();
imageProviderAnnot = new ColorImageProvider();
_activeImageB = _image1;
}
/*************************************************************************************************/
void ImageViewModel::init()
{
}
/*************************************************************************************************/
void ImageViewModel::setInitialValue()
{
scaleValues(arithmeticSeries(0.8f, 3.4f, 0.1f, 2));
scale(2);
}
/*************************************************************************************************/
void ImageViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
void ImageViewModel::prepareData()
{
}
/*************************************************************************************************/
void ImageViewModel::turnOnMinimalMode()
{
blockSending();
auto enable = false;
sriBEnable(enable);
allowSending();
}
/*************************************************************************************************/
void ImageViewModel::turnOffMinimalMode()
{
}
/*************************************************************************************************/
void ImageViewModel::mirrorHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::flipHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::scaleHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::sriBHandle()
{
if(sriB())
{
}
}
/*************************************************************************************************/
void ImageViewModel::sonoBImageWHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::sonoBImageHHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::sonoMImageWHandle()
{
}
/*************************************************************************************************/
void ImageViewModel::sonoMImageHHandle()
{
}
void ImageViewModel::singleHandle()
{
}
void ImageViewModel::dualHandle()
{
}
void ImageViewModel::quadHandle()
{
}

13
logic/src/viewModel/image/MImageContainer.cpp

@ -0,0 +1,13 @@
#include "viewModel/image/MImageContainer.h"
#define HOR_RULER_Y_OFFSET -10
#define VER_RULER_Y_OFFSET 2
#define IMAGE_Y_OFFSET 1
#define IMAGE_X_OFFSET 20
#define RIGHT_BORDER_GAURD 2
#define ONE_CM 0.01f
#define RULER_PIXEL_LIMIT 55
MImageContainer::MImageContainer()
{
}

58
logic/src/viewModel/mMode/display/MModeDisplayViewModel.cpp

@ -0,0 +1,58 @@
#include "viewModel/mMode/display/MModeDisplayViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(MModeDisplayViewModel)
/*************************************************************************************************/
MModeDisplayViewModel::MModeDisplayViewModel()
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::init()
{
connect(_grayMapManager, &GrayMapManager::grayMapReady, this,
&MModeDisplayViewModel::newGrayMap);
connect(_tintManager, &TintMapManager::tintMapReady, this,
&MModeDisplayViewModel::newTintMap);
}
/*************************************************************************************************/
void MModeDisplayViewModel::setInitialValue()
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::prepareData()
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::turnOffMinimalMode()
{
}
/*************************************************************************************************/
void MModeDisplayViewModel::newTintMap()
{
send();
}
/*************************************************************************************************/
void MModeDisplayViewModel::newGrayMap()
{
_tintManager->grayMapChanged(_grayMapManager->getGrayMapData());
send();
}

77
logic/src/viewModel/mMode/setting/MModeSettingViewModel.cpp

@ -0,0 +1,77 @@
#include "viewModel/mMode/setting/MModeSettingViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(MModeSettingViewModel)
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::MModeSettingViewModel
* @param parent
*/
/*************************************************************************************************/
MModeSettingViewModel::MModeSettingViewModel()
{
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::init
*/
/*************************************************************************************************/
void MModeSettingViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::setInitialValue
*/
/*************************************************************************************************/
void MModeSettingViewModel::setInitialValue()
{
enhanceValues(arithmeticSeries(1, 5, 1));
rejectValues(arithmeticSeries(0, 255, 5));
dynamicContrastValues(arithmeticSeries(1, 12, 1));
gainValues(arithmeticSeries(-25, 15, 1));
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::sendData
*/
/*************************************************************************************************/
void MModeSettingViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::prepareData
*/
/*************************************************************************************************/
void MModeSettingViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::prepareData
*/
/*************************************************************************************************/
void MModeSettingViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief MModeSettingViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void MModeSettingViewModel::turnOffMinimalMode()
{
}

98
logic/src/viewModel/measurement/MeasureViewModel.cpp

@ -0,0 +1,98 @@
#include "viewModel/measurement/MeasureViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(MeasureViewModel)
/*************************************************************************************************/
/**
* @brief MeasureViewModel::MeasureViewModel
* @param parent
*/
/*************************************************************************************************/
MeasureViewModel::MeasureViewModel()
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::init
*/
/*************************************************************************************************/
void MeasureViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::setInitialValue
*/
/*************************************************************************************************/
void MeasureViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::sendData
*/
/*************************************************************************************************/
void MeasureViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::prepareData
*/
/*************************************************************************************************/
void MeasureViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::prepareData
*/
/*************************************************************************************************/
void MeasureViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief MeasureViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void MeasureViewModel::turnOffMinimalMode()
{
}
/*************************************************************************************************/
void MeasureViewModel::currentStudyPage0Handle()
{
if(currentStudyPage0() == 0)
{
parameter0Title("Dist. 2 Point");
parameter1Title("Ratio D1/D2");
parameter2Title("Stenosis %Dist.");
parameter3Title("Dist. 2Line");
}
else
{
parameter0Title("Ellipse");
parameter1Title("Ratio A1/A2");
parameter2Title("Area% Stenosis");
parameter3Title("Area 2 Dist.");
}
}
void MeasureViewModel::clearAllHandle()
{
}
void MeasureViewModel::deleteLastHandle()
{
}

137
logic/src/viewModel/probe/ProbeViewModel.cpp

@ -0,0 +1,137 @@
#include "viewModel/probe/ProbeViewModel.h"
#include "viewModel/UsmMimic.h"
#include "viewModel/user/UserViewModel.h"
SINGLETON_DEF(ProbeViewModel)
/*************************************************************************************************/
/**
* @brief ProbeViewModel::ProbeViewModel
* @param parent
*/
/*************************************************************************************************/
ProbeViewModel::ProbeViewModel()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::init
*/
/*************************************************************************************************/
void ProbeViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::setInitialValue
*/
/*************************************************************************************************/
void ProbeViewModel::setInitialValue()
{
savedProbeIndex(NOT_SELECTED);
savedFolderIndex(NOT_SELECTED);
savedPresetIndex(NOT_SELECTED);
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::sendData
*/
/*************************************************************************************************/
void ProbeViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::prepareData
*/
/*************************************************************************************************/
void ProbeViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::prepareData
*/
/*************************************************************************************************/
void ProbeViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void ProbeViewModel::turnOffMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::exitHandle
*/
/*************************************************************************************************/
void ProbeViewModel::isProbePageShownHandle()
{
if(!isProbePageShown())
{
blockSending();
currentProbe(savedProbeIndex());
currentFolder(savedFolderIndex());
currentPreset(savedPresetIndex());
allowSending();
}
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::saveAndExitHandle
*/
/*************************************************************************************************/
void ProbeViewModel::saveAndExitHandle()
{
blockSending();
savedProbeIndex(currentProbe());
savedFolderIndex(currentFolder());
savedPresetIndex(currentPreset());
allowSending();
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::currentProbeHandle
*/
/*************************************************************************************************/
void ProbeViewModel::currentProbeHandle()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::currentFolderHandle
*/
/*************************************************************************************************/
void ProbeViewModel::currentFolderHandle()
{
}
/*************************************************************************************************/
/**
* @brief ProbeViewModel::currentPresetHandle
*/
/*************************************************************************************************/
void ProbeViewModel::currentPresetHandle()
{
}

76
logic/src/viewModel/simulation/SimulationViewModel.cpp

@ -0,0 +1,76 @@
#include "viewModel/simulation/SimulationViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(SimulationViewModel)
/*************************************************************************************************/
/**
* @brief SimulationViewModel::SimulationViewModel
* @param parent
*/
/*************************************************************************************************/
SimulationViewModel::SimulationViewModel()
{
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::init
*/
/*************************************************************************************************/
void SimulationViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::setInitialValue
*/
/*************************************************************************************************/
void SimulationViewModel::setInitialValue()
{
rxTesterMode(false);
oneshot(false);
autoIncrement(false);
simulationTest(false);
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::sendData
*/
/*************************************************************************************************/
void SimulationViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::prepareData
*/
/*************************************************************************************************/
void SimulationViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::prepareData
*/
/*************************************************************************************************/
void SimulationViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief SimulationViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void SimulationViewModel::turnOffMinimalMode()
{
}

83
logic/src/viewModel/tgc/TgcViewModel.cpp

@ -0,0 +1,83 @@
#include "viewModel/tgc/TgcViewModel.h"
#include "viewModel/UsmMimic.h"
#define TGC_COUNT 9
#define USER_TGC_COUNT 3
SINGLETON_DEF(TgcViewModel)
/*************************************************************************************************/
/**
* @brief TgcViewModel::TgcViewModel
* @param parent
*/
/*************************************************************************************************/
TgcViewModel::TgcViewModel()
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::init
*/
/*************************************************************************************************/
void TgcViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::setInitialValue
*/
/*************************************************************************************************/
void TgcViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::sendData
*/
/*************************************************************************************************/
void TgcViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::prepareData
*/
/*************************************************************************************************/
void TgcViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::prepareData
*/
/*************************************************************************************************/
void TgcViewModel::turnOnMinimalMode()
{
blockSending();
enabled(false);
allowSending();
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void TgcViewModel::turnOffMinimalMode()
{
blockSending();
enabled(true);
allowSending();
}

70
logic/src/viewModel/trackball/TrackballViewModel.cpp

@ -0,0 +1,70 @@
#include "viewModel/trackball/TrackballViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(TrackballViewModel)
/*************************************************************************************************/
/**
* @brief TrackballViewModel::TrackballViewModel
* @param parent
*/
/*************************************************************************************************/
TrackballViewModel::TrackballViewModel()
{
}
/*************************************************************************************************/
/**
* @brief TrackballViewModel::init
*/
/*************************************************************************************************/
void TrackballViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief TrackballViewModel::setInitialValue
*/
/*************************************************************************************************/
void TrackballViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief TrackballViewModel::sendData
*/
/*************************************************************************************************/
void TrackballViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief TgcViewModel::prepareData
*/
/*************************************************************************************************/
void TrackballViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief TrackballViewModel::prepareData
*/
/*************************************************************************************************/
void TrackballViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief TrackballViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void TrackballViewModel::turnOffMinimalMode()
{
}

86
logic/src/viewModel/user/DialogViewModel.cpp

@ -0,0 +1,86 @@
#include "viewModel/user/DialogViewModel.h"
#include "viewModel/UsmMimic.h"
#include "QTimer"
SINGLETON_DEF(DialogViewModel)
/*************************************************************************************************/
/**
* @brief DialogViewModel::DialogViewModel
* @param parent
*/
/*************************************************************************************************/
DialogViewModel::DialogViewModel()
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::init
*/
/*************************************************************************************************/
void DialogViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::setInitialValue
*/
/*************************************************************************************************/
void DialogViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::sendData
*/
/*************************************************************************************************/
void DialogViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::prepareData
*/
/*************************************************************************************************/
void DialogViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::prepareData
*/
/*************************************************************************************************/
void DialogViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief DialogViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void DialogViewModel::turnOffMinimalMode()
{
}
void DialogViewModel::btn1Clicked()
{
}
void DialogViewModel::btn2Clicked()
{
}
void DialogViewModel::btn3Clicked()
{
}

79
logic/src/viewModel/user/UserViewModel.cpp

@ -0,0 +1,79 @@
#include "viewModel/user/UserViewModel.h"
#include "viewModel/UsmMimic.h"
SINGLETON_DEF(UserViewModel)
/*************************************************************************************************/
/**
* @brief UserViewModel::UserViewModel
* @param parent
*/
/*************************************************************************************************/
UserViewModel::UserViewModel()
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::init
*/
/*************************************************************************************************/
void UserViewModel::init()
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::setInitialValue
*/
/*************************************************************************************************/
void UserViewModel::setInitialValue()
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::sendData
*/
/*************************************************************************************************/
void UserViewModel::sendData(bool sync)
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::prepareData
*/
/*************************************************************************************************/
void UserViewModel::prepareData()
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::prepareData
*/
/*************************************************************************************************/
void UserViewModel::turnOnMinimalMode()
{
}
/*************************************************************************************************/
/**
* @brief UserViewModel::turnOffMinimalMode
*/
/*************************************************************************************************/
void UserViewModel::turnOffMinimalMode()
{
}
void UserViewModel::viewMeasurementHandle()
{
}

14
pri/core.pri

@ -0,0 +1,14 @@
# Link with core project
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../logic/release/ -llogic
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../logic/debug/ -llogic
else:unix: LIBS += -L$$OUT_PWD/../logic/ -llogic
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../logic/release/liblogic.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../logic/debug/liblogic.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../logic/release/logic.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../logic/debug/logic.lib
else:unix: PRE_TARGETDEPS += $$OUT_PWD/../logic/liblogic.a
INCLUDEPATH += $$PWD/../logic/include \
$$PWD/..
DEPENDPATH += $$PWD/../logic/include

7
sono.pro

@ -0,0 +1,7 @@
TEMPLATE = subdirs
SUBDIRS += \
logic \
ui
ui.depends += logic
Loading…
Cancel
Save