Correct the info about Win32 mailing lists.

2000-04-10  Tor Lillqvist  <tml@iki.fi>

* README: Correct the info about Win32 mailing lists.

* gimprc.win32: Add perfect-mouse setting.

* libgimp/gimp.h
* app/main.c: Guard against redefinition of _stdcall.

* libgimp/gimpmath.h: Define macros ISNAN and ISINF. On Win32 use
_isnan() and _fpclass() from <float.h>, on other platforms use
isnan() and isinf(). We really should test for isnan and isinf in the
configure script.

* tools/pdbgen/pdb/gimage.pdb
* app/gimage_cmds.c: Include gimpmath.h, use above macros instead
of using the nonportable isnan and isinf.

* app/gdisplay_ops.c: Do use the old gtk_widget_hide/show hack on
Win32.

* libgimp/makefile.cygwin
* libgimp/makefile.msc
* app/makefile.cygwin
* app/makefile.msc
* plug-ins/makefile.cygwin
* plug-ins/makefile.msc: Updates.

* plug-ins/gfig/gfig.c (plug_in_parse_gfig_path): Simplify warning
message on Win32.  We could use G_DIR_SEPARATOR in the sample
gimprc line, but then we would have to call g_strescape to quote
it, argh. Win32 users use prebuilt versions with a correct gimprc
file anyway.

(create_file_selection): Use g_get_tmp_dir().

(gfig_update_stat_labels): Guard against possibly NULL value from
g_get_home_dir().
This commit is contained in:
Tor Lillqvist 2000-04-10 20:47:04 +00:00 committed by Tor Lillqvist
parent b74905e499
commit 70b1e8da72
19 changed files with 205 additions and 39 deletions

View File

@ -1,3 +1,42 @@
2000-04-10 Tor Lillqvist <tml@iki.fi>
* README: Correct the info about Win32 mailing lists.
* gimprc.win32: Add perfect-mouse setting.
* libgimp/gimp.h
* app/main.c: Guard against redefinition of _stdcall.
* libgimp/gimpmath.h: Define macros ISNAN and ISINF. On Win32 use
_isnan() and _fpclass() from <float.h>, on other platforms use
isnan() and isinf(). We really should test for isnan and isinf in the
configure script.
* tools/pdbgen/pdb/gimage.pdb
* app/gimage_cmds.c: Include gimpmath.h, use above macros instead
of using the nonportable isnan and isinf.
* app/gdisplay_ops.c: Do use the old gtk_widget_hide/show hack on
Win32.
* libgimp/makefile.cygwin
* libgimp/makefile.msc
* app/makefile.cygwin
* app/makefile.msc
* plug-ins/makefile.cygwin
* plug-ins/makefile.msc: Updates.
* plug-ins/gfig/gfig.c (plug_in_parse_gfig_path): Simplify warning
message on Win32. We could use G_DIR_SEPARATOR in the sample
gimprc line, but then we would have to call g_strescape to quote
it, argh. Win32 users use prebuilt versions with a correct gimprc
file anyway.
(create_file_selection): Use g_get_tmp_dir().
(gfig_update_stat_labels): Guard against possibly NULL value from
g_get_home_dir().
2000-04-10 Sven Neumann <sven@gimp.org>
* README: applied a modified version of gimp-cornwell-000408-0,

19
README
View File

@ -38,7 +38,7 @@ discussion. To subscribe, send an empty message to
<listname>-subscribe@xcf.berkeley.edu
substituting <list-name> for "gimp-user", "gimp-win-user", "gimp-announce" or
substituting <listname> for "gimp-user", "gimp-announce" or
"gimp-developer" (without the quotes, of course) depending on the list you
want to subscribe to. The mailing list archives can be found at:
@ -46,13 +46,26 @@ want to subscribe to. The mailing list archives can be found at:
http://www.egroups.com/messages/gimp-user/
Gimp-user is a mailing list dedicated to user problems, hints and
tips, discussion of cool effects, etc. Gimp-win-user is a list to discuss
user problems specific to the Win32 port. Gimp-announce is a low-traffic list
tips, discussion of cool effects, etc. Gimp-announce is a low-traffic list
with announcements about new releases of GIMP and plug-ins. Gimp-developer is
oriented to GIMP core and plug-in developers. Most people will only want to
be subscribed to gimp-user. If you want to help develop The GIMP, the
gimp-developer mailing list is a good starting point.
There are two mailing lists dedicated to the Win32 port,
"gimpwin-users" and "gimpwin-dev". Especially the latter also carries
traffic about the GTk+ port to Win32 in general. To subscribe, send an
empty message to
gimpwin-users-subscribe@egroups.com
or
gimpwin-dev-subscribe@egroups.com
respectively. You can also use the web interface at
http://www.egroups.com/group/gimpwin-users/ and
http://www.egroups.com/group/gimpwin-dev/ .
3. IRC
======

View File

@ -189,18 +189,27 @@ gdisplay_shrink_wrap (GDisplay *gdisp)
width = gdisp->statusarea->requisition.width;
}
#ifdef GDK_WINDOWING_WIN32
gtk_widget_hide(gdisp->shell);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_drawing_area_size(GTK_DRAWING_AREA(gdisp->canvas),
width, height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->shell);
#endif
#undef RESIZE_DEBUG
#ifdef RESIZE_DEBUG
printf("1w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
g_print("1w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
width, height,
disp_width, disp_height,
shell_width, shell_height,
border_x, border_y);fflush(stdout);
border_x, border_y);
#endif /* RESIZE_DEBUG */
gdk_window_get_origin (gdisp->shell->window, &shell_x, &shell_y);
@ -222,17 +231,25 @@ gdisplay_shrink_wrap (GDisplay *gdisp)
width = gdisp->statusarea->requisition.width;
}
#ifdef GDK_WINDOWING_WIN32
gtk_widget_hide(gdisp->shell);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_drawing_area_size(GTK_DRAWING_AREA(gdisp->canvas),
width, height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->shell);
#endif
#ifdef RESIZE_DEBUG
printf("2w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
g_print("2w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
width, height,
disp_width, disp_height,
shell_width, shell_height,
border_x, border_y);fflush(stdout);
border_x, border_y);
#endif /* RESIZE_DEBUG */
gdk_window_get_origin (gdisp->shell->window, &shell_x, &shell_y);
@ -282,13 +299,21 @@ gdisplay_resize_image (GDisplay *gdisp)
gdisp->disp_width = width;
gdisp->disp_height = height;
#ifdef GDK_WINDOWING_WIN32
if (GTK_WIDGET_VISIBLE (gdisp->canvas))
gtk_widget_hide(gdisp->canvas);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_widget_set_usize (gdisp->canvas,
gdisp->disp_width,
gdisp->disp_height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->canvas);
#endif
}
return 1;

View File

@ -189,18 +189,27 @@ gdisplay_shrink_wrap (GDisplay *gdisp)
width = gdisp->statusarea->requisition.width;
}
#ifdef GDK_WINDOWING_WIN32
gtk_widget_hide(gdisp->shell);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_drawing_area_size(GTK_DRAWING_AREA(gdisp->canvas),
width, height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->shell);
#endif
#undef RESIZE_DEBUG
#ifdef RESIZE_DEBUG
printf("1w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
g_print("1w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
width, height,
disp_width, disp_height,
shell_width, shell_height,
border_x, border_y);fflush(stdout);
border_x, border_y);
#endif /* RESIZE_DEBUG */
gdk_window_get_origin (gdisp->shell->window, &shell_x, &shell_y);
@ -222,17 +231,25 @@ gdisplay_shrink_wrap (GDisplay *gdisp)
width = gdisp->statusarea->requisition.width;
}
#ifdef GDK_WINDOWING_WIN32
gtk_widget_hide(gdisp->shell);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_drawing_area_size(GTK_DRAWING_AREA(gdisp->canvas),
width, height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->shell);
#endif
#ifdef RESIZE_DEBUG
printf("2w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
g_print("2w:%d/%d d:%d/%d s:%d/%d b:%d/%d\n",
width, height,
disp_width, disp_height,
shell_width, shell_height,
border_x, border_y);fflush(stdout);
border_x, border_y);
#endif /* RESIZE_DEBUG */
gdk_window_get_origin (gdisp->shell->window, &shell_x, &shell_y);
@ -282,13 +299,21 @@ gdisplay_resize_image (GDisplay *gdisp)
gdisp->disp_width = width;
gdisp->disp_height = height;
#ifdef GDK_WINDOWING_WIN32
if (GTK_WIDGET_VISIBLE (gdisp->canvas))
gtk_widget_hide(gdisp->canvas);
#else
while (gtk_events_pending())
gtk_main_iteration();
#endif
gtk_widget_set_usize (gdisp->canvas,
gdisp->disp_width,
gdisp->disp_height);
#ifdef GDK_WINDOWING_WIN32
gtk_widget_show(gdisp->canvas);
#endif
}
return 1;

View File

@ -22,7 +22,6 @@
#include "config.h"
#include <math.h>
#include <string.h>
#include "apptypes.h"
@ -35,6 +34,7 @@
#include "layer.h"
#include "layer_pvt.h"
#include "libgimp/gimpmath.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimplimits.h"
@ -3455,10 +3455,10 @@ image_set_resolution_invoker (Argument *args)
if (success)
{
if (isnan (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
isinf (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
isnan (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
isinf (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
if (ISNAN (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
ISINF (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
ISNAN (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
ISINF (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
{
g_message (_("Image resolution is out of bounds,\n"
"using the default resolution instead."));

View File

@ -381,7 +381,9 @@ main (int argc,
/* In case we build this as a windowed application */
#ifdef __GNUC__
#define _stdcall __attribute__((stdcall))
# ifndef _stdcall
# define _stdcall __attribute__((stdcall))
# endif
#endif
int _stdcall

View File

@ -170,7 +170,6 @@ gimp_OBJECTS = \
info_dialog.o \
info_window.o \
ink.o \
install.o \
interface.o \
interface_cmds.o \
internal_procs.o \
@ -248,6 +247,7 @@ gimp_OBJECTS = \
undo_cmds.o \
undo_history.o \
unit_cmds.o \
user_install.o \
xcf.o
# .SUFFIXES: .gc

View File

@ -177,7 +177,6 @@ gimp_OBJECTS = \
info_dialog.obj \
info_window.obj \
ink.obj \
install.obj \
interface.obj \
interface_cmds.obj \
internal_procs.obj \
@ -255,6 +254,7 @@ gimp_OBJECTS = \
undo_cmds.obj \
undo_history.obj \
unit_cmds.obj \
user_install.obj \
xcf.obj
# .SUFFIXES: .gc

View File

@ -277,6 +277,16 @@
# Just uncomment the following line if you trust the dirty flag.
# (trust-dirty-flag)
# Perfect mouse tracking
# GIMP attempts to keep up with the motion of the pointer when
# painting, but when a painting operation is particularly CPU
# intensive the GIMP will miss the subtlety of your painting
# motion and render overly-angular strokes. Enabling 'perfect
# mouse tracking' allows GIMP to track your painting motion
# more evenly, at the expense of lagging behind your brush at
# times of CPU stress.
(perfect-mouse yes)
# Help browser
# Determines which program to use as browser for the GIMP help pages.
# Possible values are "gimp" which means the built-in help browser

View File

@ -277,6 +277,16 @@
# Just uncomment the following line if you trust the dirty flag.
# (trust-dirty-flag)
# Perfect mouse tracking
# GIMP attempts to keep up with the motion of the pointer when
# painting, but when a painting operation is particularly CPU
# intensive the GIMP will miss the subtlety of your painting
# motion and render overly-angular strokes. Enabling 'perfect
# mouse tracking' allows GIMP to track your painting motion
# more evenly, at the expense of lagging behind your brush at
# times of CPU stress.
(perfect-mouse yes)
# Help browser
# Determines which program to use as browser for the GIMP help pages.
# Possible values are "gimp" which means the built-in help browser

View File

@ -192,7 +192,9 @@ struct _GParam
* application.
*/
# ifdef __GNUC__
# define _stdcall __attribute__((stdcall))
# ifndef _stdcall
# define _stdcall __attribute__((stdcall))
# endif
# endif
# define MAIN() \

View File

@ -29,6 +29,10 @@ extern "C" {
#include <math.h>
#ifdef G_OS_WIN32
#include <float.h>
#endif
/* Some portability enhancing stuff. For use both by the gimp app
* as well as plug-ins and modules.
*
@ -76,6 +80,14 @@ extern "C" {
#define gimp_deg_to_rad(angle) ((angle) * (2.0 * G_PI) / 360.0)
#define gimp_rad_to_deg(angle) ((angle) * 360.0 / (2.0 * G_PI))
#ifdef G_OS_WIN32
#define ISNAN(x) _isnan(x)
#define ISINF(x) (_fpclass(x) & (_FPCLASS_NINF | _FPCLASS_PINF))
#else
#define ISNAN(x) isnan(x)
#define ISINF(x) isinf(x)
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@ -115,6 +115,8 @@ gimpenv.o : gimpenv.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimpenv.c
gimpgradient.o : gimpgradient.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimpgradient.c
gimphelp.o : gimphelp.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimphelp.c
gimpimage.o : gimpimage.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimpimage.c
gimplayer.o : gimplayer.c
@ -129,6 +131,8 @@ gimppixelrgn.o : gimppixelrgn.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimppixelrgn.c
gimpprotocol.o : gimpprotocol.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimpprotocol.c
gimpselection.o : gimpselection.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimpselection.c
gimptile.o : gimptile.c
$(CC) $(CFLAGS) -c -DLIBGIMP_COMPILATION gimptile.c
gimpunit.o : gimpunit.c

View File

@ -121,6 +121,8 @@ gimpenv.obj : gimpenv.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimpenv.c
gimpgradient.obj : gimpgradient.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimpgradient.c
gimphelp.obj : gimphelp.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimphelp.c
gimpimage.obj : gimpimage.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimpimage.c
gimplayer.obj : gimplayer.c
@ -135,6 +137,8 @@ gimppixelrgn.obj : gimppixelrgn.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimppixelrgn.c
gimpprotocol.obj : gimpprotocol.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimpprotocol.c
gimpselection.obj : gimpselection.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimpselection.c
gimptile.obj : gimptile.c
$(CC) $(CFLAGS) -GD -c -DLIBGIMP_COMPILATION gimptile.c
gimpunit.obj : gimpunit.c

View File

@ -841,10 +841,16 @@ plug_in_parse_gfig_path (void)
if (return_vals[0].data.d_status != STATUS_SUCCESS ||
return_vals[1].data.d_string == NULL)
{
#ifndef G_OS_WIN32
gchar *gimprc = gimp_personal_rc_file ("gimprc");
g_message ("No gfig-path in gimprc:\n\n"
"You need to add an entry like\n"
"(gfig-path \"${gimp_dir}/gfig:${gimp_data_dir}/gfig\n"
"to your ~/.gimp/gimprc file\n");
"to your %s file\n", gimprc);
g_free (gimprc);
#else
g_message ("No gfig-path in gimprc???\n");
#endif
gimp_destroy_params (return_vals, nreturn_vals);
return;
}
@ -1611,7 +1617,12 @@ create_file_selection (GFigObj *obj,
g_free (dir);
}
else
gtk_file_selection_set_filename (GTK_FILE_SELECTION (window), "/tmp");
{
gchar *tmp = g_get_tmp_dir ();
gtk_file_selection_set_filename (GTK_FILE_SELECTION (window), tmp);
g_free (tmp);
}
if (!GTK_WIDGET_VISIBLE (window))
gtk_widget_show (window);
@ -5097,14 +5108,15 @@ gfig_update_stat_labels (void)
gchar *hm = g_get_home_dir ();
gchar *dfn = g_strdup (current_obj->filename);
#ifdef __EMX__
hm = _fnslashify (hm);
if (hm)
hm = _fnslashify (hm);
#endif
#ifndef __EMX__
if (!strncmp (dfn, hm, strlen (hm)-1))
if (hm != NULL && !strncmp (dfn, hm, strlen (hm)-1))
#else
if (!strnicmp (dfn, hm, strlen (hm)-1))
if (hm != NULL && !strnicmp (dfn, hm, strlen (hm)-1))
#endif
{
strcpy (dfn, "~");

View File

@ -37,7 +37,7 @@ SEPARATE = AlienMap AlienMap2 FractalExplorer Lighting MapObject bmp borderavera
# ../unofficial-plug-ins directory, go there, and do "make -f
# makefile.cygwin unofficial".
UNOFFICIAL = Anamorphose RGB_Displace ccanalyze gimp_ace guash sel_gauss user_filter
UNOFFICIAL = Anamorphose DigitalSignature RGB_Displace ccanalyze gimp_ace guash sel_gauss magiceye user_filter
# The main target
@ -180,6 +180,7 @@ endif
ifdef EXTRA_bmp
OBJECTS = \
bmp.o \
bmpos2.o \
bmpread.o \
bmpwrite.o
endif
@ -482,6 +483,12 @@ ifdef EXTRA_guash
HAVE_RESOURCE = YES
endif
ifdef EXTRA_magiceye
OBJECTS = \
dialog.o \
magiceye.o
endif
ifdef EXTRA_user_filter
uf_lexer.c : uf_lexer.l

View File

@ -36,7 +36,7 @@ SEPARATE = AlienMap AlienMap2 FractalExplorer Lighting MapObject bmp borderavera
# ..\unofficial-plug-ins directory, go there, and do "nmake -f
# makefile.msc unofficial".
UNOFFICIAL = Anamorphose RGB_Displace ccanalyze gimp_ace guash pmosaic sel_gauss user_filter
UNOFFICIAL = Anamorphose DigitalSignature RGB_Displace ccanalyze gimp_ace guash pmosaic sel_gauss user_filter
# The main target
@ -190,6 +190,7 @@ OPTIMIZE =
!IFDEF EXTRA_bmp
OBJECTS = \
bmp.obj \
bmpos2.obj \
bmpread.obj \
bmpwrite.obj
!ENDIF

View File

@ -1212,10 +1212,10 @@ HELP
$invoke{code} = <<'CODE';
{
if (isnan (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
isinf (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
isnan (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
isinf (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
if (ISNAN (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
ISINF (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
ISNAN (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
ISINF (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
{
g_message (_("Image resolution is out of bounds,\n"
"using the default resolution instead."));
@ -1423,8 +1423,8 @@ CODE
}
@headers = qw("config.h" <string.h> <math.h> "gimage.h"
"libgimp/gimpintl.h" "libgimp/gimplimits.h");
@headers = qw("config.h" <string.h> "gimage.h"
"libgimp/gimpmath.h" "libgimp/gimpintl.h" "libgimp/gimplimits.h");
$extra{app}->{code} = <<'CODE';
/* Yuup, this is somewhat unsmooth, to say the least */

View File

@ -1212,10 +1212,10 @@ HELP
$invoke{code} = <<'CODE';
{
if (isnan (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
isinf (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
isnan (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
isinf (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
if (ISNAN (xresolution) || xresolution < GIMP_MIN_RESOLUTION ||
ISINF (xresolution) || xresolution > GIMP_MAX_RESOLUTION ||
ISNAN (yresolution) || yresolution < GIMP_MIN_RESOLUTION ||
ISINF (yresolution) || yresolution > GIMP_MAX_RESOLUTION)
{
g_message (_("Image resolution is out of bounds,\n"
"using the default resolution instead."));
@ -1423,8 +1423,8 @@ CODE
}
@headers = qw("config.h" <string.h> <math.h> "gimage.h"
"libgimp/gimpintl.h" "libgimp/gimplimits.h");
@headers = qw("config.h" <string.h> "gimage.h"
"libgimp/gimpmath.h" "libgimp/gimpintl.h" "libgimp/gimplimits.h");
$extra{app}->{code} = <<'CODE';
/* Yuup, this is somewhat unsmooth, to say the least */