started work on TransformCore
This commit is contained in:
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2001-02-20 Nathan Summers <rock@gimp.org>
|
||||
|
||||
* app/tools/gimptransformtool.c
|
||||
* app/tools/gimptransformtool.h: Started work on the TransformCore.
|
||||
Very incomplete. Needs a friendly visit from genmarshal.pl. Not yet
|
||||
included in the build. Move along now, folks, there's nothing more to
|
||||
see.
|
||||
|
||||
2001-02-28 Nathan Summers <rock@gimp.org>
|
||||
|
||||
* app/tools/crop.c
|
||||
* app/tools/crop.h: Fixed a couple instances where the crop tool was
|
||||
incorrectly inheriting from GimpTool instead of GimpDrawTool. The crop
|
||||
tool still does not work completely correctly on my machine. It does
|
||||
not show the lines and sometimes it includes garbage.
|
||||
|
||||
2001-02-28 Sven Neumann <sven@gimp.org>
|
||||
|
||||
Please, do not change the files in app/pdb directly, they are
|
||||
|
||||
1796
app/core/gimp-transform-region.c
Normal file
1796
app/core/gimp-transform-region.c
Normal file
File diff suppressed because it is too large
Load Diff
1796
app/core/gimpdrawable-transform.c
Normal file
1796
app/core/gimpdrawable-transform.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1588,7 +1588,7 @@ gimp_crop_tool_get_type (void)
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
tool_type = gtk_type_unique (GIMP_TYPE_TOOL, &tool_info);
|
||||
tool_type = gtk_type_unique (GIMP_TYPE_DRAW_TOOL, &tool_info);
|
||||
}
|
||||
return tool_type;
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ struct _GimpCropTool
|
||||
|
||||
struct _GimpCropToolClass
|
||||
{
|
||||
GimpToolClass parent_class;
|
||||
GimpDrawToolClass parent_class;
|
||||
};
|
||||
|
||||
void gimp_crop_tool_register (void);
|
||||
|
||||
@ -1588,7 +1588,7 @@ gimp_crop_tool_get_type (void)
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
tool_type = gtk_type_unique (GIMP_TYPE_TOOL, &tool_info);
|
||||
tool_type = gtk_type_unique (GIMP_TYPE_DRAW_TOOL, &tool_info);
|
||||
}
|
||||
return tool_type;
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ struct _GimpCropTool
|
||||
|
||||
struct _GimpCropToolClass
|
||||
{
|
||||
GimpToolClass parent_class;
|
||||
GimpDrawToolClass parent_class;
|
||||
};
|
||||
|
||||
void gimp_crop_tool_register (void);
|
||||
|
||||
1796
app/tools/gimptransformtool.c
Normal file
1796
app/tools/gimptransformtool.c
Normal file
File diff suppressed because it is too large
Load Diff
155
app/tools/gimptransformtool.h
Normal file
155
app/tools/gimptransformtool.h
Normal file
@ -0,0 +1,155 @@
|
||||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1995-2001 Spencer Kimball, Peter Mattis, and others
|
||||
*
|
||||
* 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_TRANSFORM_TOOL_H__
|
||||
#define __GIMP_TRANSFORM_TOOL_H__
|
||||
|
||||
|
||||
#include "tools/tool.h"
|
||||
|
||||
#define GIMP_TYPE_TRANSFORM_TOOL (gimp_transform_tool_get_type ())
|
||||
#define GIMP_TRANSFORM_TOOL(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_TRANSFORM_TOOL, GimpTransformTool))
|
||||
#define GIMP_IS_TRANSFORM_TOOL(obj) (GTK_CHECK_TYPE ((obj), GIMP_TYPE_TRANSFORM_TOOL))
|
||||
#define GIMP_TRANSFORM_TOOL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMP_TYPE_TRANSFORM_TOOL, GimpTransformToolClass))
|
||||
#define GIMP_IS_TRANSFORM_TOOL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_TRANSFORM_TOOL))
|
||||
|
||||
typedef struct _GimpTransformToolClass GimpTransformToolClass;
|
||||
|
||||
/* buffer sizes for scaling information strings (for the info dialog) */
|
||||
#define MAX_INFO_BUF 40
|
||||
#define TRAN_INFO_SIZE 8
|
||||
|
||||
enum BoundingBox
|
||||
{
|
||||
X0, Y0, X1, Y1, X2, Y2, X3, Y3
|
||||
};
|
||||
|
||||
typedef gdouble TranInfo[TRAN_INFO_SIZE];
|
||||
|
||||
struct _GimpTransformTool
|
||||
{
|
||||
GimpDrawTool parent_instance;
|
||||
|
||||
gint startx; /* starting x coord */
|
||||
gint starty; /* starting y coord */
|
||||
|
||||
gint curx; /* current x coord */
|
||||
gint cury; /* current y coord */
|
||||
|
||||
gint lastx; /* last x coord */
|
||||
gint lasty; /* last y coord */
|
||||
|
||||
gint state; /* state of buttons and keys */
|
||||
|
||||
gint x1, y1; /* upper left hand coordinate */
|
||||
gint x2, y2; /* lower right hand coords */
|
||||
gint cx, cy; /* center point (for rotation) */
|
||||
|
||||
gdouble tx1, ty1; /* transformed coords */
|
||||
gdouble tx2, ty2; /* */
|
||||
gdouble tx3, ty3; /* */
|
||||
gdouble tx4, ty4; /* */
|
||||
gdouble tcx, tcy; /* */
|
||||
|
||||
gint sx1, sy1; /* transformed screen coords */
|
||||
gint sx2, sy2; /* position of four handles */
|
||||
gint sx3, sy3; /* */
|
||||
gint sx4, sy4; /* */
|
||||
gint scx, scy; /* and center for rotation */
|
||||
|
||||
GimpMatrix3 transform; /* transformation matrix */
|
||||
TranInfo trans_info; /* transformation info */
|
||||
|
||||
TileManager *original; /* pointer to original tiles */
|
||||
|
||||
TransformAction function; /* current tool activity */
|
||||
|
||||
gboolean interactive; /* tool is interactive */
|
||||
gboolean bpressed; /* Bug work around make sure we have
|
||||
* a button pressed before we deal with
|
||||
* motion events. ALT.
|
||||
*/
|
||||
gint ngx, ngy; /* number of grid lines in original
|
||||
* x and y directions
|
||||
*/
|
||||
gdouble *grid_coords; /* x and y coordinates of the grid
|
||||
* endpoints (a total of (ngx+ngy)*2
|
||||
* coordinate pairs)
|
||||
*/
|
||||
gdouble *tgrid_coords; /* transformed grid_coords */
|
||||
};
|
||||
|
||||
struct _GimpTransformToolClass {
|
||||
GimpDrawToolClass parent_class;
|
||||
|
||||
TileManager * (* transform) (GimpTransformTool *tool,
|
||||
GDisplay *gdisp,
|
||||
TransformState state);
|
||||
|
||||
}
|
||||
|
||||
/* Special undo type */
|
||||
typedef struct _TransformUndo TransformUndo;
|
||||
|
||||
struct _TransformUndo
|
||||
{
|
||||
/* Is this the right thing to do? */
|
||||
GimpTransformTool *tool;
|
||||
|
||||
TranInfo trans_info;
|
||||
TileManager *original;
|
||||
gpointer path_undo;
|
||||
};
|
||||
|
||||
|
||||
/* make this variable available to all */
|
||||
/* Do we still need to do this? -- rock */
|
||||
extern InfoDialog * transform_info;
|
||||
|
||||
/* transform tool functions */
|
||||
/* make PDB compile: ToolType doesn't exist any more
|
||||
Tool * gimp_transform_tool_new (GimpTransformToolType tool_type,
|
||||
gboolean interactive);
|
||||
*/
|
||||
void gimp_transform_tool_destroy (GimpTransformTool *tool);
|
||||
void gimp_transform_tool_draw (GimpTransformTool *tool);
|
||||
void gimp_transform_tool_no_draw (GimpTransformTool *tool);
|
||||
void gimp_transform_tool_transform_bounding_box (GimpTransformTool *tool);
|
||||
void gimp_transform_tool_reset (GimpTransformTool *tool,
|
||||
GDisplay *gdisp);
|
||||
void gimp_transform_tool_grid_density_changed (void);
|
||||
void gimp_transform_tool_showpath_changed (gint type);
|
||||
|
||||
/* transform functions */
|
||||
TileManager * gimp_transform_tool_transform (GImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
TileManager *float_tiles,
|
||||
gboolean interpolation,
|
||||
GimpMatrix3 matrix,
|
||||
GimpProgressFunc progress_callback,
|
||||
gpointer progress_data);
|
||||
TileManager * gimp_transform_tool_cut (GImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean *new_layer);
|
||||
gboolean gimp_transform_tool_paste (GImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
TileManager *tiles,
|
||||
gboolean new_layer);
|
||||
GtkType gimp_transform_tool_get_type (void);
|
||||
|
||||
#endif /* __GIMP_TRANSFORM_TOOL_H__ */
|
||||
Reference in New Issue
Block a user