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>
185 QString drawMode, QString text);
190 double slit_y,
double x_offset,
double y_offset);
216 bool drawing_enabled =
false;
222 QString draw_mode =
"none";
239 double convert_pixel_to_degrees = 0.0;
242 QString current_text =
"";
243 QPointF current_text_pos;
248 bool draw_slit_line =
false;
249 bool slit_config_read =
false;
252 double config_slit_x;
253 double config_slit_y;
254 double config_slit_size_x;
255 double config_slit_size_y;
256 double config_slit_angle;
257 QString config_slit_color;
265 void DrawMeasurements(QPainter& painter,
const QPointF start,
274 void DrawStatisticRectangle(QPainter& painter,
const QPointF start,
280 void CreateStatisticRect(
const double x1,
const double y1,
const double x2,
289 void DrawRefLine(QPainter& painter,
const QPointF start,
const QPointF end);
294 void CreateRefLine(
const QPointF start,
const QPointF end);
302 void DrawSlit(QPainter& painter,
const QPointF start);
308 void ReadSlitParameter(
const std::string config_file,
double* slit_x,
309 double* slit_y,
double* slit_size_x,
310 double* slit_size_y,
double* slit_angle,
311 QString* slit_color)
const;
315 void CreateSlit(
const QColor line_color,
const double slit_x,
316 const double slit_y,
const double slit_size_x,
317 const double slit_size_y,
const double slit_angle);
325 void DrawGraphicalElement(QPainter& painter,
const QPointF start,
336 QPolygonF ConstructArrowHead(QLineF
const& line,
const qreal arrowSize)
const;
345 QString DegreesToString(
double deg)
const;
356 QString ConstructDegreesString(
const qreal length)
const;
358 std::string GetConfigPath()
const;
368 Q_PROPERTY(
bool UseOpenGL READ get_use_open_gl WRITE set_use_open_gl)
370 bool UseAntialiasing READ get_use_antialiasing WRITE set_use_antialiasing)
371 Q_PROPERTY(
bool AutoScale READ get_auto_scale WRITE set_auto_scale)
372 Q_PROPERTY(QString DefaultScale READ get_default_scale_factor WRITE
373 set_default_scale_factor)
374 Q_PROPERTY(QString ScaleFactorList READ get_define_scale_factor WRITE
375 set_define_scale_factor)
376 Q_PROPERTY(QString DefaultColourmap READ get_default_colourmap WRITE
377 set_default_colourmap)
378 Q_PROPERTY(QString ListContextMenu READ get_list_context_menu WRITE
379 set_list_context_menu)
380 Q_PROPERTY(QString DefautBiasImage READ get_default_bias_image WRITE
381 set_default_bias_image)
383 bool ShowScrollbars READ get_show_scrollbars WRITE set_show_scrollbars)
409 bool get_use_open_gl();
415 void set_use_open_gl(
bool use_open_gl);
421 bool get_use_antialiasing();
427 void set_use_antialiasing(
bool use_antialiasing);
433 bool get_auto_scale();
439 void set_auto_scale(
bool auto_scale);
447 void ReadScaleFactors();
454 QList<QString> SortedScaleFactors(QMap<QString, float> scale_map);
463 QString get_define_scale_factor()
const;
471 void set_define_scale_factor(
const QString new_values);
477 QString get_default_scale_factor()
const;
483 void set_default_scale_factor(
const QString new_default_scale_factor);
489 QString get_default_colourmap()
const;
495 void set_default_colourmap(
const QString new_default_colourmap);
501 void set_list_context_menu(
const QString new_list_context_menu);
507 QString get_list_context_menu()
const;
513 QString get_default_bias_image()
const;
519 void set_default_bias_image(
const QString set_bias_image);
525 bool get_show_scrollbars()
const;
531 void set_show_scrollbars(
const bool set_show_scrollbars);
559 float ParseFractionString(QString fraction_str);
568 void ConvertCanvasToImage(
const double x_canvas,
const double y_canvas,
569 double* x_image,
double* y_image);
578 void ConvertImageToCanvas(
const double x_image,
const double y_image,
579 double* x_canvas,
double* y_canvas);
591 bool eventFilter(QObject* obj, QEvent* event);
597 void HandleNewBoostDataEvent();
602 void CutLevelChanged();
607 void ReloadGraphicsItem();
613 void UpdateThumbnailImages();
618 void UpdateAllStatistics();
624 void CloseAllDialogs();
631 void MarkPositions();
637 QString EndMarkPositions();
643 void RegisterLastSegmentCallback(
644 std::function<
void()>
const& lastSegmentFunction);
673 QString current_stream_id;
674 boost::signals2::connection connection;
675 boost::signals2::connection connection_cutlevel;
678 QString last_image_path;
679 QString last_selected_file;
683 QGraphicsScene* scene;
684 QGraphicsItem* current_image_item;
688 int current_image_width;
689 int current_image_height;
693 int current_pick_pixels_size;
694 int current_pick_object_no_samples;
697 int current_tab_region_x_size;
698 int current_tab_region_y_size;
701 bool scrollbar_moved_externally;
703 bool current_flip_state_vertical;
704 bool current_flip_state_horizontal;
709 QList<DdtRenderingPlugin*> rendering_plugins;
712 QMap<QString, DdtDialog*> dialog_map;
713 QMap<QString, QString> dialogname_map;
716 QStringList context_menu_entries;
719 QList<QPointF> point_list;
720 bool mark_position_mode;
723 std::function<void()> last_segment_callback;
865 void resizeEvent(QResizeEvent* event);
870 void RemoveAllItemsFromScene();
875 void RemoveAllOverlayItemsFromScene();
892 void CalculatePickStatistics(
PickMode pick_mode,
double x,
double y,
893 double pixelvalue, QString ra, QString decl);
901 void GetTabularRegion(
const double x_image,
const double y_image);
911 void SetDefaultSettings();
912 void SetDefaultColourmapSettings();
913 void SetDefaultConfigurationmapSettings();
914 void SetDefaultBiasImageSettings();
917 void InitializeContextMenu();
918 void InitializeDialogMap();
921 void BrowseForFile();
922 void BrowseForFileExt();
926 void UpdateColourmap();
929 void UpdateFitsHeaderDialog();
932 void StoreCurrentImage();
933 void DisplaySelected(
const QVariant parameter);
934 void LoadFromDisc(
const QVariant parameter);
937 void SendCutValuesAndHistogram();
943 void CheckBinaryTable(
const QString extensionName);
944 void FillTable(cpl_table*
const table,
const cpl_array*
const column_names,
945 int*
const ncol,
int*
const nrow,
const QString extensionName);
946 void FillSingleTable(cpl_table*
const table,
const char*
const col_name,
947 QList<QVariant>& singleTable,
948 QList<QVariant>& singleColNames,
const int rows,
949 int*
const numVals,
int*
const cols)
const;
950 void FillSingleTableString(cpl_table*
const table,
const char*
const col_name,
951 QList<QVariant>& singleTable,
952 const int rows)
const;
953 void FillSingleTableInt(cpl_table*
const table,
const char*
const col_name,
954 QList<QVariant>& singleTable,
const int rows)
const;
955 void FillSingleTableIntArr(cpl_table*
const table,
const char*
const col_name,
956 QList<QVariant>& singleTable,
const int rows,
957 int*
const numVals)
const;
958 void FillSingleTableFloat(cpl_table*
const table,
const char*
const col_name,
959 QList<QVariant>& singleTable,
const int rows)
const;
960 void FillSingleTableFloatArr(cpl_table*
const table,
961 const char*
const col_name,
962 QList<QVariant>& singleTable,
const int rows,
963 int*
const numVals)
const;
964 void FillSingleTableDouble(cpl_table*
const table,
const char*
const col_name,
965 QList<QVariant>& singleTable,
966 const int rows)
const;
967 void FillSingleTableDoubleArr(cpl_table*
const table,
968 const char*
const col_name,
969 QList<QVariant>& singleTable,
const int rows,
970 int*
const numVals)
const;
972 void SetFitsTableParameter(
const int tableNumber,
const int rows,
973 const int cols,
const QList<QVariant> singleTable,
974 const QList<QVariant> singleColNames);
992 void MagnifyImage(
int x,
int y,
const bool pick_mode =
false);
997 void MagnifyImageWithFactor(
const QString mag_factor_str,
998 const int mag_fact_index,
const int x,
1007 void SetInitialDialogParameters(
DdtDialog* dialog,
const QString dialog_id);
1013 void SetInitialDialogParametersColourmapDialog(
DdtDialog* dialog,
1014 const QString dialog_id);
1020 void SetInitialDialogParametersPickObjectDialog(
DdtDialog* dialog,
1021 const QString dialog_id);
1027 void SetInitialDialogParametersFITSHeaderDialog(
DdtDialog* dialog,
1028 const QString dialog_id);
1035 void SetInitialDialogParametersHDUDialog(
DdtDialog* dialog,
1036 const QString dialog_id);
1043 void SetInitialDialogParametersTabularRegionDialog(
DdtDialog* dialog,
1044 const QString dialog_id);
1051 void SetInitialDialogParametersGraphicalDialog(
DdtDialog* dialog,
1052 const QString dialog_id);
1059 void SetInitialDialogParametersCutValuesDialog(
DdtDialog* dialog,
1060 const QString dialog_id);
1067 void SetInitialDialogParametersBiasDialog(
DdtDialog* dialog,
1068 const QString dialog_id);
1075 void SetInitialDialogParametersScaleRotateCutValuesDialog(
1076 DdtDialog* dialog,
const QString dialog_id);
1083 void SetInitialDialogParametersStatisticDialog(
DdtDialog* dialog,
1084 const QString dialog_id);
1091 void SetInitialDialogParametersPVCMDialog(
DdtDialog* dialog,
1092 const QString dialog_id);
1099 void SetInitialDialogParametersReferenceLineDialog(
DdtDialog* dialog,
1100 const QString dialog_id);
1107 void SetInitialDialogParametersDataStreamDialog(
DdtDialog* dialog,
1108 const QString dialog_id);
1115 void DialogParameterChangedColourmapDialog(
const QString parameter_id,
1116 const QVariant parameter);
1123 void DialogParameterChangedPickObject(
const QString parameter_id,
1124 const QVariant parameter);
1132 void DialogParameterChangedTabularRegion(
const QString parameter_id,
1133 const QVariant parameter);
1141 void DialogParameterChangedGraphicalElements(
const QString parameter_id,
1142 const QVariant parameter);
1149 void DialogParameterChangedCutValues(
const QString parameter_id,
1150 const QVariant parameter);
1158 void DialogParameterChangedScaleRotateCutValues(
const QString parameter_id,
1159 const QVariant parameter);
1166 void DialogParameterChangedBias(
const QString parameter_id,
1167 const QVariant parameter);
1174 void DialogParameterChangedStatistic(
const QString parameter_id,
1175 const QVariant parameter);
1182 void DialogParameterChangedSlit(
const QString parameter_id,
1183 const QVariant parameter);
1190 void DialogParameterChangedPVCM(
const QString parameter_id,
1191 const QVariant parameter);
1199 void DialogParameterChangedReferenceLine(
const QString parameter_id,
1200 const QVariant parameter);
1208 void DialogParameterChangedDataStream(
const QString parameter_id,
1209 const QVariant parameter);
1217 void DialogParameterChangedHDU(
const QString parameter_id,
1218 const QVariant parameter);
1235 void DialogParameterChanged(
const QString dialog_id,
1236 const QString parameter_id,
1237 const QVariant parameter);
1248 void AttachDataStream(
const QString data_stream_id);
1254 void DetachDataStream(
const QString data_stream_id);
1261 void AttachDataFile(QString filename);
1263 void AttachImageExtensionsAsOne(QString filename);
1277 void FlipImage(
bool vertical_axis,
bool horizontal_axis);
1283 void RotateImage(
int rotation_angle);
1296 void UpdatePosition(
double scroll_fraction_x,
double scroll_fraction_y);
1303 void IncrementScale();
1309 void DecrementScale();
1315 void SetToDefaultScale();
1322 void SelectNewScale(QString nextScale);
1327 void ScaleFactorForNewImage();
1334 QString FindAutoScale();
1346 void GraphicalElement(
double x1,
double y1,
double x2,
double y2,
1347 const QString draw_mode);
1349 void GraphicalTextElement(
double x1,
double y1,
double x2,
double y2,
1350 const QString draw_mode, QString text);
1362 void StatisticRectangle(
const double x1,
const double y1,
const double x2,
1376 void SlitElement(
const double target_x,
const double target_y,
1377 const double slit_x,
const double slit_y,
1378 const double x_offset,
const double y_offset);
1382 void CalculateHistogramReferenceLine(QPointF p1, QPointF p2);
1393 void SetMagnificationFactor(QString magnification_factor);
1406 void CursorPosition(
double x,
double y,
bool mouse_clicked);
1417 void SetCutValues(
double low,
double high);
1427 void SetMinMaxCuts();
1436 void DetachStream();
1441 void HandleNewDataEvent();
1448 void SetAutoScaleState(
const bool new_auto_scale_state);
1456 void LoadRenderingPlugins();
1459 void ScrollBarMoved(
int pos);
1462 void DisplayContextMenu(
const QPoint& pos);
1463 void ExecuteContextMenuCommand(QString command);
1503 int current_image_width,
1504 int current_image_height);
1524 void CursorInfo(
double x,
double y,
double pixelvalue, QString ra,
1574 int scaling_function);
1624 #endif // DDT_DATAVISUALISATION_DDTWIDGETS_IMAGEWIDGET_HPP