## GogGraph

GogGraph — The graph object.

## Functions

GogGraph * | gog_graph_dup ()
gboolean | gog_graph_export_image ()
void | gog_graph_force_update ()
GSList * | gog_graph_get_data ()
GODoc * | gog_graph_get_document ()
void | gog_graph_get_size ()
GSList * | gog_graph_get_supported_image_formats ()
GogTheme * | gog_graph_get_theme ()
unsigned | gog_graph_num_cols ()
unsigned | gog_graph_num_rows ()
gboolean | gog_graph_request_update ()
GOData * | gog_graph_ref_data ()
void | gog_graph_render_to_cairo ()
void | gog_graph_set_size ()
void | gog_graph_set_theme ()
void | gog_graph_unref_data ()
gboolean | gog_graph_validate_chart_layout ()
GogView * | gog_graph_view_get_selection ()
void | gog_graph_view_handle_event ()
void | gog_graph_view_set_selection ()

## Types and Values

| GogGraph
| GogGraphClass
| GogGraphView

## Object Hierarchy

        GObject
        ├── GogObject
        │   ╰── GogStyledObject
        │       ╰── GogOutlinedObject
        │           ╰── GogGraph
        ╰── GogView
            ╰── GogOutlinedView
                ╰── GogGraphView

## Implemented Interfaces

GogGraph implements GOStyledObject and GOPersist.

## Description

A graph (in the abstract sense) in GOffice is an hierarical object model, with a GogGraph object as the top-level object. Objects that can be part of a graph is a subclass of GogObject. Those, and related objects have the prefix "Gog" in the class name. See GogObject for how to manipulate the object model, and the individual classes for specifics.

A GogGraph can have 1 or more children in the roles "Chart" and "Title".

## Functions

### gog_graph_dup ()

    GogGraph *
    gog_graph_dup (GogGraph const *graph);

#### Parameters

graph | GogGraph |

#### Returns

a deep copy of `graph` .

[transfer full]

### gog_graph_export_image ()

    gboolean
    gog_graph_export_image (GogGraph *graph,
                            GOImageFormat format,
                            GsfOutput *output,
                            double x_dpi,
                            double y_dpi);

Exports an image of `graph` in given `format` , writing results in a GsfOutput stream. If export format type is a bitmap one, it computes image size with x_dpi, y_dpi and `graph` size (see ``gog_graph_get_size()`` ).

#### Parameters

graph | a GogGraph |
format | image format for export |
output | a GsfOutput stream |
x_dpi | x resolution of exported graph |
y_dpi | y resolution of exported graph |

#### Returns

`TRUE` if export succeed.

### gog_graph_force_update ()

    void
    gog_graph_force_update (GogGraph *graph);

Do an update now if one has been queued.

#### Parameters

graph | GogGraph |

### gog_graph_get_data ()

    GSList *
    gog_graph_get_data (GogGraph const *graph);

#### Parameters

graph | GogGraph |

#### Returns

a list of the GOData objects that are data to the graph. The caller should _not_ modify or free the list.

[element-type GOData][transfer none]

### gog_graph_get_document ()

    GODoc *
    gog_graph_get_document (GogGraph *graph);

Retrieves the GODoc for `graph` .

#### Parameters

graph | a GogGraph |

#### Returns

the document.

[transfer none]

### gog_graph_get_size ()

    void
    gog_graph_get_size (GogGraph *graph,
                        double *width,
                        double *height);

FIXME Returns the logical size of graph, in points.

#### Parameters

graph | GogGraph |
width | logical width in pts |
height | logical height in pts |

### gog_graph_get_supported_image_formats ()

    GSList *
    gog_graph_get_supported_image_formats (void);

Builds a list of supported formats for image export.

#### Returns

a GSList of GOImageFormat.

[element-type GOImageFormat][transfer container]

### gog_graph_get_theme ()

    GogTheme *
    gog_graph_get_theme (GogGraph const *graph);

#### Parameters

graph | GogGraph |

#### Returns

the GogTheme used by `graph` .

[transfer none]

### gog_graph_num_cols ()

    unsigned
    gog_graph_num_cols (GogGraph const *graph);

### gog_graph_num_rows ()

    unsigned
    gog_graph_num_rows (GogGraph const *graph);

### gog_graph_request_update ()

    gboolean
    gog_graph_request_update (GogGraph *graph);

queue an update if one had not already be queued.

#### Parameters

graph | GogGraph |

#### Returns

`TRUE` if a handler has been added.

### gog_graph_ref_data ()

    GOData *
    gog_graph_ref_data (GogGraph *graph,
                        GOData *dat);

#### Parameters

graph | GogGraph |
dat | GOData |

#### Returns

`dat` or something equivalent to it that already exists in the graph. Otherwise use `dat` . Adds a gobject ref to the target and increments a count of the number of refs made from this GogGraph.

[transfer full]

### gog_graph_render_to_cairo ()

    void
    gog_graph_render_to_cairo (GogGraph *graph,
                               cairo_t *cairo,
                               double w,
                               double h);

Renders a graph using `cairo` . `w` and `h` are the requested width an height of the rendered graph, in the current `cairo` coordinate space. This function is not suited for multiple rendering of the same graph. gog_renderer_render_to cairo or gog_renderer_update/gog_renderer_get_cairo_surface should be used instead.

#### Parameters

graph | a GogGraph |
cairo | a cairo context |
w | width |
h | height |

### gog_graph_set_size ()

    void
    gog_graph_set_size (GogGraph *graph,
                        double width,
                        double height);

Sets the logical size of graph, given in points.

#### Parameters

graph | GogGraph |
width | logical width in pts |
height | logical height in pts |

### gog_graph_set_theme ()

    void
    gog_graph_set_theme (GogGraph *graph,
                         GogTheme *theme);

### gog_graph_unref_data ()

    void
    gog_graph_unref_data (GogGraph *graph,
                          GOData *dat);

#### Parameters

graph | GogGraph |
dat | GOData |

### gog_graph_validate_chart_layout ()

    gboolean
    gog_graph_validate_chart_layout (GogGraph *graph);

Check the layout of the chart grid and ensure that there are no empty cols or rows, and resize as necessary

#### Parameters

graph | GogGraph |

#### Returns

`TRUE` if anything changed.

### gog_graph_view_get_selection ()

    GogView *
    gog_graph_view_get_selection (GogGraphView *gview);

#### Parameters

gview | GogGraphView |

#### Returns

current selected view.

[transfer none]

### gog_graph_view_handle_event ()

    void
    gog_graph_view_handle_event (GogGraphView *gview,
                                 GdkEvent *event,
                                 double x_offset,
                                 double y_offset);

Handle events.

#### Parameters

gview | GogGraphView |
event | GdkEvent |
x_offset | in pixels |
y_offset | in pixels |

### gog_graph_view_set_selection ()

    void
    gog_graph_view_set_selection (GogGraphView *gview,
                                  GogObject *gobj);

Sets `gobj` as current selection. If `gobj` is different from previously selected object, a selection-changed signal is emitted.

#### Parameters

gview | GogGraphView |
gobj | new selected object |

## Types and Values

### GogGraph

    typedef struct _GogGraph GogGraph;

### GogGraphClass

    typedef struct {
    	GogOutlinedObjectClass base;

    	/* signals */
    	void (*add_data)    (GogGraph *graph, GOData *input);
    	void (*remove_data) (GogGraph *graph, GOData *input);
    } GogGraphClass;

#### Members

GogOutlinedObjectClass `base`; | base class. |
`add_data` () | implements the "add-data" signal. |
`remove_data` () | implements the "remove-data" signal. |

### GogGraphView

    typedef struct _GogGraphView GogGraphView;