17 #ifndef DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP
18 #define DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP
20 #include <boost/bind.hpp>
21 #include <boost/signals2/signal.hpp>
25 #include <QtUiPlugin/QDesignerExportWidget>
49 Q_PROPERTY(
bool UseOpenGL READ get_use_open_gl WRITE set_use_open_gl)
51 bool UseAntialiasing READ get_use_antialiasing WRITE set_use_antialiasing)
52 Q_PROPERTY(
bool AutoScale READ get_auto_scale WRITE set_auto_scale)
53 Q_PROPERTY(QString DefaultScale READ get_default_scale_factor WRITE
54 set_default_scale_factor)
55 Q_PROPERTY(QString ScaleFactorList READ get_define_scale_factor WRITE
56 set_define_scale_factor)
57 Q_PROPERTY(QString DefaultColourmap READ get_default_colourmap WRITE
58 set_default_colourmap)
59 Q_PROPERTY(QString ListContextMenu READ get_list_context_menu WRITE
60 set_list_context_menu)
61 Q_PROPERTY(QString DefautBiasImage READ get_default_bias_image WRITE
62 set_default_bias_image)
64 bool ShowScrollbars READ get_show_scrollbars WRITE set_show_scrollbars)
87 void ProcessRemoteCommand(
const std::string& command_name,
88 const std::vector<std::string>& command_arguments);
94 void InitializeDialogMap(
const QMap<QString, DdtDialog*> insert_map);
101 QString FetchDialogName(
const QString dialog_id)
const;
116 bool get_use_open_gl()
const;
122 void set_use_open_gl(
const bool open_gl);
128 bool get_use_antialiasing()
const;
134 void set_use_antialiasing(
const bool antialiasing);
140 bool get_auto_scale()
const;
146 void set_auto_scale(
const bool scale);
154 void ReadScaleFactors();
161 QList<QString> SortedScaleFactors(QMap<QString, float> scale_map);
170 QString get_define_scale_factor()
const;
178 void set_define_scale_factor(
const QString new_values);
184 QString get_default_scale_factor()
const;
190 void set_default_scale_factor(
const QString new_default_scale_factor);
196 QString get_default_colourmap()
const;
202 void set_default_colourmap(
const QString new_default_colourmap);
208 void set_list_context_menu(
const QString new_list_context_menu);
214 QString get_list_context_menu()
const;
220 QString get_default_bias_image()
const;
226 void set_default_bias_image(
const QString set_bias_image);
232 bool get_show_scrollbars()
const;
238 void set_show_scrollbars(
const bool set_show_scrollbars);
260 void RedrawOverlay();
282 float ParseFractionString(QString fraction_str);
291 void ConvertCanvasToImage(
const double x_canvas,
const double y_canvas,
292 double*
const x_image,
double*
const y_image)
const;
301 void ConvertImageToCanvas(
const double x_image,
const double y_image,
302 double*
const x_canvas,
303 double*
const y_canvas)
const;
315 bool eventFilter(QObject* obj, QEvent* event);
321 void HandleNewBoostDataEvent();
326 void CutLevelChanged();
331 void ReloadGraphicsItem();
337 void UpdateThumbnailImages();
342 void UpdateAllStatistics();
348 void CloseAllDialogs();
355 void MarkPositions();
361 QString EndMarkPositions();
367 void RegisterLastSegmentCallback(
368 std::function<
void()>
const& lastSegmentFunction);
373 void SetOverlayImageFile(
const QString overlay_file);
384 void SetActiveRenderingPlugin(
const int rendering_plugin_id);
389 void ActivateTimestampDisplay();
418 QString current_stream_id;
419 boost::signals2::connection connection;
420 boost::signals2::connection connection_cutlevel;
423 QString last_image_path;
424 QString last_selected_file;
428 QGraphicsScene* scene;
429 QGraphicsItem* current_image_item;
433 int current_image_width;
434 int current_image_height;
438 int current_pick_pixels_size;
439 int current_pick_object_no_samples;
444 int current_tab_region_x_size;
445 int current_tab_region_y_size;
448 bool scrollbar_moved_externally;
450 bool current_flip_state_vertical;
451 bool current_flip_state_horizontal;
455 bool display_timestamp;
458 QList<DdtRenderingPlugin*> rendering_plugins;
459 int active_rendering_plugin_index;
462 QMap<QString, DdtDialog*> dialog_map;
463 QMap<QString, bool> dialog_init_map;
464 QMap<QString, QString> dialogname_map;
467 QStringList context_menu_entries;
470 QList<QPointF> point_list;
471 bool mark_position_mode;
474 std::function<void()> last_segment_callback;
477 const int CLOCKWISE = 90;
478 const int ANTICLOCKWISE = -90;
479 const int NUM_ARGS_REMOTE_ATTACH = 2;
633 void resizeEvent(QResizeEvent* event);
638 void RemoveAllItemsFromScene();
643 void RemoveAllOverlayItemsFromScene();
652 QString tag,
bool flag);
669 void CalculatePickStatistics(
PickMode pick_mode,
double x,
double y,
670 double pixelvalue, QString ra, QString decl);
678 void GetTabularRegion(
const double x_image,
const double y_image);
686 bool CheckMemAvailability(
const QString filename,
687 const int extensionNumber)
const;
688 bool CheckMemAvailabilityImageExtensions(
const QString filename)
const;
689 void GetDimensionInfo(
const cpl_propertylist*
const property_list,
690 int*
const number_axis,
int*
const image_width,
691 int*
const image_height,
int*
const bytePix)
const;
692 void ReadMemoryInfo(qint64*
const mem_total, qint64*
const mem_available,
693 qint64*
const swap_free)
const;
695 bool LoadExtension(
const QString filename)
const;
698 void RemoteAttach(
const QStringList
args);
700 void RemoteRotate(
const QStringList
args);
701 void RemoteFlip(
const QStringList
args);
702 void RemoteZoom(
const QStringList
args);
703 void RemoteScale(
const QStringList
args);
704 void RemotePointSelection();
705 void RemoteStatistics();
706 void RemoteTabularRegion();
707 void RemoteScaleRotateCut();
710 void RemoteLoad(
const QStringList
args);
711 void RemoteDistance();
713 bool Xor(
const bool state_a,
const bool state_b)
const;
718 void SetDefaultSettings();
719 void SetDefaultColourmapSettings();
720 void SetDefaultConfigurationmapSettings();
721 void SetDefaultBiasImageSettings();
724 void InitializeContextMenu();
725 void InitializeDialogNames();
726 QStringList AddDefaultContextMenuEntries()
const;
729 void BrowseForFile();
730 void BrowseForFileExt();
734 void UpdateColourmap();
737 void UpdateFitsHeaderDialog();
740 void UpdateImage(
const QImage*
const image);
743 void UpdateCurrentPlane();
746 void StoreCurrentImage(
const int dest_slot);
747 void DisplaySelected(
const QVariant parameter);
748 void LoadFromDisc(
const QVariant parameter);
751 void SendCutValuesAndHistogram();
754 void HandleCutValuesParameter(
const QString parameter_id,
755 const QVariant parameter,
756 const QString dialog_id);
761 void CheckBinaryTable(
const QString extensionName);
762 void FillTable(cpl_table*
const table,
const cpl_array*
const column_names,
763 int*
const ncol,
int*
const nrow,
const QString extensionName);
764 void FillSingleTable(cpl_table*
const table,
const char*
const col_name,
765 QList<QVariant>& singleTable,
766 QList<QVariant>& singleColNames,
const int rows,
767 int*
const numVals,
int*
const cols)
const;
768 void FillSingleTableString(cpl_table*
const table,
const char*
const col_name,
769 QList<QVariant>& singleTable,
770 const int rows)
const;
771 void FillSingleTableInt(cpl_table*
const table,
const char*
const col_name,
772 QList<QVariant>& singleTable,
const int rows)
const;
773 void FillSingleTableIntArr(cpl_table*
const table,
const char*
const col_name,
774 QList<QVariant>& singleTable,
const int rows,
775 int*
const numVals)
const;
776 void FillSingleTableFloat(cpl_table*
const table,
const char*
const col_name,
777 QList<QVariant>& singleTable,
const int rows)
const;
778 void FillSingleTableFloatArr(cpl_table*
const table,
779 const char*
const col_name,
780 QList<QVariant>& singleTable,
const int rows,
781 int*
const numVals)
const;
782 void FillSingleTableDouble(cpl_table*
const table,
const char*
const col_name,
783 QList<QVariant>& singleTable,
784 const int rows)
const;
785 void FillSingleTableDoubleArr(cpl_table*
const table,
786 const char*
const col_name,
787 QList<QVariant>& singleTable,
const int rows,
788 int*
const numVals)
const;
790 void SetFitsTableParameter(
const int tableNumber,
const int rows,
791 const int cols,
const QList<QVariant> singleTable,
792 const QList<QVariant> singleColNames);
795 void AdjustMagnificationWidgets(
const double x,
const double y);
804 void GetVisibleRectCoordinates(QVector<double>& coords)
const;
822 void MagnifyImage(
int x,
int y,
const bool pick_mode =
false);
827 void MagnifyImageWithFactor(
const QString mag_factor_str,
828 const int mag_fact_index,
const int x,
837 void SetInitialDialogParameters(
DdtDialog* dialog,
const QString dialog_id);
843 void SetInitialDialogParametersColourmapDialog(
DdtDialog* dialog,
844 const QString dialog_id);
850 void SetInitialDialogParametersPickObjectDialog(
DdtDialog* dialog,
851 const QString dialog_id);
858 void SetInitialDialogParametersMagnificationDialog(
DdtDialog* dialog,
859 const QString dialog_id);
865 void SetInitialDialogParametersFITSHeaderDialog(
DdtDialog* dialog,
866 const QString dialog_id);
873 void SetInitialDialogParametersHDUDialog(
DdtDialog* dialog,
874 const QString dialog_id);
881 void SetInitialDialogParametersTabularRegionDialog(
DdtDialog* dialog,
882 const QString dialog_id);
889 void SetInitialDialogParametersGraphicalDialog(
DdtDialog* dialog,
890 const QString dialog_id);
896 void SetInitialDialogParametersGraphicsControl(
DdtDialog* dialog,
897 const QString dialog_id);
904 void SetInitialDialogParametersCutValuesDialog(
DdtDialog* dialog,
905 const QString dialog_id);
912 void SetInitialDialogParametersBiasDialog(
DdtDialog* dialog,
913 const QString dialog_id);
920 void SetInitialDialogParametersScaleRotateCutValuesDialog(
921 DdtDialog* dialog,
const QString dialog_id);
928 void SetInitialDialogParametersStatisticDialog(
DdtDialog* dialog,
929 const QString dialog_id);
936 void SetInitialDialogParametersPVCMDialog(
DdtDialog* dialog,
937 const QString dialog_id);
944 void SetInitialDialogParametersReferenceLineDialog(
DdtDialog* dialog,
945 const QString dialog_id);
952 void SetInitialDialogParametersDataStreamDialog(
DdtDialog* dialog,
953 const QString dialog_id);
960 void SetInitialDialogParametersDistanceDialog(
DdtDialog* dialog,
961 const QString dialog_id);
968 void SetInitialDialogParametersFITSTableDialog(
DdtDialog* dialog,
969 const QString dialog_id);
976 void DialogParameterChangedColourmapDialog(
const QString parameter_id,
977 const QVariant parameter);
984 void DialogParameterChangedPickObject(
const QString parameter_id,
985 const QVariant parameter);
993 void DialogParameterChangedMagnification(
const QString parameter_id,
994 const QVariant parameter);
1002 void DialogParameterChangedTabularRegion(
const QString parameter_id,
1003 const QVariant parameter);
1011 void DialogParameterChangedGraphicalElements(
const QString parameter_id,
1012 const QVariant parameter);
1019 void DialogParameterChangedGraphicsControl(
const QString parameter_id,
1020 const QVariant parameter);
1027 void DialogParameterChangedCutValues(
const QString parameter_id,
1028 const QVariant parameter);
1036 void DialogParameterChangedScaleRotateCutValues(
const QString parameter_id,
1037 const QVariant parameter);
1044 void DialogParameterChangedBias(
const QString parameter_id,
1045 const QVariant parameter);
1052 void DialogParameterChangedStatistic(
const QString parameter_id,
1053 const QVariant parameter);
1060 void DialogParameterChangedSlit(
const QString parameter_id,
1061 const QVariant parameter);
1068 void DialogParameterChangedPVCM(
const QString parameter_id,
1069 const QVariant parameter);
1077 void DialogParameterChangedReferenceLine(
const QString parameter_id,
1078 const QVariant parameter);
1086 void DialogParameterChangedDataStream(
const QString parameter_id,
1087 const QVariant parameter);
1095 void DialogParameterChangedHDU(
const QString parameter_id,
1096 const QVariant parameter);
1103 void DialogParameterChangedDistance(
const QString parameter_id,
1104 const QVariant parameter);
1121 void DialogParameterChanged(
const QString dialog_id,
1122 const QString parameter_id,
1123 const QVariant parameter);
1134 void AttachDataStream(
const QString data_stream_id);
1140 void DetachDataStream(
const QString data_stream_id);
1149 bool AttachDataFile(QString filename,
const bool open_single =
false);
1156 void AttachImageExtensionsAsOne(QString filename);
1161 void CheckInvalidImageHDUs()
const;
1167 void SetImageScale(
const QString image_scale);
1173 void SetNoWaitNewData(
const bool no_wait_flag);
1187 void FlipImage(
bool vertical_axis,
bool horizontal_axis);
1193 void RotateImage(
int rotation_angle);
1206 void UpdatePosition(
double scroll_fraction_x,
double scroll_fraction_y);
1213 void IncrementScale();
1219 void DecrementScale();
1225 void SetToDefaultScale();
1232 void SelectNewScale(QString next_scale);
1237 void ScaleFactorForNewImage();
1244 QString FindAutoScale();
1251 void IncrementLayer(
const int inc);
1258 void DecrementLayer(
const int dec);
1270 void GraphicalElement(
double x1,
double y1,
double x2,
double y2,
1271 const QString draw_mode);
1273 void GraphicalTextElement(
double x1,
double y1,
double x2,
double y2,
1274 const QString draw_mode, QString text);
1286 void StatisticRectangle(
const double x1,
const double y1,
const double x2,
1300 void SlitElement(
const double target_x,
const double target_y,
1301 const double slit_x,
const double slit_y,
1302 const double x_offset,
const double y_offset);
1305 void CalculateHistogramReferenceLine(QPointF p1, QPointF p2);
1308 void CalculateDistanceLine(QPointF p1, QPointF p2);
1319 void SetMagnificationFactor(
const QString magnification_factor);
1332 void CursorPosition(
double x,
double y,
bool mouse_clicked);
1343 void SetCutValues(
const double low,
const double high);
1353 void SetMinMaxCuts();
1362 void DetachStream();
1367 void HandleNewDataEvent();
1374 void SetAutoScaleState(
const bool new_auto_scale_state);
1382 void LoadRenderingPlugins();
1385 void ScrollBarMoved(
int pos);
1386 void ScrollBarRangeChanged(
int min,
int max);
1389 void DisplayContextMenu(
const QPoint& pos);
1390 void ExecuteContextMenuCommand(
const QString command);
1423 const bool show_axes,
const double rotation);
1434 int current_image_width,
1435 int current_image_height);
1455 void CursorInfo(
double x,
double y,
double pixelvalue, QString ra,
1519 int scaling_function);
1569 #endif // DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP