MorphoGraphX  2.0-1-227
TransferFunctionViewer.hpp
Go to the documentation of this file.
1 //
2 // This file is part of MorphoGraphX - http://www.MorphoGraphX.org
3 // Copyright (C) 2012-2015 Richard S. Smith and collaborators.
4 //
5 // If you use MorphoGraphX in your work, please cite:
6 // http://dx.doi.org/10.7554/eLife.05864
7 //
8 // MorphoGraphX is free software, and is licensed under under the terms of the
9 // GNU General (GPL) Public License version 2.0, http://www.gnu.org/licenses.
10 //
11 #ifndef QTRANSFERFUNCTIONVIEWER_HPP
12 #define QTRANSFERFUNCTIONVIEWER_HPP
13 
14 #include "Config.hpp"
15 #include <QLinearGradient>
16 #include <QWidget>
17 #include <QColor>
18 #include <QPainterPath>
19 #include "TransferFunction.hpp"
20 
21 #include <vector>
22 
23 class QMouseEvent;
24 class QPixmap;
25 class QAction;
26 class QPaintEvent;
27 
28 class mgxBase_EXPORT QTransferFunctionViewer : public QWidget
29 {
30  Q_OBJECT
31 public:
34  {
37  BG_BLACK
38  };
39 
40  QTransferFunctionViewer(QWidget *parent = 0, Qt::WindowFlags f = 0);
42 
43  size_t nbValues() const;
44 
45  const TransferFunction& transferFunction() const { return transfer_fct; }
46 
47 public slots:
48  void changeNbValues(int n);
49  void reverseFunction();
50  void changeTransferFunction(const TransferFunction& fct);
51  void setupGradient();
52  void setHistogram(const std::vector<double>& h);
53  void setBounds(double min, double max);
54  void setStickers(const std::vector<double>& s);
55  void setMarkerSize(int s);
56  void setCheckSize(int s);
57  void setBackgroundType(BackgroundType type);
58  void setInterpolation(TransferFunction::Interpolation i);
59  void setSelectionColor(QColor col);
60  void editMarkers();
61  void autoAdjust();
62 
63 signals:
64  void changedTransferFunction(const TransferFunction& fct);
65 
66 protected:
67  void paintEvent(QPaintEvent *event);
68  void mouseDoubleClickEvent(QMouseEvent *e);
69  void mousePressEvent(QMouseEvent *e);
70  void mouseReleaseEvent(QMouseEvent *e);
71  void mouseMoveEvent(QMouseEvent *e);
72  void resetMouseInteraction();
73 
74  void prepareHistogram();
75 
76  void createBackground();
77  QPixmap createChecks();
78 
79  TransferFunction transfer_fct;
80  std::vector<double> histogram, hist_values;
81  double minValue, maxValue;
82  QPainterPath hist_shape;
84  std::vector<double> stickers;
85  bool sticking;
87  bool select_pos;
88  double current_pos;
89  int bg_size;
90  double bg_bright;
91  double bg_dark;
94  double saved_pos;
95  QAction *reverse_act, *edit_markers;
96  QLinearGradient gradient;
98  size_t _nb_values;
99 };
100 
101 #endif
102 
QTransferFunctionViewer::saved_color
Colorf saved_color
Definition: TransferFunctionViewer.hpp:93
TransferFunction.hpp
mgx::Colorf
Color< float > Colorf
Definition: Color.hpp:317
QTransferFunctionViewer::marker_size
int marker_size
Definition: TransferFunctionViewer.hpp:86
QTransferFunctionViewer::minValue
double minValue
Definition: TransferFunctionViewer.hpp:81
QTransferFunctionViewer::transfer_fct
TransferFunction transfer_fct
Definition: TransferFunctionViewer.hpp:79
n
#define n
Definition: Eigenvalues.hpp:36
QTransferFunctionViewer::gradient
QLinearGradient gradient
Definition: TransferFunctionViewer.hpp:96
QTransferFunctionViewer::BG_CHECKS
@ BG_CHECKS
Definition: TransferFunctionViewer.hpp:35
QTransferFunctionViewer::BG_WHITE
@ BG_WHITE
Definition: TransferFunctionViewer.hpp:36
QTransferFunctionViewer::_nb_values
size_t _nb_values
Definition: TransferFunctionViewer.hpp:98
QTransferFunctionViewer::stickers
std::vector< double > stickers
Definition: TransferFunctionViewer.hpp:84
QTransferFunctionViewer::activ_pos_color
QColor activ_pos_color
Definition: TransferFunctionViewer.hpp:92
QTransferFunctionViewer::hist_shape
QPainterPath hist_shape
Definition: TransferFunctionViewer.hpp:82
QTransferFunctionViewer::bg_dark
double bg_dark
Definition: TransferFunctionViewer.hpp:91
mgx::max
T CU_HOST_DEVICE max(const T a, const T b)
Definition: Util.hpp:34
QTransferFunctionViewer::select_pos
bool select_pos
Definition: TransferFunctionViewer.hpp:87
QTransferFunctionViewer::bg_bright
double bg_bright
Definition: TransferFunctionViewer.hpp:90
QTransferFunctionViewer::reverse_act
QAction * reverse_act
Definition: TransferFunctionViewer.hpp:95
QTransferFunctionViewer::histogram
std::vector< double > histogram
Definition: TransferFunctionViewer.hpp:80
QTransferFunctionViewer::saved_pos
double saved_pos
Definition: TransferFunctionViewer.hpp:94
QTransferFunctionViewer::use_histogram
bool use_histogram
Definition: TransferFunctionViewer.hpp:83
QTransferFunctionViewer::bg_type
BackgroundType bg_type
Definition: TransferFunctionViewer.hpp:97
QTransferFunctionViewer::BackgroundType
BackgroundType
Definition: TransferFunctionViewer.hpp:33
mgx::min
CU_HOST_DEVICE T min(const T a, const T b)
Definition: Util.hpp:26
QTransferFunctionViewer::~QTransferFunctionViewer
virtual ~QTransferFunctionViewer()
Definition: TransferFunctionViewer.hpp:41
QTransferFunctionViewer::current_pos
double current_pos
Definition: TransferFunctionViewer.hpp:88
QTransferFunctionViewer::sticking
bool sticking
Definition: TransferFunctionViewer.hpp:85
QTransferFunctionViewer::bg_size
int bg_size
Definition: TransferFunctionViewer.hpp:89
QTransferFunctionViewer::transferFunction
const TransferFunction & transferFunction() const
Definition: TransferFunctionViewer.hpp:45
QTransferFunctionViewer::Colorf
TransferFunction::Colorf Colorf
Definition: TransferFunctionViewer.hpp:32
QTransferFunctionViewer
Definition: TransferFunctionViewer.hpp:28