## GwyShader

GwyShader — Spherical angle selector

## Synopsis

    #include <libgwydgets/gwydgets.h>

                        GwyShader;
                        GwyShaderClass;
    GtkWidget*          gwy_shader_new                      (const gchar *gradient);
    gdouble             gwy_shader_get_theta                (GwyShader *shader);
    gdouble             gwy_shader_get_phi                  (GwyShader *shader);
    void                gwy_shader_set_theta                (GwyShader *shader,
                                                             gdouble theta);
    void                gwy_shader_set_phi                  (GwyShader *shader,
                                                             gdouble phi);
    void                gwy_shader_set_angle                (GwyShader *shader,
                                                             gdouble theta,
                                                             gdouble phi);
    const gchar*        gwy_shader_get_gradient             (GwyShader *shader);
    void                gwy_shader_set_gradient             (GwyShader *shader,
                                                             const gchar *gradient);
    GtkUpdateType       gwy_shader_get_update_policy        (GwyShader *shader);
    void                gwy_shader_set_update_policy        (GwyShader *shader,
                                                             GtkUpdateType update_policy);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkObject
                   +----GtkWidget
                         +----GwyShader

## Implemented Interfaces

GwyShader implements AtkImplementorIface and GtkBuildable.

## Properties

      "gradient"                 gchar*                : Read / Write
      "update-policy"            GtkUpdateType         : Read / Write

## Signals

      "angle-changed"                                  : Run First

## Description

GwyShader is a spherical angle selector that allows user to change angle by simply moving the north pole of a sphere around with mouse. It can display the sphere colored with various GwyGradient's.

## Details

### GwyShader

    typedef struct _GwyShader GwyShader;

### GwyShaderClass

    typedef struct {
        GtkWidgetClass parent_class;

        void (*angle_changed)(GwyShader *shader);

        void (*reserved1)(void);
    } GwyShaderClass;

### gwy_shader_new ()

    GtkWidget*          gwy_shader_new                      (const gchar *gradient);

Creates a new spherical shader.

The widget takes up all the space allocated for it.

`gradient` : | Name of gradient to color the spehere with. Can be `NULL` to use the default gradient.
Returns : | The new shader as a GtkWidget.

### gwy_shader_get_theta ()

    gdouble             gwy_shader_get_theta                (GwyShader *shader);

Returns the theta coordinate of a shader.

`shader` : | A shader.
Returns : | The theta coordinate, in radians. Theta coordinate is angle from sphere's north pole.

### gwy_shader_get_phi ()

    gdouble             gwy_shader_get_phi                  (GwyShader *shader);

Returns the phi coordinate of a shader.

`shader` : | A shader.
Returns : | The phi coordinate, in radians. Phi coordinate is orientation in horizontal plane, measured from x axis, counterclockwise.

### gwy_shader_set_theta ()

    void                gwy_shader_set_theta                (GwyShader *shader,
                                                             gdouble theta);

Sets the theta coordinate of a shader.

`shader` : | A shader.
`theta` : | The theta coordinate to set. See `gwy_shader_get_theta()` for description.

### gwy_shader_set_phi ()

    void                gwy_shader_set_phi                  (GwyShader *shader,
                                                             gdouble phi);

Sets the phi coordinate of a shader.

`shader` : | A shader.
`phi` : | The phi coordinate to set. See `gwy_shader_get_phi()` for description.

### gwy_shader_set_angle ()

    void                gwy_shader_set_angle                (GwyShader *shader,
                                                             gdouble theta,
                                                             gdouble phi);

Sets the spherical angle of a shader.

`shader` : | A shader.
`theta` : | The theta coordinate to set. See `gwy_shader_get_theta()` for description.
`phi` : | The phi coordinate to set. See `gwy_shader_get_phi()` for description.

### gwy_shader_get_gradient ()

    const gchar*        gwy_shader_get_gradient             (GwyShader *shader);

Returns the name of color gradient a shader uses.

`shader` : | A shader.
Returns : | The gradient name. It must not be modified or freed. It may differ the name that was used on initialization or set with `gwy_shader_set_gradient()`, if the gradient didn't exist or was renamed meanwhile.

### gwy_shader_set_gradient ()

    void                gwy_shader_set_gradient             (GwyShader *shader,
                                                             const gchar *gradient);

Sets the gradient a shader uses.

`shader` : | A shader.
`gradient` : | Name of gradient `shader` should use. It should exist.

### gwy_shader_get_update_policy ()

    GtkUpdateType       gwy_shader_get_update_policy        (GwyShader *shader);

Returns the update policy of a shader.

`shader` : | A shader.
Returns : | The update policy.

### gwy_shader_set_update_policy ()

    void                gwy_shader_set_update_policy        (GwyShader *shader,
                                                             GtkUpdateType update_policy);

Sets the update policy of a shader.

`shader` : | A shader.
`update_policy` : | The update policy `shader` should use.

## Property Details

### The `"gradient"` property

      "gradient"                 gchar*                : Read / Write

Name of gradient the sphere is colored with.

Default value: NULL

### The `"update-policy"` property

      "update-policy"            GtkUpdateType         : Read / Write

When value change causes signal emission.

Default value: GTK_UPDATE_CONTINUOUS

## Signal Details

### The `"angle-changed"` signal

    void                user_function                      (GwyShader *gwyshader,
                                                            gpointer   user_data)      : Run First

The ::angle-changed signal is emitted when the spherical angle changes.

`gwyshader` : | The GwyShader which received the signal.
`user_data` : | user data set when the signal handler was connected.