#ifndef _PROCMAN_LOAD_GRAPH_H_ #define _PROCMAN_LOAD_GRAPH_H_ #include #include 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 colors; std::vector data_block; gfloat* data[NUM_POINTS]; GtkWidget *main_widget; GtkWidget *disp; cairo_pattern_t *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; #if GLIB_CHECK_VERSION(2,61,2) gint64 time; #else GTimeVal time; #endif guint64 max; unsigned values[NUM_POINTS]; size_t cur; } net; /* }; */ }; /* Force a drawing update */ void load_graph_queue_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_ */