## GoMarker

GoMarker

## Synopsis

    #define             GO_MARKER_TYPE
    #define             GO_MARKER                           (o)
    #define             IS_GO_MARKER                        (o)
    enum                GOMarkerShape;
    GOMarker*           go_marker_new                       (void);
    GOMarker*           go_marker_dup                       (GOMarker const *src);
    void                go_marker_assign                    (GOMarker *dst,
                                                             GOMarker const *src);
    GType               go_marker_get_type                  (void);
    GOMarkerShape       go_marker_shape_from_str            (char const *name);
    charconst      *    go_marker_shape_as_str              (GOMarkerShape shape);
    GOMarkerShape       go_marker_get_shape                 (GOMarker const *m);
    void                go_marker_set_shape                 (GOMarker *m,
                                                             GOMarkerShape shape);
    GOColor             go_marker_get_outline_color         (GOMarker const *m);
    void                go_marker_set_outline_color         (GOMarker *m,
                                                             GOColor color);
    GOColor             go_marker_get_fill_color            (GOMarker const *m);
    void                go_marker_set_fill_color            (GOMarker *m,
                                                             GOColor color);
    int                 go_marker_get_size                  (GOMarker const *m);
    void                go_marker_set_size                  (GOMarker *m,
                                                             int size);
    double              go_marker_get_outline_width         (GOMarker const *m);
    cairo_surface_t*    go_marker_create_cairo_surface      (GOMarker const *marker,
                                                             cairo_t *cr,
                                                             double scale,
                                                             double *width,
                                                             double *height);
    void                go_marker_render                    (GOMarker const *marker,
                                                             cairo_t *cr,
                                                             double x,
                                                             double y,
                                                             double scale);
    GtkWidget*          go_marker_selector_new              (GOMarkerShape initial_shape,
                                                             GOMarkerShape default_shape);
    void                go_marker_selector_set_colors       (GOSelector *selector,
                                                             GOColor outline,
                                                             GOColor fill);

## Description

## Details

### GO_MARKER_TYPE

    #define GO_MARKER_TYPE	  	(go_marker_get_type ())

### GO_MARKER()

    #define GO_MARKER(o)		(G_TYPE_CHECK_INSTANCE_CAST((o), GO_MARKER_TYPE, GOMarker))

`o` : |

### IS_GO_MARKER()

    #define IS_GO_MARKER(o)		(G_TYPE_CHECK_INSTANCE_TYPE((o), GO_MARKER_TYPE))

`o` : |

### enum GOMarkerShape

    typedef enum {
    	GO_MARKER_NONE,
    	GO_MARKER_SQUARE,
    	GO_MARKER_DIAMOND,
    	GO_MARKER_TRIANGLE_DOWN,
    	GO_MARKER_TRIANGLE_UP,
    	GO_MARKER_TRIANGLE_RIGHT,
    	GO_MARKER_TRIANGLE_LEFT,
    	GO_MARKER_CIRCLE,
    	GO_MARKER_X,
    	GO_MARKER_CROSS,
    	GO_MARKER_ASTERISK,
    	GO_MARKER_BAR,
    	GO_MARKER_HALF_BAR,
    	GO_MARKER_BUTTERFLY,
    	GO_MARKER_HOURGLASS,
    	GO_MARKER_MAX
    } GOMarkerShape;

### go_marker_new ()

    GOMarker*           go_marker_new                       (void);

Returns : |

### go_marker_dup ()

    GOMarker*           go_marker_dup                       (GOMarker const *src);

`src` : |
Returns : |

### go_marker_assign ()

    void                go_marker_assign                    (GOMarker *dst,
                                                             GOMarker const *src);

`dst` : |
`src` : |

### go_marker_get_type ()

    GType               go_marker_get_type                  (void);

Returns : |

### go_marker_shape_from_str ()

    GOMarkerShape       go_marker_shape_from_str            (char const *name);

`name` : |
Returns : |

### go_marker_shape_as_str ()

    charconst      *    go_marker_shape_as_str              (GOMarkerShape shape);

`shape` : |
Returns : |

### go_marker_get_shape ()

    GOMarkerShape       go_marker_get_shape                 (GOMarker const *m);

`m` : |
Returns : |

### go_marker_set_shape ()

    void                go_marker_set_shape                 (GOMarker *m,
                                                             GOMarkerShape shape);

`m` : |
`shape` : |

### go_marker_get_outline_color ()

    GOColor             go_marker_get_outline_color         (GOMarker const *m);

`m` : |
Returns : |

### go_marker_set_outline_color ()

    void                go_marker_set_outline_color         (GOMarker *m,
                                                             GOColor color);

`m` : |
`color` : |

### go_marker_get_fill_color ()

    GOColor             go_marker_get_fill_color            (GOMarker const *m);

`m` : |
Returns : |

### go_marker_set_fill_color ()

    void                go_marker_set_fill_color            (GOMarker *m,
                                                             GOColor color);

`m` : |
`color` : |

### go_marker_get_size ()

    int                 go_marker_get_size                  (GOMarker const *m);

`m` : |
Returns : |

### go_marker_set_size ()

    void                go_marker_set_size                  (GOMarker *m,
                                                             int size);

`m` : |
`size` : |

### go_marker_get_outline_width ()

    double              go_marker_get_outline_width         (GOMarker const *m);

`m` : |
Returns : |

### go_marker_create_cairo_surface ()

    cairo_surface_t*    go_marker_create_cairo_surface      (GOMarker const *marker,
                                                             cairo_t *cr,
                                                             double scale,
                                                             double *width,
                                                             double *height);

Creates a new cairo surface similar to the current target of `cr`, and render `marker` on it. `center` will contain the coordinate of the center of the surface.

`marker` : | a GOMarker
`cr` : | a cairo context
`scale` : | current context scale
`width` : | a placeholder for the surface width
`height` : | a placeholder for the surface height
Returns : | a newly created cairo_surface_t. This surface should be destroyed using cairo_surface_destroy after use.

### go_marker_render ()

    void                go_marker_render                    (GOMarker const *marker,
                                                             cairo_t *cr,
                                                             double x,
                                                             double y,
                                                             double scale);

Renders `marker` onto the `cairo` target, using `x` and `y` for the position.

`marker` : | a GOMarker
`cr` : | a cairo context
`x` : | x position
`y` : | y position
`scale` : | current scale

### go_marker_selector_new ()

    GtkWidget*          go_marker_selector_new              (GOMarkerShape initial_shape,
                                                             GOMarkerShape default_shape);

Creates a new marker selector.

`initial_shape` : | marker shape intially selected
`default_shape` : | automatic marker shape
Returns : | a new GtkWidget.

### go_marker_selector_set_colors ()

    void                go_marker_selector_set_colors       (GOSelector *selector,
                                                             GOColor outline,
                                                             GOColor fill);

Updates swatch colors of `selector`.

`selector` : | a GOSelector
`outline` : | outline color
`fill` : | fill color