diff options
Diffstat (limited to 'src/load-graph.h')
-rw-r--r-- | src/load-graph.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/load-graph.h b/src/load-graph.h new file mode 100644 index 0000000..6111c78 --- /dev/null +++ b/src/load-graph.h @@ -0,0 +1,131 @@ +#ifndef _PROCMAN_LOAD_GRAPH_H_ +#define _PROCMAN_LOAD_GRAPH_H_ + +#include <glib/gtypes.h> +#include <glibtop/cpu.h> + +enum +{ + LOAD_GRAPH_CPU, + LOAD_GRAPH_MEM, + LOAD_GRAPH_NET +}; + + +enum { + CPU_TOTAL, + CPU_USED, + N_CPU_STATES +}; + + +struct LoadGraphLabels +{ + GtkWidget *cpu[GLIBTOP_NCPU]; + GtkWidget *memory; + GtkWidget *swap; + GtkWidget *net_in; + GtkWidget *net_in_total; + GtkWidget *net_out; + GtkWidget *net_out_total; +}; + + + +struct LoadGraph { + + static const unsigned NUM_POINTS = 60 + 2; + static const unsigned GRAPH_MIN_HEIGHT = 40; + + LoadGraph(guint type); + ~LoadGraph(); + + unsigned num_bars() const; + void clear_background(); + + double fontsize; + double rmargin; + double indent; + + guint n; + gint type; + guint speed; + guint draw_width, draw_height; + guint render_counter; + guint frames_per_unit; + guint graph_dely; + guint real_draw_height; + double graph_delx; + guint graph_buffer_offset; + + std::vector<GdkColor> colors; + + std::vector<float> data_block; + gfloat* data[NUM_POINTS]; + + GtkWidget *main_widget; + GtkWidget *disp; + + GdkGC *gc; + GdkDrawable *background; + + guint timer_index; + + gboolean draw; + + LoadGraphLabels labels; + GtkWidget *mem_color_picker; + GtkWidget *swap_color_picker; + + /* union { */ + struct { + guint now; /* 0 -> current, 1 -> last + now ^ 1 each time */ + /* times[now], times[now ^ 1] is last */ + guint64 times[2][GLIBTOP_NCPU][N_CPU_STATES]; + } cpu; + + struct { + guint64 last_in, last_out; + GTimeVal time; + unsigned int max; + unsigned values[NUM_POINTS]; + size_t cur; + } net; + /* }; */ +}; + + + +/* Force a drawing update */ +void +load_graph_draw (LoadGraph *g); + +/* Start load graph. */ +void +load_graph_start (LoadGraph *g); + +/* Stop load graph. */ +void +load_graph_stop (LoadGraph *g); + +/* Change load graph speed and restart it if it has been previously started */ +void +load_graph_change_speed (LoadGraph *g, + guint new_speed); + +LoadGraphLabels* +load_graph_get_labels (LoadGraph *g) G_GNUC_CONST; + + +GtkWidget* +load_graph_get_widget (LoadGraph *g) G_GNUC_CONST; + +GtkWidget* +load_graph_get_mem_color_picker(LoadGraph *g) G_GNUC_CONST; + +GtkWidget* +load_graph_get_swap_color_picker(LoadGraph *g) G_GNUC_CONST; + + +#endif /* _PROCMAN_LOAD_GRAPH_H_ */ |