1999-09-10 01:21:06 +08:00
|
|
|
/* The GIMP -- an image manipulation program
|
2001-04-07 22:55:39 +08:00
|
|
|
*
|
1999-10-04 03:13:54 +08:00
|
|
|
* This file Copyright (C) 1999 Simon Budig
|
1999-09-10 01:21:06 +08:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program 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 General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
1999-10-04 03:13:54 +08:00
|
|
|
|
1999-09-10 01:21:06 +08:00
|
|
|
#ifndef __PATH_TOOL_H__
|
|
|
|
#define __PATH_TOOL_H__
|
|
|
|
|
2001-04-07 22:55:39 +08:00
|
|
|
/*
|
|
|
|
* Every new curve-type has to have a parameter between 0 and 1, and
|
|
|
|
* should go from a starting to a target point.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Some defines... */
|
|
|
|
|
|
|
|
#define PATH_TOOL_WIDTH 8
|
|
|
|
#define PATH_TOOL_HALFWIDTH 4
|
|
|
|
|
|
|
|
/* function prototypes */
|
|
|
|
|
|
|
|
|
|
|
|
/* Small functions to determine coordinates, iterate over path/curve/segment */
|
|
|
|
|
|
|
|
void path_segment_get_coordinates (PathSegment *,
|
|
|
|
gdouble,
|
|
|
|
gint *,
|
|
|
|
gint *);
|
|
|
|
void path_traverse_path (NPath *,
|
|
|
|
PathTraverseFunc,
|
|
|
|
CurveTraverseFunc,
|
|
|
|
SegmentTraverseFunc,
|
|
|
|
gpointer);
|
|
|
|
void path_traverse_curve (NPath *,
|
|
|
|
PathCurve *,
|
|
|
|
CurveTraverseFunc,
|
|
|
|
SegmentTraverseFunc,
|
|
|
|
gpointer);
|
|
|
|
void path_traverse_segment (NPath *,
|
|
|
|
PathCurve *,
|
|
|
|
PathSegment *,
|
|
|
|
SegmentTraverseFunc,
|
|
|
|
gpointer);
|
|
|
|
gdouble path_locate_point (NPath *,
|
|
|
|
PathCurve **,
|
|
|
|
PathSegment **,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint);
|
|
|
|
|
|
|
|
/* Tools to manipulate paths, curves, segments */
|
1999-09-10 01:21:06 +08:00
|
|
|
|
2001-04-07 22:55:39 +08:00
|
|
|
PathCurve * path_add_curve (NPath *,
|
2001-04-11 21:28:53 +08:00
|
|
|
gdouble,
|
|
|
|
gdouble);
|
2001-04-07 22:55:39 +08:00
|
|
|
PathSegment * path_append_segment (NPath *,
|
|
|
|
PathCurve *,
|
|
|
|
SegmentType,
|
2001-04-11 21:28:53 +08:00
|
|
|
gdouble,
|
|
|
|
gdouble);
|
2001-04-07 22:55:39 +08:00
|
|
|
PathSegment * path_prepend_segment (NPath *,
|
|
|
|
PathCurve *,
|
|
|
|
SegmentType,
|
2001-04-11 21:28:53 +08:00
|
|
|
gdouble,
|
|
|
|
gdouble);
|
2001-04-07 22:55:39 +08:00
|
|
|
PathSegment * path_split_segment (PathSegment *,
|
|
|
|
gdouble);
|
|
|
|
void path_join_curves (PathSegment *,
|
|
|
|
PathSegment *);
|
|
|
|
void path_flip_curve (PathCurve *);
|
|
|
|
void path_free_path (NPath *);
|
|
|
|
void path_free_curve (PathCurve *);
|
|
|
|
void path_free_segment (PathSegment *);
|
|
|
|
void path_delete_segment (PathSegment *);
|
|
|
|
void path_print (NPath *);
|
2001-11-12 22:45:58 +08:00
|
|
|
void path_offset_active (NPath *,
|
|
|
|
gdouble,
|
|
|
|
gdouble);
|
|
|
|
void path_set_flags (GimpPathTool *path_tool,
|
2001-04-07 22:55:39 +08:00
|
|
|
NPath *,
|
|
|
|
PathCurve *,
|
|
|
|
PathSegment *,
|
|
|
|
guint32,
|
|
|
|
guint32);
|
1999-09-10 01:21:06 +08:00
|
|
|
|
2001-11-12 22:45:58 +08:00
|
|
|
gdouble gimp_path_tool_on_curve (GimpPathTool *path_tool,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
NPath**,
|
|
|
|
PathCurve**,
|
|
|
|
PathSegment**);
|
|
|
|
gboolean gimp_path_tool_on_anchors (GimpPathTool *path_tool,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
NPath**,
|
|
|
|
PathCurve**,
|
|
|
|
PathSegment**);
|
|
|
|
gint gimp_path_tool_on_handles (GimpPathTool *path_tool,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
gint,
|
|
|
|
NPath **,
|
|
|
|
PathCurve **,
|
|
|
|
PathSegment **);
|
|
|
|
|
|
|
|
gint path_tool_cursor_position (NPath *path,
|
|
|
|
gdouble x,
|
|
|
|
gdouble y,
|
|
|
|
gint halfwidth,
|
|
|
|
gint halfheight,
|
|
|
|
NPath **pathP,
|
|
|
|
PathCurve **curveP,
|
|
|
|
PathSegment **segmentP,
|
|
|
|
gdouble *positionP,
|
|
|
|
gint *handle_idP);
|
|
|
|
|
2001-04-11 23:25:49 +08:00
|
|
|
|
2001-04-07 22:55:39 +08:00
|
|
|
/* High level image-manipulation functions */
|
1999-09-10 01:21:06 +08:00
|
|
|
|
2001-11-12 22:45:58 +08:00
|
|
|
void path_stroke (GimpPathTool *path_tool,
|
2001-04-07 22:55:39 +08:00
|
|
|
NPath *);
|
2001-11-12 22:45:58 +08:00
|
|
|
void path_to_selection (GimpPathTool *path_tool,
|
2001-04-07 22:55:39 +08:00
|
|
|
NPath *);
|
1999-09-10 01:21:06 +08:00
|
|
|
|
1999-10-07 07:24:22 +08:00
|
|
|
|
2001-04-07 22:55:39 +08:00
|
|
|
#endif /* __PATH_TOOL_H__ */
|
1999-10-07 07:24:22 +08:00
|
|
|
|