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;
689 void resizeEvent(QResizeEvent* event);
694 void RemoveAllItemsFromScene();
699 void RemoveAllOverlayItemsFromScene();
708 QString tag,
bool flag);
725 void CalculatePickStatistics(
PickMode pick_mode,
double x,
double y,
726 double pixelvalue, QString ra, QString decl);
734 void GetTabularRegion(
const double x_image,
const double y_image);
744 bool CheckMemAvailability(
const QString filename,
745 const int extension_number)
const;
746 bool CheckMemAvailabilityImageExtensions(
const QString filename)
const;
747 void GetDimensionInfo(
const cpl_propertylist*
const property_list,
748 int*
const number_axis,
int*
const image_width,
749 int*
const image_height,
int*
const byte_pix)
const;
750 void ReadMemoryInfo(qint64*
const mem_total, qint64*
const mem_available,
751 qint64*
const swap_free)
const;
753 bool LoadExtension(
const QString filename,
int& extension_number);
756 void StoreDataStreamPick();
757 double ConsiderFlipState(
double angle)
const;
758 bool CheckIfPickInactive()
const;
759 void UpdatePVCMDialog();
760 void UpdatePVCMDialogMinMax();
761 void UpdatePVCMDialogAutoCuts();
762 void UpdatePVCMDialogCutValues();
763 void UpdatePVCMDialogPercent();
766 void RemoteAttach(
const QStringList args);
768 void RemoteRotate(
const QStringList args);
769 void RemoteFlip(
const QStringList args);
770 void RemoteZoom(
const QStringList args);
771 void RemoteScale(
const QStringList args);
772 void RemotePointSelection();
773 void RemoteStatistics();
774 void RemoteTabularRegion();
775 void RemoteScaleRotateCut();
778 void RemoteLoad(
const QStringList args);
779 void RemoteDistance();
780 void RemoteOverlay(
const QStringList args);
782 bool Xor(
const bool state_a,
const bool state_b)
const;
787 void SetDefaultSettings();
788 void SetDefaultColourmapSettings();
789 void SetDefaultConfigurationmapSettings();
790 void SetDefaultBiasImageSettings();
793 void InitializeContextMenu();
794 void InitializeDialogNames();
795 QStringList AddDefaultContextMenuEntries()
const;
796 QStringList AddDefaultDialogsNameEntries()
const;
797 void ExecuteDialog(
const QString dialog_id);
798 QMenu* ComposeDialogsContextMenu(
const QString menu_title);
801 void BrowseForFile();
802 void BrowseForFileExt();
806 void StaticOverlay();
809 void UpdateColourmap();
812 void UpdateFitsHeaderDialog();
815 void UpdateMonitorSamplesDialog();
818 void UpdateMetadataSampleDialog();
821 void UpdateImage(
const QImage*
const image);
824 void UpdateCurrentPlane();
827 void StoreCurrentImage(
const int dest_slot);
828 void DisplaySelected(
const QVariant parameter);
829 void LoadFromDisc(
const QVariant parameter);
832 void SendCutValuesAndHistogram();
835 void HandleCutValuesParameter(
const QString parameter_id,
836 const QVariant parameter,
837 const QString dialog_id);
842 void CheckBinaryTable(
const QString extension_name);
843 void FillTable(cpl_table*
const table,
const cpl_array*
const column_names,
844 int*
const ncol,
int*
const nrow,
845 const QString extension_name);
846 void FillSingleTable(cpl_table*
const table,
const char*
const col_name,
847 QList<QVariant>& single_table,
848 QList<QVariant>& single_col_names,
const int rows,
849 int*
const num_vals,
int*
const cols)
const;
850 void FillSingleTableString(cpl_table*
const table,
const char*
const col_name,
851 QList<QVariant>& single_table,
852 const int rows)
const;
853 void FillSingleTableInt(cpl_table*
const table,
const char*
const col_name,
854 QList<QVariant>& singleTable,
const int rows)
const;
855 void FillSingleTableIntArr(cpl_table*
const table,
const char*
const col_name,
856 QList<QVariant>& single_table,
const int rows,
857 int*
const num_vals)
const;
858 void FillSingleTableFloat(cpl_table*
const table,
const char*
const col_name,
859 QList<QVariant>& single_table,
860 const int rows)
const;
861 void FillSingleTableFloatArr(cpl_table*
const table,
862 const char*
const col_name,
863 QList<QVariant>& single_table,
const int rows,
864 int*
const num_vals)
const;
865 void FillSingleTableDouble(cpl_table*
const table,
const char*
const col_name,
866 QList<QVariant>& single_table,
867 const int rows)
const;
868 void FillSingleTableDoubleArr(cpl_table*
const table,
869 const char*
const col_name,
870 QList<QVariant>& single_table,
const int rows,
871 int*
const num_vals)
const;
873 void SetBinaryTableParameter(
const int table_number,
const int rows,
875 const QList<QVariant> single_table,
876 const QList<QVariant> single_col_names);
878 void GetSingleTableDimensions(
const cpl_table*
const table,
879 const char*
const col_name,
const int rows,
880 int*
const table_rows,
int*
const table_cols,
881 int*
const dim_x)
const;
884 void AdjustMagnificationWidgets(
const double x,
const double y);
893 void GetVisibleRectCoordinates(QVector<double>& coords)
const;
911 void MagnifyImage(
int x,
int y,
const bool pick_mode =
false);
920 void MagnifyImageWithFactor(
const QString mag_factor_str,
921 const int mag_fact_index,
const int x,
930 void SetInitialDialogParameters(
DdtDialog* dialog,
const QString dialog_id);
936 void SetInitialDialogParametersColourmapDialog(
DdtDialog* dialog,
937 const QString dialog_id);
943 void SetInitialDialogParametersPickObjectDialog(
DdtDialog* dialog,
944 const QString dialog_id);
951 void SetInitialDialogParametersMagnificationDialog(
DdtDialog* dialog,
952 const QString dialog_id);
958 void SetInitialDialogParametersFITSHeaderDialog(
DdtDialog* dialog,
959 const QString dialog_id);
966 void SetInitialDialogParametersMetadataSampleDialog(
DdtDialog* dialog,
967 const QString dialog_id);
974 void SetInitialDialogParametersHDUDialog(
DdtDialog* dialog,
975 const QString dialog_id);
982 void SetInitialDialogParametersTabularRegionDialog(
DdtDialog* dialog,
983 const QString dialog_id);
990 void SetInitialDialogParametersGraphicalDialog(
DdtDialog* dialog,
991 const QString dialog_id);
997 void SetInitialDialogParametersGraphicsControl(
DdtDialog* dialog,
998 const QString dialog_id);
1005 void SetInitialDialogParametersCutValuesDialog(
DdtDialog* dialog,
1006 const QString dialog_id);
1013 void SetInitialDialogParametersBiasDialog(
DdtDialog* dialog,
1014 const QString dialog_id);
1021 void SetInitialDialogParametersScaleRotateCutValuesDialog(
1022 DdtDialog* dialog,
const QString dialog_id);
1029 void SetInitialDialogParametersStatisticDialog(
DdtDialog* dialog,
1030 const QString dialog_id);
1037 void SetInitialDialogParametersPVCMDialog(
DdtDialog* dialog,
1038 const QString dialog_id);
1045 void SetInitialDialogParametersReferenceLineDialog(
DdtDialog* dialog,
1046 const QString dialog_id);
1053 void SetInitialDialogParametersDataStreamDialog(
DdtDialog* dialog,
1054 const QString dialog_id);
1061 void SetInitialDialogParametersDistanceDialog(
DdtDialog* dialog,
1062 const QString dialog_id);
1069 void SetInitialDialogParametersMonitorSamplesDialog(
DdtDialog* dialog,
1070 const QString dialog_id);
1077 void SetInitialDialogParametersBinaryTableDialog(
DdtDialog* dialog,
1078 const QString dialog_id);
1085 void DialogParameterChangedColourmapDialog(
const QString parameter_id,
1086 const QVariant parameter);
1093 void DialogParameterChangedPickObject(
const QString parameter_id,
1094 const QVariant parameter);
1102 void DialogParameterChangedMagnification(
const QString parameter_id,
1103 const QVariant parameter);
1112 void DialogParameterChangedMonitorSamples(
const QString parameter_id,
1113 const QVariant parameter);
1121 void DialogParameterChangedTabularRegion(
const QString parameter_id,
1122 const QVariant parameter);
1130 void DialogParameterChangedGraphicalElements(
const QString parameter_id,
1131 const QVariant parameter);
1138 void DialogParameterChangedGraphicsControl(
const QString parameter_id,
1139 const QVariant parameter);
1146 void DialogParameterChangedCutValues(
const QString parameter_id,
1147 const QVariant parameter);
1155 void DialogParameterChangedScaleRotateCutValues(
const QString parameter_id,
1156 const QVariant parameter);
1163 void DialogParameterChangedBias(
const QString parameter_id,
1164 const QVariant parameter);
1171 void DialogParameterChangedStatistic(
const QString parameter_id,
1172 const QVariant parameter);
1179 void DialogParameterChangedSlit(
const QString parameter_id,
1180 const QVariant parameter);
1187 void DialogParameterChangedPVCM(
const QString parameter_id,
1188 const QVariant parameter);
1196 void DialogParameterChangedReferenceLine(
const QString parameter_id,
1197 const QVariant parameter);
1205 void DialogParameterChangedDataStream(
const QString parameter_id,
1206 const QVariant parameter);
1214 void DialogParameterChangedHDU(
const QString parameter_id,
1215 const QVariant parameter);
1222 void DialogParameterChangedDistance(
const QString parameter_id,
1223 const QVariant parameter);
1241 void RestoreColourmap();
1253 void DialogParameterChanged(
const QString dialog_id,
1254 const QString parameter_id,
1255 const QVariant parameter);
1266 void AttachDataStream(
const QString data_stream_id);
1272 void DetachDataStream(
const QString data_stream_id);
1281 bool AttachDataFile(QString filename,
const bool open_single =
false);
1288 void AttachImageExtensionsAsOne(QString filename);
1295 void LastBrokerConnection(
const QString data_stream_id);
1300 void CheckInvalidImageHDUs()
const;
1306 void SetImageScale(
const QString image_scale);
1312 void SetNoWaitNewData(
const bool no_wait_flag);
1320 QString LoadOverlayFile(
const QString startup_overlay_file,
1321 const bool remote =
false);
1335 void FlipImage(
bool vertical_axis,
bool horizontal_axis);
1341 void RotateImage(
int rotation_angle);
1354 void UpdatePosition(
double scroll_fraction_x,
double scroll_fraction_y);
1361 void IncrementScale();
1367 void DecrementScale();
1373 void SetToDefaultScale();
1380 void SelectNewScale(QString next_scale);
1385 void ScaleFactorForNewImage();
1392 QString FindAutoScale();
1399 void IncrementLayer(
const int inc);
1406 void DecrementLayer(
const int dec);
1412 void JumpToLayer(
const int num);
1424 void GraphicalElement(
double x1,
double y1,
double x2,
double y2,
1425 const QString draw_mode);
1437 void GraphicalTextElement(
double x1,
double y1,
double x2,
double y2,
1438 const QString draw_mode, QString text);
1450 void StatisticRectangle(
const double x1,
const double y1,
const double x2,
1464 void SlitElement(
const double target_x,
const double target_y,
1465 const double slit_x,
const double slit_y,
1466 const double x_offset,
const double y_offset);
1469 void CalculateHistogramReferenceLine(QPointF
p1, QPointF
p2);
1472 void CalculateDistanceLine(QPointF
p1, QPointF
p2);
1483 void SetMagnificationFactor(
const QString magnification_factor);
1496 void CursorPosition(
double x,
double y,
bool mouse_clicked);
1507 void SetCutValues(
const double low,
const double high);
1517 void SetMinMaxCuts();
1526 void DetachStream();
1531 void HandleNewDataEvent();
1538 void SetAutoScaleState(
const bool new_auto_scale_state);
1546 void LoadRenderingPlugins();
1549 void ScrollBarMoved(
int pos);
1550 void ScrollBarRangeChanged(
int min,
int max);
1553 void DisplayContextMenu(
const QPoint& pos);
1554 void ExecuteContextMenuCommand(
const QString command);
1592 const double rotation);
1603 int current_image_width,
1604 int current_image_height);
1624 void CursorInfo(
double x,
double y,
double pixelvalue, QString ra,
1689 int scaling_function);
Definition: ddtDialog.hpp:27
Definition: ddtGraphicalElementProperties.hpp:29
Definition: ddtGraphicalOverlay.hpp:30
Definition: ddtGraphicsView.hpp:80
Definition: ddtImageGraphicsItem.hpp:28
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:360
string p2
Definition: testCommandLineParser.cpp:361