/usr/include/OpenMS/VISUAL/Spectrum3DOpenGLCanvas.h is in libopenms-dev 1.11.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | // --------------------------------------------------------------------------
// OpenMS -- Open-Source Mass Spectrometry
// --------------------------------------------------------------------------
// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
// ETH Zurich, and Freie Universitaet Berlin 2002-2013.
//
// This software is released under a three-clause BSD license:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of any author or any participating institution
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
// For a full list of authors, refer to the file AUTHORS.
// --------------------------------------------------------------------------
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// --------------------------------------------------------------------------
// $Maintainer: Timo Sachsenberg $
// $Authors: Cornelia Friedle $
// --------------------------------------------------------------------------
#ifndef OPENMS_VISUAL_SPECTRUM3DOPENGLCANVAS_H
#define OPENMS_VISUAL_SPECTRUM3DOPENGLCANVAS_H
#include <QtOpenGL/QGLWidget>
// OpenMS
#include <OpenMS/DATASTRUCTURES/DRange.h>
namespace OpenMS
{
class Spectrum3DCanvas;
/**
@brief OpenGL Canvas for 3D-visualization of map data
@note Do not use this class directly. Use Spectrum3DCanvas instead!
@ingroup SpectrumWidgets
*/
class OPENMS_GUI_DLLAPI Spectrum3DOpenGLCanvas :
public QGLWidget
{
Q_OBJECT
friend class Spectrum3DCanvas;
public:
/// Container for axis ticks
typedef std::vector<std::vector<double> > AxisTickVector;
/**
@brief Constructor
@param parent The parent widget
@param canvas_3d The main 3d canvas
*/
Spectrum3DOpenGLCanvas(QWidget * parent, Spectrum3DCanvas & canvas_3d);
/**
@brief Destructor
Destroys the OpenGLWidget and all associated data.
*/
virtual ~Spectrum3DOpenGLCanvas();
///virtual function provided from QGLWidget
void initializeGL();
/// virtual function provided from QGLWidget
void resizeGL(int w, int h);
/// virtual function provided from QGLWidget
void paintGL();
/// Builds up a display list for the 3D view
GLuint makeDataAsStick();
/// Builds up a display list for the axes
GLuint makeAxes();
/// Builds up a display list for axis ticks
GLuint makeAxesTicks();
/// Builds up a display list for the birds-eye view
GLuint makeDataAsTopView();
/// Builds up a display list for the background
GLuint makeGround();
/// Builds up a display list for grid lines
GLuint makeGridLines();
/// Draws the axis texts (since Qt 4.3 these cannot be put into display lists anymore...)
void drawAxesLegend();
/** @name Reimplemented QT events */
//@{
void mouseMoveEvent(QMouseEvent * e);
void mouseReleaseEvent(QMouseEvent * e);
void mousePressEvent(QMouseEvent * e);
void focusOutEvent(QFocusEvent * e);
//@}
/// computes the dataset supposed to be drawn when a section has been selected in zoom mode
void computeSelection();
/// updates the min and max values of the intensity
void updateIntensityScale();
/// calcualtes the zoom area , which is shown
void dataToZoomArray(double x_1, double y_1, double x_2, double y_2);
/// returns the BB-rt-coordinate : value --> BB-coordinates
double scaledRT(double rt);
/// returns the rt-value : BB-coordinates --> value
double scaledInversRT(double mz);
/// returns the BB-mz-coordinate : values --> BB-coordinates
double scaledMZ(double mz);
/// returns the mz-value : BB-coordinates --> value
double scaledInversMZ(double mz);
/// returns the BB-intensity -coordinate : values --> BB-coordinates
double scaledIntensity(Real intensity, Size layer_index);
/// recalculates the dot gradient inerpolation values.
void recalculateDotGradient_(Size layer);
///calculate the ticks for the gridlines
void calculateGridLines_();
/// return width
float width() const { return width_; }
float height() const { return heigth_; }
/// return xRot_
int xRotation() const { return xrot_; }
/// return yRot_
int yRotation() const { return yrot_; }
/// return zRot_
int zRotation() const { return zrot_; }
/// normalize the angel
void normalizeAngle(int * angle);
//document me
void setAngels(int xrot, int yrot, int zrot);
//document me
void resetTranslation();
//document me
void timeMessure();
/// stores the original rotation and zoom factor (e.g. before changing into zoom mode)
void storeRotationAndZoom();
/// restores the original rotation and zoom factor (e.g. before changing into zoom mode)
void restoreRotationAndZoom();
/** @name Different OpenGL display lists */
//@{
GLuint stickdata_;
GLuint axes_;
GLuint axes_ticks_;
GLuint gridlines_;
GLuint ground_;
//@}
/// reference to Spectrum3DCanvas
Spectrum3DCanvas & canvas_3d_;
/// member x-variables for the rotation
int xrot_;
/// member y-variables for the rotation
int yrot_;
/// member z-variables for the rotation
int zrot_;
/// member x-variable that stores the original angle during zoom mode
int xrot_tmp_;
/// member y-variable that stores the original angle during zoom mode
int yrot_tmp_;
/// member z-variable that stores the original angle during zoom mode
int zrot_tmp_;
/// member variables fot the zoom-modus
QPoint mouse_move_end_, mouse_move_begin_;
///member variable for the x and y axis of the BB
double corner_;
/// member variable for the zoom mode
double zoom_;
/// member variable that stores original zoom factor during zoom mode
double zoom_tmp_;
/// member variable for the z- axis of the BB
double near_;
/// member variable for the z- axis of the BB
double far_;
/// the width of the viewport
float width_;
/// the height of the viewport
float heigth_;
/// object which contains the min and max values of mz, rt and intensity
DRange<3> overall_values_;
///object wich contains the values of the current min and max intensity
DRange<1> int_scale_;
///member gridvectors which contains the data for the mz-axis-ticks
AxisTickVector grid_mz_;
///member gridvectors which contains the data for the rt-axis-ticks
AxisTickVector grid_rt_;
///member gridvectors which contains the data for the intensity-axis-ticks
AxisTickVector grid_intensity_;
/// x1 coordinate of the zoomselection
double x_1_;
/// x2 coordinate of the zoomselection
double x_2_;
/// y1 coordinate of the zoomselection
double y_1_;
/// y2 coordinate of the zoomselection
double y_2_;
/// x- translation
double trans_x_;
/// y_translation
double trans_y_;
protected slots:
/// Slot that reacts on action mode changes
void actionModeChange();
};
}
#endif
|