Panda3D
Loading...
Searching...
No Matches
pStatGraph.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file pStatGraph.h
10 * @author drose
11 * @date 2000-07-19
12 */
13
14#ifndef PSTATGRAPH_H
15#define PSTATGRAPH_H
16
17#include "pandatoolbase.h"
18
19#include "pStatMonitor.h"
20#include "pStatClientData.h"
21
22#include "luse.h"
23#include "vector_int.h"
24
25#include "pmap.h"
26
27class PStatView;
28
29/**
30 * This is an abstract base class for several different kinds of graphs that
31 * have a few things in common, like labels and guide bars.
32 */
34public:
35 PStatGraph(PStatMonitor *monitor, int xsize, int ysize);
36 virtual ~PStatGraph();
37
38 INLINE PStatMonitor *get_monitor() const;
39
40 INLINE int get_num_labels() const;
41 INLINE int get_label_collector(int n) const;
42 INLINE std::string get_label_name(int n) const;
43 INLINE LRGBColor get_label_color(int n) const;
44
45 INLINE void set_target_frame_rate(double frame_rate);
46 INLINE double get_target_frame_rate() const;
47
48 INLINE int get_xsize() const;
49 INLINE int get_ysize() const;
50
51 enum GuideBarStyle {
52 GBS_normal,
53 GBS_target,
54 GBS_user,
55 };
56
57 class GuideBar {
58 public:
59 GuideBar(double height, const std::string &label, GuideBarStyle style);
60 GuideBar(const GuideBar &copy);
61
62 double _height;
63 std::string _label;
64 GuideBarStyle _style;
65 };
66
67 enum GuideBarUnits {
68 GBU_hz = 0x0001,
69 GBU_ms = 0x0002,
70 GBU_named = 0x0004,
71 GBU_show_units = 0x0008,
72 };
73
74 int get_num_guide_bars() const;
75 const GuideBar &get_guide_bar(int n) const;
76
77 int get_num_user_guide_bars() const;
78 GuideBar get_user_guide_bar(int n) const;
79 void move_user_guide_bar(int n, double height);
80 int add_user_guide_bar(double height);
81 void remove_user_guide_bar(int n);
82 int find_user_guide_bar(double from_height, double to_height) const;
83
84 INLINE void set_guide_bar_units(int unit_mask);
85 INLINE int get_guide_bar_units() const;
86 INLINE void set_guide_bar_unit_name(const std::string &unit_name);
87 INLINE const std::string &get_guide_bar_unit_name() const;
88
89 static std::string format_number(double value);
90 static std::string format_number(double value, int guide_bar_units,
91 const std::string &unit_name = std::string());
92
93protected:
94 virtual void normal_guide_bars()=0;
95 void update_guide_bars(int num_bars, double scale);
96 GuideBar make_guide_bar(double value, GuideBarStyle style = GBS_normal) const;
97
98 bool _labels_changed;
99 bool _guide_bars_changed;
100
101 PT(PStatMonitor) _monitor;
102
103 double _target_frame_rate;
104
105 int _xsize;
106 int _ysize;
107
108 // Table of the collectors that should be drawn as labels, in order from
109 // bottom to top.
110 typedef vector_int Labels;
111 Labels _labels;
112
113 typedef pvector<GuideBar> GuideBars;
114 GuideBars _guide_bars;
115 int _guide_bar_units;
116 std::string _unit_name;
117};
118
119#include "pStatGraph.I"
120
121#endif
This is an abstract base class for several different kinds of graphs that have a few things in common...
Definition pStatGraph.h:33
GuideBar get_user_guide_bar(int n) const
Returns the nth user-defined guide bar.
LRGBColor get_label_color(int n) const
Returns the color associated with the nth label.
Definition pStatGraph.I:52
void set_guide_bar_unit_name(const std::string &unit_name)
Sets the name of the units to be used for the guide bars if the units type is set to GBU_named | GBU_...
Definition pStatGraph.I:120
int find_user_guide_bar(double from_height, double to_height) const
Returns the index number of the first user guide bar found whose height is within the indicated range...
int get_num_user_guide_bars() const
Returns the current number of user-defined guide bars.
const std::string & get_guide_bar_unit_name() const
Returns the name of the units to be used for the guide bars if the units type is set to GBU_named | G...
Definition pStatGraph.I:129
int add_user_guide_bar(double height)
Creates a new user guide bar and returns its index number.
void move_user_guide_bar(int n, double height)
Adjusts the height of the nth user-defined guide bar.
void set_guide_bar_units(int unit_mask)
Sets the units that are displayed for the guide bar labels.
Definition pStatGraph.I:99
int get_guide_bar_units() const
Returns the units that are displayed for the guide bar labels.
Definition pStatGraph.I:111
void remove_user_guide_bar(int n)
Removes the user guide bar with the indicated index number.
double get_target_frame_rate() const
Returns the indicated target frame rate in Hz.
Definition pStatGraph.I:74
PStatMonitor * get_monitor() const
Returns the monitor associated with this chart.
Definition pStatGraph.I:18
int get_num_guide_bars() const
Returns the number of horizontal guide bars that should be drawn, based on the indicated target frame...
int get_num_labels() const
Returns the number of labels to be drawn for this chart.
Definition pStatGraph.I:26
static std::string format_number(double value)
Returns a string representing the value nicely formatted for its range.
int get_label_collector(int n) const
Returns the collector index associated with the nth label.
Definition pStatGraph.I:34
int get_xsize() const
Returns the width of the chart in pixels.
Definition pStatGraph.I:82
int get_ysize() const
Returns the height of the chart in pixels.
Definition pStatGraph.I:90
void set_target_frame_rate(double frame_rate)
Sets the target frame rate of the application in Hz.
Definition pStatGraph.I:62
const GuideBar & get_guide_bar(int n) const
Returns the nth horizontal guide bar.
std::string get_label_name(int n) const
Returns the text associated with the nth label.
Definition pStatGraph.I:43
This is an abstract class that presents the interface to any number of different front-ends for the s...
A View boils down the frame data to a linear list of times spent in a number of different Collectors,...
Definition pStatView.h:31
This is our own Panda specialization on the default STL vector.
Definition pvector.h:42
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.