Panda3D
|
This is an abstract class that presents the interface for drawing a piano-roll type chart: it shows the time spent in each of a number of collectors as a horizontal bar of color, with time as the horizontal axis. More...
#include "pStatPianoRoll.h"
Classes | |
class | BarBuilder |
class | ColorBar |
Public Types | |
enum | GuideBarStyle { GBS_normal, GBS_target, GBS_user } |
enum | GuideBarUnits { GBU_hz = 0x0001, GBU_ms = 0x0002, GBU_named = 0x0004, GBU_show_units = 0x0008 } |
Public Member Functions | |
PStatPianoRoll (PStatMonitor *monitor, int thread_index, int xsize, int ysize) | |
int | add_user_guide_bar (float height) |
Creates a new user guide bar and returns its index number. | |
int | find_user_guide_bar (float from_height, float to_height) const |
Returns the index number of the first user guide bar found whose height is within the indicated range, or -1 if no user guide bars fall within the range. | |
const GuideBar & | get_guide_bar (int n) const |
Returns the nth horizontal guide bar. | |
const 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 | GBU_show_units. | |
int | get_guide_bar_units () const |
Returns the units that are displayed for the guide bar labels. | |
float | get_horizontal_scale () const |
Returns the amount of total time the width of the horizontal axis represents. | |
int | get_label_collector (int n) const |
Returns the collector index associated with the nth label. | |
RGBColorf | get_label_color (int n) const |
Returns the color associated with the nth label. | |
string | get_label_name (int n) const |
Returns the text associated with the nth label. | |
PStatMonitor * | get_monitor () const |
Returns the monitor associated with this chart. | |
int | get_num_guide_bars () const |
Returns the number of horizontal guide bars that should be drawn, based on the indicated target frame rate. | |
int | get_num_labels () const |
Returns the number of labels to be drawn for this chart. | |
int | get_num_user_guide_bars () const |
Returns the current number of user-defined guide bars. | |
float | get_target_frame_rate () const |
Returns the indicated target frame rate in Hz. | |
GuideBar | get_user_guide_bar (int n) const |
Returns the nth user-defined guide bar. | |
int | get_xsize () const |
Returns the width of the chart in pixels. | |
int | get_ysize () const |
Returns the height of the chart in pixels. | |
int | height_to_pixel (float value) const |
Converts a value (i.e. | |
void | move_user_guide_bar (int n, float height) |
Adjusts the height of the nth user-defined guide bar. | |
float | pixel_to_height (int y) const |
Converts a horizontal pixel offset to a value (a "height" in the strip chart). | |
float | pixel_to_timestamp (int x) const |
Converts a horizontal pixel offset to a timestamp. | |
void | remove_user_guide_bar (int n) |
Removes the user guide bar with the indicated index number. | |
void | set_guide_bar_unit_name (const 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_show_units. | |
void | set_guide_bar_units (int unit_mask) |
Sets the units that are displayed for the guide bar labels. | |
void | set_horizontal_scale (float time_width) |
Changes the amount of time the width of the horizontal axis represents. | |
void | set_target_frame_rate (float frame_rate) |
Sets the target frame rate of the application in Hz. | |
int | timestamp_to_pixel (float time) const |
Converts a timestamp to a horizontal pixel offset. | |
void | update () |
Updates the chart with the latest data. | |
Static Public Member Functions | |
static string | format_number (float value) |
Returns a string representing the value nicely formatted for its range. | |
static string | format_number (float value, int guide_bar_units, const string &unit_name=string()) |
Returns a string representing the value nicely formatted for its range, including the units as indicated. | |
Protected Types | |
typedef pvector< GuideBar > | GuideBars |
typedef vector_int | Labels |
Protected Member Functions | |
virtual void | begin_draw () |
Should be overridden by the user class. | |
virtual void | begin_row (int row) |
Should be overridden by the user class. | |
void | changed_size (int xsize, int ysize) |
To be called by the user class when the widget size has changed. | |
virtual void | draw_bar (int row, int from_x, int to_x) |
Draws a single bar in the chart for the indicated row, in the color get_row_color(row), for the indicated horizontal pixel range. | |
virtual void | end_draw () |
Should be overridden by the user class. | |
virtual void | end_row (int row) |
Should be overridden by the user class. | |
void | force_redraw () |
To be called by the user class when the whole thing needs to be redrawn for some reason. | |
virtual void | idle () |
Should be overridden by the user class to perform any other updates might be necessary after the bars have been redrawn. | |
GuideBar | make_guide_bar (float value, GuideBarStyle style=GBS_normal) const |
Makes a guide bar for the indicated elapsed time or level units. | |
virtual void | normal_guide_bars () |
Calls update_guide_bars with parameters suitable to this kind of graph. | |
PT (PStatMonitor) _monitor | |
void | update_guide_bars (int num_bars, float scale) |
Resets the list of guide bars. | |
Protected Attributes | |
int | _guide_bar_units |
GuideBars | _guide_bars |
bool | _guide_bars_changed |
Labels | _labels |
bool | _labels_changed |
float | _target_frame_rate |
int | _thread_index |
string | _unit_name |
int | _xsize |
int | _ysize |
This is an abstract class that presents the interface for drawing a piano-roll type chart: it shows the time spent in each of a number of collectors as a horizontal bar of color, with time as the horizontal axis.
This class just manages all the piano-roll logic; the actual nuts and bolts of drawing pixels is left to a user-derived class.
Definition at line 43 of file pStatPianoRoll.h.
int PStatGraph::add_user_guide_bar | ( | float | height | ) | [inherited] |
Creates a new user guide bar and returns its index number.
Definition at line 148 of file pStatGraph.cxx.
Referenced by GtkStatsStripChart::handle_motion().
void PStatPianoRoll::begin_draw | ( | ) | [protected, virtual] |
Should be overridden by the user class.
This hook will be called before drawing any bars in the chart.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 212 of file pStatPianoRoll.cxx.
Referenced by force_redraw().
void PStatPianoRoll::begin_row | ( | int | row | ) | [protected, virtual] |
Should be overridden by the user class.
This hook will be called before drawing any one row of bars. These bars correspond to the collector whose index is get_row_collector(row), and in the color get_row_color(row).
Definition at line 225 of file pStatPianoRoll.cxx.
Referenced by force_redraw().
void PStatPianoRoll::changed_size | ( | int | xsize, |
int | ysize | ||
) | [protected] |
To be called by the user class when the widget size has changed.
This updates the chart's internal data and causes it to issue redraw commands to reflect the new size.
Definition at line 157 of file pStatPianoRoll.cxx.
References force_redraw(), and normal_guide_bars().
Referenced by WinStatsPianoRoll::changed_graph_size(), and GtkStatsPianoRoll::changed_graph_size().
void PStatPianoRoll::draw_bar | ( | int | row, |
int | from_x, | ||
int | to_x | ||
) | [protected, virtual] |
Draws a single bar in the chart for the indicated row, in the color get_row_color(row), for the indicated horizontal pixel range.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 236 of file pStatPianoRoll.cxx.
Referenced by force_redraw().
void PStatPianoRoll::end_draw | ( | ) | [protected, virtual] |
Should be overridden by the user class.
This hook will be called after drawing a series of color bars in the chart.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 258 of file pStatPianoRoll.cxx.
Referenced by force_redraw().
void PStatPianoRoll::end_row | ( | int | row | ) | [protected, virtual] |
Should be overridden by the user class.
This hook will be called after drawing a series of color bars for a single row.
Definition at line 247 of file pStatPianoRoll.cxx.
Referenced by force_redraw().
int PStatGraph::find_user_guide_bar | ( | float | from_height, |
float | to_height | ||
) | const [inherited] |
Returns the index number of the first user guide bar found whose height is within the indicated range, or -1 if no user guide bars fall within the range.
Definition at line 172 of file pStatGraph.cxx.
Referenced by WinStatsStripChart::consider_drag_start(), and GtkStatsStripChart::consider_drag_start().
void PStatPianoRoll::force_redraw | ( | ) | [protected] |
To be called by the user class when the whole thing needs to be redrawn for some reason.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 174 of file pStatPianoRoll.cxx.
References begin_draw(), begin_row(), draw_bar(), end_draw(), end_row(), and timestamp_to_pixel().
Referenced by changed_size(), set_horizontal_scale(), and update().
string PStatGraph::format_number | ( | float | value | ) | [static, inherited] |
Returns a string representing the value nicely formatted for its range.
Definition at line 184 of file pStatGraph.cxx.
Referenced by PStatGraph::format_number(), PStatGraph::make_guide_bar(), WinStatsStripChart::new_data(), and GtkStatsStripChart::new_data().
string PStatGraph::format_number | ( | float | value, |
int | guide_bar_units, | ||
const string & | unit_name = string() |
||
) | [static, inherited] |
Returns a string representing the value nicely formatted for its range, including the units as indicated.
Definition at line 210 of file pStatGraph.cxx.
References PStatGraph::format_number().
const PStatGraph::GuideBar & PStatGraph::get_guide_bar | ( | int | n | ) | const [inherited] |
Returns the nth horizontal guide bar.
This should be drawn as a horizontal line across the chart at the y pixel location determined by height_to_pixel(bar._height).
It is possible that this bar will be off the top of the chart.
Definition at line 101 of file pStatGraph.cxx.
Referenced by WinStatsStripChart::additional_window_paint(), WinStatsStripChart::end_draw(), and GtkStatsStripChart::end_draw().
const string & PStatGraph::get_guide_bar_unit_name | ( | ) | const [inline, inherited] |
Returns the name of the units to be used for the guide bars if the units type is set to GBU_named | GBU_show_units.
Definition at line 164 of file pStatGraph.I.
Referenced by WinStatsStripChart::new_data(), and GtkStatsStripChart::new_data().
int PStatGraph::get_guide_bar_units | ( | ) | const [inline, inherited] |
Returns the units that are displayed for the guide bar labels.
This may be a union of one or more members of the GuideBarUnits enum.
Definition at line 140 of file pStatGraph.I.
Referenced by WinStatsStripChart::new_data(), GtkStatsStripChart::new_data(), WinStatsStripChart::set_time_units(), and GtkStatsStripChart::set_time_units().
float PStatPianoRoll::get_horizontal_scale | ( | ) | const [inline] |
Returns the amount of total time the width of the horizontal axis represents.
Definition at line 37 of file pStatPianoRoll.I.
int PStatGraph::get_label_collector | ( | int | n | ) | const [inline, inherited] |
Returns the collector index associated with the nth label.
Definition at line 44 of file pStatGraph.I.
Referenced by WinStatsStripChart::update_labels(), and GtkStatsStripChart::update_labels().
RGBColorf PStatGraph::get_label_color | ( | int | n | ) | const [inline, inherited] |
Returns the color associated with the nth label.
Definition at line 66 of file pStatGraph.I.
string PStatGraph::get_label_name | ( | int | n | ) | const [inline, inherited] |
Returns the text associated with the nth label.
Definition at line 55 of file pStatGraph.I.
PStatMonitor * PStatGraph::get_monitor | ( | ) | const [inline, inherited] |
Returns the monitor associated with this chart.
Definition at line 22 of file pStatGraph.I.
Referenced by PStatStripChart::update(), and PStatStripChart::update_labels().
int PStatGraph::get_num_guide_bars | ( | ) | const [inherited] |
Returns the number of horizontal guide bars that should be drawn, based on the indicated target frame rate.
Not all of these may be visible; some may be off the top of the chart because of the vertical scale.
Definition at line 86 of file pStatGraph.cxx.
Referenced by WinStatsStripChart::additional_window_paint(), WinStatsStripChart::end_draw(), and GtkStatsStripChart::end_draw().
int PStatGraph::get_num_labels | ( | ) | const [inline, inherited] |
Returns the number of labels to be drawn for this chart.
Definition at line 33 of file pStatGraph.I.
Referenced by WinStatsStripChart::update_labels(), and GtkStatsStripChart::update_labels().
int PStatGraph::get_num_user_guide_bars | ( | ) | const [inherited] |
Returns the current number of user-defined guide bars.
Not all of these may be visible.
Definition at line 116 of file pStatGraph.cxx.
Referenced by WinStatsStripChart::additional_graph_window_paint(), GtkStatsStripChart::additional_graph_window_paint(), and WinStatsStripChart::additional_window_paint().
float PStatGraph::get_target_frame_rate | ( | ) | const [inline, inherited] |
Returns the indicated target frame rate in Hz.
Definition at line 93 of file pStatGraph.I.
Referenced by PStatStripChart::set_default_vertical_scale().
PStatGraph::GuideBar PStatGraph::get_user_guide_bar | ( | int | n | ) | const [inherited] |
Returns the nth user-defined guide bar.
Definition at line 126 of file pStatGraph.cxx.
References PStatGraph::make_guide_bar().
Referenced by WinStatsStripChart::additional_graph_window_paint(), GtkStatsStripChart::additional_graph_window_paint(), and WinStatsStripChart::additional_window_paint().
int PStatGraph::get_xsize | ( | ) | const [inline, inherited] |
Returns the width of the chart in pixels.
Definition at line 103 of file pStatGraph.I.
Referenced by WinStatsStripChart::additional_graph_window_paint(), GtkStatsStripChart::additional_graph_window_paint(), WinStatsStripChart::clear_region(), GtkStatsStripChart::clear_region(), WinStatsStripChart::consider_drag_start(), GtkStatsStripChart::consider_drag_start(), normal_guide_bars(), PStatStripChart::pixel_to_timestamp(), and PStatStripChart::timestamp_to_pixel().
int PStatGraph::get_ysize | ( | ) | const [inline, inherited] |
Returns the height of the chart in pixels.
Definition at line 113 of file pStatGraph.I.
Referenced by WinStatsStripChart::clear_region(), GtkStatsStripChart::clear_region(), WinStatsStripChart::consider_drag_start(), GtkStatsStripChart::consider_drag_start(), WinStatsStripChart::copy_region(), GtkStatsStripChart::copy_region(), WinStatsStripChart::draw_cursor(), GtkStatsStripChart::draw_cursor(), WinStatsStripChart::draw_empty(), GtkStatsStripChart::draw_empty(), WinStatsStripChart::draw_slice(), GtkStatsStripChart::draw_slice(), WinStatsStripChart::end_draw(), GtkStatsStripChart::end_draw(), PStatStripChart::get_collector_under_pixel(), GtkStatsStripChart::handle_button_release(), GtkStatsStripChart::handle_motion(), PStatStripChart::height_to_pixel(), and PStatStripChart::pixel_to_height().
int PStatPianoRoll::height_to_pixel | ( | float | value | ) | const [inline] |
Converts a value (i.e.
a "height" in the strip chart) to a horizontal pixel offset.
Definition at line 68 of file pStatPianoRoll.I.
void PStatPianoRoll::idle | ( | ) | [protected, virtual] |
Should be overridden by the user class to perform any other updates might be necessary after the bars have been redrawn.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 269 of file pStatPianoRoll.cxx.
Referenced by update().
PStatGraph::GuideBar PStatGraph::make_guide_bar | ( | float | value, |
PStatGraph::GuideBarStyle | style = GBS_normal |
||
) | const [protected, inherited] |
Makes a guide bar for the indicated elapsed time or level units.
Definition at line 295 of file pStatGraph.cxx.
References PStatGraph::format_number().
Referenced by WinStatsStripChart::additional_window_paint(), PStatGraph::get_user_guide_bar(), and PStatGraph::update_guide_bars().
void PStatGraph::move_user_guide_bar | ( | int | n, |
float | height | ||
) | [inherited] |
Adjusts the height of the nth user-defined guide bar.
Definition at line 137 of file pStatGraph.cxx.
Referenced by GtkStatsStripChart::handle_button_release(), and GtkStatsStripChart::handle_motion().
void PStatPianoRoll::normal_guide_bars | ( | ) | [protected, virtual] |
Calls update_guide_bars with parameters suitable to this kind of graph.
Implements PStatGraph.
Definition at line 200 of file pStatPianoRoll.cxx.
References PStatGraph::get_xsize(), and PStatGraph::update_guide_bars().
Referenced by changed_size(), and set_horizontal_scale().
float PStatPianoRoll::pixel_to_height | ( | int | y | ) | const [inline] |
Converts a horizontal pixel offset to a value (a "height" in the strip chart).
Definition at line 79 of file pStatPianoRoll.I.
float PStatPianoRoll::pixel_to_timestamp | ( | int | x | ) | const [inline] |
Converts a horizontal pixel offset to a timestamp.
Definition at line 57 of file pStatPianoRoll.I.
void PStatGraph::remove_user_guide_bar | ( | int | n | ) | [inherited] |
Removes the user guide bar with the indicated index number.
All subsequent index numbers are adjusted down one.
Definition at line 160 of file pStatGraph.cxx.
Referenced by GtkStatsStripChart::handle_button_release().
void PStatGraph::set_guide_bar_unit_name | ( | const string & | unit_name | ) | [inline, inherited] |
Sets the name of the units to be used for the guide bars if the units type is set to GBU_named | GBU_show_units.
Definition at line 152 of file pStatGraph.I.
void PStatGraph::set_guide_bar_units | ( | int | guide_bar_units | ) | [inline, inherited] |
Sets the units that are displayed for the guide bar labels.
This may be a union of one or more members of the GuideBarUnits enum.
Definition at line 125 of file pStatGraph.I.
Referenced by WinStatsStripChart::set_time_units(), and GtkStatsStripChart::set_time_units().
void PStatPianoRoll::set_horizontal_scale | ( | float | time_width | ) | [inline] |
Changes the amount of time the width of the horizontal axis represents.
This may force a redraw.
Reimplemented in GtkStatsPianoRoll, and WinStatsPianoRoll.
Definition at line 22 of file pStatPianoRoll.I.
References force_redraw(), and normal_guide_bars().
Referenced by WinStatsPianoRoll::set_horizontal_scale(), and GtkStatsPianoRoll::set_horizontal_scale().
void PStatGraph::set_target_frame_rate | ( | float | frame_rate | ) | [inline, inherited] |
Sets the target frame rate of the application in Hz.
This only affects the choice of initial scale and the placement of guide bars.
Definition at line 79 of file pStatGraph.I.
int PStatPianoRoll::timestamp_to_pixel | ( | float | time | ) | const [inline] |
Converts a timestamp to a horizontal pixel offset.
Definition at line 47 of file pStatPianoRoll.I.
Referenced by force_redraw().
void PStatPianoRoll::update | ( | ) |
Updates the chart with the latest data.
Definition at line 126 of file pStatPianoRoll.cxx.
References force_redraw(), PStatThreadData::get_frame(), PStatThreadData::get_latest_frame_number(), PStatClientData::get_num_collectors(), PStatClientData::get_num_threads(), PStatClientData::get_thread_data(), idle(), and PStatThreadData::is_empty().
void PStatGraph::update_guide_bars | ( | int | num_bars, |
float | scale | ||
) | [protected, inherited] |
Resets the list of guide bars.
Definition at line 257 of file pStatGraph.cxx.
References PStatGraph::make_guide_bar().
Referenced by PStatStripChart::normal_guide_bars(), and normal_guide_bars().