1 #ifndef GNOME_CANVAS_PATH_DEF_H
2 #define GNOME_CANVAS_PATH_DEF_H
3 
4 /*
5  * GnomeCanvasPathDef
6  *
7  * (C) 1999-2000 Lauris Kaplinski <lauris@ximian.com>
8  * Released under LGPL
9  *
10  * This is mostly like GnomeCanvasBpathDef, but with added functionality:
11  * - can be constructed from scratch, from existing bpath of from static bpath
12  * - Path is always terminated with ART_END
13  * - Has closed flag
14  * - has concat, split and copy methods
15  *
16  */
17 
18 #include <glib-object.h>
19 #include <libart_lgpl/art_bpath.h>
20 
21 G_BEGIN_DECLS
22 
23 typedef struct _GnomeCanvasPathDef GnomeCanvasPathDef;
24 
25 #define GNOME_TYPE_CANVAS_PATH_DEF	(gnome_canvas_path_def_get_type ())
26 GType gnome_canvas_path_def_get_type (void) G_GNUC_CONST;
27 
28 /* Constructors */
29 
30 GnomeCanvasPathDef * gnome_canvas_path_def_new (void);
31 GnomeCanvasPathDef * gnome_canvas_path_def_new_sized (gint length);
32 GnomeCanvasPathDef * gnome_canvas_path_def_new_from_bpath (ArtBpath * bpath);
33 GnomeCanvasPathDef * gnome_canvas_path_def_new_from_static_bpath (ArtBpath * bpath);
34 GnomeCanvasPathDef * gnome_canvas_path_def_new_from_foreign_bpath (ArtBpath * bpath);
35 
36 void gnome_canvas_path_def_ref (GnomeCanvasPathDef * path);
37 void gnome_canvas_path_def_finish (GnomeCanvasPathDef * path);
38 void gnome_canvas_path_def_ensure_space (GnomeCanvasPathDef * path, gint space);
39 
40 /*
41  * Misc constructors
42  * All these return NEW path, not unrefing old
43  * Also copy and duplicate force bpath to be private (otherwise you
44  * would use ref :)
45  */
46 
47 void gnome_canvas_path_def_copy (GnomeCanvasPathDef * dst, const GnomeCanvasPathDef * src);
48 GnomeCanvasPathDef * gnome_canvas_path_def_duplicate (const GnomeCanvasPathDef * path);
49 GnomeCanvasPathDef * gnome_canvas_path_def_concat (const GSList * list);
50 GSList * gnome_canvas_path_def_split (const GnomeCanvasPathDef * path);
51 GnomeCanvasPathDef * gnome_canvas_path_def_open_parts (const GnomeCanvasPathDef * path);
52 GnomeCanvasPathDef * gnome_canvas_path_def_closed_parts (const GnomeCanvasPathDef * path);
53 GnomeCanvasPathDef * gnome_canvas_path_def_close_all (const GnomeCanvasPathDef * path);
54 
55 /* Destructor */
56 
57 void gnome_canvas_path_def_unref (GnomeCanvasPathDef * path);
58 
59 /* Methods */
60 
61 /* Sets GnomeCanvasPathDef to zero length */
62 
63 void gnome_canvas_path_def_reset (GnomeCanvasPathDef * path);
64 
65 /* Drawing methods */
66 
67 void gnome_canvas_path_def_moveto (GnomeCanvasPathDef * path, gdouble x, gdouble y);
68 void gnome_canvas_path_def_lineto (GnomeCanvasPathDef * path, gdouble x, gdouble y);
69 
70 /* Does not create new ArtBpath, but simply changes last lineto position */
71 
72 void gnome_canvas_path_def_lineto_moving (GnomeCanvasPathDef * path, gdouble x, gdouble y);
73 void gnome_canvas_path_def_curveto (GnomeCanvasPathDef * path, gdouble x0, gdouble y0,gdouble x1, gdouble y1, gdouble x2, gdouble y2);
74 void gnome_canvas_path_def_closepath (GnomeCanvasPathDef * path);
75 
76 /* Does not draw new line to startpoint, but moves last lineto */
77 
78 void gnome_canvas_path_def_closepath_current (GnomeCanvasPathDef * path);
79 
80 /* Various methods */
81 
82 ArtBpath * gnome_canvas_path_def_bpath (const GnomeCanvasPathDef * path);
83 gint gnome_canvas_path_def_length (const GnomeCanvasPathDef * path);
84 gboolean gnome_canvas_path_def_is_empty (const GnomeCanvasPathDef * path);
85 gboolean gnome_canvas_path_def_has_currentpoint (const GnomeCanvasPathDef * path);
86 void gnome_canvas_path_def_currentpoint (const GnomeCanvasPathDef * path, ArtPoint * p);
87 ArtBpath * gnome_canvas_path_def_last_bpath (const GnomeCanvasPathDef * path);
88 ArtBpath * gnome_canvas_path_def_first_bpath (const GnomeCanvasPathDef * path);
89 gboolean gnome_canvas_path_def_any_open (const GnomeCanvasPathDef * path);
90 gboolean gnome_canvas_path_def_all_open (const GnomeCanvasPathDef * path);
91 gboolean gnome_canvas_path_def_any_closed (const GnomeCanvasPathDef * path);
92 gboolean gnome_canvas_path_def_all_closed (const GnomeCanvasPathDef * path);
93 
94 G_END_DECLS
95 
96 #endif
97