mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-23 13:01:42 +00:00
4ba6db4e94
2001-12-03 Sven Neumann <sven@gimp.org> Michael Natterer <mitch@gimp.org> * app/paint-funcs/paint-funcs-mmx.h: removed redefiniton of HAS_ALPHA macro. * app/core/gimp.c: reverted Daniel's change; it doesn't make the code simpler, only more error-prone. * app/gui/info-dialog.h * app/gui/resize-dialog.h * app/core/gimp.h * app/core/gimpbrushgenerated.h * app/core/gimpbrushpipe.h * app/core/gimpchannel.[ch] * app/core/gimpcontainer.h * app/core/gimpcoreconfig.h * app/core/gimpdata.h * app/core/gimpdatafactory.[ch] * app/core/gimpdrawable-blend.c * app/core/gimpdrawable.[ch] * app/core/gimpimage.h * app/core/gimpimagefile.h * app/core/gimplayer.h * app/core/gimplayermask.h * app/core/gimpmoduleinfo.h * app/core/gimppalette.h * app/core/gimpundo.h * app/widgets/gimpbrushfactoryview.h * app/widgets/gimpconstrainedhwrapbox.h * app/widgets/gimpcontainermenu.h * app/widgets/gimpcontainerview.h * app/widgets/gimpdialogfactory.h * app/widgets/gimpimagedock.h * app/widgets/gimplistitem.h * app/widgets/gimpmenuitem.h * app/widgets/gimpnavigationpreview.h * app/widgets/gimppreview.h * app/gimprc.h * app/pathP.h * app/tools/gimpbezierselecttool.h * app/tools/gimpcolorbalancetool.h * app/tools/gimpcurvestool.h * app/tools/gimpdodgeburntool.c * app/tools/gimpfreeselecttool.h * app/tools/gimphuesaturationtool.h * app/tools/gimpinktool-blob.h * app/tools/gimpinktool.h * app/tools/gimpiscissorstool.h * app/tools/gimpmagnifytool.h * app/tools/gimpmeasuretool.h * app/tools/gimppainttool.h * app/tools/gimppathtool.h * app/tools/gimprectselecttool.h * app/tools/gimpthresholdtool.h * app/tools/gimptool.h * app/tools/gimptransformtool.h * app/base/base-config.h * app/base/gimplut.[ch] * app/base/pixel-region.h * app/base/pixel-surround.[ch] * app/base/temp-buf.[ch] * app/base/tile-manager-private.h * app/base/tile-manager.[ch] * app/base/tile-private.h * app/base/tile.[ch] * app/display/gimpdisplay.h * app/display/gimpdisplayshell-selection.h * app/display/gimpdisplayshell.h * app/gui/brush-select.h * app/gui/gradient-editor.h * app/gui/gradient-select.h: reverted most of Daniel's changes. There's no reason to use unsigned integers here and in lots of places it is even wrong. Then it's way too early to convert gbooleans into bitfields. This change may make sense in a few places but can happen later when the API has settled and the code is more stable. * app/gimprc.c: reverted Daniel's change. This is a GCC-ism and this code is about to die soon anyway.
169 lines
6.7 KiB
C
169 lines
6.7 KiB
C
/* The GIMP -- an image manipulation program
|
|
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef __GIMP_BEZIER_SELECT_TOOL_H__
|
|
#define __GIMP_BEZIER_SELECT_TOOL_H__
|
|
|
|
|
|
#include "gimpselectiontool.h"
|
|
|
|
|
|
#define GIMP_TYPE_BEZIER_SELECT_TOOL (gimp_bezier_select_tool_get_type ())
|
|
#define GIMP_BEZIER_SELECT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectTool))
|
|
#define GIMP_BEZIER_SELECT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectToolClass))
|
|
#define GIMP_IS_BEZIER_SELECT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL))
|
|
#define GIMP_IS_BEZIER_SELECT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_BEZIER_SELECT_TOOL))
|
|
#define GIMP_BEZIER_SELECT_TOOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_BEZIER_SELECT_TOOL, GimpBezierSelectToolClass))
|
|
|
|
|
|
#define BEZIER_START 1
|
|
#define BEZIER_ADD 2
|
|
#define BEZIER_EDIT 4
|
|
#define BEZIER_DRAG 8
|
|
|
|
#define BEZIER_ANCHOR 1
|
|
#define BEZIER_CONTROL 2
|
|
#define BEZIER_MOVE 3
|
|
|
|
#define IMAGE_COORDS 1
|
|
#define AA_IMAGE_COORDS 2
|
|
#define SCREEN_COORDS 3
|
|
|
|
#define SUBDIVIDE 1000
|
|
|
|
enum { EXTEND_EDIT, EXTEND_ADD, EXTEND_REMOVE, EXTEND_NEW };
|
|
|
|
|
|
/* typedef struct _GimpBezierSelectTool GimpBezierSelectTool;
|
|
* typedef struct _GimpBezierSelectPoint GimpBezierSelectPoint; */
|
|
typedef struct _GimpBezierSelectToolClass GimpBezierSelectToolClass;
|
|
|
|
struct _GimpBezierSelectPoint
|
|
{
|
|
gint type; /* type of point (anchor/control/move) */
|
|
gdouble x, y; /* location of point in image space */
|
|
gint sx, sy; /* location of point in screen space */
|
|
|
|
GimpBezierSelectPoint *next; /* next point on curve */
|
|
GimpBezierSelectPoint *prev; /* prev point on curve */
|
|
GimpBezierSelectPoint *next_curve; /* Next curve segment */
|
|
|
|
gint pointflags; /* Status of point 0 = not selected
|
|
* 1 = selected
|
|
*/
|
|
};
|
|
|
|
struct _GimpBezierSelectTool
|
|
{
|
|
GimpSelectionTool parent_instance;
|
|
|
|
gint state; /* start, add, edit or drag */
|
|
gint draw_mode; /* all or part */
|
|
gint closed; /* is the last curve closed */
|
|
|
|
GimpBezierSelectPoint *points; /* the curve */
|
|
GimpBezierSelectPoint *cur_anchor; /* the current active anchor point */
|
|
GimpBezierSelectPoint *cur_control; /* the current active control point */
|
|
GimpBezierSelectPoint *last_point; /* the last point on the curve */
|
|
|
|
gint num_points; /* number of points in the curve */
|
|
GimpChannel *mask; /* null if the curve is open */
|
|
GSList **scanlines; /* used in converting a curve */
|
|
};
|
|
|
|
|
|
struct _GimpBezierSelectToolClass
|
|
{
|
|
GimpSelectionToolClass parent_class;
|
|
};
|
|
|
|
typedef void (* GimpBezierSelectPointsFunc) (GimpBezierSelectTool *bezier_sel,
|
|
GdkPoint *points,
|
|
gint n_points,
|
|
gpointer data);
|
|
|
|
typedef struct
|
|
{
|
|
gint count;
|
|
} CountCurves;
|
|
|
|
|
|
/* Public functions */
|
|
|
|
void gimp_bezier_select_tool_register (Gimp *gimp,
|
|
GimpToolRegisterCallback callback);
|
|
|
|
GType gimp_bezier_select_tool_get_type (void) G_GNUC_CONST;
|
|
|
|
|
|
gboolean bezier_tool_selected (void);
|
|
|
|
void gimp_bezier_select_tool_bezier_select (GimpBezierSelectTool *rect_tool,
|
|
gint x,
|
|
gint y,
|
|
gint w,
|
|
gint h);
|
|
|
|
|
|
void bezier_select (GimpImage *gimage,
|
|
gint x,
|
|
gint y,
|
|
gint w,
|
|
gint h,
|
|
SelectOps op,
|
|
gboolean feather,
|
|
gdouble feather_radius);
|
|
|
|
gint bezier_select_load (GimpDisplay *gdisp,
|
|
GimpBezierSelectPoint *points,
|
|
gint n_points,
|
|
gint closed);
|
|
void bezier_draw_curve (GimpBezierSelectTool *bezier_sel,
|
|
GimpBezierSelectPointsFunc func,
|
|
gint coord,
|
|
gpointer data);
|
|
|
|
void bezier_select_reset (GimpBezierSelectTool *bezier_sel);
|
|
void bezier_select_free (GimpBezierSelectTool *bezier_sel);
|
|
GimpBezierSelectTool* path_to_beziersel (Path *path);
|
|
|
|
void bezier_add_point (GimpBezierSelectTool *bezier_sel,
|
|
gint type,
|
|
gdouble x,
|
|
gdouble y);
|
|
void bezier_paste_bezierselect_to_current (GimpDisplay *gdisp,
|
|
GimpBezierSelectTool *bezier_sel);
|
|
void bezier_select_mode (gint);
|
|
void bezier_stroke (GimpBezierSelectTool *bezier_sel,
|
|
GimpDisplay *gdisp,
|
|
gint subdivisions,
|
|
gint open_path);
|
|
void bezier_to_selection (GimpBezierSelectTool *bezier_sel,
|
|
GimpDisplay *gdisp);
|
|
gint bezier_distance_along (GimpBezierSelectTool *bezier_sel,
|
|
gint open_path,
|
|
gdouble dist,
|
|
gint *x,
|
|
gint *y,
|
|
gdouble *gradient);
|
|
void bezier_draw (GimpDisplay *gdisp,
|
|
GimpBezierSelectTool *bezier_sel);
|
|
|
|
|
|
#endif /* __GIMP_BEZIER_SELECT_TOOL_H__ */
|