## GOComponent

GOComponent

## Synopsis

                        GOComponent;
                        GOComponentClass;
    #define             GO_TYPE_COMPONENT
    #define             GO_COMPONENT                        (o)
    #define             GO_IS_COMPONENT                     (o)
    #define             GOC_PARAM_PERSISTENT
    GType               go_component_get_type               (void);
    GOComponent*        go_component_new_by_mime_type       (char const *mime_type);
    void                go_component_set_default_size       (GOComponent *component,
                                                             double width,
                                                             double ascent,
                                                             double descent);
    gboolean            go_component_needs_window           (GOComponent *component);
    void                go_component_set_window             (GOComponent *component,
                                                             GdkWindow *window);
    void                go_component_set_data               (GOComponent *component,
                                                             char const *data,
                                                             int length);
    gboolean            go_component_get_data               (GOComponent *component,
                                                             gpointer *data,
                                                             int *length,
                                                             GDestroyNotify *clearfunc,
                                                             gpointer *user_data);
    void                go_component_set_size               (GOComponent *component,
                                                             double width,
                                                             double height);
    gboolean            go_component_is_resizable           (GOComponent *component);
    gboolean            go_component_is_editable            (GOComponent *component);
    GtkWindow*          go_component_edit                   (GOComponent *component);
    void                go_component_emit_changed           (GOComponent *component);
    void                go_component_set_command_context    (GOCmdContext *cc);
    GOCmdContext*       go_component_get_command_context    (void);
    void                go_component_render                 (GOComponent *component,
                                                             cairo_t *cr,
                                                             double width,
                                                             double height);

## Object Hierarchy

      GObject
       +----GOComponent

## Properties

      "ascent"                   gdouble               : Read / Write
      "descent"                  gdouble               : Read / Write
      "height"                   gdouble               : Read
      "mime-type"                gchar*                : Read / Write
      "width"                    gdouble               : Read / Write

## Signals

      "changed"                                        : Run Last

## Description

## Details

### GOComponent

    typedef struct _GOComponent GOComponent;

### GOComponentClass

    typedef struct {
    	GObjectClass parent_class;

    	GtkWindow* (*edit) (GOComponent *component);
    	gboolean (*get_data) (GOComponent *component, gpointer *data, int *length,
    			      GDestroyNotify *clearfunc, gpointer *user_data);
    	void (*mime_type_set) (GOComponent* component);
    	void (*set_data) (GOComponent *component);
    	void (*set_default_size) (GOComponent* component);
    	void (*set_size) (GOComponent *component);
    	void (*set_window) (GOComponent *component);
    	void (*render) (GOComponent *component, cairo_t *cr,
    			    double width, double height);

    	/* signals */
    	void (*changed) (GOComponent* component);
    } GOComponentClass;

The component base object class.

GObjectClass `parent_class`; | the parent object class.
`edit` () | callback for component edition.
`get_data` () | returns the data embedded in the component.
`mime_type_set` () | sets the mime type.
`set_data` () | sets the data embedded in the component.
`set_default_size` () | sets the default size for the component.
`set_size` () | sets the requested size.
`set_window` () | sets the window if the component uses a GdkWindow. The new window is stored in the `window` field of GOComponent.
`render` () | displays the contents.
`changed` () | callback called when the component contents changed.

### GO_TYPE_COMPONENT

    #define GO_TYPE_COMPONENT	(go_component_get_type ())

### GO_COMPONENT()

    #define GO_COMPONENT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_TYPE_COMPONENT, GOComponent))

`o` : |

### GO_IS_COMPONENT()

    #define GO_IS_COMPONENT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_TYPE_COMPONENT))

`o` : |

### GOC_PARAM_PERSISTENT

    #define GOC_PARAM_PERSISTENT	(1 << (G_PARAM_USER_SHIFT+0))

### go_component_get_type ()

    GType               go_component_get_type               (void);

Returns : |

### go_component_new_by_mime_type ()

    GOComponent*        go_component_new_by_mime_type       (char const *mime_type);

`mime_type` : |
Returns : |

### go_component_set_default_size ()

    void                go_component_set_default_size       (GOComponent *component,
                                                             double width,
                                                             double ascent,
                                                             double descent);

`component` : |
`width` : |
`ascent` : |
`descent` : |

### go_component_needs_window ()

    gboolean            go_component_needs_window           (GOComponent *component);

`component` : | GOComponent
Returns : | TRUE if the component uses its own GtkWindow.

### go_component_set_window ()

    void                go_component_set_window             (GOComponent *component,
                                                             GdkWindow *window);

`component` : |
`window` : |

### go_component_set_data ()

    void                go_component_set_data               (GOComponent *component,
                                                             char const *data,
                                                             int length);

`component` : |
`data` : |
`length` : |

### go_component_get_data ()

    gboolean            go_component_get_data               (GOComponent *component,
                                                             gpointer *data,
                                                             int *length,
                                                             GDestroyNotify *clearfunc,
                                                             gpointer *user_data);

`component` : |
`data` : |
`length` : |
`clearfunc` : |
`user_data` : |
Returns : |

### go_component_set_size ()

    void                go_component_set_size               (GOComponent *component,
                                                             double width,
                                                             double height);

`component` : |
`width` : |
`height` : |

### go_component_is_resizable ()

    gboolean            go_component_is_resizable           (GOComponent *component);

`component` : |
Returns : |

### go_component_is_editable ()

    gboolean            go_component_is_editable            (GOComponent *component);

`component` : |
Returns : |

### go_component_edit ()

    GtkWindow*          go_component_edit                   (GOComponent *component);

`component` : |
Returns : |

### go_component_emit_changed ()

    void                go_component_emit_changed           (GOComponent *component);

`component` : |

### go_component_set_command_context ()

    void                go_component_set_command_context    (GOCmdContext *cc);

`cc` : |

### go_component_get_command_context ()

    GOCmdContext*       go_component_get_command_context    (void);

Returns : |

### go_component_render ()

    void                go_component_render                 (GOComponent *component,
                                                             cairo_t *cr,
                                                             double width,
                                                             double height);

`component` : |
`cr` : |
`width` : |
`height` : |

## Property Details

### The `"ascent"` property

      "ascent"                   gdouble               : Read / Write

Component ascent.

Allowed values: >= 0

Default value: 0

### The `"descent"` property

      "descent"                  gdouble               : Read / Write

Component descent.

Allowed values: >= 0

Default value: 0

### The `"height"` property

      "height"                   gdouble               : Read

Component height.

Allowed values: >= 0

Default value: 0

### The `"mime-type"` property

      "mime-type"                gchar*                : Read / Write

mime type of the content of the component.

Default value: NULL

### The `"width"` property

      "width"                    gdouble               : Read / Write

Component width.

Allowed values: >= 0

Default value: 0

## Signal Details

### The `"changed"` signal

    void                user_function                      (GOComponent *gocomponent,
                                                            gpointer     user_data)        : Run Last

`gocomponent` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.