1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/*
* Christian Hergert's uber-graph (GPL3)
* wrapped in an interface compatible with
* L. A. F. Pereira's loadgraph (GPL2.1).
*/
#include <string.h>
#include "loadgraph.h"
#include "uber.h"
#define LG_MAX_LINES 9
static const gchar *default_colors[] = { "#73d216",
"#f57900",
/*colors from simple.c sample */ "#3465a4",
"#ef2929",
"#75507b",
"#ce5c00",
"#c17d11",
"#ce5c00",
"#729fcf",
NULL };
struct _LoadGraph {
GtkWidget *uber_widget;
gdouble cur_value[LG_MAX_LINES];
gint height;
};
gdouble
_sample_func (UberLineGraph *graph,
guint line,
gpointer user_data)
{
LoadGraph *lg = (LoadGraph *)user_data;
return lg->cur_value[line-1];
}
LoadGraph *load_graph_new(gint size)
{
LoadGraph *lg;
GdkRGBA color;
int i = 0;
lg = g_new0(LoadGraph, 1);
lg->uber_widget = uber_line_graph_new();
lg->height = (size+1) * 2; /* idk */
for (i = 0; i < LG_MAX_LINES; i++) {
lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE;
//GtkWidget *label = uber_label_new();
//uber_label_set_text(UBER_LABEL(label), "BLAH!");
gdk_rgba_parse(&color, default_colors[i]);
uber_line_graph_add_line(UBER_LINE_GRAPH(lg->uber_widget), &color, NULL); /* UBER_LABEL(label) */
}
uber_line_graph_set_autoscale(UBER_LINE_GRAPH(lg->uber_widget), TRUE);
uber_line_graph_set_data_func(UBER_LINE_GRAPH(lg->uber_widget),
(UberLineGraphFunc)_sample_func, (gpointer *)lg, NULL);
return lg;
}
void load_graph_set_data_suffix(LoadGraph * lg, gchar * suffix)
{
}
gchar *load_graph_get_data_suffix(LoadGraph * lg)
{
return strdup("");
}
GtkWidget *load_graph_get_framed(LoadGraph * lg)
{
if (lg != NULL)
return lg->uber_widget;
return NULL;
}
void load_graph_set_title(LoadGraph * lg, const gchar *title)
{
}
void load_graph_clear(LoadGraph * lg)
{
int i;
if (lg != NULL) {
for (i = 0; i < LG_MAX_LINES; i++) {
lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE;
}
uber_line_graph_clear(UBER_LINE_GRAPH(lg->uber_widget));
uber_graph_scale_changed(UBER_GRAPH(lg->uber_widget));
}
}
void load_graph_set_color(LoadGraph * lg, LoadGraphColor color)
{
}
void load_graph_destroy(LoadGraph * lg)
{
if (lg != NULL) {
g_object_unref(lg->uber_widget);
g_free(lg);
}
}
/*static gboolean _expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data)
{
return TRUE;
}*/
void load_graph_configure_expose(LoadGraph * lg)
{
}
void load_graph_update_ex(LoadGraph *lg, guint line, gdouble value)
{
if (lg != NULL && line < LG_MAX_LINES)
lg->cur_value[line] = value;
}
void load_graph_update(LoadGraph * lg, gdouble value)
{
load_graph_update_ex(lg, 0, value);
}
gint load_graph_get_height(LoadGraph *lg) {
if (lg != NULL)
return lg->height;
return 0;
}
|