mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-19 06:14:03 +00:00
config.guess new versions from CVS (at least that's what my debian package
2001-05-24 Michael Natterer <mitch@gimp.org> * config.guess * config.sub: new versions from CVS (at least that's what my debian package says...) * app/Makefile.am * app/gimppreviewcache.[ch]: removed. * app/core/Makefile.am * app/core/gimppreviewcache.c: added. * app/core/gimpdrawable.c: reordered #includes * app/apptypes.h: make ImageMap a proper opaque typedef, not simply a gpointer. * app/image_map.[ch]: changed accordingly. cleanup. * app/tools/color_balance.h * app/tools/curves.h * app/tools/gimptool.c * app/tools/histogram_tool.h * app/tools/hue_saturation.h * app/tools/threshold.h: changed here too. * libgimpbase/gimpbasetypes.h: /*< skip >*/ GIMP_UNIT_PERCENT as it's a UI convenience thing and no unit. * plug-ins/script-fu/script-fu-constants.c * tools/pdbgen/enums.pl: regenerated. * libgimpwidgets/gimpbutton.c: maybe this change makes GimpButton behave even more careful when changing GtkButton's private stuff.
This commit is contained in:
parent
0196e83f8d
commit
6a5242c0bf
35
ChangeLog
35
ChangeLog
|
@ -1,3 +1,38 @@
|
|||
2001-05-24 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* config.guess
|
||||
* config.sub: new versions from CVS (at least that's what my
|
||||
debian package says...)
|
||||
|
||||
* app/Makefile.am
|
||||
* app/gimppreviewcache.[ch]: removed.
|
||||
|
||||
* app/core/Makefile.am
|
||||
* app/core/gimppreviewcache.c: added.
|
||||
|
||||
* app/core/gimpdrawable.c: reordered #includes
|
||||
|
||||
* app/apptypes.h: make ImageMap a proper opaque typedef, not
|
||||
simply a gpointer.
|
||||
|
||||
* app/image_map.[ch]: changed accordingly. cleanup.
|
||||
|
||||
* app/tools/color_balance.h
|
||||
* app/tools/curves.h
|
||||
* app/tools/gimptool.c
|
||||
* app/tools/histogram_tool.h
|
||||
* app/tools/hue_saturation.h
|
||||
* app/tools/threshold.h: changed here too.
|
||||
|
||||
* libgimpbase/gimpbasetypes.h: /*< skip >*/ GIMP_UNIT_PERCENT as
|
||||
it's a UI convenience thing and no unit.
|
||||
|
||||
* plug-ins/script-fu/script-fu-constants.c
|
||||
* tools/pdbgen/enums.pl: regenerated.
|
||||
|
||||
* libgimpwidgets/gimpbutton.c: maybe this change makes GimpButton
|
||||
behave even more careful when changing GtkButton's private stuff.
|
||||
|
||||
2001-05-23 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/gimphistogram.[ch]
|
||||
|
|
|
@ -89,8 +89,6 @@ gimp_SOURCES = \
|
|||
datafiles.h \
|
||||
floating_sel.c \
|
||||
floating_sel.h \
|
||||
gimppreviewcache.h \
|
||||
gimppreviewcache.c \
|
||||
parasitelist.c \
|
||||
parasitelist.h \
|
||||
scan_convert.c \
|
||||
|
|
|
@ -43,7 +43,7 @@ typedef struct _GimpImageNewValues GimpImageNewValues;
|
|||
|
||||
typedef struct _GimpProgress GimpProgress;
|
||||
|
||||
typedef gpointer ImageMap;
|
||||
typedef struct _ImageMap ImageMap;
|
||||
|
||||
typedef struct _InfoDialog InfoDialog;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _ColorBalanceDialog
|
|||
GtkAdjustment *yellow_blue_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble cyan_red[3];
|
||||
gdouble magenta_green[3];
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _CurvesDialog
|
|||
GtkWidget *curve_type_menu;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint channel;
|
||||
|
|
|
@ -44,7 +44,7 @@ struct _HueSaturationDialog
|
|||
GtkAdjustment *saturation_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble hue[7];
|
||||
gdouble lightness[7];
|
||||
|
|
|
@ -33,7 +33,7 @@ struct _ThresholdDialog
|
|||
GimpHistogram *hist;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint low_threshold;
|
||||
|
|
|
@ -69,6 +69,8 @@ libappcore_la_SOURCES = \
|
|||
gimppalette.h \
|
||||
gimppalette-import.c \
|
||||
gimppalette-import.h \
|
||||
gimppreviewcache.c \
|
||||
gimppreviewcache.h \
|
||||
gimptoolinfo.c \
|
||||
gimptoolinfo.h \
|
||||
gimpundo.c \
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#include "gimplayer.h"
|
||||
#include "gimplist.h"
|
||||
#include "gimppreviewcache.h"
|
||||
|
||||
#include "gimpparasite.h"
|
||||
#include "parasitelist.h"
|
||||
#include "undo.h"
|
||||
|
|
|
@ -41,8 +41,7 @@
|
|||
|
||||
#define WORK_DELAY 1
|
||||
|
||||
/* Local structures */
|
||||
typedef struct _ImageMap
|
||||
struct _ImageMap
|
||||
{
|
||||
GDisplay *gdisp;
|
||||
GimpDrawable *drawable;
|
||||
|
@ -53,7 +52,7 @@ typedef struct _ImageMap
|
|||
void *pr;
|
||||
gint state;
|
||||
gint idle;
|
||||
} _ImageMap;
|
||||
};
|
||||
|
||||
|
||||
/**************************/
|
||||
|
@ -62,333 +61,346 @@ typedef struct _ImageMap
|
|||
static gint
|
||||
image_map_do (gpointer data)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
ImageMap *image_map;
|
||||
GimpImage *gimage;
|
||||
PixelRegion shadowPR;
|
||||
gint x, y, w, h;
|
||||
|
||||
_image_map = (_ImageMap *) data;
|
||||
image_map = (ImageMap *) data;
|
||||
|
||||
if (! (gimage = gimp_drawable_gimage ( (_image_map->drawable))))
|
||||
if (! (gimage = gimp_drawable_gimage (image_map->drawable)))
|
||||
{
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Process the pixel regions and apply the image mapping */
|
||||
(* _image_map->apply_func) (&_image_map->srcPR, &_image_map->destPR, _image_map->user_data);
|
||||
(* image_map->apply_func) (&image_map->srcPR,
|
||||
&image_map->destPR,
|
||||
image_map->user_data);
|
||||
|
||||
x = _image_map->destPR.x;
|
||||
y = _image_map->destPR.y;
|
||||
w = _image_map->destPR.w;
|
||||
h = _image_map->destPR.h;
|
||||
x = image_map->destPR.x;
|
||||
y = image_map->destPR.y;
|
||||
w = image_map->destPR.w;
|
||||
h = image_map->destPR.h;
|
||||
|
||||
/* apply the results */
|
||||
pixel_region_init (&shadowPR, gimage->shadow, x, y, w, h, FALSE);
|
||||
gimp_image_apply_image (gimage, _image_map->drawable, &shadowPR,
|
||||
gimp_image_apply_image (gimage, image_map->drawable, &shadowPR,
|
||||
FALSE, OPAQUE_OPACITY, REPLACE_MODE, NULL, x, y);
|
||||
|
||||
/* display the results */
|
||||
if (_image_map->gdisp)
|
||||
if (image_map->gdisp)
|
||||
{
|
||||
drawable_update ( (_image_map->drawable), x, y, w, h);
|
||||
gdisplay_flush_now (_image_map->gdisp);
|
||||
drawable_update ( (image_map->drawable), x, y, w, h);
|
||||
gdisplay_flush_now (image_map->gdisp);
|
||||
}
|
||||
|
||||
_image_map->pr = pixel_regions_process (_image_map->pr);
|
||||
image_map->pr = pixel_regions_process (image_map->pr);
|
||||
|
||||
if (_image_map->pr == NULL)
|
||||
if (image_map->pr == NULL)
|
||||
{
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
gdisplays_flush ();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ImageMap
|
||||
ImageMap *
|
||||
image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
_image_map = g_new (_ImageMap, 1);
|
||||
_image_map->gdisp = gdisp;
|
||||
_image_map->drawable = drawable;
|
||||
_image_map->undo_tiles = NULL;
|
||||
_image_map->state = WAITING;
|
||||
g_return_val_if_fail (gdisp != NULL, NULL);
|
||||
g_return_val_if_fail (drawable != NULL, NULL);
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
|
||||
|
||||
/* Interactive tools based on image_map disable the undo stack */
|
||||
/* to avert any unintented undo interaction through the UI */
|
||||
image_map = g_new0 (ImageMap, 1);
|
||||
|
||||
gimp_image_undo_freeze(_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
return (ImageMap) _image_map;
|
||||
image_map->gdisp = gdisp;
|
||||
image_map->drawable = drawable;
|
||||
image_map->undo_tiles = NULL;
|
||||
image_map->state = WAITING;
|
||||
|
||||
/* Interactive tools based on image_map disable the undo stack
|
||||
* to avert any unintented undo interaction through the UI
|
||||
*/
|
||||
gimp_image_undo_freeze (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
|
||||
return image_map;
|
||||
}
|
||||
|
||||
void
|
||||
image_map_apply (ImageMap image_map,
|
||||
image_map_apply (ImageMap *image_map,
|
||||
ImageMapApplyFunc apply_func,
|
||||
void *user_data)
|
||||
gpointer apply_data)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
gint x1, y1, x2, y2;
|
||||
gint x1, y1;
|
||||
gint x2, y2;
|
||||
gint offset_x, offset_y;
|
||||
gint width, height;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
_image_map->apply_func = apply_func;
|
||||
_image_map->user_data = user_data;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
g_return_if_fail (apply_func != NULL);
|
||||
|
||||
image_map->apply_func = apply_func;
|
||||
image_map->user_data = apply_data;
|
||||
|
||||
/* If we're still working, remove the timer */
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
pixel_regions_process_stop (_image_map->pr);
|
||||
_image_map->pr = NULL;
|
||||
gtk_idle_remove (image_map->idle);
|
||||
pixel_regions_process_stop (image_map->pr);
|
||||
|
||||
image_map->pr = NULL;
|
||||
}
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* The application should occur only within selection bounds */
|
||||
gimp_drawable_mask_bounds (_image_map->drawable, &x1, &y1, &x2, &y2);
|
||||
gimp_drawable_mask_bounds (image_map->drawable, &x1, &y1, &x2, &y2);
|
||||
|
||||
/* If undo tiles don't exist, or change size, (re)allocate */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (_image_map->undo_tiles);
|
||||
height = tile_manager_height (_image_map->undo_tiles);
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (image_map->undo_tiles);
|
||||
height = tile_manager_height (image_map->undo_tiles);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_x = offset_y = width = height = 0;
|
||||
}
|
||||
|
||||
if (!_image_map->undo_tiles ||
|
||||
if (! image_map->undo_tiles ||
|
||||
offset_x != x1 || offset_y != y1 ||
|
||||
width != (x2 - x1) || height != (y2 - y1))
|
||||
{
|
||||
/* If either the extents changed or the tiles don't exist, allocate new */
|
||||
if (!_image_map->undo_tiles ||
|
||||
/* If either the extents changed or the tiles don't exist,
|
||||
* allocate new
|
||||
*/
|
||||
if (! image_map->undo_tiles ||
|
||||
width != (x2 - x1) || height != (y2 - y1))
|
||||
{
|
||||
/* Destroy old tiles--If they exist */
|
||||
if (_image_map->undo_tiles != NULL)
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
|
||||
if (image_map->undo_tiles != NULL)
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
|
||||
/* Allocate new tiles */
|
||||
_image_map->undo_tiles =
|
||||
image_map->undo_tiles =
|
||||
tile_manager_new ((x2 - x1), (y2 - y1),
|
||||
gimp_drawable_bytes (_image_map->drawable));
|
||||
gimp_drawable_bytes (image_map->drawable));
|
||||
}
|
||||
|
||||
/* Copy from the image to the new tiles */
|
||||
pixel_region_init (&_image_map->srcPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
pixel_region_init (&image_map->srcPR,
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
x1, y1, (x2 - x1), (y2 - y1), FALSE);
|
||||
pixel_region_init (&_image_map->destPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->destPR, image_map->undo_tiles,
|
||||
0, 0, (x2 - x1), (y2 - y1), TRUE);
|
||||
|
||||
copy_region (&_image_map->srcPR, &_image_map->destPR);
|
||||
copy_region (&image_map->srcPR, &image_map->destPR);
|
||||
|
||||
/* Set the offsets */
|
||||
tile_manager_set_offsets (_image_map->undo_tiles, x1, y1);
|
||||
tile_manager_set_offsets (image_map->undo_tiles, x1, y1);
|
||||
}
|
||||
else /* _image_map->undo_tiles exist AND drawable dimensions have not changed... */
|
||||
else /* image_map->undo_tiles exist AND drawable dimensions have not changed... */
|
||||
{
|
||||
/* Reset to initial drawable conditions. */
|
||||
/* Copy from the backup undo tiles to the drawable */
|
||||
pixel_region_init (&_image_map->srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->srcPR, image_map->undo_tiles,
|
||||
0, 0, width, height, FALSE);
|
||||
pixel_region_init (&_image_map->destPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
pixel_region_init (&image_map->destPR,
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
offset_x, offset_y, width, height, TRUE);
|
||||
|
||||
copy_region (&_image_map->srcPR, &_image_map->destPR);
|
||||
copy_region (&image_map->srcPR, &image_map->destPR);
|
||||
}
|
||||
|
||||
/* Configure the src from the drawable data */
|
||||
pixel_region_init (&_image_map->srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->srcPR, image_map->undo_tiles,
|
||||
0, 0, (x2 - x1), (y2 - y1), FALSE);
|
||||
|
||||
/* Configure the dest as the shadow buffer */
|
||||
pixel_region_init (&_image_map->destPR,
|
||||
gimp_drawable_shadow (_image_map->drawable),
|
||||
pixel_region_init (&image_map->destPR,
|
||||
gimp_drawable_shadow (image_map->drawable),
|
||||
x1, y1, (x2 - x1), (y2 - y1), TRUE);
|
||||
|
||||
/* Apply the image transformation to the pixels */
|
||||
_image_map->pr = pixel_regions_register (2, &_image_map->srcPR, &_image_map->destPR);
|
||||
image_map->pr = pixel_regions_register (2, &image_map->srcPR, &image_map->destPR);
|
||||
|
||||
/* Start the intermittant work procedure */
|
||||
_image_map->state = WORKING;
|
||||
_image_map->idle = gtk_idle_add (image_map_do, image_map);
|
||||
image_map->state = WORKING;
|
||||
image_map->idle = gtk_idle_add (image_map_do, image_map);
|
||||
}
|
||||
|
||||
void
|
||||
image_map_commit (ImageMap image_map)
|
||||
image_map_commit (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
gint x1, y1, x2, y2;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
gtk_idle_remove (image_map->idle);
|
||||
|
||||
/* Finish the changes */
|
||||
while (image_map_do (image_map)) ;
|
||||
}
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* Interactive phase ends: we can commit an undo frame now */
|
||||
gimp_image_undo_thaw(_image_map->gdisp->gimage);
|
||||
gimp_image_undo_thaw(image_map->gdisp->gimage);
|
||||
|
||||
/* Register an undo step */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &x1, &y1);
|
||||
x2 = x1 + tile_manager_width (_image_map->undo_tiles);
|
||||
y2 = y1 + tile_manager_height (_image_map->undo_tiles);
|
||||
drawable_apply_image (_image_map->drawable,
|
||||
x1, y1, x2, y2, _image_map->undo_tiles, FALSE);
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &x1, &y1);
|
||||
x2 = x1 + tile_manager_width (image_map->undo_tiles);
|
||||
y2 = y1 + tile_manager_height (image_map->undo_tiles);
|
||||
drawable_apply_image (image_map->drawable,
|
||||
x1, y1, x2, y2, image_map->undo_tiles, FALSE);
|
||||
}
|
||||
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
g_free (_image_map);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
}
|
||||
|
||||
void
|
||||
image_map_clear (ImageMap image_map)
|
||||
image_map_clear (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
PixelRegion srcPR, destPR;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
pixel_regions_process_stop (_image_map->pr);
|
||||
_image_map->pr = NULL;
|
||||
gtk_idle_remove (image_map->idle);
|
||||
pixel_regions_process_stop (image_map->pr);
|
||||
image_map->pr = NULL;
|
||||
}
|
||||
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* restore the original image */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
gint offset_x;
|
||||
gint offset_y;
|
||||
gint width;
|
||||
gint height;
|
||||
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (_image_map->undo_tiles);
|
||||
height = tile_manager_height (_image_map->undo_tiles),
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (image_map->undo_tiles);
|
||||
height = tile_manager_height (image_map->undo_tiles),
|
||||
|
||||
/* Copy from the drawable to the tiles */
|
||||
pixel_region_init (&srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&srcPR, image_map->undo_tiles,
|
||||
0, 0, width, height, FALSE);
|
||||
pixel_region_init (&destPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
offset_x, offset_y, width, height, TRUE);
|
||||
|
||||
/* if the user has changed the image depth get out quickly */
|
||||
if (destPR.bytes != srcPR.bytes)
|
||||
{
|
||||
g_message ("image depth change, unable to restore original image");
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
gimp_image_undo_thaw (_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
g_free (_image_map);
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
gimp_image_undo_thaw (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
copy_region (&srcPR, &destPR);
|
||||
|
||||
/* Update the area */
|
||||
drawable_update (_image_map->drawable, offset_x, offset_y, width, height);
|
||||
drawable_update (image_map->drawable, offset_x, offset_y, width, height);
|
||||
|
||||
/* Free the undo_tiles tile manager */
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
_image_map->undo_tiles = NULL;
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
image_map->undo_tiles = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
image_map_abort (ImageMap image_map)
|
||||
image_map_abort (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
image_map_clear(image_map);
|
||||
gimp_image_undo_thaw(_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
image_map_clear (image_map);
|
||||
gimp_image_undo_thaw (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
}
|
||||
|
||||
guchar *
|
||||
image_map_get_color_at (ImageMap image_map,
|
||||
gint x,
|
||||
gint y)
|
||||
image_map_get_color_at (ImageMap *image_map,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
Tile *tile;
|
||||
guchar *src;
|
||||
guchar *dest;
|
||||
_ImageMap *_image_map;
|
||||
|
||||
if (!image_map)
|
||||
return NULL;
|
||||
g_return_val_if_fail (image_map != NULL, NULL);
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
|
||||
if (x >= 0 && x < gimp_drawable_width (_image_map->drawable) &&
|
||||
y >= 0 && y < gimp_drawable_height (_image_map->drawable))
|
||||
if (x >= 0 && x < gimp_drawable_width (image_map->drawable) &&
|
||||
y >= 0 && y < gimp_drawable_height (image_map->drawable))
|
||||
{
|
||||
/* Check if done damage to original image */
|
||||
if (!_image_map->undo_tiles)
|
||||
return (gimp_drawable_get_color_at (_image_map->drawable, x, y));
|
||||
if (! image_map->undo_tiles)
|
||||
return (gimp_drawable_get_color_at (image_map->drawable, x, y));
|
||||
|
||||
if (!image_map ||
|
||||
(!gimp_drawable_gimage (_image_map->drawable) &&
|
||||
gimp_drawable_is_indexed (_image_map->drawable)) ||
|
||||
x < 0 || y < 0 ||
|
||||
x >= tile_manager_width (_image_map->undo_tiles) ||
|
||||
y >= tile_manager_height (_image_map->undo_tiles))
|
||||
if (! image_map ||
|
||||
(! gimp_drawable_gimage (image_map->drawable) &&
|
||||
gimp_drawable_is_indexed (image_map->drawable)) ||
|
||||
x < 0 || y < 0 ||
|
||||
x >= tile_manager_width (image_map->undo_tiles) ||
|
||||
y >= tile_manager_height (image_map->undo_tiles))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dest = g_new (guchar, 5);
|
||||
|
||||
tile = tile_manager_get_tile (_image_map->undo_tiles, x, y,
|
||||
tile = tile_manager_get_tile (image_map->undo_tiles, x, y,
|
||||
TRUE, FALSE);
|
||||
|
||||
src = tile_data_pointer (tile, x % TILE_WIDTH, y % TILE_HEIGHT);
|
||||
|
||||
gimp_image_get_color (gimp_drawable_gimage (_image_map->drawable),
|
||||
gimp_drawable_type (_image_map->drawable),
|
||||
gimp_image_get_color (gimp_drawable_gimage (image_map->drawable),
|
||||
gimp_drawable_type (image_map->drawable),
|
||||
dest, src);
|
||||
|
||||
if (GIMP_IMAGE_TYPE_HAS_ALPHA (gimp_drawable_type (_image_map->drawable)))
|
||||
dest[3] = src[gimp_drawable_bytes (_image_map->drawable) - 1];
|
||||
if (GIMP_IMAGE_TYPE_HAS_ALPHA (gimp_drawable_type (image_map->drawable)))
|
||||
dest[3] = src[gimp_drawable_bytes (image_map->drawable) - 1];
|
||||
else
|
||||
dest[3] = 255;
|
||||
if (gimp_drawable_is_indexed (_image_map->drawable))
|
||||
|
||||
if (gimp_drawable_is_indexed (image_map->drawable))
|
||||
dest[4] = src[0];
|
||||
else
|
||||
dest[4] = 0;
|
||||
|
||||
tile_release (tile, FALSE);
|
||||
|
||||
return dest;
|
||||
}
|
||||
else /* out of bounds error */
|
||||
|
|
|
@ -26,17 +26,17 @@
|
|||
* MUST be followed with an image_map_commit or an image_map_abort call
|
||||
* The image map is no longer valid after a call to commit or abort.
|
||||
*/
|
||||
ImageMap image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable);
|
||||
void image_map_apply (ImageMap,
|
||||
ImageMapApplyFunc,
|
||||
void *);
|
||||
void image_map_commit (ImageMap);
|
||||
void image_map_clear (ImageMap);
|
||||
void image_map_abort (ImageMap);
|
||||
guchar * image_map_get_color_at (ImageMap,
|
||||
gint,
|
||||
gint);
|
||||
ImageMap * image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable);
|
||||
void image_map_apply (ImageMap *image_map,
|
||||
ImageMapApplyFunc apply_func,
|
||||
gpointer apply_data);
|
||||
void image_map_commit (ImageMap *image_map);
|
||||
void image_map_clear (ImageMap *image_map);
|
||||
void image_map_abort (ImageMap *image_map);
|
||||
guchar * image_map_get_color_at (ImageMap *image_map,
|
||||
gint x,
|
||||
gint y);
|
||||
|
||||
|
||||
#endif /* __IMAGE_MAP_H__ */
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GIMPPREVIEWCACHE_H__
|
||||
#define __GIMPPREVIEWCACHE_H__
|
||||
#ifndef __GIMP_PREVIEW_CACHE_H__
|
||||
#define __GIMP_PREVIEW_CACHE_H__
|
||||
|
||||
|
||||
#define PREVIEW_CACHE_PRIME_WIDTH 112
|
||||
|
@ -32,4 +32,4 @@ void gimp_preview_cache_add (GSList **plist,
|
|||
void gimp_preview_cache_invalidate (GSList **plist);
|
||||
|
||||
|
||||
#endif /* __GIMPPREVIEWCACHE_H__ */
|
||||
#endif /* __GIMP_PREVIEW_CACHE_H__ */
|
||||
|
|
|
@ -1,325 +0,0 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1999 Andy Thomas alt@gimp.org
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "base/base-types.h"
|
||||
|
||||
#include "base/temp-buf.h"
|
||||
|
||||
#include "gimppreviewcache.h"
|
||||
|
||||
|
||||
#define MAX_CACHE_PREVIEWS 5
|
||||
|
||||
#undef PREVIEW_CACHE_DEBUG
|
||||
|
||||
|
||||
typedef struct _PreviewCache
|
||||
{
|
||||
TempBuf *preview;
|
||||
gint width;
|
||||
gint height;
|
||||
} PreviewCache;
|
||||
|
||||
typedef struct _PreviewNearest
|
||||
{
|
||||
PreviewCache *pc;
|
||||
gint width;
|
||||
gint height;
|
||||
} PreviewNearest;
|
||||
|
||||
|
||||
static gint
|
||||
preview_cache_compare (gconstpointer a,
|
||||
gconstpointer b)
|
||||
{
|
||||
PreviewCache *pc1 = (PreviewCache *) a;
|
||||
PreviewCache *pc2 = (PreviewCache *) b;
|
||||
|
||||
if (pc1->width > pc2->width && pc1->height > pc2->height)
|
||||
return -1;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
preview_cache_find_exact (gpointer data,
|
||||
gpointer udata)
|
||||
{
|
||||
PreviewCache *pc = (PreviewCache *) data;
|
||||
PreviewNearest *pNearest = (PreviewNearest *) udata;
|
||||
|
||||
/* g_print ("this value w,h [%d,%d]\n",pc->width,pc->height); */
|
||||
|
||||
/* if (pNearest->pc) */
|
||||
/* g_print ("current nearest value w,h [%d,%d]\n",
|
||||
pNearest->pc->width,pNearest->pc->height); */
|
||||
|
||||
if (pNearest->pc)
|
||||
return;
|
||||
|
||||
if(pc->width == pNearest->width &&
|
||||
pc->height == pNearest->height)
|
||||
{
|
||||
/* Ok we could make the preview out of this one...
|
||||
* If we already have it are these bigger dimensions?
|
||||
*/
|
||||
pNearest->pc = pc;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
preview_cache_find_biggest (gpointer data,
|
||||
gpointer udata)
|
||||
{
|
||||
PreviewCache *pc = (PreviewCache *) data;
|
||||
PreviewNearest *pNearest = (PreviewNearest *) udata;
|
||||
|
||||
/* g_print ("this value w,h [%d,%d]\n",pc->width,pc->height); */
|
||||
|
||||
/* if (pNearest->pc) */
|
||||
/* g_print ("current nearest value w,h [%d,%d]\n",
|
||||
pNearest->pc->width,pNearest->pc->height); */
|
||||
|
||||
if (pc->width >= pNearest->width &&
|
||||
pc->height >= pNearest->height)
|
||||
{
|
||||
/* Ok we could make the preview out of this one...
|
||||
* If we already have it are these bigger dimensions?
|
||||
*/
|
||||
if (pNearest->pc)
|
||||
{
|
||||
if (pNearest->pc->width > pc->width &&
|
||||
pNearest->pc->height > pc->height)
|
||||
return;
|
||||
}
|
||||
pNearest->pc = pc;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
preview_cache_remove_smallest (GSList **plist)
|
||||
{
|
||||
GSList *list;
|
||||
PreviewCache *smallest = NULL;
|
||||
|
||||
/* g_print ("Removing smallest\n"); */
|
||||
|
||||
for (list = *plist; list; list = g_slist_next (list))
|
||||
{
|
||||
if (!smallest)
|
||||
{
|
||||
smallest = list->data;
|
||||
/* g_print ("init smallest %d,%d\n",
|
||||
smallest->width,smallest->height); */
|
||||
}
|
||||
else
|
||||
{
|
||||
PreviewCache *pcthis = list->data;
|
||||
|
||||
/* g_print ("Checking %d,%d\n",pcthis->width,pcthis->height); */
|
||||
if ((smallest->height * smallest->width) >=
|
||||
(pcthis->height * pcthis->width))
|
||||
{
|
||||
smallest = pcthis;
|
||||
/* g_print ("smallest now %d,%d\n",
|
||||
smallest->width,smallest->height); */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (*plist && smallest)
|
||||
*plist = g_slist_remove (*plist, smallest);
|
||||
/* g_print ("removed %d,%d\n",smallest->width,smallest->height); */
|
||||
/* g_print ("removed smallest\n"); */
|
||||
}
|
||||
|
||||
static void
|
||||
preview_cache_invalidate (gpointer data,
|
||||
gpointer udata)
|
||||
{
|
||||
PreviewCache *pc = (PreviewCache *) data;
|
||||
|
||||
temp_buf_free (pc->preview);
|
||||
g_free(pc);
|
||||
}
|
||||
|
||||
static void
|
||||
preview_cache_print (GSList *plist)
|
||||
{
|
||||
#ifdef PREVIEW_CACHE_DEBUG
|
||||
GSList *list;
|
||||
PreviewCache *pc;
|
||||
|
||||
g_print ("preview cache dump:\n");
|
||||
|
||||
for (list = plist; list; list = g_slist_next (list))
|
||||
{
|
||||
pc = (PreviewCache *) list->data;
|
||||
|
||||
g_print ("\tvalue w,h [%d,%d] => %p\n",
|
||||
pc->width, pc->height, pc->preview);
|
||||
}
|
||||
#endif /* PREVIEW_CACHE_DEBUG */
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_cache_invalidate (GSList **plist)
|
||||
{
|
||||
/* g_print ("gimp_preview_cache_invalidate\n"); */
|
||||
preview_cache_print (*plist);
|
||||
|
||||
g_slist_foreach (*plist, preview_cache_invalidate, NULL);
|
||||
*plist = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_preview_cache_add (GSList **plist,
|
||||
TempBuf *buf)
|
||||
{
|
||||
PreviewCache *pc;
|
||||
|
||||
/* g_print ("gimp_preview_cache_add %d %d\n",buf->width,buf->height); */
|
||||
preview_cache_print (*plist);
|
||||
|
||||
if (g_slist_length (*plist) > MAX_CACHE_PREVIEWS)
|
||||
{
|
||||
/* Remove the smallest */
|
||||
preview_cache_remove_smallest(plist);
|
||||
}
|
||||
|
||||
pc = g_new0(PreviewCache,1);
|
||||
pc->preview = buf;
|
||||
pc->width = buf->width;
|
||||
pc->height = buf->height;
|
||||
|
||||
*plist = g_slist_insert_sorted (*plist, pc, preview_cache_compare);
|
||||
}
|
||||
|
||||
TempBuf *
|
||||
gimp_preview_cache_get (GSList **plist,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
PreviewNearest pn;
|
||||
PreviewCache *pc;
|
||||
|
||||
/* g_print ("gimp_preview_cache_get %d %d\n",width,height); */
|
||||
preview_cache_print (*plist);
|
||||
|
||||
pn.pc = NULL;
|
||||
pn.width = width;
|
||||
pn.height = height;
|
||||
|
||||
g_slist_foreach (*plist, preview_cache_find_exact, &pn);
|
||||
|
||||
if (pn.pc && pn.pc->preview)
|
||||
{
|
||||
/* g_print ("extact value w,h [%d,%d] => %p\n",
|
||||
pn.pc->width,pn.pc->height,pn.pc->preview); */
|
||||
return pn.pc->preview;
|
||||
}
|
||||
|
||||
g_slist_foreach (*plist, preview_cache_find_biggest, &pn);
|
||||
|
||||
if (pn.pc)
|
||||
{
|
||||
gint pwidth;
|
||||
gint pheight;
|
||||
gdouble x_ratio;
|
||||
gdouble y_ratio;
|
||||
guchar *src_data;
|
||||
guchar *dest_data;
|
||||
gint loop1;
|
||||
gint loop2;
|
||||
|
||||
/* g_print ("nearest value w,h [%d,%d] => %p\n",
|
||||
pn.pc->width,pn.pc->height,pn.pc->preview); */
|
||||
|
||||
/* if(pn.pc->width == width && */
|
||||
/* pn.pc->height == height) */
|
||||
/* return pn.pc->preview; */
|
||||
|
||||
if (!pn.pc->preview)
|
||||
{
|
||||
g_error ("gimp_preview_cache_get:: Invalid cache item");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Make up new preview from the large one... */
|
||||
|
||||
pwidth = pn.pc->preview->width;
|
||||
pheight = pn.pc->preview->height;
|
||||
|
||||
/* Now get the real one and add to cache */
|
||||
/* g_print ("Must create from large preview\n"); */
|
||||
pc = g_new0 (PreviewCache, 1);
|
||||
pc->preview = temp_buf_new (width, height, pn.pc->preview->bytes,
|
||||
0, 0, NULL);
|
||||
/* preview from nearest bigger one */
|
||||
|
||||
if (width)
|
||||
x_ratio = (gdouble) pwidth / (gdouble) width;
|
||||
else
|
||||
x_ratio = 0.0;
|
||||
|
||||
if (height)
|
||||
y_ratio = (gdouble) pheight / (gdouble) height;
|
||||
else
|
||||
y_ratio = 0.0;
|
||||
|
||||
src_data = temp_buf_data(pn.pc->preview);
|
||||
dest_data = temp_buf_data(pc->preview);
|
||||
|
||||
/* g_print ("x_ratio , y_ratio [%f,%f]\n",x_ratio,y_ratio); */
|
||||
|
||||
for (loop1 = 0 ; loop1 < height ; loop1++)
|
||||
for (loop2 = 0 ; loop2 < width ; loop2++)
|
||||
{
|
||||
gint i;
|
||||
guchar *src_pixel;
|
||||
guchar *dest_pixel;
|
||||
|
||||
src_pixel = src_data +
|
||||
((gint) (loop2 * x_ratio)) * pn.pc->preview->bytes +
|
||||
((gint) (loop1 * y_ratio)) * pwidth * pn.pc->preview->bytes;
|
||||
|
||||
dest_pixel = dest_data +
|
||||
(loop2 + loop1 * width) * pn.pc->preview->bytes;
|
||||
|
||||
for (i = 0; i < pn.pc->preview->bytes; i++)
|
||||
*dest_pixel++ = *src_pixel++;
|
||||
}
|
||||
|
||||
pc->width = width;
|
||||
pc->height = height;
|
||||
*plist = g_slist_insert_sorted (*plist, pc, preview_cache_compare);
|
||||
/* g_print ("New preview created [%d,%d] => %p\n",
|
||||
pc->width,pc->height,pc->preview); */
|
||||
|
||||
return pc->preview;
|
||||
}
|
||||
|
||||
/* g_print ("gimp_preview_cache_get returning NULL\n"); */
|
||||
return NULL;
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1999 Andy Thomas alt@gimp.org
|
||||
*
|
||||
* 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 __GIMPPREVIEWCACHE_H__
|
||||
#define __GIMPPREVIEWCACHE_H__
|
||||
|
||||
|
||||
#define PREVIEW_CACHE_PRIME_WIDTH 112
|
||||
#define PREVIEW_CACHE_PRIME_HEIGHT 112
|
||||
|
||||
|
||||
TempBuf * gimp_preview_cache_get (GSList **plist,
|
||||
gint width,
|
||||
gint height);
|
||||
void gimp_preview_cache_add (GSList **plist,
|
||||
TempBuf *buf);
|
||||
void gimp_preview_cache_invalidate (GSList **plist);
|
||||
|
||||
|
||||
#endif /* __GIMPPREVIEWCACHE_H__ */
|
294
app/image_map.c
294
app/image_map.c
|
@ -41,8 +41,7 @@
|
|||
|
||||
#define WORK_DELAY 1
|
||||
|
||||
/* Local structures */
|
||||
typedef struct _ImageMap
|
||||
struct _ImageMap
|
||||
{
|
||||
GDisplay *gdisp;
|
||||
GimpDrawable *drawable;
|
||||
|
@ -53,7 +52,7 @@ typedef struct _ImageMap
|
|||
void *pr;
|
||||
gint state;
|
||||
gint idle;
|
||||
} _ImageMap;
|
||||
};
|
||||
|
||||
|
||||
/**************************/
|
||||
|
@ -62,333 +61,346 @@ typedef struct _ImageMap
|
|||
static gint
|
||||
image_map_do (gpointer data)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
ImageMap *image_map;
|
||||
GimpImage *gimage;
|
||||
PixelRegion shadowPR;
|
||||
gint x, y, w, h;
|
||||
|
||||
_image_map = (_ImageMap *) data;
|
||||
image_map = (ImageMap *) data;
|
||||
|
||||
if (! (gimage = gimp_drawable_gimage ( (_image_map->drawable))))
|
||||
if (! (gimage = gimp_drawable_gimage (image_map->drawable)))
|
||||
{
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Process the pixel regions and apply the image mapping */
|
||||
(* _image_map->apply_func) (&_image_map->srcPR, &_image_map->destPR, _image_map->user_data);
|
||||
(* image_map->apply_func) (&image_map->srcPR,
|
||||
&image_map->destPR,
|
||||
image_map->user_data);
|
||||
|
||||
x = _image_map->destPR.x;
|
||||
y = _image_map->destPR.y;
|
||||
w = _image_map->destPR.w;
|
||||
h = _image_map->destPR.h;
|
||||
x = image_map->destPR.x;
|
||||
y = image_map->destPR.y;
|
||||
w = image_map->destPR.w;
|
||||
h = image_map->destPR.h;
|
||||
|
||||
/* apply the results */
|
||||
pixel_region_init (&shadowPR, gimage->shadow, x, y, w, h, FALSE);
|
||||
gimp_image_apply_image (gimage, _image_map->drawable, &shadowPR,
|
||||
gimp_image_apply_image (gimage, image_map->drawable, &shadowPR,
|
||||
FALSE, OPAQUE_OPACITY, REPLACE_MODE, NULL, x, y);
|
||||
|
||||
/* display the results */
|
||||
if (_image_map->gdisp)
|
||||
if (image_map->gdisp)
|
||||
{
|
||||
drawable_update ( (_image_map->drawable), x, y, w, h);
|
||||
gdisplay_flush_now (_image_map->gdisp);
|
||||
drawable_update ( (image_map->drawable), x, y, w, h);
|
||||
gdisplay_flush_now (image_map->gdisp);
|
||||
}
|
||||
|
||||
_image_map->pr = pixel_regions_process (_image_map->pr);
|
||||
image_map->pr = pixel_regions_process (image_map->pr);
|
||||
|
||||
if (_image_map->pr == NULL)
|
||||
if (image_map->pr == NULL)
|
||||
{
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
gdisplays_flush ();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ImageMap
|
||||
ImageMap *
|
||||
image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
_image_map = g_new (_ImageMap, 1);
|
||||
_image_map->gdisp = gdisp;
|
||||
_image_map->drawable = drawable;
|
||||
_image_map->undo_tiles = NULL;
|
||||
_image_map->state = WAITING;
|
||||
g_return_val_if_fail (gdisp != NULL, NULL);
|
||||
g_return_val_if_fail (drawable != NULL, NULL);
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
|
||||
|
||||
/* Interactive tools based on image_map disable the undo stack */
|
||||
/* to avert any unintented undo interaction through the UI */
|
||||
image_map = g_new0 (ImageMap, 1);
|
||||
|
||||
gimp_image_undo_freeze(_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
return (ImageMap) _image_map;
|
||||
image_map->gdisp = gdisp;
|
||||
image_map->drawable = drawable;
|
||||
image_map->undo_tiles = NULL;
|
||||
image_map->state = WAITING;
|
||||
|
||||
/* Interactive tools based on image_map disable the undo stack
|
||||
* to avert any unintented undo interaction through the UI
|
||||
*/
|
||||
gimp_image_undo_freeze (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
|
||||
return image_map;
|
||||
}
|
||||
|
||||
void
|
||||
image_map_apply (ImageMap image_map,
|
||||
image_map_apply (ImageMap *image_map,
|
||||
ImageMapApplyFunc apply_func,
|
||||
void *user_data)
|
||||
gpointer apply_data)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
gint x1, y1, x2, y2;
|
||||
gint x1, y1;
|
||||
gint x2, y2;
|
||||
gint offset_x, offset_y;
|
||||
gint width, height;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
_image_map->apply_func = apply_func;
|
||||
_image_map->user_data = user_data;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
g_return_if_fail (apply_func != NULL);
|
||||
|
||||
image_map->apply_func = apply_func;
|
||||
image_map->user_data = apply_data;
|
||||
|
||||
/* If we're still working, remove the timer */
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
pixel_regions_process_stop (_image_map->pr);
|
||||
_image_map->pr = NULL;
|
||||
gtk_idle_remove (image_map->idle);
|
||||
pixel_regions_process_stop (image_map->pr);
|
||||
|
||||
image_map->pr = NULL;
|
||||
}
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* The application should occur only within selection bounds */
|
||||
gimp_drawable_mask_bounds (_image_map->drawable, &x1, &y1, &x2, &y2);
|
||||
gimp_drawable_mask_bounds (image_map->drawable, &x1, &y1, &x2, &y2);
|
||||
|
||||
/* If undo tiles don't exist, or change size, (re)allocate */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (_image_map->undo_tiles);
|
||||
height = tile_manager_height (_image_map->undo_tiles);
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (image_map->undo_tiles);
|
||||
height = tile_manager_height (image_map->undo_tiles);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_x = offset_y = width = height = 0;
|
||||
}
|
||||
|
||||
if (!_image_map->undo_tiles ||
|
||||
if (! image_map->undo_tiles ||
|
||||
offset_x != x1 || offset_y != y1 ||
|
||||
width != (x2 - x1) || height != (y2 - y1))
|
||||
{
|
||||
/* If either the extents changed or the tiles don't exist, allocate new */
|
||||
if (!_image_map->undo_tiles ||
|
||||
/* If either the extents changed or the tiles don't exist,
|
||||
* allocate new
|
||||
*/
|
||||
if (! image_map->undo_tiles ||
|
||||
width != (x2 - x1) || height != (y2 - y1))
|
||||
{
|
||||
/* Destroy old tiles--If they exist */
|
||||
if (_image_map->undo_tiles != NULL)
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
|
||||
if (image_map->undo_tiles != NULL)
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
|
||||
/* Allocate new tiles */
|
||||
_image_map->undo_tiles =
|
||||
image_map->undo_tiles =
|
||||
tile_manager_new ((x2 - x1), (y2 - y1),
|
||||
gimp_drawable_bytes (_image_map->drawable));
|
||||
gimp_drawable_bytes (image_map->drawable));
|
||||
}
|
||||
|
||||
/* Copy from the image to the new tiles */
|
||||
pixel_region_init (&_image_map->srcPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
pixel_region_init (&image_map->srcPR,
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
x1, y1, (x2 - x1), (y2 - y1), FALSE);
|
||||
pixel_region_init (&_image_map->destPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->destPR, image_map->undo_tiles,
|
||||
0, 0, (x2 - x1), (y2 - y1), TRUE);
|
||||
|
||||
copy_region (&_image_map->srcPR, &_image_map->destPR);
|
||||
copy_region (&image_map->srcPR, &image_map->destPR);
|
||||
|
||||
/* Set the offsets */
|
||||
tile_manager_set_offsets (_image_map->undo_tiles, x1, y1);
|
||||
tile_manager_set_offsets (image_map->undo_tiles, x1, y1);
|
||||
}
|
||||
else /* _image_map->undo_tiles exist AND drawable dimensions have not changed... */
|
||||
else /* image_map->undo_tiles exist AND drawable dimensions have not changed... */
|
||||
{
|
||||
/* Reset to initial drawable conditions. */
|
||||
/* Copy from the backup undo tiles to the drawable */
|
||||
pixel_region_init (&_image_map->srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->srcPR, image_map->undo_tiles,
|
||||
0, 0, width, height, FALSE);
|
||||
pixel_region_init (&_image_map->destPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
pixel_region_init (&image_map->destPR,
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
offset_x, offset_y, width, height, TRUE);
|
||||
|
||||
copy_region (&_image_map->srcPR, &_image_map->destPR);
|
||||
copy_region (&image_map->srcPR, &image_map->destPR);
|
||||
}
|
||||
|
||||
/* Configure the src from the drawable data */
|
||||
pixel_region_init (&_image_map->srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&image_map->srcPR, image_map->undo_tiles,
|
||||
0, 0, (x2 - x1), (y2 - y1), FALSE);
|
||||
|
||||
/* Configure the dest as the shadow buffer */
|
||||
pixel_region_init (&_image_map->destPR,
|
||||
gimp_drawable_shadow (_image_map->drawable),
|
||||
pixel_region_init (&image_map->destPR,
|
||||
gimp_drawable_shadow (image_map->drawable),
|
||||
x1, y1, (x2 - x1), (y2 - y1), TRUE);
|
||||
|
||||
/* Apply the image transformation to the pixels */
|
||||
_image_map->pr = pixel_regions_register (2, &_image_map->srcPR, &_image_map->destPR);
|
||||
image_map->pr = pixel_regions_register (2, &image_map->srcPR, &image_map->destPR);
|
||||
|
||||
/* Start the intermittant work procedure */
|
||||
_image_map->state = WORKING;
|
||||
_image_map->idle = gtk_idle_add (image_map_do, image_map);
|
||||
image_map->state = WORKING;
|
||||
image_map->idle = gtk_idle_add (image_map_do, image_map);
|
||||
}
|
||||
|
||||
void
|
||||
image_map_commit (ImageMap image_map)
|
||||
image_map_commit (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
gint x1, y1, x2, y2;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
gtk_idle_remove (image_map->idle);
|
||||
|
||||
/* Finish the changes */
|
||||
while (image_map_do (image_map)) ;
|
||||
}
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* Interactive phase ends: we can commit an undo frame now */
|
||||
gimp_image_undo_thaw(_image_map->gdisp->gimage);
|
||||
gimp_image_undo_thaw(image_map->gdisp->gimage);
|
||||
|
||||
/* Register an undo step */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &x1, &y1);
|
||||
x2 = x1 + tile_manager_width (_image_map->undo_tiles);
|
||||
y2 = y1 + tile_manager_height (_image_map->undo_tiles);
|
||||
drawable_apply_image (_image_map->drawable,
|
||||
x1, y1, x2, y2, _image_map->undo_tiles, FALSE);
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &x1, &y1);
|
||||
x2 = x1 + tile_manager_width (image_map->undo_tiles);
|
||||
y2 = y1 + tile_manager_height (image_map->undo_tiles);
|
||||
drawable_apply_image (image_map->drawable,
|
||||
x1, y1, x2, y2, image_map->undo_tiles, FALSE);
|
||||
}
|
||||
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
g_free (_image_map);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
}
|
||||
|
||||
void
|
||||
image_map_clear (ImageMap image_map)
|
||||
image_map_clear (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map;
|
||||
PixelRegion srcPR, destPR;
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
if (_image_map->state == WORKING)
|
||||
if (image_map->state == WORKING)
|
||||
{
|
||||
gtk_idle_remove (_image_map->idle);
|
||||
pixel_regions_process_stop (_image_map->pr);
|
||||
_image_map->pr = NULL;
|
||||
gtk_idle_remove (image_map->idle);
|
||||
pixel_regions_process_stop (image_map->pr);
|
||||
image_map->pr = NULL;
|
||||
}
|
||||
|
||||
_image_map->state = WAITING;
|
||||
image_map->state = WAITING;
|
||||
|
||||
/* Make sure the drawable is still valid */
|
||||
if (! gimp_drawable_gimage (_image_map->drawable))
|
||||
if (! gimp_drawable_gimage (image_map->drawable))
|
||||
return;
|
||||
|
||||
/* restore the original image */
|
||||
if (_image_map->undo_tiles)
|
||||
if (image_map->undo_tiles)
|
||||
{
|
||||
gint offset_x;
|
||||
gint offset_y;
|
||||
gint width;
|
||||
gint height;
|
||||
|
||||
tile_manager_get_offsets (_image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (_image_map->undo_tiles);
|
||||
height = tile_manager_height (_image_map->undo_tiles),
|
||||
tile_manager_get_offsets (image_map->undo_tiles, &offset_x, &offset_y);
|
||||
width = tile_manager_width (image_map->undo_tiles);
|
||||
height = tile_manager_height (image_map->undo_tiles),
|
||||
|
||||
/* Copy from the drawable to the tiles */
|
||||
pixel_region_init (&srcPR, _image_map->undo_tiles,
|
||||
pixel_region_init (&srcPR, image_map->undo_tiles,
|
||||
0, 0, width, height, FALSE);
|
||||
pixel_region_init (&destPR,
|
||||
gimp_drawable_data (_image_map->drawable),
|
||||
gimp_drawable_data (image_map->drawable),
|
||||
offset_x, offset_y, width, height, TRUE);
|
||||
|
||||
/* if the user has changed the image depth get out quickly */
|
||||
if (destPR.bytes != srcPR.bytes)
|
||||
{
|
||||
g_message ("image depth change, unable to restore original image");
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
gimp_image_undo_thaw (_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
g_free (_image_map);
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
gimp_image_undo_thaw (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
copy_region (&srcPR, &destPR);
|
||||
|
||||
/* Update the area */
|
||||
drawable_update (_image_map->drawable, offset_x, offset_y, width, height);
|
||||
drawable_update (image_map->drawable, offset_x, offset_y, width, height);
|
||||
|
||||
/* Free the undo_tiles tile manager */
|
||||
tile_manager_destroy (_image_map->undo_tiles);
|
||||
_image_map->undo_tiles = NULL;
|
||||
tile_manager_destroy (image_map->undo_tiles);
|
||||
image_map->undo_tiles = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
image_map_abort (ImageMap image_map)
|
||||
image_map_abort (ImageMap *image_map)
|
||||
{
|
||||
_ImageMap *_image_map = (_ImageMap *) image_map;
|
||||
g_return_if_fail (image_map != NULL);
|
||||
|
||||
image_map_clear(image_map);
|
||||
gimp_image_undo_thaw(_image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (_image_map->gdisp);
|
||||
image_map_clear (image_map);
|
||||
gimp_image_undo_thaw (image_map->gdisp->gimage);
|
||||
gdisplay_set_menu_sensitivity (image_map->gdisp);
|
||||
g_free (image_map);
|
||||
}
|
||||
|
||||
guchar *
|
||||
image_map_get_color_at (ImageMap image_map,
|
||||
gint x,
|
||||
gint y)
|
||||
image_map_get_color_at (ImageMap *image_map,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
Tile *tile;
|
||||
guchar *src;
|
||||
guchar *dest;
|
||||
_ImageMap *_image_map;
|
||||
|
||||
if (!image_map)
|
||||
return NULL;
|
||||
g_return_val_if_fail (image_map != NULL, NULL);
|
||||
|
||||
_image_map = (_ImageMap *) image_map;
|
||||
|
||||
if (x >= 0 && x < gimp_drawable_width (_image_map->drawable) &&
|
||||
y >= 0 && y < gimp_drawable_height (_image_map->drawable))
|
||||
if (x >= 0 && x < gimp_drawable_width (image_map->drawable) &&
|
||||
y >= 0 && y < gimp_drawable_height (image_map->drawable))
|
||||
{
|
||||
/* Check if done damage to original image */
|
||||
if (!_image_map->undo_tiles)
|
||||
return (gimp_drawable_get_color_at (_image_map->drawable, x, y));
|
||||
if (! image_map->undo_tiles)
|
||||
return (gimp_drawable_get_color_at (image_map->drawable, x, y));
|
||||
|
||||
if (!image_map ||
|
||||
(!gimp_drawable_gimage (_image_map->drawable) &&
|
||||
gimp_drawable_is_indexed (_image_map->drawable)) ||
|
||||
x < 0 || y < 0 ||
|
||||
x >= tile_manager_width (_image_map->undo_tiles) ||
|
||||
y >= tile_manager_height (_image_map->undo_tiles))
|
||||
if (! image_map ||
|
||||
(! gimp_drawable_gimage (image_map->drawable) &&
|
||||
gimp_drawable_is_indexed (image_map->drawable)) ||
|
||||
x < 0 || y < 0 ||
|
||||
x >= tile_manager_width (image_map->undo_tiles) ||
|
||||
y >= tile_manager_height (image_map->undo_tiles))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dest = g_new (guchar, 5);
|
||||
|
||||
tile = tile_manager_get_tile (_image_map->undo_tiles, x, y,
|
||||
tile = tile_manager_get_tile (image_map->undo_tiles, x, y,
|
||||
TRUE, FALSE);
|
||||
|
||||
src = tile_data_pointer (tile, x % TILE_WIDTH, y % TILE_HEIGHT);
|
||||
|
||||
gimp_image_get_color (gimp_drawable_gimage (_image_map->drawable),
|
||||
gimp_drawable_type (_image_map->drawable),
|
||||
gimp_image_get_color (gimp_drawable_gimage (image_map->drawable),
|
||||
gimp_drawable_type (image_map->drawable),
|
||||
dest, src);
|
||||
|
||||
if (GIMP_IMAGE_TYPE_HAS_ALPHA (gimp_drawable_type (_image_map->drawable)))
|
||||
dest[3] = src[gimp_drawable_bytes (_image_map->drawable) - 1];
|
||||
if (GIMP_IMAGE_TYPE_HAS_ALPHA (gimp_drawable_type (image_map->drawable)))
|
||||
dest[3] = src[gimp_drawable_bytes (image_map->drawable) - 1];
|
||||
else
|
||||
dest[3] = 255;
|
||||
if (gimp_drawable_is_indexed (_image_map->drawable))
|
||||
|
||||
if (gimp_drawable_is_indexed (image_map->drawable))
|
||||
dest[4] = src[0];
|
||||
else
|
||||
dest[4] = 0;
|
||||
|
||||
tile_release (tile, FALSE);
|
||||
|
||||
return dest;
|
||||
}
|
||||
else /* out of bounds error */
|
||||
|
|
|
@ -26,17 +26,17 @@
|
|||
* MUST be followed with an image_map_commit or an image_map_abort call
|
||||
* The image map is no longer valid after a call to commit or abort.
|
||||
*/
|
||||
ImageMap image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable);
|
||||
void image_map_apply (ImageMap,
|
||||
ImageMapApplyFunc,
|
||||
void *);
|
||||
void image_map_commit (ImageMap);
|
||||
void image_map_clear (ImageMap);
|
||||
void image_map_abort (ImageMap);
|
||||
guchar * image_map_get_color_at (ImageMap,
|
||||
gint,
|
||||
gint);
|
||||
ImageMap * image_map_create (GDisplay *gdisp,
|
||||
GimpDrawable *drawable);
|
||||
void image_map_apply (ImageMap *image_map,
|
||||
ImageMapApplyFunc apply_func,
|
||||
gpointer apply_data);
|
||||
void image_map_commit (ImageMap *image_map);
|
||||
void image_map_clear (ImageMap *image_map);
|
||||
void image_map_abort (ImageMap *image_map);
|
||||
guchar * image_map_get_color_at (ImageMap *image_map,
|
||||
gint x,
|
||||
gint y);
|
||||
|
||||
|
||||
#endif /* __IMAGE_MAP_H__ */
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _ColorBalanceDialog
|
|||
GtkAdjustment *yellow_blue_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble cyan_red[3];
|
||||
gdouble magenta_green[3];
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _CurvesDialog
|
|||
GtkWidget *curve_type_menu;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint channel;
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _ColorBalanceDialog
|
|||
GtkAdjustment *yellow_blue_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble cyan_red[3];
|
||||
gdouble magenta_green[3];
|
||||
|
|
|
@ -38,7 +38,7 @@ struct _CurvesDialog
|
|||
GtkWidget *curve_type_menu;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint channel;
|
||||
|
|
|
@ -47,7 +47,7 @@ struct _HistogramToolDialog
|
|||
gdouble percentile;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
gint channel;
|
||||
gint color;
|
||||
};
|
||||
|
|
|
@ -44,7 +44,7 @@ struct _HueSaturationDialog
|
|||
GtkAdjustment *saturation_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble hue[7];
|
||||
gdouble lightness[7];
|
||||
|
|
|
@ -33,7 +33,7 @@ struct _ThresholdDialog
|
|||
GimpHistogram *hist;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint low_threshold;
|
||||
|
|
|
@ -506,34 +506,6 @@ STUB(histogram_tool_histogram_range)
|
|||
ToolInfo tool_info[] =
|
||||
{
|
||||
/* Non-toolbox tools */
|
||||
{
|
||||
NULL,
|
||||
N_("By Color Select"),
|
||||
N_("/Select/By Color..."),
|
||||
NULL,
|
||||
(char **) by_color_select_bits,
|
||||
NULL,
|
||||
NULL,
|
||||
N_("Select regions by color"),
|
||||
"tools/by_color_select.html",
|
||||
BY_COLOR_SELECT,
|
||||
tools_new_by_color_select,
|
||||
tools_free_by_color_select,
|
||||
by_color_select_initialize,
|
||||
NULL,
|
||||
NULL,
|
||||
{
|
||||
NULL, NULL,
|
||||
0, 0,
|
||||
0, 0, NULL, NULL, NULL
|
||||
},
|
||||
{
|
||||
NULL, NULL,
|
||||
0, 0,
|
||||
0, 0, NULL, NULL, NULL
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
NULL,
|
||||
N_("Color Balance"),
|
||||
|
|
|
@ -47,7 +47,7 @@ struct _HistogramToolDialog
|
|||
gdouble percentile;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
gint channel;
|
||||
gint color;
|
||||
};
|
||||
|
|
|
@ -44,7 +44,7 @@ struct _HueSaturationDialog
|
|||
GtkAdjustment *saturation_data;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gdouble hue[7];
|
||||
gdouble lightness[7];
|
||||
|
|
|
@ -33,7 +33,7 @@ struct _ThresholdDialog
|
|||
GimpHistogram *hist;
|
||||
|
||||
GimpDrawable *drawable;
|
||||
ImageMap image_map;
|
||||
ImageMap *image_map;
|
||||
|
||||
gint color;
|
||||
gint low_threshold;
|
||||
|
|
654
config.guess
vendored
654
config.guess
vendored
|
@ -1,8 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
|
||||
timestamp='2001-04-20'
|
||||
|
||||
# This file 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
|
||||
|
@ -30,26 +32,86 @@
|
|||
# exits with 0. Otherwise, it exits with 1.
|
||||
#
|
||||
# The plan is that this can be called by configure scripts if you
|
||||
# don't specify an explicit system type (host/target name).
|
||||
#
|
||||
# Only a few systems have been added to this list; please add others
|
||||
# (but try to keep the structure clean).
|
||||
#
|
||||
# don't specify an explicit build system type.
|
||||
|
||||
# Use $HOST_CC if defined. $CC may point to a cross-compiler
|
||||
if test x"$CC_FOR_BUILD" = x; then
|
||||
if test x"$HOST_CC" != x; then
|
||||
CC_FOR_BUILD="$HOST_CC"
|
||||
else
|
||||
if test x"$CC" != x; then
|
||||
CC_FOR_BUILD="$CC"
|
||||
else
|
||||
CC_FOR_BUILD=cc
|
||||
fi
|
||||
fi
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]
|
||||
|
||||
Output the configuration name of the system \`$me' is run on.
|
||||
|
||||
Operation modes:
|
||||
-h, --help print this help, then exit
|
||||
-t, --time-stamp print date of last modification, then exit
|
||||
-v, --version print version number, then exit
|
||||
|
||||
Report bugs and patches to <config-patches@gnu.org>."
|
||||
|
||||
version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
help="
|
||||
Try \`$me --help' for more information."
|
||||
|
||||
# Parse command line
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
--time-stamp | --time* | -t )
|
||||
echo "$timestamp" ; exit 0 ;;
|
||||
--version | -v )
|
||||
echo "$version" ; exit 0 ;;
|
||||
--help | --h* | -h )
|
||||
echo "$usage"; exit 0 ;;
|
||||
-- ) # Stop option processing
|
||||
shift; break ;;
|
||||
- ) # Use stdin as input.
|
||||
break ;;
|
||||
-* )
|
||||
echo "$me: invalid option $1$help" >&2
|
||||
exit 1 ;;
|
||||
* )
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test $# != 0; then
|
||||
echo "$me: too many arguments$help" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
dummy=dummy-$$
|
||||
trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
|
||||
|
||||
# CC_FOR_BUILD -- compiler used by this script.
|
||||
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
|
||||
# use `HOST_CC' if defined, but it is deprecated.
|
||||
|
||||
case $CC_FOR_BUILD,$HOST_CC,$CC in
|
||||
,,) echo "int dummy(){}" > $dummy.c
|
||||
for c in cc gcc c89 ; do
|
||||
($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
|
||||
if test $? = 0 ; then
|
||||
CC_FOR_BUILD="$c"; break
|
||||
fi
|
||||
done
|
||||
rm -f $dummy.c $dummy.o $dummy.rel
|
||||
if test x"$CC_FOR_BUILD" = x ; then
|
||||
CC_FOR_BUILD=no_compiler_found
|
||||
fi
|
||||
;;
|
||||
,,*) CC_FOR_BUILD=$CC ;;
|
||||
,*,*) CC_FOR_BUILD=$HOST_CC ;;
|
||||
esac
|
||||
|
||||
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
|
||||
# (ghazi@noc.rutgers.edu 8/24/94.)
|
||||
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
|
||||
|
@ -58,12 +120,9 @@ fi
|
|||
|
||||
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
|
||||
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
dummy=dummy-$$
|
||||
trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
|
||||
|
||||
# Note: order is significant - the case branches are not exclusive.
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
|
@ -77,7 +136,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||
# object file format.
|
||||
# Determine the machine/vendor (is the vendor relevant).
|
||||
case "${UNAME_MACHINE}" in
|
||||
amiga) machine=m68k-cbm ;;
|
||||
amiga) machine=m68k-unknown ;;
|
||||
arm32) machine=arm-unknown ;;
|
||||
atari*) machine=m68k-atari ;;
|
||||
sun3*) machine=m68k-sun ;;
|
||||
|
@ -87,16 +146,24 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||
ibmrt|romp-ibm) machine=romp-ibm ;;
|
||||
*) machine=${UNAME_MACHINE}-unknown ;;
|
||||
esac
|
||||
# The Operating System including object format.
|
||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep __ELF__ >/dev/null
|
||||
then
|
||||
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
|
||||
# Return netbsd for either. FIX?
|
||||
os=netbsd
|
||||
else
|
||||
os=netbsdelf
|
||||
fi
|
||||
# The Operating System including object format, if it has switched
|
||||
# to ELF recently, or will in the future.
|
||||
case "${UNAME_MACHINE}" in
|
||||
i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
|
||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep __ELF__ >/dev/null
|
||||
then
|
||||
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
|
||||
# Return netbsd for either. FIX?
|
||||
os=netbsd
|
||||
else
|
||||
os=netbsdelf
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
os=netbsd
|
||||
;;
|
||||
esac
|
||||
# The OS release
|
||||
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
||||
|
@ -173,7 +240,7 @@ EOF
|
|||
echo alpha-dec-winnt3.5
|
||||
exit 0 ;;
|
||||
Amiga*:UNIX_System_V:4.0:*)
|
||||
echo m68k-cbm-sysv4
|
||||
echo m68k-unknown-sysv4
|
||||
exit 0;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
|
@ -205,7 +272,7 @@ EOF
|
|||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit 0;;
|
||||
SR2?01:HI-UX/MPP:*:*)
|
||||
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
||||
echo hppa1.1-hitachi-hiuxmpp
|
||||
exit 0;;
|
||||
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
|
||||
|
@ -341,10 +408,13 @@ EOF
|
|||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy \
|
||||
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm $dummy.c $dummy && exit 0
|
||||
&& rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo mips-mips-riscos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Motorola:PowerMAX_OS:*:*)
|
||||
echo powerpc-motorola-powermax
|
||||
exit 0 ;;
|
||||
Night_Hawk:Power_UNIX:*:*)
|
||||
echo powerpc-harris-powerunix
|
||||
exit 0 ;;
|
||||
|
@ -392,9 +462,17 @@ EOF
|
|||
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
|
||||
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
|
||||
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
|
||||
i?86:AIX:*:*)
|
||||
i*86:AIX:*:*)
|
||||
echo i386-ibm-aix
|
||||
exit 0 ;;
|
||||
ia64:AIX:*:*)
|
||||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
else
|
||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||
fi
|
||||
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
|
||||
exit 0 ;;
|
||||
*:AIX:2:3)
|
||||
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
|
@ -408,7 +486,7 @@ EOF
|
|||
exit(0);
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
|
@ -417,9 +495,9 @@ EOF
|
|||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit 0 ;;
|
||||
*:AIX:*:4)
|
||||
*:AIX:*:[45])
|
||||
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
|
||||
if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
|
||||
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
else
|
||||
IBM_ARCH=powerpc
|
||||
|
@ -427,7 +505,7 @@ EOF
|
|||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
else
|
||||
IBM_REV=4.${UNAME_RELEASE}
|
||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||
fi
|
||||
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
|
||||
exit 0 ;;
|
||||
|
@ -453,10 +531,28 @@ EOF
|
|||
echo m68k-hp-bsd4.4
|
||||
exit 0 ;;
|
||||
9000/[34678]??:HP-UX:*:*)
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
case "${UNAME_MACHINE}" in
|
||||
9000/31? ) HP_ARCH=m68000 ;;
|
||||
9000/[34]?? ) HP_ARCH=m68k ;;
|
||||
9000/[678][0-9][0-9])
|
||||
case "${HPUX_REV}" in
|
||||
11.[0-9][0-9])
|
||||
if [ -x /usr/bin/getconf ]; then
|
||||
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
|
||||
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
|
||||
case "${sc_cpu_version}" in
|
||||
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
|
||||
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
|
||||
532) # CPU_PA_RISC2_0
|
||||
case "${sc_kernel_bits}" in
|
||||
32) HP_ARCH="hppa2.0n" ;;
|
||||
64) HP_ARCH="hppa2.0w" ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi ;;
|
||||
esac
|
||||
if [ "${HP_ARCH}" = "" ]; then
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
|
||||
#define _HPUX_SOURCE
|
||||
|
@ -491,11 +587,16 @@ EOF
|
|||
}
|
||||
EOF
|
||||
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
|
||||
if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
|
||||
rm -f $dummy.c $dummy
|
||||
fi ;;
|
||||
esac
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
ia64:HP-UX:*:*)
|
||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||
echo ia64-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
3050*:HI-UX:*:*)
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <unistd.h>
|
||||
|
@ -522,7 +623,7 @@ EOF
|
|||
exit (0);
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
exit 0 ;;
|
||||
|
@ -541,7 +642,7 @@ EOF
|
|||
hp8??:OSF1:*:*)
|
||||
echo hppa1.0-hp-osf
|
||||
exit 0 ;;
|
||||
i?86:OSF1:*:*)
|
||||
i*86:OSF1:*:*)
|
||||
if [ -x /usr/sbin/sysversion ] ; then
|
||||
echo ${UNAME_MACHINE}-unknown-osf1mk
|
||||
else
|
||||
|
@ -586,27 +687,28 @@ EOF
|
|||
CRAY*TS:*:*:*)
|
||||
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*T3E:*:*:*)
|
||||
CRAY*T3D:*:*:*)
|
||||
echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*T3E:*:*:*)
|
||||
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*SV1:*:*:*)
|
||||
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY-2:*:*:*)
|
||||
echo cray2-cray-unicos
|
||||
exit 0 ;;
|
||||
F300:UNIX_System_V:*:*)
|
||||
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
|
||||
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit 0 ;;
|
||||
F301:UNIX_System_V:*:*)
|
||||
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
|
||||
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sparc*:BSD/OS:*:*)
|
||||
|
@ -627,6 +729,9 @@ EOF
|
|||
i*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit 0 ;;
|
||||
i*:PW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-pw32
|
||||
exit 0 ;;
|
||||
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
|
||||
# How do we know it's Interix rather than the generic POSIX subsystem?
|
||||
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
|
||||
|
@ -645,58 +750,41 @@ EOF
|
|||
*:GNU:*:*)
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit 0 ;;
|
||||
*:Linux:*:*)
|
||||
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
# first see if it will tell us. cd to the root directory to prevent
|
||||
# problems with other programs or directories called `ld' in the path.
|
||||
ld_help_string=`cd /; ld --help 2>&1`
|
||||
ld_supported_emulations=`echo $ld_help_string \
|
||||
| sed -ne '/supported emulations:/!d
|
||||
s/[ ][ ]*/ /g
|
||||
s/.*supported emulations: *//
|
||||
s/ .*//
|
||||
p'`
|
||||
case "$ld_supported_emulations" in
|
||||
*ia64)
|
||||
echo "${UNAME_MACHINE}-unknown-linux"
|
||||
exit 0
|
||||
;;
|
||||
i?86linux)
|
||||
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
|
||||
exit 0
|
||||
;;
|
||||
elf_i?86)
|
||||
echo "${UNAME_MACHINE}-pc-linux"
|
||||
exit 0
|
||||
;;
|
||||
i?86coff)
|
||||
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
|
||||
exit 0
|
||||
;;
|
||||
sparclinux)
|
||||
echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
|
||||
exit 0
|
||||
;;
|
||||
armlinux)
|
||||
echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
|
||||
exit 0
|
||||
;;
|
||||
elf32arm*)
|
||||
echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
|
||||
exit 0
|
||||
;;
|
||||
armelf_linux*)
|
||||
echo "${UNAME_MACHINE}-unknown-linux-gnu"
|
||||
exit 0
|
||||
;;
|
||||
m68klinux)
|
||||
echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
|
||||
exit 0
|
||||
;;
|
||||
elf32ppc | elf32ppclinux)
|
||||
# Determine Lib Version
|
||||
cat >$dummy.c <<EOF
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit 0 ;;
|
||||
arm*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
ia64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux
|
||||
exit 0 ;;
|
||||
m68*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
mips:Linux:*:*)
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
#include <stdio.h> /* for printf() prototype */
|
||||
int main (int argc, char *argv[]) {
|
||||
#else
|
||||
int main (argc, argv) int argc; char *argv[]; {
|
||||
#endif
|
||||
#ifdef __MIPSEB__
|
||||
printf ("%s-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
#ifdef __MIPSEL__
|
||||
printf ("%sel-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
;;
|
||||
ppc:Linux:*:*)
|
||||
# Determine Lib Version
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
#if defined(__GLIBC__)
|
||||
extern char __libc_version[];
|
||||
|
@ -709,123 +797,127 @@ main(argc, argv)
|
|||
#if defined(__GLIBC__)
|
||||
printf("%s %s\n", __libc_version, __libc_release);
|
||||
#else
|
||||
printf("unkown\n");
|
||||
printf("unknown\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
LIBC=""
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
|
||||
LIBC=""
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy | grep 1\.99 > /dev/null
|
||||
if test "$?" = 0 ; then LIBC="libc1" ; fi
|
||||
fi
|
||||
rm -f $dummy.c $dummy
|
||||
echo powerpc-unknown-linux-gnu${LIBC}
|
||||
exit 0 ;;
|
||||
alpha:Linux:*:*)
|
||||
cat <<EOF >$dummy.s
|
||||
.data
|
||||
\$Lformat:
|
||||
.byte 37,100,45,37,120,10,0 # "%d-%x\n"
|
||||
.text
|
||||
.globl main
|
||||
.align 4
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,16,\$26,0
|
||||
ldgp \$29,0(\$27)
|
||||
.prologue 1
|
||||
.long 0x47e03d80 # implver \$0
|
||||
lda \$2,-1
|
||||
.long 0x47e20c21 # amask \$2,\$1
|
||||
lda \$16,\$Lformat
|
||||
mov \$0,\$17
|
||||
not \$1,\$18
|
||||
jsr \$26,printf
|
||||
ldgp \$29,0(\$26)
|
||||
mov 0,\$16
|
||||
jsr \$26,exit
|
||||
.end main
|
||||
EOF
|
||||
LIBC=""
|
||||
$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
case `./$dummy` in
|
||||
0-0) UNAME_MACHINE="alpha" ;;
|
||||
1-0) UNAME_MACHINE="alphaev5" ;;
|
||||
1-1) UNAME_MACHINE="alphaev56" ;;
|
||||
1-101) UNAME_MACHINE="alphapca56" ;;
|
||||
2-303) UNAME_MACHINE="alphaev6" ;;
|
||||
2-307) UNAME_MACHINE="alphaev67" ;;
|
||||
esac
|
||||
objdump --private-headers $dummy | \
|
||||
grep ld.so.1 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./$dummy | grep 1\.99 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
LIBC="libc1"
|
||||
fi
|
||||
rm -f $dummy.c $dummy
|
||||
echo powerpc-unknown-linux-gnu${LIBC}
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
||||
exit 0 ;;
|
||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
||||
PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
||||
*) echo hppa-unknown-linux-gnu ;;
|
||||
esac
|
||||
exit 0 ;;
|
||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||
echo hppa64-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-ibm-linux
|
||||
exit 0 ;;
|
||||
sh*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
x86_64:Linux:*:*)
|
||||
echo x86_64-unknown-linux-gnu
|
||||
exit 0 ;;
|
||||
i*86:Linux:*:*)
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
# first see if it will tell us. cd to the root directory to prevent
|
||||
# problems with other programs or directories called `ld' in the path.
|
||||
ld_supported_emulations=`cd /; ld --help 2>&1 \
|
||||
| sed -ne '/supported emulations:/!d
|
||||
s/[ ][ ]*/ /g
|
||||
s/.*supported emulations: *//
|
||||
s/ .*//
|
||||
p'`
|
||||
case "$ld_supported_emulations" in
|
||||
i*86linux)
|
||||
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
|
||||
exit 0
|
||||
;;
|
||||
elf_i*86)
|
||||
TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
|
||||
;;
|
||||
i*86coff)
|
||||
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "${UNAME_MACHINE}" = "alpha" ; then
|
||||
cat <<EOF >$dummy.s
|
||||
.data
|
||||
\$Lformat:
|
||||
.byte 37,100,45,37,120,10,0 # "%d-%x\n"
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.align 4
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,16,\$26,0
|
||||
ldgp \$29,0(\$27)
|
||||
.prologue 1
|
||||
.long 0x47e03d80 # implver \$0
|
||||
lda \$2,-1
|
||||
.long 0x47e20c21 # amask \$2,\$1
|
||||
lda \$16,\$Lformat
|
||||
mov \$0,\$17
|
||||
not \$1,\$18
|
||||
jsr \$26,printf
|
||||
ldgp \$29,0(\$26)
|
||||
mov 0,\$16
|
||||
jsr \$26,exit
|
||||
.end main
|
||||
EOF
|
||||
LIBC=""
|
||||
$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
case `./$dummy` in
|
||||
0-0)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
1-0)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
1-1)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
1-101)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
2-303)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
2-307)
|
||||
UNAME_MACHINE="alphaev67"
|
||||
;;
|
||||
esac
|
||||
|
||||
objdump --private-headers $dummy | \
|
||||
grep ld.so.1 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
fi
|
||||
rm -f $dummy.s $dummy
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
|
||||
elif test "${UNAME_MACHINE}" = "mips" ; then
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
#include <stdio.h> /* for printf() prototype */
|
||||
int main (int argc, char *argv[]) {
|
||||
#else
|
||||
int main (argc, argv) int argc; char *argv[]; {
|
||||
#endif
|
||||
#ifdef __MIPSEB__
|
||||
printf ("%s-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
#ifdef __MIPSEL__
|
||||
printf ("%sel-unknown-linux-gnu\n", argv[1]);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
elif test "${UNAME_MACHINE}" = "s390"; then
|
||||
echo s390-ibm-linux && exit 0
|
||||
else
|
||||
# Either a pre-BFD a.out linker (linux-gnuoldld)
|
||||
# or one that does not give us useful --help.
|
||||
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
|
||||
# If ld does not provide *any* "supported emulations:"
|
||||
# that means it is gnuoldld.
|
||||
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
|
||||
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
|
||||
|
||||
case "${UNAME_MACHINE}" in
|
||||
i?86)
|
||||
VENDOR=pc;
|
||||
;;
|
||||
*)
|
||||
VENDOR=unknown;
|
||||
;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
cat >$dummy.c <<EOF
|
||||
# Either a pre-BFD a.out linker (linux-gnuoldld)
|
||||
# or one that does not give us useful --help.
|
||||
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
|
||||
# If ld does not provide *any* "supported emulations:"
|
||||
# that means it is gnuoldld.
|
||||
test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
|
||||
case "${UNAME_MACHINE}" in
|
||||
i*86)
|
||||
VENDOR=pc;
|
||||
;;
|
||||
*)
|
||||
VENDOR=unknown;
|
||||
;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
#ifdef __cplusplus
|
||||
#include <stdio.h> /* for printf() prototype */
|
||||
|
@ -849,15 +941,16 @@ EOF
|
|||
return 0;
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
fi ;;
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
|
||||
;;
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
|
||||
# are messed up and put the nodename in both sysname and nodename.
|
||||
i?86:DYNIX/ptx:4*:*)
|
||||
i*86:DYNIX/ptx:4*:*)
|
||||
echo i386-sequent-sysv4
|
||||
exit 0 ;;
|
||||
i?86:UNIX_SV:4.2MP:2.*)
|
||||
i*86:UNIX_SV:4.2MP:2.*)
|
||||
# Unixware is an offshoot of SVR4, but it has its own version
|
||||
# number series starting with 2...
|
||||
# I am not positive that other SVR4 systems won't match this,
|
||||
|
@ -865,7 +958,7 @@ EOF
|
|||
# Use sysv4.2uw... so that sysv4* matches it.
|
||||
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
|
||||
exit 0 ;;
|
||||
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
|
||||
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
|
||||
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
|
||||
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
||||
echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
|
||||
|
@ -873,7 +966,7 @@ EOF
|
|||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:5:7*)
|
||||
i*86:*:5:7*)
|
||||
# Fixed at (any) Pentium or better
|
||||
UNAME_MACHINE=i586
|
||||
if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
|
||||
|
@ -882,7 +975,7 @@ EOF
|
|||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:3.2:*)
|
||||
i*86:*:3.2:*)
|
||||
if test -f /usr/options/cb.name; then
|
||||
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
|
||||
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
|
||||
|
@ -900,7 +993,7 @@ EOF
|
|||
echo ${UNAME_MACHINE}-pc-sysv32
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*DOS:*:*)
|
||||
i*86:*DOS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-msdosdjgpp
|
||||
exit 0 ;;
|
||||
pc:*:*:*)
|
||||
|
@ -928,7 +1021,7 @@ EOF
|
|||
exit 0 ;;
|
||||
M68*:*:R3V[567]*:*)
|
||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
|
||||
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
|
||||
OS_REL=''
|
||||
test -r /etc/.relid \
|
||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||
|
@ -939,21 +1032,24 @@ EOF
|
|||
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
|
||||
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
|
||||
&& echo i486-ncr-sysv4 && exit 0 ;;
|
||||
m68*:LynxOS:2.*:*)
|
||||
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
|
||||
echo m68k-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mc68030:UNIX_System_V:4.*:*)
|
||||
echo m68k-atari-sysv4
|
||||
exit 0 ;;
|
||||
i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
|
||||
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
|
||||
echo i386-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
TSUNAMI:LynxOS:2.*:*)
|
||||
echo sparc-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
|
||||
rs6000:LynxOS:2.*:*)
|
||||
echo rs6000-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
|
||||
echo powerpc-unknown-lynxos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
SM[BE]S:UNIX_SV:*:*)
|
||||
echo mips-dde-sysv${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
|
@ -987,7 +1083,7 @@ EOF
|
|||
mc68*:A/UX:*:*)
|
||||
echo m68k-apple-aux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
news*:NEWS-OS:*:6*)
|
||||
news*:NEWS-OS:6*:*)
|
||||
echo mips-sony-newsos6
|
||||
exit 0 ;;
|
||||
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
|
||||
|
@ -1030,15 +1126,52 @@ EOF
|
|||
*:QNX:*:4*)
|
||||
echo i386-pc-qnx
|
||||
exit 0 ;;
|
||||
NSR-W:NONSTOP_KERNEL:*:*)
|
||||
NSR-[KW]:NONSTOP_KERNEL:*:*)
|
||||
echo nsr-tandem-nsk${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:NonStop-UX:*:*)
|
||||
echo mips-compaq-nonstopux
|
||||
exit 0 ;;
|
||||
BS2000:POSIX*:*:*)
|
||||
echo bs2000-siemens-sysv
|
||||
exit 0 ;;
|
||||
DS/*:UNIX_System_V:*:*)
|
||||
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:Plan9:*:*)
|
||||
# "uname -m" is not consistent, so use $cputype instead. 386
|
||||
# is converted to i386 for consistency with other x86
|
||||
# operating systems.
|
||||
if test "$cputype" = "386"; then
|
||||
UNAME_MACHINE=i386
|
||||
else
|
||||
UNAME_MACHINE="$cputype"
|
||||
fi
|
||||
echo ${UNAME_MACHINE}-unknown-plan9
|
||||
exit 0 ;;
|
||||
i*86:OS/2:*:*)
|
||||
# If we were able to find `uname', then EMX Unix compatibility
|
||||
# is probably installed.
|
||||
echo ${UNAME_MACHINE}-pc-os2-emx
|
||||
exit 0 ;;
|
||||
*:TOPS-10:*:*)
|
||||
echo pdp10-unknown-tops10
|
||||
exit 0 ;;
|
||||
*:TENEX:*:*)
|
||||
echo pdp10-unknown-tenex
|
||||
exit 0 ;;
|
||||
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
|
||||
echo pdp10-dec-tops20
|
||||
exit 0 ;;
|
||||
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
|
||||
echo pdp10-xkl-tops20
|
||||
exit 0 ;;
|
||||
*:TOPS-20:*:*)
|
||||
echo pdp10-unknown-tops20
|
||||
exit 0 ;;
|
||||
*:ITS:*:*)
|
||||
echo pdp10-unknown-its
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
@ -1130,11 +1263,24 @@ main ()
|
|||
#endif
|
||||
|
||||
#if defined (vax)
|
||||
#if !defined (ultrix)
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
#else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
#endif
|
||||
# if !defined (ultrix)
|
||||
# include <sys/param.h>
|
||||
# if defined (BSD)
|
||||
# if BSD == 43
|
||||
printf ("vax-dec-bsd4.3\n"); exit (0);
|
||||
# else
|
||||
# if BSD == 199006
|
||||
printf ("vax-dec-bsd4.3reno\n"); exit (0);
|
||||
# else
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
# endif
|
||||
# else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined (alliant) && defined (i860)
|
||||
|
@ -1145,7 +1291,7 @@ main ()
|
|||
}
|
||||
EOF
|
||||
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
@ -1178,6 +1324,48 @@ then
|
|||
esac
|
||||
fi
|
||||
|
||||
#echo '(Unable to guess system type)' 1>&2
|
||||
cat >&2 <<EOF
|
||||
$0: unable to guess system type
|
||||
|
||||
This script, last modified $timestamp, has failed to recognize
|
||||
the operating system you are using. It is advised that you
|
||||
download the most up to date version of the config scripts from
|
||||
|
||||
ftp://ftp.gnu.org/pub/gnu/config/
|
||||
|
||||
If the version you run ($0) is already up to date, please
|
||||
send the following data and any information you think might be
|
||||
pertinent to <config-patches@gnu.org> in order to provide the needed
|
||||
information to handle your system.
|
||||
|
||||
config.guess timestamp = $timestamp
|
||||
|
||||
uname -m = `(uname -m) 2>/dev/null || echo unknown`
|
||||
uname -r = `(uname -r) 2>/dev/null || echo unknown`
|
||||
uname -s = `(uname -s) 2>/dev/null || echo unknown`
|
||||
uname -v = `(uname -v) 2>/dev/null || echo unknown`
|
||||
|
||||
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
|
||||
/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
|
||||
|
||||
hostinfo = `(hostinfo) 2>/dev/null`
|
||||
/bin/universe = `(/bin/universe) 2>/dev/null`
|
||||
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
|
||||
/bin/arch = `(/bin/arch) 2>/dev/null`
|
||||
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
|
||||
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
|
||||
|
||||
UNAME_MACHINE = ${UNAME_MACHINE}
|
||||
UNAME_RELEASE = ${UNAME_RELEASE}
|
||||
UNAME_SYSTEM = ${UNAME_SYSTEM}
|
||||
UNAME_VERSION = ${UNAME_VERSION}
|
||||
EOF
|
||||
|
||||
exit 1
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "timestamp='"
|
||||
# time-stamp-format: "%:y-%02m-%02d"
|
||||
# time-stamp-end: "'"
|
||||
# End:
|
||||
|
|
238
config.sub
vendored
238
config.sub
vendored
|
@ -1,8 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script, version 1.1.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
|
||||
timestamp='2001-04-20'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
# can handle that machine. It does not imply ALL GNU software can.
|
||||
|
@ -27,7 +29,6 @@
|
|||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Written by Per Bothner <bothner@cygnus.com>.
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
#
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
|
@ -50,30 +51,73 @@
|
|||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
echo Configuration name missing. 1>&2
|
||||
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
|
||||
echo "or $0 ALIAS" 1>&2
|
||||
echo where ALIAS is a recognized configuration type. 1>&2
|
||||
exit 1
|
||||
fi
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
# First pass through any local machine types.
|
||||
case $1 in
|
||||
*local*)
|
||||
echo $1
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||
$0 [OPTION] ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
Operation modes:
|
||||
-h, --help print this help, then exit
|
||||
-t, --time-stamp print date of last modification, then exit
|
||||
-v, --version print version number, then exit
|
||||
|
||||
Report bugs and patches to <config-patches@gnu.org>."
|
||||
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
help="
|
||||
Try \`$me --help' for more information."
|
||||
|
||||
# Parse command line
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
--time-stamp | --time* | -t )
|
||||
echo "$timestamp" ; exit 0 ;;
|
||||
--version | -v )
|
||||
echo "$version" ; exit 0 ;;
|
||||
--help | --h* | -h )
|
||||
echo "$usage"; exit 0 ;;
|
||||
-- ) # Stop option processing
|
||||
shift; break ;;
|
||||
- ) # Use stdin as input.
|
||||
break ;;
|
||||
-* )
|
||||
echo "$me: invalid option $1$help"
|
||||
exit 1 ;;
|
||||
|
||||
*local*)
|
||||
# First pass through any local machine types.
|
||||
echo $1
|
||||
exit 0;;
|
||||
|
||||
* )
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
case $# in
|
||||
0) echo "$me: missing argument$help" >&2
|
||||
exit 1;;
|
||||
1) ;;
|
||||
*) echo "$me: too many arguments$help" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
|
||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu*)
|
||||
nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
|
@ -99,7 +143,7 @@ case $os in
|
|||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple)
|
||||
-apple | -axis)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
|
@ -171,30 +215,40 @@ esac
|
|||
case $basic_machine in
|
||||
# Recognize the basic CPU types without company name.
|
||||
# Some are omitted here because they have special meanings below.
|
||||
tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
|
||||
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
|
||||
tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
|
||||
| arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
|
||||
| pyramid | mn10200 | mn10300 | tron | a29k \
|
||||
| 580 | i960 | h8300 \
|
||||
| x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
|
||||
| x86 | ppcbe | mipsbe | mipsle | shbe | shle \
|
||||
| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
|
||||
| hppa64 \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
|
||||
| alphaev6[78] \
|
||||
| we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
|
||||
| 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
|
||||
| we32k | ns16k | clipper | i370 | sh | sh[34] \
|
||||
| powerpc | powerpcle \
|
||||
| 1750a | dsp16xx | pdp10 | pdp11 \
|
||||
| mips16 | mips64 | mipsel | mips64el \
|
||||
| mips64orion | mips64orionel | mipstx39 | mipstx39el \
|
||||
| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
|
||||
| mips64vr5000 | miprs64vr5000el | mcore \
|
||||
| sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
|
||||
| thumb | d10v | fr30 | avr)
|
||||
| mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
|
||||
| sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
|
||||
| v850 | c4x \
|
||||
| thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
|
||||
| pj | pjl | h8500)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
|
||||
m6811 | m68hc11 | m6812 | m68hc12)
|
||||
# Motorola 68HC11/12.
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
|
||||
;;
|
||||
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
# (2) the word "unknown" tends to confuse beginning users.
|
||||
i[34567]86)
|
||||
i*86 | x86_64)
|
||||
basic_machine=$basic_machine-pc
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
|
@ -204,27 +258,30 @@ case $basic_machine in
|
|||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
# FIXME: clean up the formatting here.
|
||||
vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
|
||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
||||
vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
|
||||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
|
||||
| arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
|
||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||
| power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
|
||||
| xmp-* | ymp-* \
|
||||
| x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
|
||||
| x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
|
||||
| hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
|
||||
| hppa2.0n-* | hppa64-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
|
||||
| alphaev6[78]-* \
|
||||
| we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
|
||||
| clipper-* | orion-* \
|
||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
| sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
|
||||
| sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
| sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
|
||||
| mips16-* | mips64-* | mipsel-* \
|
||||
| mips64el-* | mips64orion-* | mips64orionel-* \
|
||||
| mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
|
||||
| mipstx39-* | mipstx39el-* | mcore-* \
|
||||
| f301-* | armv*-* | s390-* | sv1-* | t3e-* \
|
||||
| f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
|
||||
| [cjt]90-* \
|
||||
| m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
|
||||
| thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
|
||||
| bs2000-*)
|
||||
| thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
|
||||
| bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
|
@ -261,14 +318,14 @@ case $basic_machine in
|
|||
os=-sysv
|
||||
;;
|
||||
amiga | amiga-*)
|
||||
basic_machine=m68k-cbm
|
||||
basic_machine=m68k-unknown
|
||||
;;
|
||||
amigaos | amigados)
|
||||
basic_machine=m68k-cbm
|
||||
basic_machine=m68k-unknown
|
||||
os=-amigaos
|
||||
;;
|
||||
amigaunix | amix)
|
||||
basic_machine=m68k-cbm
|
||||
basic_machine=m68k-unknown
|
||||
os=-sysv4
|
||||
;;
|
||||
apollo68)
|
||||
|
@ -315,13 +372,16 @@ case $basic_machine in
|
|||
basic_machine=cray2-cray
|
||||
os=-unicos
|
||||
;;
|
||||
[ctj]90-cray)
|
||||
basic_machine=c90-cray
|
||||
[cjt]90)
|
||||
basic_machine=${basic_machine}-cray
|
||||
os=-unicos
|
||||
;;
|
||||
crds | unos)
|
||||
basic_machine=m68k-crds
|
||||
;;
|
||||
cris | cris-* | etrax*)
|
||||
basic_machine=cris-axis
|
||||
;;
|
||||
da30 | da30-*)
|
||||
basic_machine=m68k-da30
|
||||
;;
|
||||
|
@ -369,6 +429,10 @@ case $basic_machine in
|
|||
basic_machine=tron-gmicro
|
||||
os=-sysv
|
||||
;;
|
||||
go32)
|
||||
basic_machine=i386-pc
|
||||
os=-go32
|
||||
;;
|
||||
h3050r* | hiux*)
|
||||
basic_machine=hppa1.1-hitachi
|
||||
os=-hiuxwe2
|
||||
|
@ -444,19 +508,19 @@ case $basic_machine in
|
|||
basic_machine=i370-ibm
|
||||
;;
|
||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i[34567]86v32)
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i[34567]86v4*)
|
||||
i*86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i[34567]86v)
|
||||
i*86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i[34567]86sol2)
|
||||
i*86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
|
@ -468,14 +532,6 @@ case $basic_machine in
|
|||
basic_machine=i386-unknown
|
||||
os=-vsta
|
||||
;;
|
||||
i386-go32 | go32)
|
||||
basic_machine=i386-unknown
|
||||
os=-go32
|
||||
;;
|
||||
i386-mingw32 | mingw32)
|
||||
basic_machine=i386-unknown
|
||||
os=-mingw32
|
||||
;;
|
||||
iris | iris4d)
|
||||
basic_machine=mips-sgi
|
||||
case $os in
|
||||
|
@ -501,6 +557,10 @@ case $basic_machine in
|
|||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
mingw32)
|
||||
basic_machine=i386-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
|
@ -531,7 +591,7 @@ case $basic_machine in
|
|||
os=-coff
|
||||
;;
|
||||
msdos)
|
||||
basic_machine=i386-unknown
|
||||
basic_machine=i386-pc
|
||||
os=-msdos
|
||||
;;
|
||||
mvs)
|
||||
|
@ -595,6 +655,10 @@ case $basic_machine in
|
|||
basic_machine=i960-intel
|
||||
os=-mon960
|
||||
;;
|
||||
nonstopux)
|
||||
basic_machine=mips-compaq
|
||||
os=-nonstopux
|
||||
;;
|
||||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
|
@ -630,28 +694,28 @@ case $basic_machine in
|
|||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pentium | p5 | k5 | k6 | nexen)
|
||||
pentium | p5 | k5 | k6 | nexgen)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
pentiumpro | p6 | 6x86)
|
||||
pentiumpro | p6 | 6x86 | athlon)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentiumii | pentium2)
|
||||
basic_machine=i786-pc
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | k6-* | nexen-*)
|
||||
pentium-* | p5-* | k5-* | k6-* | nexgen-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-*)
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
;;
|
||||
power) basic_machine=rs6000-ibm
|
||||
power) basic_machine=power-ibm
|
||||
;;
|
||||
ppc) basic_machine=powerpc-unknown
|
||||
;;
|
||||
|
@ -666,6 +730,10 @@ case $basic_machine in
|
|||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
;;
|
||||
pw32)
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
rom68k)
|
||||
basic_machine=m68k-rom68k
|
||||
os=-coff
|
||||
|
@ -757,6 +825,10 @@ case $basic_machine in
|
|||
basic_machine=t3e-cray
|
||||
os=-unicos
|
||||
;;
|
||||
tic54x | c54x*)
|
||||
basic_machine=tic54x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
|
@ -852,13 +924,20 @@ case $basic_machine in
|
|||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp10)
|
||||
# there are many clones, so DEC is not a safe bet
|
||||
basic_machine=pdp10-unknown
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sparc | sparcv9)
|
||||
sh3 | sh4)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sparc | sparcv9 | sparcv9b)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
|
@ -880,6 +959,9 @@ case $basic_machine in
|
|||
basic_machine=c4x-none
|
||||
os=-coff
|
||||
;;
|
||||
*-unknown)
|
||||
# Make sure to match an already-canonicalized machine name.
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
exit 1
|
||||
|
@ -939,12 +1021,13 @@ case $os in
|
|||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit*)
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
case $basic_machine in
|
||||
x86-* | i[34567]86-*)
|
||||
x86-* | i*86-*)
|
||||
;;
|
||||
*)
|
||||
os=-nto$os
|
||||
|
@ -1000,7 +1083,7 @@ case $os in
|
|||
-ns2 )
|
||||
os=-nextstep2
|
||||
;;
|
||||
-nsk)
|
||||
-nsk*)
|
||||
os=-nsk
|
||||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
|
@ -1037,7 +1120,7 @@ case $os in
|
|||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-*mint | -*MiNT)
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
;;
|
||||
-none)
|
||||
|
@ -1071,6 +1154,9 @@ case $basic_machine in
|
|||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
pdp10-*)
|
||||
os=-tops20
|
||||
;;
|
||||
pdp11-*)
|
||||
os=-none
|
||||
;;
|
||||
|
@ -1179,7 +1265,7 @@ case $basic_machine in
|
|||
*-masscomp)
|
||||
os=-rtu
|
||||
;;
|
||||
f301-fujitsu)
|
||||
f30[01]-fujitsu | f700-fujitsu)
|
||||
os=-uxpv
|
||||
;;
|
||||
*-rom68k)
|
||||
|
@ -1257,7 +1343,7 @@ case $basic_machine in
|
|||
-mpw* | -macos*)
|
||||
vendor=apple
|
||||
;;
|
||||
-*mint | -*MiNT)
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
vendor=atari
|
||||
;;
|
||||
esac
|
||||
|
@ -1266,3 +1352,11 @@ case $basic_machine in
|
|||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "timestamp='"
|
||||
# time-stamp-format: "%:y-%02m-%02d"
|
||||
# time-stamp-end: "'"
|
||||
# End:
|
||||
|
|
|
@ -45,7 +45,7 @@ typedef enum /*< chop=GIMP_ >*/
|
|||
|
||||
GIMP_UNIT_END = 5,
|
||||
|
||||
GIMP_UNIT_PERCENT = 65536
|
||||
GIMP_UNIT_PERCENT = 65536 /*< skip >*/
|
||||
} GimpUnit;
|
||||
|
||||
typedef enum /*< chop=GIMP_ >*/
|
||||
|
|
|
@ -143,7 +143,7 @@ gimp_button_button_press (GtkWidget *widget,
|
|||
}
|
||||
|
||||
if (GTK_WIDGET_CLASS (parent_class)->button_press_event)
|
||||
GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, bevent);
|
||||
return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, bevent);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -153,7 +153,8 @@ gimp_button_button_release (GtkWidget *widget,
|
|||
GdkEventButton *bevent)
|
||||
{
|
||||
GtkButton *button;
|
||||
gboolean in_button = FALSE;
|
||||
gboolean extended_clicked = FALSE;
|
||||
gboolean retval = TRUE;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, FALSE);
|
||||
g_return_val_if_fail (GIMP_IS_BUTTON (widget), FALSE);
|
||||
|
@ -163,9 +164,7 @@ gimp_button_button_release (GtkWidget *widget,
|
|||
|
||||
if (bevent->button == 1)
|
||||
{
|
||||
in_button = button->in_button;
|
||||
|
||||
if (in_button &&
|
||||
if (button->in_button &&
|
||||
(GIMP_BUTTON (button)->press_state &
|
||||
(GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)))
|
||||
{
|
||||
|
@ -173,20 +172,30 @@ gimp_button_button_release (GtkWidget *widget,
|
|||
button_signals[EXTENDED_CLICKED],
|
||||
GIMP_BUTTON (button)->press_state);
|
||||
|
||||
extended_clicked = TRUE;
|
||||
|
||||
/* HACK: don't let GtkButton emit "clicked" by telling it that
|
||||
* the mouse pointer is outside the widget
|
||||
*/
|
||||
button->in_button = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (GTK_WIDGET_CLASS (parent_class)->button_release_event)
|
||||
GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, bevent);
|
||||
retval = GTK_WIDGET_CLASS (parent_class)->button_release_event (widget,
|
||||
bevent);
|
||||
|
||||
if (bevent->button == 1 && in_button)
|
||||
if (extended_clicked)
|
||||
{
|
||||
/* revert the above HACK and let the button draw itself in the
|
||||
* correct state, because upchaining with "in_button" == FALSE
|
||||
* messed it up
|
||||
*/
|
||||
button->in_button = TRUE;
|
||||
|
||||
gtk_widget_set_state (widget, GTK_STATE_PRELIGHT);
|
||||
gtk_widget_draw (widget, NULL);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -151,7 +151,6 @@ init_generated_constants (void)
|
|||
setvar (cintern ("UNIT-POINT"), flocons (3), NIL);
|
||||
setvar (cintern ("UNIT-PICA"), flocons (4), NIL);
|
||||
setvar (cintern ("UNIT-END"), flocons (5), NIL);
|
||||
setvar (cintern ("UNIT-PERCENT"), flocons (65536), NIL);
|
||||
|
||||
setvar (cintern ("ONCE-FORWARD"), flocons (0), NIL);
|
||||
setvar (cintern ("ONCE-BACKWARDS"), flocons (1), NIL);
|
||||
|
|
|
@ -21,25 +21,22 @@ package Gimp::CodeGen::enums;
|
|||
|
||||
%enums = (
|
||||
GimpUnit =>
|
||||
{ contig => 0,
|
||||
{ contig => 1,
|
||||
header => 'libgimpbase/gimpbasetypes.h',
|
||||
symbols => [ qw(GIMP_UNIT_PIXEL GIMP_UNIT_INCH GIMP_UNIT_MM
|
||||
GIMP_UNIT_POINT GIMP_UNIT_PICA GIMP_UNIT_END
|
||||
GIMP_UNIT_PERCENT) ],
|
||||
GIMP_UNIT_POINT GIMP_UNIT_PICA GIMP_UNIT_END) ],
|
||||
mapping => { GIMP_UNIT_PIXEL => '0',
|
||||
GIMP_UNIT_INCH => '1',
|
||||
GIMP_UNIT_MM => '2',
|
||||
GIMP_UNIT_POINT => '3',
|
||||
GIMP_UNIT_PICA => '4',
|
||||
GIMP_UNIT_END => '5',
|
||||
GIMP_UNIT_PERCENT => '65536' },
|
||||
GIMP_UNIT_END => '5' },
|
||||
nicks => { GIMP_UNIT_PIXEL => 'UNIT_PIXEL',
|
||||
GIMP_UNIT_INCH => 'UNIT_INCH',
|
||||
GIMP_UNIT_MM => 'UNIT_MM',
|
||||
GIMP_UNIT_POINT => 'UNIT_POINT',
|
||||
GIMP_UNIT_PICA => 'UNIT_PICA',
|
||||
GIMP_UNIT_END => 'UNIT_END',
|
||||
GIMP_UNIT_PERCENT => 'UNIT_PERCENT' }
|
||||
GIMP_UNIT_END => 'UNIT_END' }
|
||||
},
|
||||
GimpPDBArgType =>
|
||||
{ contig => 1,
|
||||
|
|
Loading…
Reference in a new issue