Main Page
Related Pages
Classes
Files
File List
File Members
src
ruler.hpp
Go to the documentation of this file.
1
5
/* Copyright (c) 2005-2009 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 "
color.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
Color
_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
Color
&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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
Reference manual for Ion Beam Simulator 1.0.5b
Generated on by
Doxygen
1.8.2 on Fri Sep 21 2012 16:46:41.