Navigation

Main Page
Download
Support
Installation
Tutorial
Examples
Reference Manual
   Version 1.0.6dev
      Class Index
      File List
   Version 1.0.6
   Version 1.0.5new_solver
   Version 1.0.5dev
   Version 1.0.5b
   Version 1.0.4dev
   Version 1.0.4
Publications


Hosted by Get Ion Beam Simulator at SourceForge.net. Fast, secure and Free Open Source software downloads
ruler.hpp
Go to the documentation of this file.
1 
5 /* Copyright (c) 2005-2009,2013 Taneli Kalvas. All rights reserved.
6  *
7  * You can redistribute this software and/or modify it under the terms
8  * of the GNU General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this library (file "COPYING" included in the package);
19  * if not, write to the Free Software Foundation, Inc., 51 Franklin
20  * Street, Fifth Floor, Boston, MA 02110-1301 USA
21  *
22  * If you have questions about your rights to use or distribute this
23  * software, please contact Berkeley Lab's Technology Transfer
24  * Department at TTD@lbl.gov. Other questions, comments and bug
25  * reports should be sent directly to the author via email at
26  * taneli.kalvas@jyu.fi.
27  *
28  * NOTICE. This software was developed under partial funding from the
29  * U.S. Department of Energy. As such, the U.S. Government has been
30  * granted for itself and others acting on its behalf a paid-up,
31  * nonexclusive, irrevocable, worldwide license in the Software to
32  * reproduce, prepare derivative works, and perform publicly and
33  * display publicly. Beginning five (5) years after the date
34  * permission to assert copyright is obtained from the U.S. Department
35  * of Energy, and subject to any subsequent five (5) year renewals,
36  * the U.S. Government is granted for itself and others acting on its
37  * behalf a paid-up, nonexclusive, irrevocable, worldwide license in
38  * the Software to reproduce, prepare derivative works, distribute
39  * copies to the public, perform publicly and display publicly, and to
40  * permit others to do so.
41  */
42 
43 #ifndef RULER_HPP
44 #define RULER_HPP 1
45 
46 
47 #include <cairo.h>
48 #include <vector>
49 #include <string>
50 #include <stdio.h>
51 #include <iostream>
52 #include "vec3d.hpp"
53 #include "label.hpp"
54 #include "coordmapper.hpp"
55 
56 
62 class Ruler {
63 
66  struct Tic {
67  double _x;
68  Label _label;
72  Tic( double x, const std::string &label ) : _x(x), _label(label) {}
73  };
74 
75  Vec3D _color;
76  double _ticlen_in;
77  double _ticlen_out;
78  double _labelspace;
80  double _range[2];
81  bool _autorange[2];
83  double _endpt[4];
85  double _fontsize;
86  Label _axislabel;
88  bool _label_enabled;
89  bool _indir;
90  std::vector<Tic> _tic;
92  int _cind;
95  static bool tic_labels_bbox_crash_x( const double bbox[4], const double obbox[4] );
96  static bool tic_labels_bbox_crash_y( const double bbox[4], const double obbox[4] );
97  bool add_tic( double x, cairo_t *cairo, const Coordmapper1D &cm,
98  bool ruler_tic_bbox_test, double &maxsize, double obbox[4] );
99 
100 public:
101 
104  Ruler();
105 
108  Ruler( int cind );
109 
112  Ruler( const Ruler &ruler );
113 
116  Ruler &operator=( const Ruler &ruler );
117 
120  ~Ruler() {}
121 
124  void copy_tics( const Ruler &ruler );
125 
128  void set_font_size( double size );
129 
132  void set_color( const Vec3D &color );
133 
136  void set_ticlen( double inlen, double outlen );
137 
140  void set_autorange( bool autorange_min, bool autorange_max );
141 
144  void get_autorange( bool &autorange_min, bool &autorange_max ) const;
145 
153  void set_ranges( double min, double max );
154 
159  void get_ranges( double &min, double &max ) const;
160 
163  void set_endpoints( double x1, double y1, double x2, double y2 );
164 
167  void set_axis_label( const std::string &label );
168 
171  void enable_labels( bool enable );
172 
177  void set_coord_index( int cind );
178 
181  void set_indir( bool ccw );
182 
189  void calculate( cairo_t *cairo, Coordmapper1D &cm, bool ruler_tic_bbox_test );
190 
197  void draw( cairo_t *cairo, Coordmapper1D &cm, bool recalculate = true );
198 
205  void get_bbox( cairo_t *cairo, double bbox[4], Coordmapper1D &cm, bool recalculate = true );
206 
209  void debug_print( std::ostream &os ) const ;
210 };
211 
212 
213 #endif
Linear 1D coordinate mapper.
Definition: coordmapper.hpp:57
Class for labels in plots.
Definition: label.hpp:57
Class for coordinate axis ruler.
Definition: ruler.hpp:62
void copy_tics(const Ruler &ruler)
Copy tics and from other ruler.
Definition: ruler.cpp:147
void calculate(cairo_t *cairo, Coordmapper1D &cm, bool ruler_tic_bbox_test)
Calculate ruler ranges, set tics and coordmapper.
Definition: ruler.cpp:403
void set_font_size(double size)
Set font size.
Definition: ruler.cpp:160
void get_ranges(double &min, double &max) const
Get current ruler ranges.
Definition: ruler.cpp:221
void debug_print(std::ostream &os) const
Debug print to stream.
Definition: ruler.cpp:757
void enable_labels(bool enable)
Enable axis title and tic labels.
Definition: ruler.cpp:243
Ruler()
Default contructor.
Definition: ruler.cpp:51
void set_color(const Vec3D &color)
Set ruler color.
Definition: ruler.cpp:170
void set_endpoints(double x1, double y1, double x2, double y2)
End points in pixels for ruler.
Definition: ruler.cpp:228
void draw(cairo_t *cairo, Coordmapper1D &cm, bool recalculate=true)
Draw ruler with cairo.
Definition: ruler.cpp:576
void get_autorange(bool &autorange_min, bool &autorange_max) const
Get ruler autoranging status.
Definition: ruler.cpp:190
void set_indir(bool ccw)
Set in direction for frame ruler.
Definition: ruler.cpp:249
Ruler & operator=(const Ruler &ruler)
Assignment operator.
Definition: ruler.cpp:114
void set_ticlen(double inlen, double outlen)
Set tic lengths.
Definition: ruler.cpp:176
void set_autorange(bool autorange_min, bool autorange_max)
Set ruler autoranging status.
Definition: ruler.cpp:183
void set_coord_index(int cind)
Set coordinate index.
Definition: ruler.cpp:255
~Ruler()
Destructor.
Definition: ruler.hpp:120
void set_axis_label(const std::string &label)
Set axis label.
Definition: ruler.cpp:237
void get_bbox(cairo_t *cairo, double bbox[4], Coordmapper1D &cm, bool recalculate=true)
Get bounding box of ruler.
Definition: ruler.cpp:631
void set_ranges(double min, double max)
Set ruler ranges.
Definition: ruler.cpp:197
Three dimensional vector.
Definition: vec3d.hpp:58
1D and 2D coordinate transformations for plotter.
Plot labels.
Three dimensional vectors.


Reference manual for Ion Beam Simulator 1.0.6dev
Generated by Doxygen 1.9.1 on Thu Sep 11 2025 09:37:24.