Blame src/load-graph.h

Packit 76ec6a
/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
Packit 76ec6a
#ifndef _GSM_LOAD_GRAPH_H_
Packit 76ec6a
#define _GSM_LOAD_GRAPH_H_
Packit 76ec6a
Packit 76ec6a
#include <glib.h>
Packit 76ec6a
#include <glibtop/cpu.h>
Packit 76ec6a
Packit 76ec6a
#include "legacy/gsm_color_button.h"
Packit 76ec6a
#include "util.h"
Packit 76ec6a
Packit 76ec6a
enum
Packit 76ec6a
{
Packit 76ec6a
    LOAD_GRAPH_CPU,
Packit 76ec6a
    LOAD_GRAPH_MEM,
Packit 76ec6a
    LOAD_GRAPH_NET
Packit 76ec6a
};
Packit 76ec6a
Packit 76ec6a
enum
Packit 76ec6a
{
Packit 76ec6a
    CPU_TOTAL,
Packit 76ec6a
    CPU_USED,
Packit 76ec6a
    N_CPU_STATES
Packit 76ec6a
};
Packit 76ec6a
Packit 76ec6a
struct LoadGraphLabels
Packit 76ec6a
{
Packit 76ec6a
    GtkLabel *cpu[GLIBTOP_NCPU];
Packit 76ec6a
    GtkLabel *memory;
Packit 76ec6a
    GtkLabel *swap;
Packit 76ec6a
    GtkLabel *net_in;
Packit 76ec6a
    GtkLabel *net_in_total;
Packit 76ec6a
    GtkLabel *net_out;
Packit 76ec6a
    GtkLabel *net_out_total;
Packit 76ec6a
};
Packit 76ec6a
Packit 76ec6a
struct LoadGraph
Packit 76ec6a
  : private procman::NonCopyable
Packit 76ec6a
{
Packit 76ec6a
    static const unsigned NUM_POINTS = 60 + 2;
Packit 76ec6a
    static const unsigned GRAPH_MIN_HEIGHT = 40;
Packit 76ec6a
Packit 76ec6a
    LoadGraph(guint type);
Packit 76ec6a
    ~LoadGraph();
Packit 76ec6a
Packit 76ec6a
    unsigned num_bars() const;
Packit 76ec6a
    void clear_background();
Packit 76ec6a
Packit 76ec6a
    double fontsize;
Packit 76ec6a
    double rmargin;
Packit 76ec6a
    double indent;
Packit 76ec6a
Packit 76ec6a
    guint n;
Packit 76ec6a
    gint type;
Packit 76ec6a
    guint speed;
Packit 76ec6a
    guint draw_width, draw_height;
Packit 76ec6a
    guint render_counter;
Packit 76ec6a
    guint frames_per_unit;
Packit 76ec6a
    guint graph_dely;
Packit 76ec6a
    guint real_draw_height;
Packit 76ec6a
    double graph_delx;
Packit 76ec6a
    guint graph_buffer_offset;
Packit 76ec6a
Packit 76ec6a
    std::vector<GdkRGBA> colors;
Packit 76ec6a
Packit 76ec6a
    std::vector<double> data_block;
Packit 76ec6a
    double* data[NUM_POINTS];
Packit 76ec6a
Packit 76ec6a
    GtkBox *main_widget;
Packit 76ec6a
    GtkDrawingArea *disp;
Packit 76ec6a
Packit 76ec6a
    cairo_surface_t *background;
Packit 76ec6a
Packit 76ec6a
    guint timer_index;
Packit 76ec6a
Packit 76ec6a
    gboolean draw;
Packit 76ec6a
Packit 76ec6a
    LoadGraphLabels labels;
Packit 76ec6a
    GsmColorButton *mem_color_picker;
Packit 76ec6a
    GsmColorButton *swap_color_picker;
Packit 76ec6a
Packit 76ec6a
    /* union { */
Packit 76ec6a
    struct
Packit 76ec6a
    {
Packit 76ec6a
        guint now; /* 0 -> current, 1 -> last
Packit 76ec6a
                      now ^ 1 each time */
Packit 76ec6a
        /* times[now], times[now ^ 1] is last */
Packit 76ec6a
        guint64 times[2][GLIBTOP_NCPU][N_CPU_STATES];
Packit 76ec6a
    } cpu;
Packit 76ec6a
Packit 76ec6a
    struct
Packit 76ec6a
    {
Packit 76ec6a
        guint64 last_in, last_out;
Packit 76ec6a
        GTimeVal time;
Packit 76ec6a
        guint64 max;
Packit 76ec6a
        unsigned values[NUM_POINTS];
Packit 76ec6a
        size_t cur;
Packit 76ec6a
    } net;
Packit 76ec6a
    /* }; */
Packit 76ec6a
};
Packit 76ec6a
Packit 76ec6a
/* Force a drawing update */
Packit 76ec6a
void
Packit 76ec6a
load_graph_queue_draw (LoadGraph *g);
Packit 76ec6a
Packit 76ec6a
/* Start load graph. */
Packit 76ec6a
void
Packit 76ec6a
load_graph_start (LoadGraph *g);
Packit 76ec6a
Packit 76ec6a
/* Stop load graph. */
Packit 76ec6a
void
Packit 76ec6a
load_graph_stop (LoadGraph *g);
Packit 76ec6a
Packit 76ec6a
/* Change load graph speed and restart it if it has been previously started */
Packit 76ec6a
void
Packit 76ec6a
load_graph_change_speed (LoadGraph *g,
Packit 76ec6a
                         guint new_speed);
Packit 76ec6a
Packit 76ec6a
/* Clear the history data. */
Packit 76ec6a
void
Packit 76ec6a
load_graph_reset (LoadGraph *g);
Packit 76ec6a
Packit 76ec6a
LoadGraphLabels*
Packit 76ec6a
load_graph_get_labels (LoadGraph *g) G_GNUC_CONST;
Packit 76ec6a
Packit 76ec6a
GtkBox*
Packit 76ec6a
load_graph_get_widget (LoadGraph *g) G_GNUC_CONST;
Packit 76ec6a
Packit 76ec6a
GsmColorButton*
Packit 76ec6a
load_graph_get_mem_color_picker(LoadGraph *g) G_GNUC_CONST;
Packit 76ec6a
Packit 76ec6a
GsmColorButton*
Packit 76ec6a
load_graph_get_swap_color_picker(LoadGraph *g) G_GNUC_CONST;
Packit 76ec6a
Packit 76ec6a
#endif /* _GSM_LOAD_GRAPH_H_ */