20 #ifndef DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP
21 #define DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP
23 #define BOOST_BIND_GLOBAL_PLACEHOLDERS
25 #include <boost/bind.hpp>
26 #include <boost/property_tree/json_parser.hpp>
27 #include <boost/property_tree/ptree.hpp>
28 #include <boost/signals2/signal.hpp>
32 #include <QtUiPlugin/QDesignerExportWidget>
55 Q_PROPERTY(
bool UseOpenGL READ get_use_open_gl WRITE set_use_open_gl)
57 bool UseAntialiasing READ get_use_antialiasing WRITE set_use_antialiasing)
58 Q_PROPERTY(
bool AutoScale READ get_auto_scale WRITE set_auto_scale)
59 Q_PROPERTY(QString DefaultScale READ get_default_scale_factor WRITE
60 set_default_scale_factor)
61 Q_PROPERTY(QString ScaleFactorList READ get_define_scale_factor WRITE
62 set_define_scale_factor)
63 Q_PROPERTY(QString DefaultColourmap READ get_default_colourmap WRITE
64 set_default_colourmap)
65 Q_PROPERTY(QString ListContextMenu READ get_list_context_menu WRITE
66 set_list_context_menu)
67 Q_PROPERTY(QString ListDialogsMenu READ get_list_dialogs_menu WRITE
68 set_list_dialogs_menu)
69 Q_PROPERTY(QString DefautBiasImage READ get_default_bias_image WRITE
70 set_default_bias_image)
72 bool ShowScrollbars READ get_show_scrollbars WRITE set_show_scrollbars)
100 void ProcessRemoteCommand(
const std::string& command_name,
101 const std::vector<std::string>& command_arguments);
107 void InitializeDialogMap(
const QMap<QString, DdtDialog*> insert_map);
114 QString FetchDialogName(
const QString dialog_id)
const;
129 bool get_use_open_gl()
const;
135 void set_use_open_gl(
const bool open_gl);
141 bool get_use_antialiasing()
const;
147 void set_use_antialiasing(
const bool antialiasing);
153 bool get_auto_scale()
const;
159 void set_auto_scale(
const bool scale);
167 void ReadScaleFactors();
174 QList<QString> SortedScaleFactors(QMap<QString, float> scale_map);
183 QString get_define_scale_factor()
const;
191 void set_define_scale_factor(
const QString new_values);
197 QString get_default_scale_factor()
const;
203 void set_default_scale_factor(
const QString new_default_scale_factor);
209 QString get_default_colourmap()
const;
215 void set_default_colourmap(
const QString new_default_colourmap);
221 void set_list_context_menu(
const QString new_list_context_menu);
227 QString get_list_context_menu()
const;
233 void set_list_dialogs_menu(
const QString new_list_dialogs_menu);
239 QString get_list_dialogs_menu()
const;
245 QString get_default_bias_image()
const;
251 void set_default_bias_image(
const QString set_bias_image);
257 bool get_show_scrollbars()
const;
263 void set_show_scrollbars(
const bool set_show_scrollbars);
285 void RedrawOverlay();
307 float ParseFractionString(QString fraction_str);
316 void ConvertCanvasToImage(
const double x_canvas,
const double y_canvas,
317 double*
const x_image,
double*
const y_image)
const;
326 void ConvertImageToCanvas(
const double x_image,
const double y_image,
327 double*
const x_canvas,
328 double*
const y_canvas)
const;
340 bool eventFilter(QObject* obj, QEvent* event);
346 void HandleNewBoostDataEvent();
351 void CutLevelChanged();
356 void ReloadGraphicsItem();
362 void UpdateThumbnailImages();
367 void UpdateAllStatistics();
373 void CloseAllDialogs();
380 void MarkPositions();
386 QString EndMarkPositions();
392 void RegisterLastSegmentCallback(
393 std::function<
void()>
const& LastSegmentFunction);
398 void SetOverlayImageFile(
const QString overlay_file);
409 void SetActiveRenderingPlugin(
const int rendering_plugin_id);
414 void ActivateTimestampDisplay();
443 QString current_stream_id;
444 QString last_stream_id;
445 boost::signals2::connection connection;
446 boost::signals2::connection connection_cutlevel;
449 QString last_image_path;
450 QString last_selected_file;
451 int current_extension;
452 std::atomic<bool> overlay_file_loaded;
456 QGraphicsScene* scene;
457 QGraphicsItem* current_image_item;
461 int current_image_width;
462 int current_image_height;
464 std::atomic<bool> image_cleared;
468 bool show_pick_marker;
469 int current_pick_pixels_size;
470 int current_pick_object_no_samples;
473 std::atomic<bool> datastream_pick;
474 double datastream_picked_x;
475 double datastream_picked_y;
478 int current_tab_region_x_size;
479 int current_tab_region_y_size;
482 std::atomic<PvcmParameters> pvcm_param;
485 bool scrollbar_moved_externally;
487 bool current_flip_state_vertical;
488 bool current_flip_state_horizontal;
492 bool display_timestamp;
495 QList<DdtRenderingPlugin*> rendering_plugins;
496 int active_rendering_plugin_index;
499 QMap<QString, DdtDialog*> dialog_map;
500 QMap<QString, bool> dialog_init_map;
501 QMap<QString, QString> dialogname_map;
504 QStringList context_menu_entries;
505 QString static_overlay_entry;
508 QList<QPointF> point_list;
509 bool mark_position_mode;
512 std::function<void()> last_segment_callback;
515 const int CLOCKWISE = 90;
516 const int ANTICLOCKWISE = -90;
517 const int NUM_ARGS_REMOTE_ATTACH = 2;
677 void resizeEvent(QResizeEvent* event);
682 void RemoveAllItemsFromScene();
687 void RemoveAllOverlayItemsFromScene();
696 QString tag,
bool flag);
713 void CalculatePickStatistics(
PickMode pick_mode,
double x,
double y,
714 double pixelvalue, QString ra, QString decl);
722 void GetTabularRegion(
const double x_image,
const double y_image);
730 bool CheckMemAvailability(
const QString filename,
731 const int extension_number)
const;
732 bool CheckMemAvailabilityImageExtensions(
const QString filename)
const;
733 void GetDimensionInfo(
const cpl_propertylist*
const property_list,
734 int*
const number_axis,
int*
const image_width,
735 int*
const image_height,
int*
const byte_pix)
const;
736 void ReadMemoryInfo(qint64*
const mem_total, qint64*
const mem_available,
737 qint64*
const swap_free)
const;
739 bool LoadExtension(
const QString filename,
int& extension_number);
742 void StoreDataStreamPick();
743 double ConsiderFlipState(
double angle)
const;
744 bool CheckIfPickInactive()
const;
745 void UpdatePVCMDialog();
746 void UpdatePVCMDialogMinMax();
747 void UpdatePVCMDialogAutoCuts();
748 void UpdatePVCMDialogCutValues();
749 void UpdatePVCMDialogPercent();
752 void RemoteAttach(
const QStringList args);
754 void RemoteRotate(
const QStringList args);
755 void RemoteFlip(
const QStringList args);
756 void RemoteZoom(
const QStringList args);
757 void RemoteScale(
const QStringList args);
758 void RemotePointSelection();
759 void RemoteStatistics();
760 void RemoteTabularRegion();
761 void RemoteScaleRotateCut();
764 void RemoteLoad(
const QStringList args);
765 void RemoteDistance();
766 void RemoteOverlay(
const QStringList args);
768 bool Xor(
const bool state_a,
const bool state_b)
const;
773 void SetDefaultSettings();
774 void SetDefaultColourmapSettings();
775 void SetDefaultConfigurationmapSettings();
776 void SetDefaultBiasImageSettings();
779 void InitializeContextMenu();
780 void InitializeDialogNames();
781 QStringList AddDefaultContextMenuEntries()
const;
782 void ExecuteDialog(
const QString dialog_id);
783 QMenu* ComposeDialogsContextMenu(
const QString menu_title);
786 void BrowseForFile();
787 void BrowseForFileExt();
790 void StaticOverlay();
793 void UpdateColourmap();
796 void UpdateFitsHeaderDialog();
799 void UpdateMetadataSampleDialog();
802 void UpdateImage(
const QImage*
const image);
805 void UpdateCurrentPlane();
808 void StoreCurrentImage(
const int dest_slot);
809 void DisplaySelected(
const QVariant parameter);
810 void LoadFromDisc(
const QVariant parameter);
813 void SendCutValuesAndHistogram();
816 void HandleCutValuesParameter(
const QString parameter_id,
817 const QVariant parameter,
818 const QString dialog_id);
823 void CheckBinaryTable(
const QString extension_name);
824 void FillTable(cpl_table*
const table,
const cpl_array*
const column_names,
825 int*
const ncol,
int*
const nrow,
826 const QString extension_name);
827 void FillSingleTable(cpl_table*
const table,
const char*
const col_name,
828 QList<QVariant>& single_table,
829 QList<QVariant>& single_col_names,
const int rows,
830 int*
const num_vals,
int*
const cols)
const;
831 void FillSingleTableString(cpl_table*
const table,
const char*
const col_name,
832 QList<QVariant>& single_table,
833 const int rows)
const;
834 void FillSingleTableInt(cpl_table*
const table,
const char*
const col_name,
835 QList<QVariant>& singleTable,
const int rows)
const;
836 void FillSingleTableIntArr(cpl_table*
const table,
const char*
const col_name,
837 QList<QVariant>& single_table,
const int rows,
838 int*
const num_vals)
const;
839 void FillSingleTableFloat(cpl_table*
const table,
const char*
const col_name,
840 QList<QVariant>& single_table,
841 const int rows)
const;
842 void FillSingleTableFloatArr(cpl_table*
const table,
843 const char*
const col_name,
844 QList<QVariant>& single_table,
const int rows,
845 int*
const num_vals)
const;
846 void FillSingleTableDouble(cpl_table*
const table,
const char*
const col_name,
847 QList<QVariant>& single_table,
848 const int rows)
const;
849 void FillSingleTableDoubleArr(cpl_table*
const table,
850 const char*
const col_name,
851 QList<QVariant>& single_table,
const int rows,
852 int*
const num_vals)
const;
854 void SetBinaryTableParameter(
const int table_number,
const int rows,
856 const QList<QVariant> single_table,
857 const QList<QVariant> single_col_names);
859 void GetSingleTableDimensions(
const cpl_table*
const table,
860 const char*
const col_name,
const int rows,
861 int*
const table_rows,
int*
const table_cols,
862 int*
const dim_x)
const;
865 void AdjustMagnificationWidgets(
const double x,
const double y);
874 void GetVisibleRectCoordinates(QVector<double>& coords)
const;
892 void MagnifyImage(
int x,
int y,
const bool pick_mode =
false);
901 void MagnifyImageWithFactor(
const QString mag_factor_str,
902 const int mag_fact_index,
const int x,
911 void SetInitialDialogParameters(
DdtDialog* dialog,
const QString dialog_id);
917 void SetInitialDialogParametersColourmapDialog(
DdtDialog* dialog,
918 const QString dialog_id);
924 void SetInitialDialogParametersPickObjectDialog(
DdtDialog* dialog,
925 const QString dialog_id);
932 void SetInitialDialogParametersMagnificationDialog(
DdtDialog* dialog,
933 const QString dialog_id);
939 void SetInitialDialogParametersFITSHeaderDialog(
DdtDialog* dialog,
940 const QString dialog_id);
947 void SetInitialDialogParametersMetadataSampleDialog(
DdtDialog* dialog,
948 const QString dialog_id);
955 void SetInitialDialogParametersHDUDialog(
DdtDialog* dialog,
956 const QString dialog_id);
963 void SetInitialDialogParametersTabularRegionDialog(
DdtDialog* dialog,
964 const QString dialog_id);
971 void SetInitialDialogParametersGraphicalDialog(
DdtDialog* dialog,
972 const QString dialog_id);
978 void SetInitialDialogParametersGraphicsControl(
DdtDialog* dialog,
979 const QString dialog_id);
986 void SetInitialDialogParametersCutValuesDialog(
DdtDialog* dialog,
987 const QString dialog_id);
994 void SetInitialDialogParametersBiasDialog(
DdtDialog* dialog,
995 const QString dialog_id);
1002 void SetInitialDialogParametersScaleRotateCutValuesDialog(
1003 DdtDialog* dialog,
const QString dialog_id);
1010 void SetInitialDialogParametersStatisticDialog(
DdtDialog* dialog,
1011 const QString dialog_id);
1018 void SetInitialDialogParametersPVCMDialog(
DdtDialog* dialog,
1019 const QString dialog_id);
1026 void SetInitialDialogParametersReferenceLineDialog(
DdtDialog* dialog,
1027 const QString dialog_id);
1034 void SetInitialDialogParametersDataStreamDialog(
DdtDialog* dialog,
1035 const QString dialog_id);
1042 void SetInitialDialogParametersDistanceDialog(
DdtDialog* dialog,
1043 const QString dialog_id);
1050 void SetInitialDialogParametersBinaryTableDialog(
DdtDialog* dialog,
1051 const QString dialog_id);
1058 void DialogParameterChangedColourmapDialog(
const QString parameter_id,
1059 const QVariant parameter);
1066 void DialogParameterChangedPickObject(
const QString parameter_id,
1067 const QVariant parameter);
1075 void DialogParameterChangedMagnification(
const QString parameter_id,
1076 const QVariant parameter);
1084 void DialogParameterChangedTabularRegion(
const QString parameter_id,
1085 const QVariant parameter);
1093 void DialogParameterChangedGraphicalElements(
const QString parameter_id,
1094 const QVariant parameter);
1101 void DialogParameterChangedGraphicsControl(
const QString parameter_id,
1102 const QVariant parameter);
1109 void DialogParameterChangedCutValues(
const QString parameter_id,
1110 const QVariant parameter);
1118 void DialogParameterChangedScaleRotateCutValues(
const QString parameter_id,
1119 const QVariant parameter);
1126 void DialogParameterChangedBias(
const QString parameter_id,
1127 const QVariant parameter);
1134 void DialogParameterChangedStatistic(
const QString parameter_id,
1135 const QVariant parameter);
1142 void DialogParameterChangedSlit(
const QString parameter_id,
1143 const QVariant parameter);
1150 void DialogParameterChangedPVCM(
const QString parameter_id,
1151 const QVariant parameter);
1159 void DialogParameterChangedReferenceLine(
const QString parameter_id,
1160 const QVariant parameter);
1168 void DialogParameterChangedDataStream(
const QString parameter_id,
1169 const QVariant parameter);
1177 void DialogParameterChangedHDU(
const QString parameter_id,
1178 const QVariant parameter);
1185 void DialogParameterChangedDistance(
const QString parameter_id,
1186 const QVariant parameter);
1204 void RestoreColourmap();
1216 void DialogParameterChanged(
const QString dialog_id,
1217 const QString parameter_id,
1218 const QVariant parameter);
1229 void AttachDataStream(
const QString data_stream_id);
1235 void DetachDataStream(
const QString data_stream_id);
1244 bool AttachDataFile(QString filename,
const bool open_single =
false);
1251 void AttachImageExtensionsAsOne(QString filename);
1258 void LastBrokerConnection(
const QString data_stream_id);
1263 void CheckInvalidImageHDUs()
const;
1269 void SetImageScale(
const QString image_scale);
1275 void SetNoWaitNewData(
const bool no_wait_flag);
1283 QString LoadOverlayFile(
const QString startup_overlay_file,
1284 const bool remote =
false);
1298 void FlipImage(
bool vertical_axis,
bool horizontal_axis);
1304 void RotateImage(
int rotation_angle);
1317 void UpdatePosition(
double scroll_fraction_x,
double scroll_fraction_y);
1324 void IncrementScale();
1330 void DecrementScale();
1336 void SetToDefaultScale();
1343 void SelectNewScale(QString next_scale);
1348 void ScaleFactorForNewImage();
1355 QString FindAutoScale();
1362 void IncrementLayer(
const int inc);
1369 void DecrementLayer(
const int dec);
1375 void JumpToLayer(
const int num);
1387 void GraphicalElement(
double x1,
double y1,
double x2,
double y2,
1388 const QString draw_mode);
1400 void GraphicalTextElement(
double x1,
double y1,
double x2,
double y2,
1401 const QString draw_mode, QString text);
1413 void StatisticRectangle(
const double x1,
const double y1,
const double x2,
1427 void SlitElement(
const double target_x,
const double target_y,
1428 const double slit_x,
const double slit_y,
1429 const double x_offset,
const double y_offset);
1432 void CalculateHistogramReferenceLine(QPointF
p1, QPointF
p2);
1435 void CalculateDistanceLine(QPointF
p1, QPointF
p2);
1446 void SetMagnificationFactor(
const QString magnification_factor);
1459 void CursorPosition(
double x,
double y,
bool mouse_clicked);
1470 void SetCutValues(
const double low,
const double high);
1480 void SetMinMaxCuts();
1489 void DetachStream();
1494 void HandleNewDataEvent();
1501 void SetAutoScaleState(
const bool new_auto_scale_state);
1509 void LoadRenderingPlugins();
1512 void ScrollBarMoved(
int pos);
1513 void ScrollBarRangeChanged(
int min,
int max);
1516 void DisplayContextMenu(
const QPoint& pos);
1517 void ExecuteContextMenuCommand(
const QString command);
1555 const double rotation);
1566 int current_image_width,
1567 int current_image_height);
1587 void CursorInfo(
double x,
double y,
double pixelvalue, QString ra,
1652 int scaling_function);
Definition: ddtDialog.hpp:27
Definition: ddtGraphicalElementProperties.hpp:29
Definition: ddtGraphicalOverlay.hpp:30
Definition: ddtGraphicsView.hpp:80
Definition: ddtOverlayRendering.hpp:37
Definition: ddtRenderingPlugin.hpp:41
Definition: ddtLogger.hpp:51
Definition: imageHandling.hpp:54
Data Subscriber. This class provides the functionality for subscriber applications to register / unre...
Factory for DdtDataPublishers and DdtDataSubscribers. This class provides factory methods for creatin...
DDT Utils. Definitions for the data visualisation. Utilities for the DDT Datavisualisation.
PickMode
Definition: ddtDatavisualisationDefines.hpp:25
ConnectionStatus
Definition: ddtDatavisualisationDefines.hpp:93
DDT Widgets. Class for the Graphics View which is used by the DDT Image Widget. The view is used by t...
std::array< std::array< float, COLOR_MAP_ENTRY_SIZE >, MAX_COLOR_MAP_ENTRIES > colorMap_t
Definition: imageColor.hpp:57
std::array< unsigned int, MAX_COLOR_MAP_ENTRIES > colorMapARGB_t
Definition: imageColor.hpp:67
string p1
Definition: testCommandLineParser.cpp:358
string p2
Definition: testCommandLineParser.cpp:359