diff options
Diffstat (limited to 'libs/libgnomecanvasmm/libgnomecanvasmm/path-def.h')
-rw-r--r-- | libs/libgnomecanvasmm/libgnomecanvasmm/path-def.h | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/libs/libgnomecanvasmm/libgnomecanvasmm/path-def.h b/libs/libgnomecanvasmm/libgnomecanvasmm/path-def.h new file mode 100644 index 0000000000..4f528f5806 --- /dev/null +++ b/libs/libgnomecanvasmm/libgnomecanvasmm/path-def.h @@ -0,0 +1,284 @@ +// -*- c++ -*- +// Generated by gtkmmproc -- DO NOT MODIFY! +#ifndef _LIBGNOMECANVASMM_PATH_DEF_H +#define _LIBGNOMECANVASMM_PATH_DEF_H + +#include <glibmm.h> + +/* $Id$ */ + +/* path-def.h + * + * + * Copyright (C) 2002 The libgnomecanvasmm Development Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <libgnomecanvasmm/point.h> +#include <glibmm/containers.h> +#include <libgnomecanvas/gnome-canvas-path-def.h> +#include <libart_lgpl/art_bpath.h> +#include <libart_lgpl/art_point.h> +#include <libart_lgpl/art_bpath.h> + + +namespace Gnome +{ + +namespace Canvas +{ + +class PathDef +{ + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + typedef PathDef CppObjectType; + typedef GnomeCanvasPathDef BaseObjectType; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + static Glib::RefPtr<PathDef> create(); + + // For use with Glib::RefPtr<> only. + void reference() const; + void unreference() const; + + ///Provides access to the underlying C instance. + GnomeCanvasPathDef* gobj(); + + ///Provides access to the underlying C instance. + const GnomeCanvasPathDef* gobj() const; + + ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. + GnomeCanvasPathDef* gobj_copy() const; + +protected: + // Do not derive this. Gnome::Canvas::PathDef can neither be constructed nor deleted. + PathDef(); + void operator delete(void*, size_t); + +private: + // noncopyable + PathDef(const PathDef&); + PathDef& operator=(const PathDef&); + + +public: + //gtkmmproc error: gnome_canvas_path_def_new : method defs lookup failed (1) + + /** This funtion creates a new #gnome_canvas_path_def with @a length + * number of points allocated. It is useful, if you know the exact + * number of points in path, so you can avoid automatic point + * array reallocation. + * @param length Number of points to allocate for the path. + * @return The new canvas path definition. + */ + static Glib::RefPtr<PathDef> create(int length); + + /** This function constructs a new #gnome_canvas_path_def and uses the + * passed @a bpath as the contents. The passed bpath should not be + * static as the path definition is editable when constructed with + * this function. Also, passed bpath will be freed with art_free, if + * path is destroyed, so use it with caution. + * For constructing a #gnome_canvas_path_def + * from (non-modifiable) bpath use + * #gnome_canvas_path_def_new_from_static_bpath. + * @param bpath Libart bezier path. + * @return The new canvas path definition that is populated with the + * passed bezier path, if the @a bpath is bad <tt>0</tt> is returned. + */ + static Glib::RefPtr<PathDef> create(ArtBpath& bpath); + + //GnomeCanvasPathDef * gnome_canvas_path_def_new_from_static_bpath (ArtBpath * bpath); + //GnomeCanvasPathDef * gnome_canvas_path_def_new_from_foreign_bpath (ArtBpath * bpath); + + //GnomeCanvasPathDef * gnome_canvas_path_def_concat (const GSList * list); + //GSList * gnome_canvas_path_def_split (const GnomeCanvasPathDef * path); + + /** This function creates a new GnomeCanvasPathDef that contains all of + * the open segments on the passed @a path . + * @return A new GnomeCanvasPathDef that contains all of the open segemtns in @a path . + */ + Glib::RefPtr<PathDef> open_parts(); + + /** This function returns a new GnomeCanvasPathDef that contains the + * all of close parts of passed @a path . + * @return A new GnomeCanvasPathDef that contains all of the closed + * parts of passed @a path . + */ + Glib::RefPtr<PathDef> closed_parts(); + + /** This function closes all of the open segments in the passed path + * and returns a new GnomeCanvasPathDef. + * @return A GnomeCanvasPathDef that contains the contents of @a path + * but has modified the path is fully closed. + */ + Glib::RefPtr<PathDef> close_all(); + + + /** Trims dynamic point array to exact length of path. + */ + void finish(); + + /** This function ensures that enough space for @a space points is + * allocated at the end of the path. + * @param space Number of points to guarantee are allocated at the end of + * the path. + */ + void ensure_space(int space); + + + /** This function clears the contents of the passed @a path . + */ + void reset(); + + + /** This function adds starts new subpath on @a path , and sets its + * starting point to @a x and @a y . If current subpath is empty, it + * simply changes its starting coordinates to new values. + * @param x X coordinate. + * @param y Y coordinate. + */ + void moveto(double x, double y); + + /** This function add a line segment to the passed @a path with the + * specified @a x and @a y coordinates. + * @param x X coordinate. + * @param y Y coordinate. + */ + void lineto(double x, double y); + + + /** This functions adds a new line segment with loose endpoint to the path, or + * if endpoint is already loose, changes its coordinates to @a x , @a y . You + * can change the coordinates of loose endpoint as many times as you want, + * the last ones set will be fixed, if you continue line. This is useful + * for handling drawing with mouse. + * @param x X coordinate. + * @param y Y coordinate. + */ + void lineto_moving(double x, double y); + + /** This function adds a bezier curve segment to the path definition. + * @param x0 First control point x coordinate. + * @param y0 First control point y coordinate. + * @param x1 Second control point x coordinate. + * @param y1 Second control point y coordinate. + * @param x2 End of curve x coordinate. + * @param y2 End of curve y coordinate. + */ + void curveto(double x1, double y1, double x2, double y2, double x3, double y3); + + /** This function closes the last subpath of @a path , adding a ART_LINETO to + * subpath starting point, if needed and changing starting pathcode to + * ART_MOVETO + */ + void closepath(); + + + /** This function closes the last subpath by setting the coordinates of + * the endpoint of the last segment (line or curve) to starting point. + */ + void closepath_current(); + + Gnome::Art::Point currentpoint() const; + + + /** This function returns a ArtBpath that consists of the path + * definition. + * @return ArtBpath. + */ + ArtBpath* get_bpath() const; + + /** This function returns the first ArtBpath point in the definition. + * @return ArtBpath being the first point in the path definition or + * null if no points are defined. + */ + ArtBpath* first_bpath() const; + + /** This function returns pointer to the last ArtBpath segment in the path + * definition. + * @return ArtBpath, being the last segment in the path definition or + * null if no line segments have been defined. + */ + ArtBpath* last_bpath() const; + + + /** This function is a boolean test to see if the path is empty, + * meaning containing no line segments. + * @return Boolean, indicating if the path is empty. + */ + bool is_empty() const; + + /** This function returns the length of the path definition. Not + * Euclidian length of the path but rather the number of points on the + * path. + * @return Integer, number of points on the path. + */ + int length() const; + + /** This function is a boolean test checking to see if the path has a + * current point defined. Current point will be set by line operators, + * and cleared by closing subpath. + * @return Boolean, indicating if the path has a current point defined. + */ + bool has_currentpoint() const; + + /** This function returns a boolean value indicating if the path has + * any open segments. + * @return Boolean, indicating if the path has any open segments. + */ + bool any_open() const; + + /** This function returns a boolean value indicating if the path only + * contains open segments. + * @return Boolean, indicating if the path has all open segments. + */ + bool all_open() const; + + /** This function returns a boolean valid indicating if the path has + * any closed segements. + * @return Boolean, indicating if the path has any closed segments. + */ + bool any_closed() const; + + /** This function returns a boolean value indicating if the path only + * contains closed segments. + * @return Boolean, indicating if the path has all closed segments. + */ + bool all_closed() const; + + +}; + +} /* namespace Canvas */ + +} /* namespace Gnome */ + + +namespace Glib +{ + + /** @relates Gnome::Canvas::PathDef + * @param object The C instance + * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. + * @result A C++ instance that wraps this C instance. + */ + Glib::RefPtr<Gnome::Canvas::PathDef> wrap(GnomeCanvasPathDef* object, bool take_copy = false); + +} // namespace Glib + +#endif /* _LIBGNOMECANVASMM_PATH_DEF_H */ + |