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