## GwyRuler

GwyRuler — Base class for GwyHRuler and GwyVRuler

## Synopsis

    #include <libgwydgets/gwydgets.h>

                        GwyRuler;
                        GwyRulerClass;
    void                gwy_ruler_set_range                 (GwyRuler *ruler,
                                                             gdouble lower,
                                                             gdouble upper,
                                                             gdouble position,
                                                             gdouble max_size);
    void                gwy_ruler_draw_pos                  (GwyRuler *ruler);
    void                gwy_ruler_get_range                 (GwyRuler *ruler,
                                                             gdouble *lower,
                                                             gdouble *upper,
                                                             gdouble *position,
                                                             gdouble *max_size);
    void                gwy_ruler_set_si_unit               (GwyRuler *ruler,
                                                             GwySIUnit *units);
    GwySIUnit*          gwy_ruler_get_si_unit               (GwyRuler *ruler);
    GwyUnitsPlacement   gwy_ruler_get_units_placement       (GwyRuler *ruler);
    void                gwy_ruler_set_units_placement       (GwyRuler *ruler,
                                                             GwyUnitsPlacement placement);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkObject
                   +----GtkWidget
                         +----GwyRuler
                               +----GwyVRuler
                               +----GwyHRuler

## Implemented Interfaces

GwyRuler implements AtkImplementorIface and GtkBuildable.

## Properties

      "lower"                    gdouble               : Read / Write
      "max-size"                 gdouble               : Read / Write
      "position"                 gdouble               : Read / Write
      "units-placement"          GwyUnitsPlacement     : Read / Write
      "upper"                    gdouble               : Read / Write

## Description

GwyRuler is a ruler similar to GtkRuler, but it is more suited for a scientific application. It is scale-independent and thus has no arbitrary limits on the ranges or interpretation of displayed values. It can display units on the ruler (this can be controlled with `gwy_ruler_set_units_placement()`) and cooperates with GwySIUnit (see `gwy_ruler_set_si_unit()`). It also better follows Gtk+ theme than GtkRuler.

## Details

### GwyRuler

    typedef struct _GwyRuler GwyRuler;

### GwyRulerClass

    typedef struct {
        GtkWidgetClass parent_class;

        /* Virtual methods */
        void (*prepare_sizes) (GwyRuler *ruler);
        void (*draw_frame) (GwyRuler *ruler);
        void (*draw_layout) (GwyRuler *ruler,
                             gint hpos,
                             gint vpos);
        void (*draw_tick) (GwyRuler *ruler,
                           gint pos,
                           gint length);
        void (*draw_pos)   (GwyRuler *ruler);

        void (*reserved1)(void);
        void (*reserved2)(void);
    } GwyRulerClass;

### gwy_ruler_set_range ()

    void                gwy_ruler_set_range                 (GwyRuler *ruler,
                                                             gdouble lower,
                                                             gdouble upper,
                                                             gdouble position,
                                                             gdouble max_size);

Sets range and current value of a ruler.

`ruler` : | A GwyRuler
`lower` : | Lower limit of the ruler.
`upper` : | Upper limit of the ruler.
`position` : | Current position of the mark on the ruler.
`max_size` : | Maximum value used for calculating size of text labels.

### gwy_ruler_draw_pos ()

    void                gwy_ruler_draw_pos                  (GwyRuler *ruler);

Draws a position marker.

This method is intended primarily for subclass implementation.

`ruler` : | A GwyRuler.

### gwy_ruler_get_range ()

    void                gwy_ruler_get_range                 (GwyRuler *ruler,
                                                             gdouble *lower,
                                                             gdouble *upper,
                                                             gdouble *position,
                                                             gdouble *max_size);

Retrieves values indicating the range and current position of a GwyRuler. See `gwy_ruler_set_range()`.

`ruler` : | A GwyRuler
`lower` : | Location to store lower limit of the ruler, or `NULL`
`upper` : | Location to store upper limit of the ruler, or `NULL`
`position` : | Location to store the current position of the mark on the ruler, or `NULL`
`max_size` : | Location to store the maximum size of the ruler used when calculating the space to leave for the text, or `NULL`.

### gwy_ruler_set_si_unit ()

    void                gwy_ruler_set_si_unit               (GwyRuler *ruler,
                                                             GwySIUnit *units);

Sets the base units a ruler displays.

Setting units to `NULL` effectively disables them.

`ruler` : | A GwyRuler.
`units` : | The base units this ruler should display.

### gwy_ruler_get_si_unit ()

    GwySIUnit*          gwy_ruler_get_si_unit               (GwyRuler *ruler);

Returns the base units a ruler uses.

`ruler` : | A GwyRuler.
Returns : | The units the rules uses.

### gwy_ruler_get_units_placement ()

    GwyUnitsPlacement   gwy_ruler_get_units_placement       (GwyRuler *ruler);

Gets current units placement of ruler `ruler`.

`ruler` : | A GwyRuler
Returns : | The units placement.

### gwy_ruler_set_units_placement ()

    void                gwy_ruler_set_units_placement       (GwyRuler *ruler,
                                                             GwyUnitsPlacement placement);

Sets whether and where units should be placed on the ruler.

`ruler` : | A GwyRuler
`placement` : | Units placement specification.

## Property Details

### The `"lower"` property

      "lower"                    gdouble               : Read / Write

Lower limit of ruler.

Default value: 0

### The `"max-size"` property

      "max-size"                 gdouble               : Read / Write

Maximum size of the ruler.

Default value: 0

### The `"position"` property

      "position"                 gdouble               : Read / Write

Position of mark on the ruler.

Default value: 0

### The `"units-placement"` property

      "units-placement"          GwyUnitsPlacement     : Read / Write

The placement of units on the ruler, if any.

Default value: GWY_UNITS_PLACEMENT_NONE

### The `"upper"` property

      "upper"                    gdouble               : Read / Write

Upper limit of ruler.

Default value: 0