## GtkPlot3D

GtkPlot3D

## Synopsis

    #include <gtkextra.h>

    #define             GTK_PLOT3D_FLAGS                    (plot)
    #define             GTK_PLOT3D_SET_FLAGS                (plot,flag)
    #define             GTK_PLOT3D_UNSET_FLAGS              (plot,flag)
    #define             GTK_PLOT3D_TRANSPARENT              (plot)
    enum                GtkPlotPlane;
    enum                GtkPlotSide;
    GtkWidget*          gtk_plot3d_new                      (GdkDrawable *drawable);
    GtkWidget*          gtk_plot3d_new_with_size            (GdkDrawable *drawable,
                                                             gdouble width,
                                                             gdouble height);
    void                gtk_plot3d_construct                (GtkPlot3D *plot,
                                                             GdkDrawable *drawable);
    void                gtk_plot3d_construct_with_size      (GtkPlot3D *plot,
                                                             GdkDrawable *drawable,
                                                             gdouble width,
                                                             gdouble height);
    void                gtk_plot3d_autoscale                (GtkPlot3D *plot);
    void                gtk_plot3d_rotate                   (GtkPlot3D *plot,
                                                             gdouble angle_x,
                                                             gdouble angle_y,
                                                             gdouble angle_z);
    void                gtk_plot3d_rotate_vector            (GtkPlot3D *plot,
                                                             GtkPlotVector *vector,
                                                             gdouble a1,
                                                             gdouble a2,
                                                             gdouble a3);
    void                gtk_plot3d_reset_angles             (GtkPlot3D *plot);
    void                gtk_plot3d_rotate_x                 (GtkPlot3D *plot,
                                                             gdouble angle);
    void                gtk_plot3d_rotate_y                 (GtkPlot3D *plot,
                                                             gdouble angle);
    void                gtk_plot3d_rotate_z                 (GtkPlot3D *plot,
                                                             gdouble angle);
    void                gtk_plot3d_get_pixel                (GtkPlot3D *plot,
                                                             gdouble x,
                                                             gdouble y,
                                                             gdouble z,
                                                             gdouble *px,
                                                             gdouble *py,
                                                             gdouble *pz);
    void                gtk_plot3d_set_xrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);
    void                gtk_plot3d_set_yrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);
    void                gtk_plot3d_set_zrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);
    void                gtk_plot3d_set_xfactor              (GtkPlot3D *plot,
                                                             gdouble xfactor);
    void                gtk_plot3d_set_yfactor              (GtkPlot3D *plot,
                                                             gdouble yfactor);
    void                gtk_plot3d_set_zfactor              (GtkPlot3D *plot,
                                                             gdouble zfactor);
    gdouble             gtk_plot3d_get_xfactor              (GtkPlot3D *plot);
    gdouble             gtk_plot3d_get_yfactor              (GtkPlot3D *plot);
    gdouble             gtk_plot3d_get_zfactor              (GtkPlot3D *plot);
    void                gtk_plot3d_plane_set_color          (GtkPlot3D *plot,
                                                             GtkPlotPlane plane,
                                                             const GdkColor *color);
    void                gtk_plot3d_plane_set_visible        (GtkPlot3D *plot,
                                                             GtkPlotPlane plane,
                                                             gboolean visible);
    gboolean            gtk_plot3d_plane_visible            (GtkPlot3D *plot,
                                                             GtkPlotPlane plane);
    void                gtk_plot3d_corner_set_visible       (GtkPlot3D *plot,
                                                             gboolean visible);
    gboolean            gtk_plot3d_corner_visible           (GtkPlot3D *plot);
    void                gtk_plot3d_corner_set_attributes    (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);
    void                gtk_plot3d_corner_get_attributes    (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);
    void                gtk_plot3d_frame_set_attributes     (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);
    void                gtk_plot3d_frame_get_attributes     (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);
    GtkPlotAxis *       gtk_plot3d_get_axis                 (GtkPlot3D *plot,
                                                             GtkPlotOrientation orientation);
    GtkPlotAxis *       gtk_plot3d_get_side                 (GtkPlot3D *plot,
                                                             GtkPlotSide side);
    void                gtk_plot3d_show_major_ticks         (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint ticks_mask);
    void                gtk_plot3d_show_minor_ticks         (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint ticks_mask);
    void                gtk_plot3d_show_labels              (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint label_mask);
    void                gtk_plot3d_show_title               (GtkPlot3D *plot,
                                                             GtkPlotSide side);
    void                gtk_plot3d_hide_title               (GtkPlot3D *plot,
                                                             GtkPlotSide side);
    void                gtk_plot3d_set_ticks                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gdouble major_step,
                                                             gint nminor);
    void                gtk_plot3d_set_major_ticks          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gdouble major_step);
    void                gtk_plot3d_set_minor_ticks          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gint nminor);
    void                gtk_plot3d_set_ticks_length         (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gint length);
    void                gtk_plot3d_set_ticks_width          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gfloat width);
    void                gtk_plot3d_show_ticks               (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint major_mask,
                                                             gint minor_mask);
    void                gtk_plot3d_set_titles_offset        (GtkPlot3D *plot,
                                                             gint offset);
    gint                gtk_plot3d_get_titles_offset        (GtkPlot3D *plot);
    void                gtk_plot3d_set_scale                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             GtkPlotScale scale);
    GtkPlotScale        gtk_plot3d_get_scale                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis);
    void                gtk_plot3d_major_grids_set_visible  (GtkPlot3D *plot,
                                                             gboolean x,
                                                             gboolean y,
                                                             gboolean z);
    void                gtk_plot3d_minor_grids_set_visible  (GtkPlot3D *plot,
                                                             gboolean x,
                                                             gboolean y,
                                                             gboolean z);
    void                gtk_plot3d_major_grids_visible      (GtkPlot3D *plot,
                                                             gboolean *x,
                                                             gboolean *y,
                                                             gboolean *z);
    void                gtk_plot3d_minor_grids_visible      (GtkPlot3D *plot,
                                                             gboolean *x,
                                                             gboolean *y,
                                                             gboolean *z);
    void                gtk_plot3d_major_zgrid_set_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);
    void                gtk_plot3d_major_zgrid_get_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);
    void                gtk_plot3d_minor_zgrid_set_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);
    void                gtk_plot3d_minor_zgrid_get_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);

## Description

## Details

### GTK_PLOT3D_FLAGS()

    #define GTK_PLOT3D_FLAGS(plot)         (GTK_PLOT3D(plot)->flags)

`plot` : |

### GTK_PLOT3D_SET_FLAGS()

    #define GTK_PLOT3D_SET_FLAGS(plot,flag) (GTK_PLOT3D_FLAGS(plot) |= (flag))

`plot` : |
`flag` : |

### GTK_PLOT3D_UNSET_FLAGS()

    #define GTK_PLOT3D_UNSET_FLAGS(plot,flag) (GTK_PLOT3D_FLAGS(plot) &= ~(flag))

`plot` : |
`flag` : |

### GTK_PLOT3D_TRANSPARENT()

    #define GTK_PLOT3D_TRANSPARENT(plot) (GTK_PLOT3D_FLAGS(plot) & GTK_PLOT3D_TRANSPARENT)

`plot` : |

### enum GtkPlotPlane

    typedef enum
    {
      GTK_PLOT_PLANE_XY	= 0,
      GTK_PLOT_PLANE_YX	= 0,
      GTK_PLOT_PLANE_XZ	= 1,
      GTK_PLOT_PLANE_ZX	= 1,
      GTK_PLOT_PLANE_YZ	= 2,
      GTK_PLOT_PLANE_ZY	= 2,
    } GtkPlotPlane;

### enum GtkPlotSide

    typedef enum
    {
      GTK_PLOT_SIDE_XY	= 1 << 0 ,
      GTK_PLOT_SIDE_XZ	= 1 << 1 ,
      GTK_PLOT_SIDE_YX	= 1 << 2 ,
      GTK_PLOT_SIDE_YZ	= 1 << 3 ,
      GTK_PLOT_SIDE_ZX	= 1 << 4 ,
      GTK_PLOT_SIDE_ZY	= 1 << 5 ,
    } GtkPlotSide;

### gtk_plot3d_new ()

    GtkWidget*          gtk_plot3d_new                      (GdkDrawable *drawable);

`drawable` : |
Returns : |

### gtk_plot3d_new_with_size ()

    GtkWidget*          gtk_plot3d_new_with_size            (GdkDrawable *drawable,
                                                             gdouble width,
                                                             gdouble height);

`drawable` : |
`width` : |
`height` : |
Returns : |

### gtk_plot3d_construct ()

    void                gtk_plot3d_construct                (GtkPlot3D *plot,
                                                             GdkDrawable *drawable);

`plot` : |
`drawable` : |

### gtk_plot3d_construct_with_size ()

    void                gtk_plot3d_construct_with_size      (GtkPlot3D *plot,
                                                             GdkDrawable *drawable,
                                                             gdouble width,
                                                             gdouble height);

`plot` : |
`drawable` : |
`width` : |
`height` : |

### gtk_plot3d_autoscale ()

    void                gtk_plot3d_autoscale                (GtkPlot3D *plot);

`plot` : |

### gtk_plot3d_rotate ()

    void                gtk_plot3d_rotate                   (GtkPlot3D *plot,
                                                             gdouble angle_x,
                                                             gdouble angle_y,
                                                             gdouble angle_z);

`plot` : |
`angle_x` : |
`angle_y` : |
`angle_z` : |

### gtk_plot3d_rotate_vector ()

    void                gtk_plot3d_rotate_vector            (GtkPlot3D *plot,
                                                             GtkPlotVector *vector,
                                                             gdouble a1,
                                                             gdouble a2,
                                                             gdouble a3);

`plot` : |
`vector` : |
`a1` : |
`a2` : |
`a3` : |

### gtk_plot3d_reset_angles ()

    void                gtk_plot3d_reset_angles             (GtkPlot3D *plot);

`plot` : |

### gtk_plot3d_rotate_x ()

    void                gtk_plot3d_rotate_x                 (GtkPlot3D *plot,
                                                             gdouble angle);

`plot` : |
`angle` : |

### gtk_plot3d_rotate_y ()

    void                gtk_plot3d_rotate_y                 (GtkPlot3D *plot,
                                                             gdouble angle);

`plot` : |
`angle` : |

### gtk_plot3d_rotate_z ()

    void                gtk_plot3d_rotate_z                 (GtkPlot3D *plot,
                                                             gdouble angle);

`plot` : |
`angle` : |

### gtk_plot3d_get_pixel ()

    void                gtk_plot3d_get_pixel                (GtkPlot3D *plot,
                                                             gdouble x,
                                                             gdouble y,
                                                             gdouble z,
                                                             gdouble *px,
                                                             gdouble *py,
                                                             gdouble *pz);

`plot` : |
`x` : |
`y` : |
`z` : |
`px` : |
`py` : |
`pz` : |

### gtk_plot3d_set_xrange ()

    void                gtk_plot3d_set_xrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);

`plot` : |
`min` : |
`max` : |

### gtk_plot3d_set_yrange ()

    void                gtk_plot3d_set_yrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);

`plot` : |
`min` : |
`max` : |

### gtk_plot3d_set_zrange ()

    void                gtk_plot3d_set_zrange               (GtkPlot3D *plot,
                                                             gdouble min,
                                                             gdouble max);

`plot` : |
`min` : |
`max` : |

### gtk_plot3d_set_xfactor ()

    void                gtk_plot3d_set_xfactor              (GtkPlot3D *plot,
                                                             gdouble xfactor);

`plot` : |
`xfactor` : |

### gtk_plot3d_set_yfactor ()

    void                gtk_plot3d_set_yfactor              (GtkPlot3D *plot,
                                                             gdouble yfactor);

`plot` : |
`yfactor` : |

### gtk_plot3d_set_zfactor ()

    void                gtk_plot3d_set_zfactor              (GtkPlot3D *plot,
                                                             gdouble zfactor);

`plot` : |
`zfactor` : |

### gtk_plot3d_get_xfactor ()

    gdouble             gtk_plot3d_get_xfactor              (GtkPlot3D *plot);

`plot` : |
Returns : |

### gtk_plot3d_get_yfactor ()

    gdouble             gtk_plot3d_get_yfactor              (GtkPlot3D *plot);

`plot` : |
Returns : |

### gtk_plot3d_get_zfactor ()

    gdouble             gtk_plot3d_get_zfactor              (GtkPlot3D *plot);

`plot` : |
Returns : |

### gtk_plot3d_plane_set_color ()

    void                gtk_plot3d_plane_set_color          (GtkPlot3D *plot,
                                                             GtkPlotPlane plane,
                                                             const GdkColor *color);

`plot` : |
`plane` : |
`color` : |

### gtk_plot3d_plane_set_visible ()

    void                gtk_plot3d_plane_set_visible        (GtkPlot3D *plot,
                                                             GtkPlotPlane plane,
                                                             gboolean visible);

`plot` : |
`plane` : |
`visible` : |

### gtk_plot3d_plane_visible ()

    gboolean            gtk_plot3d_plane_visible            (GtkPlot3D *plot,
                                                             GtkPlotPlane plane);

`plot` : |
`plane` : |
Returns : |

### gtk_plot3d_corner_set_visible ()

    void                gtk_plot3d_corner_set_visible       (GtkPlot3D *plot,
                                                             gboolean visible);

`plot` : |
`visible` : |

### gtk_plot3d_corner_visible ()

    gboolean            gtk_plot3d_corner_visible           (GtkPlot3D *plot);

`plot` : |
Returns : |

### gtk_plot3d_corner_set_attributes ()

    void                gtk_plot3d_corner_set_attributes    (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_corner_get_attributes ()

    void                gtk_plot3d_corner_get_attributes    (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_frame_set_attributes ()

    void                gtk_plot3d_frame_set_attributes     (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_frame_get_attributes ()

    void                gtk_plot3d_frame_get_attributes     (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_get_axis ()

    GtkPlotAxis *       gtk_plot3d_get_axis                 (GtkPlot3D *plot,
                                                             GtkPlotOrientation orientation);

`plot` : |
`orientation` : |
Returns : |

### gtk_plot3d_get_side ()

    GtkPlotAxis *       gtk_plot3d_get_side                 (GtkPlot3D *plot,
                                                             GtkPlotSide side);

`plot` : |
`side` : |
Returns : |

### gtk_plot3d_show_major_ticks ()

    void                gtk_plot3d_show_major_ticks         (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint ticks_mask);

`plot` : |
`side` : |
`ticks_mask` : |

### gtk_plot3d_show_minor_ticks ()

    void                gtk_plot3d_show_minor_ticks         (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint ticks_mask);

`plot` : |
`side` : |
`ticks_mask` : |

### gtk_plot3d_show_labels ()

    void                gtk_plot3d_show_labels              (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint label_mask);

`plot` : |
`side` : |
`label_mask` : |

### gtk_plot3d_show_title ()

    void                gtk_plot3d_show_title               (GtkPlot3D *plot,
                                                             GtkPlotSide side);

`plot` : |
`side` : |

### gtk_plot3d_hide_title ()

    void                gtk_plot3d_hide_title               (GtkPlot3D *plot,
                                                             GtkPlotSide side);

`plot` : |
`side` : |

### gtk_plot3d_set_ticks ()

    void                gtk_plot3d_set_ticks                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gdouble major_step,
                                                             gint nminor);

`plot` : |
`axis` : |
`major_step` : |
`nminor` : |

### gtk_plot3d_set_major_ticks ()

    void                gtk_plot3d_set_major_ticks          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gdouble major_step);

`plot` : |
`axis` : |
`major_step` : |

### gtk_plot3d_set_minor_ticks ()

    void                gtk_plot3d_set_minor_ticks          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gint nminor);

`plot` : |
`axis` : |
`nminor` : |

### gtk_plot3d_set_ticks_length ()

    void                gtk_plot3d_set_ticks_length         (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gint length);

`plot` : |
`axis` : |
`length` : |

### gtk_plot3d_set_ticks_width ()

    void                gtk_plot3d_set_ticks_width          (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             gfloat width);

`plot` : |
`axis` : |
`width` : |

### gtk_plot3d_show_ticks ()

    void                gtk_plot3d_show_ticks               (GtkPlot3D *plot,
                                                             GtkPlotSide side,
                                                             gint major_mask,
                                                             gint minor_mask);

`plot` : |
`side` : |
`major_mask` : |
`minor_mask` : |

### gtk_plot3d_set_titles_offset ()

    void                gtk_plot3d_set_titles_offset        (GtkPlot3D *plot,
                                                             gint offset);

`plot` : |
`offset` : |

### gtk_plot3d_get_titles_offset ()

    gint                gtk_plot3d_get_titles_offset        (GtkPlot3D *plot);

`plot` : |
Returns : |

### gtk_plot3d_set_scale ()

    void                gtk_plot3d_set_scale                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis,
                                                             GtkPlotScale scale);

`plot` : |
`axis` : |
`scale` : |

### gtk_plot3d_get_scale ()

    GtkPlotScale        gtk_plot3d_get_scale                (GtkPlot3D *plot,
                                                             GtkPlotOrientation axis);

`plot` : |
`axis` : |
Returns : |

### gtk_plot3d_major_grids_set_visible ()

    void                gtk_plot3d_major_grids_set_visible  (GtkPlot3D *plot,
                                                             gboolean x,
                                                             gboolean y,
                                                             gboolean z);

`plot` : |
`x` : |
`y` : |
`z` : |

### gtk_plot3d_minor_grids_set_visible ()

    void                gtk_plot3d_minor_grids_set_visible  (GtkPlot3D *plot,
                                                             gboolean x,
                                                             gboolean y,
                                                             gboolean z);

`plot` : |
`x` : |
`y` : |
`z` : |

### gtk_plot3d_major_grids_visible ()

    void                gtk_plot3d_major_grids_visible      (GtkPlot3D *plot,
                                                             gboolean *x,
                                                             gboolean *y,
                                                             gboolean *z);

`plot` : |
`x` : |
`y` : |
`z` : |

### gtk_plot3d_minor_grids_visible ()

    void                gtk_plot3d_minor_grids_visible      (GtkPlot3D *plot,
                                                             gboolean *x,
                                                             gboolean *y,
                                                             gboolean *z);

`plot` : |
`x` : |
`y` : |
`z` : |

### gtk_plot3d_major_zgrid_set_attributes ()

    void                gtk_plot3d_major_zgrid_set_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_major_zgrid_get_attributes ()

    void                gtk_plot3d_major_zgrid_get_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_minor_zgrid_set_attributes ()

    void                gtk_plot3d_minor_zgrid_set_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle style,
                                                             gfloat width,
                                                             const GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |

### gtk_plot3d_minor_zgrid_get_attributes ()

    void                gtk_plot3d_minor_zgrid_get_attributes
                                                            (GtkPlot3D *plot,
                                                             GtkPlotLineStyle *style,
                                                             gfloat *width,
                                                             GdkColor *color);

`plot` : |
`style` : |
`width` : |
`color` : |