MorphoGraphX  2.0-1-227
ColorBar.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 COLORBAR_H
12 #define COLORBAR_H
13 
14 #include <Config.hpp>
15 #include <GL.hpp>
16 
17 #include <MGXViewer/qglviewer.h>
18 #include <Parms.hpp>
19 
20 #include <iostream>
21 #include <QDataStream>
22 #include <QString>
23 #include <QTextStream>
24 #include <string>
25 #include <valarray>
26 
27 namespace mgx
28 {
29  class mgx_EXPORT Colorbar
30  {
31  public:
32  typedef std::valarray<double> array;
33  enum Position { TOP, BOTTOM, LEFT, RIGHT, TOP_LEFT, TOP_RIGHT, BOTTOM_RIGHT, BOTTOM_LEFT };
34 
35  enum Orientation { HORIZONTAL, VERTICAL };
36 
37  Colorbar(Position pos = RIGHT);
38 
39  void draw(GLuint colormapTexId, QPaintDevice* device) const;
40 
43  QFont font;
44 
45  double scale_length;
46  double width;
48  double text_to_bar;
49  double tick_size;
50  double exp_size;
51  double epsilon;
52  double line_width;
53 
54  double vmin, vmax;
55 
56  double globalScaling;
57 
58  QString label;
59 
60  void readParms(Parms& parms, QString section);
61  void writeParms(QTextStream& pout, QString section);
62 
63  void scaleDrawing(double scale);
64  void restoreScale();
65 
66  protected:
67  void startScreenCoordinatesSystem(QPaintDevice* device) const;
68  void stopScreenCoordinatesSystem() const;
69 
70  mutable double prev_width, prev_height;
71  void getValues(double start, double end, double delta, array& result) const;
72  array selectValuesDirect(double length, bool is_vertical, const QFontMetricsF& metric, double min_dist) const;
73  std::pair<double, double> significantDigits(double start, double end) const;
74  bool canRenderTicks(const array& ticks, double length, double min_dist, bool is_vertical,
75  const QFontMetricsF& font_metric) const;
76  QStringList _tick2str(const array& ticks, QString* extra = 0) const;
77  array selectValues(double length, bool is_vertical, const QFontMetricsF* metric = 0) const;
78  };
79 
80  std::ostream& operator<<(std::ostream& s, const Colorbar::Position& pos);
81  std::istream& operator>>(std::istream& s, Colorbar::Position& pos);
82 
83  QTextStream& operator<<(QTextStream& s, const Colorbar::Position& pos);
84  QTextStream& operator>>(QTextStream& s, Colorbar::Position& pos);
85 
86  QDataStream& operator<<(QDataStream& s, const Colorbar::Position& pos);
87  QDataStream& operator>>(QDataStream& s, Colorbar::Position& pos);
88 }
89 #endif
mgx::Colorbar::position
Position position
Definition: ColorBar.hpp:41
mgx::operator<<
std::ostream & operator<<(std::ostream &s, const Colorbar::Position &pos)
mgx::Colorbar::prev_width
double prev_width
Definition: ColorBar.hpp:70
GL.hpp
mgx::Colorbar::globalScaling
double globalScaling
Definition: ColorBar.hpp:56
mgx::Colorbar::font
QFont font
Definition: ColorBar.hpp:43
mgx::operator>>
std::istream & operator>>(std::istream &s, Colorbar::Position &pos)
mgx::Colorbar::TOP_RIGHT
@ TOP_RIGHT
Definition: ColorBar.hpp:33
mgx::Colorbar::tick_size
double tick_size
Definition: ColorBar.hpp:49
mgx
Distributed matrix library.
Definition: Assert.hpp:26
mgx::Colorbar::line_width
double line_width
Definition: ColorBar.hpp:52
mgx::Colorbar::array
std::valarray< double > array
Definition: ColorBar.hpp:32
Parms.hpp
mgx::Colorbar::distance_to_border
double distance_to_border
Definition: ColorBar.hpp:47
mgx::Colorbar::Position
Position
Definition: ColorBar.hpp:33
mgx::Colorbar::width
double width
Definition: ColorBar.hpp:46
mgx::Colorbar::Orientation
Orientation
Definition: ColorBar.hpp:35
mgx::Colorbar::label
QString label
Definition: ColorBar.hpp:58
mgx::Colorbar::orientation
Orientation orientation
Definition: ColorBar.hpp:42
mgx::Colorbar::text_to_bar
double text_to_bar
Definition: ColorBar.hpp:48
mgx::Colorbar::vmin
double vmin
Definition: ColorBar.hpp:54
mgx::Colorbar
Definition: ColorBar.hpp:29
mgx::Parms
A utility class to parse L-Studio like parameter files.
Definition: Parms.hpp:116
mgx::Colorbar::exp_size
double exp_size
Definition: ColorBar.hpp:50
mgx::Colorbar::epsilon
double epsilon
Definition: ColorBar.hpp:51
mgx::Colorbar::scale_length
double scale_length
Definition: ColorBar.hpp:45