GtkDatabox
A set of GTK+ widgets to display large amounts of numerical data quickly and easily.
gtk/gtkdatabox.h File Reference
#include <gtkdatabox_typedefs.h>
#include <gtkdatabox_graph.h>
#include <gtkdatabox_ruler.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkadjustment.h>
Include dependency graph for gtkdatabox.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  GtkDataboxValueRectangle
struct  _GtkDatabox
struct  _GtkDataboxClass

Defines

#define GTK_TYPE_DATABOX   (gtk_databox_get_type ())
#define GTK_DATABOX(obj)
#define GTK_DATABOX_CLASS(klass)
#define GTK_IS_DATABOX(obj)
#define GTK_IS_DATABOX_CLASS(klass)
#define GTK_DATABOX_GET_CLASS(obj)

Typedefs

typedef struct _GtkDataboxClass GtkDataboxClass
typedef struct _GtkDataboxPrivate GtkDataboxPrivate

Functions

GType gtk_databox_get_type (void)
GtkWidget * gtk_databox_new (void)
gint gtk_databox_graph_add (GtkDatabox *box, GtkDataboxGraph *graph)
gint gtk_databox_graph_add_front (GtkDatabox *box, GtkDataboxGraph *graph)
gint gtk_databox_graph_remove (GtkDatabox *box, GtkDataboxGraph *graph)
gint gtk_databox_graph_remove_all (GtkDatabox *box)
gint gtk_databox_auto_rescale (GtkDatabox *box, gfloat border)
gint gtk_databox_calculate_extrema (GtkDatabox *box, gfloat *min_x, gfloat *max_x, gfloat *min_y, gfloat *max_y)
void gtk_databox_set_total_limits (GtkDatabox *box, gfloat left, gfloat right, gfloat top, gfloat bottom)
void gtk_databox_set_visible_limits (GtkDatabox *box, gfloat left, gfloat right, gfloat top, gfloat bottom)
void gtk_databox_get_total_limits (GtkDatabox *box, gfloat *left, gfloat *right, gfloat *top, gfloat *bottom)
void gtk_databox_get_visible_limits (GtkDatabox *box, gfloat *left, gfloat *right, gfloat *top, gfloat *bottom)
void gtk_databox_set_adjustment_x (GtkDatabox *box, GtkAdjustment *adj)
void gtk_databox_set_adjustment_y (GtkDatabox *box, GtkAdjustment *adj)
GtkAdjustment * gtk_databox_get_adjustment_x (GtkDatabox *box)
GtkAdjustment * gtk_databox_get_adjustment_y (GtkDatabox *box)
void gtk_databox_set_ruler_x (GtkDatabox *box, GtkDataboxRuler *ruler)
void gtk_databox_set_ruler_y (GtkDatabox *box, GtkDataboxRuler *ruler)
GtkDataboxRulergtk_databox_get_ruler_x (GtkDatabox *box)
GtkDataboxRulergtk_databox_get_ruler_y (GtkDatabox *box)
void gtk_databox_set_scale_type_x (GtkDatabox *box, GtkDataboxScaleType scale_type)
void gtk_databox_set_scale_type_y (GtkDatabox *box, GtkDataboxScaleType scale_type)
GtkDataboxScaleType gtk_databox_get_scale_type_x (GtkDatabox *box)
GtkDataboxScaleType gtk_databox_get_scale_type_y (GtkDatabox *box)
void gtk_databox_set_enable_selection (GtkDatabox *box, gboolean enable)
void gtk_databox_set_enable_zoom (GtkDatabox *box, gboolean enable)
void gtk_databox_set_box_shadow (GtkDatabox *box, GtkShadowType which_shadow)
gboolean gtk_databox_get_enable_selection (GtkDatabox *box)
gboolean gtk_databox_get_enable_zoom (GtkDatabox *box)
GtkShadowType gtk_databox__get_box_shadow (GtkDatabox *box)
void gtk_databox_zoom_to_selection (GtkDatabox *box)
void gtk_databox_zoom_out (GtkDatabox *box)
void gtk_databox_zoom_home (GtkDatabox *box)
gint16 gtk_databox_value_to_pixel_x (GtkDatabox *box, gfloat value)
gint16 gtk_databox_value_to_pixel_y (GtkDatabox *box, gfloat value)
gfloat gtk_databox_pixel_to_value_x (GtkDatabox *box, gint16 pixel)
gfloat gtk_databox_pixel_to_value_y (GtkDatabox *box, gint16 pixel)
void gtk_databox_values_to_pixels (GtkDatabox *box, guint len, const gfloat *values_x, const gfloat *values_y, GdkPoint *pixels)
void gtk_databox_create_box_with_scrollbars_and_rulers (GtkWidget **p_box, GtkWidget **p_table, gboolean scrollbar_x, gboolean scrollbar_y, gboolean ruler_x, gboolean ruler_y)
void gtk_databox_create_box_with_scrollbars_and_rulers_positioned (GtkWidget **p_box, GtkWidget **p_table, gboolean scrollbar_x, gboolean scrollbar_y, gboolean ruler_x, gboolean ruler_y, gboolean ruler_x_top, gboolean ruler_y_left)
GdkPixmap * gtk_databox_get_backing_pixmap (GtkDatabox *box)

Define Documentation

#define GTK_DATABOX (   obj)
Value:
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
                                           GTK_TYPE_DATABOX, \
                                           GtkDatabox))
#define GTK_DATABOX_CLASS (   klass)
Value:
(G_TYPE_CHECK_CLASS_CAST ((klass), \
                                           GTK_TYPE_DATABOX, \
                                           GtkDataboxClass))
#define GTK_DATABOX_GET_CLASS (   obj)
Value:
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
                                           GTK_TYPE_DATABOX, \
                                           GtkDataboxClass))
#define GTK_IS_DATABOX (   obj)
Value:
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
                                           GTK_TYPE_DATABOX))
#define GTK_IS_DATABOX_CLASS (   klass)
Value:
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
                                           GTK_TYPE_DATABOX))

SECTION:gtkdatabox : A GTK+ widget to display large amounts of numerical data quickly and easily. gtkdatabox.h : GtkDataboxGraph, GtkDataboxPoints, GtkDataboxLines, GtkDataboxMarkers, GtkDataboxGrid

GtkDatabox is a widget for the GTK+ library designed to display large amounts of numerical data quickly and easily. It allows for one or more data sets of thousands of data points (X and Y coordinates) to be displayed and updated in split seconds.

It offers the ability to zoom into and out of the data, and to navigate through your data by scrolling.

In addition to rulers and a simple coordinate cross, it allows you to add one (or even more) configurable grids like on an oscilloscope.

Data may be presented as dots, lines connecting the data, or vertical bars. The widget allows you to easily transform pixel coordinates into data coordinates, thus allowing you to easily create powerful applications for data analysis.


Typedef Documentation

GtkDataboxPrivate

A private data structure used by the GtkDatabox. It shields all internal things from developers who are just using the widget.


Function Documentation

GtkShadowType gtk_databox__get_box_shadow ( GtkDatabox box)
gint gtk_databox_auto_rescale ( GtkDatabox box,
gfloat  border 
)

gtk_databox_auto_rescale: : A GtkDatabox widget : Relative border width (e.g. 0.1 means that the border on each side is 10% of the data area).

This function is similar to gtk_databox_set_total_limits(). It sets the total limits to match the data extrema (see gtk_databox_calculate_extrema()). If you do not like data pixels exactly at the widget's border, you can add modify the limits using the border parameter: The limits are extended by *(max-min) if max!=min. If max==min, they are extended by *max (otherwise the data could not be scaled to the pixel realm).

After calling this function, x values grow from left to right, y values grow from bottom to top.

Return value: 0 on success, -1 if is no GtkDatabox widget, -2 if no datasets are available

Here is the call graph for this function:

gint gtk_databox_calculate_extrema ( GtkDatabox box,
gfloat *  min_x,
gfloat *  max_x,
gfloat *  min_y,
gfloat *  max_y 
)

gtk_databox_calculate_extrema: : A GtkDatabox widget : Will be filled with the lowest x value of all datasets : Will be filled with the highest x value of all datasets : Will be filled with the lowest y value of all datasets : Will be filled with the highest y value of all datasets

Determines the minimum and maximum x and y values of all GtkDataboxGraph objects which have been added to the GtkDatabox widget via gtk_databox_graph_add().

Return value: 0 on success, -1 if is no GtkDatabox widget, -2 if no datasets are available

Here is the call graph for this function:

Here is the caller graph for this function:

void gtk_databox_create_box_with_scrollbars_and_rulers ( GtkWidget **  p_box,
GtkWidget **  p_table,
gboolean  scrollbar_x,
gboolean  scrollbar_y,
gboolean  ruler_x,
gboolean  ruler_y 
)

gtk_databox_create_box_with_scrollbars_and_rulers: : Will contain a pointer to a GtkDatabox widget : Will contain a pointer to a #GtkTable widget : Whether to attach a horizontal scrollbar : Whether to attach a vertical scrollbar : Whether to attach a horizontal ruler : Whether to attach a vertical ruler

This is a convenience function which creates a GtkDatabox widget in a GtkTable widget optionally accompanied by scrollbars and rulers. You only have to fill in the data (gtk_databox_graph_add()) and adjust the limits (gtk_databox_set_total_limits() or gtk_databox_auto_rescale()).

This function produces the default databox with rulers at the top left and scroll bars at the bottom right.

: gtk_databox_new(), gtk_databox_set_adjustment_x(), gtk_databox_set_adjustment_y(), gtk_databox_set_ruler_x(), gtk_databox_set_ruler_y()

Here is the call graph for this function:

void gtk_databox_create_box_with_scrollbars_and_rulers_positioned ( GtkWidget **  p_box,
GtkWidget **  p_table,
gboolean  scrollbar_x,
gboolean  scrollbar_y,
gboolean  ruler_x,
gboolean  ruler_y,
gboolean  ruler_x_top,
gboolean  ruler_y_left 
)

gtk_databox_create_box_with_scrollbars_and_rulers_positioned: : Will contain a pointer to a GtkDatabox widget : Will contain a pointer to a #GtkTable widget : Whether to attach a horizontal scrollbar : Whether to attach a vertical scrollbar : Whether to attach a horizontal ruler : Whether to attach a vertical ruler : Whether to put the ruler_x up the top : Whether to put the ruler_y on the left

This is a convenience function which creates a GtkDatabox widget in a GtkTable widget optionally accompanied by scrollbars and rulers. You only have to fill in the data (gtk_databox_graph_add()) and adjust the limits (gtk_databox_set_total_limits() or gtk_databox_auto_rescale()).

This function produces the default databox with rulers at the top left and scroll bars at the bottom right.

: gtk_databox_new(), gtk_databox_set_adjustment_x(), gtk_databox_set_adjustment_y(), gtk_databox_set_ruler_x(), gtk_databox_set_ruler_y(), gtk_databox_create_box_with_scrollbars_and_rulers()

Here is the call graph for this function:

Here is the caller graph for this function:

GtkAdjustment* gtk_databox_get_adjustment_x ( GtkDatabox box)

gtk_databox_get_adjustment_x : A GtkDatabox widget.

Getter function for the GtkDatabox:adjustment-x property.

Return value: The GtkDatabox:adjustment-x property value.

GtkAdjustment* gtk_databox_get_adjustment_y ( GtkDatabox box)

gtk_databox_get_adjustment_y : A GtkDatabox widget.

Getter function for the GtkDatabox:adjustment-y property.

Return value: The GtkDatabox:adjustment-y property value.

gtk_databox_get_backing_pixmap: : A GtkDatabox widget

This function returns the pixmap which is used by and its GtkDataboxGraph objects for drawing operations before copying the result to the screen.

The function is typically called by the GtkDataboxGraph objects.

Return value: Backing pixmap

gtk_databox_get_enable_selection : A GtkDatabox widget.

Getter function for the GtkDatabox:enable-selection property.

Return value: The GtkDatabox:enable-selection property value.

gtk_databox_get_enable_zoom : A GtkDatabox widget.

Getter function for the GtkDatabox:enable-zoom property.

Return value: The GtkDatabox:enable-zoom property value.

gtk_databox_get_ruler_x : A GtkDatabox widget.

Getter function for the GtkDatabox:ruler-x property.

Return value: The GtkDatabox:ruler-x property value.

gtk_databox_get_ruler_y : A GtkDatabox widget.

Getter function for the GtkDatabox:ruler-y property.

Return value: The GtkDatabox:ruler-y property value.

gtk_databox_get_scale_type_x : A GtkDatabox widget.

Getter function for the GtkDatabox:scale-type-x property.

Return value: The GtkDatabox:scale-type-x property value.

gtk_databox_get_scale_type_y : A GtkDatabox widget.

Getter function for the GtkDatabox:scale-type-y property.

Return value: The GtkDatabox:scale-type-y property value.

void gtk_databox_get_total_limits ( GtkDatabox box,
gfloat *  left,
gfloat *  right,
gfloat *  top,
gfloat *  bottom 
)

gtk_databox_get_total_limits: : A GtkDatabox widget : Space for total left value or #NULL : Space for total right value or #NULL : Space for total top value or #NULL : Space for total bottom value or #NULL

Gives the total limits (as set by gtk_databox_auto_rescale() or gtk_databox_set_total_limits()).

GType gtk_databox_get_type ( void  )
void gtk_databox_get_visible_limits ( GtkDatabox box,
gfloat *  left,
gfloat *  right,
gfloat *  top,
gfloat *  bottom 
)

gtk_databox_get_visible_limits: : A GtkDatabox widget : Space for visible left value or #NULL : Space for visible right value or #NULL : Space for visible top value or #NULL : Space for visible bottom value or #NULL

Gives the current visible limits. These differ from those given by gtk_databox_get_total_limits() if you zoomed into the data for instance by gtk_databox_zoom_to_selection() or gtk_databox_set_visible_limits() (these values can be changed by scrolling, of course).

gint gtk_databox_graph_add ( GtkDatabox box,
GtkDataboxGraph graph 
)

gtk_databox_graph_add: : A GtkDatabox widget : A graph, e.g. a GtkDataboxPoints or a GtkDataboxGrid object

Adds the to the . The next time the is re-drawn, the graph will be shown.

It might be becessary to modify the total_limits in order for the graph to be displayed properly (see gtk_databox_set_total_limits()).

Return value: 0 on success, -1 otherwise

gtk_databox_graph_add_front: : A GtkDatabox widget : A graph, e.g. a GtkDataboxPoints or a GtkDataboxGrid object

Adds the to the and will be plotted on top. The next time the is re-drawn, the graph will be shown.

It might be becessary to modify the total_limits in order for the graph to be displayed properly (see gtk_databox_set_total_limits()).

Return value: 0 on success, -1 otherwise

gint gtk_databox_graph_remove ( GtkDatabox box,
GtkDataboxGraph graph 
)

gtk_databox_graph_remove: : A GtkDatabox widget : A graph, e.g. a GtkDataboxPoints or a GtkDataboxGrid object

Removes the from the once. The next time the is re-drawn, the graph will not be shown (unless it was added more than once).

Return value: 0 on success, -1 otherwise

gtk_databox_graph_remove_all: : A GtkDatabox widget

Removes all graphs from the . The next time the is re-drawn, no graphs will be shown.

Return value: 0 on success, -1 otherwise

GtkWidget* gtk_databox_new ( void  )

gtk_databox_new

Creates a new GtkDatabox widget.

Return value: The new GtkDatabox widget.

Here is the caller graph for this function:

gfloat gtk_databox_pixel_to_value_x ( GtkDatabox box,
gint16  pixel 
)

gtk_databox_pixel_to_value_x: : A GtkDatabox widget : A horizontal pixel coordinate

Calculates the x value which is represented by the horizontal coordinate. Pixel coordinates are relative to the top-left corner of the which is equivalent to (0,0).

Return value: x value

gfloat gtk_databox_pixel_to_value_y ( GtkDatabox box,
gint16  pixel 
)

gtk_databox_pixel_to_value_y: : A GtkDatabox widget : A vertical pixel coordinate

Calculates the y value which is represented by the vertical coordinate. Pixel coordinates are relative to the top-left corner of the which is equivalent to (0,0).

Return value: y value

void gtk_databox_set_adjustment_x ( GtkDatabox box,
GtkAdjustment *  adj 
)

gtk_databox_set_adjustment_x : A GtkDatabox widget : A #GtkAdjustment object

Setter function for the GtkDatabox:adjustment-x property. Normally, it should not be required to use this function, see property documentation.

Here is the caller graph for this function:

void gtk_databox_set_adjustment_y ( GtkDatabox box,
GtkAdjustment *  adj 
)

gtk_databox_set_adjustment_y : A GtkDatabox widget : A #GtkAdjustment object

Setter function for the GtkDatabox:adjustment-y property. Normally, it should not be required to use this function, see property documentation.

Here is the caller graph for this function:

void gtk_databox_set_box_shadow ( GtkDatabox box,
GtkShadowType  which_shadow 
)

gtk_databox_set_box_shadow: : a GtkDatabox widget. : How to render the box shadow on the GtkDatabox edges.

Sets the shadow type when using gtk_paint_box. This will draw the desired edge shadow.

void gtk_databox_set_enable_selection ( GtkDatabox box,
gboolean  enable 
)

gtk_databox_set_enable_selection : A GtkDatabox widget : Whether selection via mouse is enabled or not.

Setter function for the GtkDatabox:enable-selection property.

void gtk_databox_set_enable_zoom ( GtkDatabox box,
gboolean  enable 
)

gtk_databox_set_enable_zoom : A GtkDatabox widget : Whether zoom via mouse is enabled or not.

Setter function for the GtkDatabox:enable-zoom property.

void gtk_databox_set_ruler_x ( GtkDatabox box,
GtkDataboxRuler ruler 
)

gtk_databox_set_ruler_x : A GtkDatabox widget : A GtkDataboxRuler object

Setter function for the GtkDatabox:ruler-x property.

Here is the call graph for this function:

Here is the caller graph for this function:

void gtk_databox_set_ruler_y ( GtkDatabox box,
GtkDataboxRuler ruler 
)

gtk_databox_set_ruler_y : A GtkDatabox widget : An GtkDataboxRuler object

Setter function for the GtkDatabox:ruler-y property.

Here is the call graph for this function:

Here is the caller graph for this function:

gtk_databox_set_scale_type_x : A GtkDatabox widget : An GtkDataboxScaleType (linear or logarithmic)

Setter function for the GtkDatabox:scale-type-x property.

Here is the call graph for this function:

gtk_databox_set_scale_type_y : A GtkDatabox widget : An GtkDataboxScaleType (linear or logarithmic)

Setter function for the GtkDatabox:scale-type-y property.

Here is the call graph for this function:

void gtk_databox_set_total_limits ( GtkDatabox box,
gfloat  left,
gfloat  right,
gfloat  top,
gfloat  bottom 
)

gtk_databox_set_total_limits: : A GtkDatabox widget : Left total limit : Right total limit : Top total limit : Bottom total limit

This function is used to set the limits of the total display area of . This function can be used to invert the orientation of the displayed graphs, e.g. =-1000 and =0.

Side effect: The also internally calls gtk_databox_set_visible_limits() with the same values.

Here is the call graph for this function:

Here is the caller graph for this function:

void gtk_databox_set_visible_limits ( GtkDatabox box,
gfloat  left,
gfloat  right,
gfloat  top,
gfloat  bottom 
)

gtk_databox_set_visible_limits: : A GtkDatabox widget : Left visible limit : Right visible limit : Top visible limit : Bottom visible limit

This function is used to set the limits of the visible display area of . The visible display area can be section of the total area, i.e. the zooms in, showing only a part of the complete picture.

The orientation of the values have to be the same as in gtk_databox_set_total_limits() and the visible limits have to be within the total limits. The values will not be used otherwise.

Side effect: The emits #GtkDatabox::zoomed.

Here is the caller graph for this function:

gint16 gtk_databox_value_to_pixel_x ( GtkDatabox box,
gfloat  value 
)

gtk_databox_value_to_pixel_x: : A GtkDatabox widget : An x value

Calculates the horizontal pixel coordinate which represents the x . Pixel coordinates are relative to the top-left corner of the which is equivalent to (0,0).

Return value: Pixel coordinate

gint16 gtk_databox_value_to_pixel_y ( GtkDatabox box,
gfloat  value 
)

gtk_databox_value_to_pixel_y: : A GtkDatabox widget : A y value

Calculates the vertical pixel coordinate which represents the y . Pixel coordinates are relative to the top-left corner of the which is equivalent to (0,0).

Return value: Pixel coordinate

void gtk_databox_values_to_pixels ( GtkDatabox box,
guint  len,
const gfloat *  values_x,
const gfloat *  values_y,
GdkPoint *  pixels 
)

gtk_databox_values_to_pixels: : A GtkDatabox widget : Number of values/pixels : Array of X values (length >= len) : Array of Y values (length >= len) : Array of pixel coordinates (length >= len)

Calculates the pixel equivalents of the given X/Y values and stores them in the array.

gtk_databox_zoom_home: : A GtkDatabox widget

This is equivalent to shift right-clicking into the .

This function works, if the attribute #enable-zoom is set to #TRUE. It is equivalent to calling the gtk_databox_set_visible_limits() with the total limits.

Here is the call graph for this function:

gtk_databox_zoom_out: : A GtkDatabox widget

This is equivalent to right-clicking into the .

This function works, if the attribute #enable-zoom is set to #TRUE. Calling the function then zooms out by a factor of 2 in both dimensions (the maximum is defined by the total limits, see gtk_databox_set_total_limits()).

Side effect: The emits #GtkDatabox::zoomed.

gtk_databox_zoom_to_selection: : A GtkDatabox widget

This is equivalent to left-clicking into the selected area.

This function works, if the attribute #enable-zoom is set to #TRUE. Calling the function then zooms to the area selected with the mouse.

Side effect: The emits #GtkDatabox::zoomed.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines