home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume34
/
imagemagick
/
patch05
< prev
next >
Wrap
Text File
|
1993-01-18
|
25KB
|
750 lines
Newsgroups: comp.sources.misc
From: cristy@eplrx7.es.duPont.com (John Cristy)
Subject: v34i118: imagemagick - X11 image processing and display v2.2, Patch05
Message-ID: <1993Jan18.181705.26370@sparky.imd.sterling.com>
X-Md4-Signature: bd0f74bf8bcdca4984cbbdaefd434be6
Date: Mon, 18 Jan 1993 18:17:05 GMT
Approved: kent@sparky.imd.sterling.com
Submitted-by: cristy@eplrx7.es.duPont.com (John Cristy)
Posting-number: Volume 34, Issue 118
Archive-name: imagemagick/patch05
Environment: UNIX, VMS, X11, SGI, DEC, Cray, Sun, Vax
Patch-To: imagemagick: Volume 34, Issue 28-54
ImageMagick 2.2 Patch #5
To apply this patch:
cd to the top of the source tree (to the directory containing the
"ImageMagick" subdirectories) and do:
patch -p < ThisFile
Prereq - ImageMagick 2.2.2 (posted from comp.sources.misc, Volume 34,
Issue 28 + Patch 1-4).
Alternatively get the entire distribution as contrib/ImageMagick.tar.Z
on export.lcs.mit.edu.
diff -r -c ImageMagick/ChangeLog ImageMagick2.2.5/ChangeLog
*** ImageMagick/ChangeLog Wed Jan 6 17:57:53 1993
--- ImageMagick2.2.5/ChangeLog Wed Jan 13 16:59:28 1993
***************
*** 1,3 ****
--- 1,15 ----
+ ImageMagick 2.2.5
+
+ o Keyboard accelerators did not work with -backdrop option.
+
+ o xtp failed under Solaris 2.1.
+
+ o I486 compiler complained about includes within a function body of
+ xtp/network.c (thanks to glenn@physics.su.OZ.AU).
+
+ o I486 compiler complained about XWDfile.h be included twice (ReadXWD &
+ WriteXWD) (thanks to glenn@physics.su.OZ.AU)
+
ImageMagick 2.2.4
o time between images did not always match the value specified on
***************
*** 5,12 ****
o Sped up and reduced memory requirement of dithering.
! o GIF files were corrupted on SVR4.
!
ImageMagick 2.2.3
--- 17,23 ----
o Sped up and reduced memory requirement of dithering.
! o GIF images were corrupted on SVR4 (thanks to glenn@physics.su.OZ.AU).
ImageMagick 2.2.3
diff -r -c ImageMagick/alien.c ImageMagick2.2.5/alien.c
*** ImageMagick/alien.c Wed Jan 6 17:56:07 1993
--- ImageMagick2.2.5/alien.c Wed Jan 13 16:58:10 1993
***************
*** 56,61 ****
--- 56,62 ----
#include "alien.h"
#include "compress.h"
#include "X.h"
+ #include "XWDFile.h"
/*
Global declarations.
***************
*** 3969,3976 ****
AlienInfo
*alien_info;
{
- #include "XWDFile.h"
-
char
*window_name;
--- 3970,3975 ----
***************
*** 6193,6200 ****
Image
*image;
{
- #include "XWDFile.h"
-
int
x;
--- 6192,6197 ----
diff -r -c ImageMagick/compress.c ImageMagick2.2.5/compress.c
*** ImageMagick/compress.c Wed Jan 6 17:56:07 1993
--- ImageMagick2.2.5/compress.c Wed Jan 13 16:58:10 1993
***************
*** 48,63 ****
% Functions LZWEncodeImage and LZWDecodeImage is based on the GIF image
% format specifications.
%
! % Functions QEncodeImage and QDecodeImage is based on the document
! % "JPEG-9-R6 Working Draft for Development of JPEG CD", January 1992.
! % These routines only implement the lossless JPEG compression algorithm in
! % a non-standard fashion. They can only be used to code and decode MIFF
! % images.
%
- % Images are compressed using a simple predictive method. The predictor
- % combines three neighboring samples (A, B, and C) to form a prediction
- % of the sample X:
- %
% C B
% A X
%
--- 48,57 ----
% Functions LZWEncodeImage and LZWDecodeImage is based on the GIF image
% format specifications.
%
! % Functions QEncodeImage and QDecodeImage use a simple predictive method.
! % The predictor combines three neighboring samples (A, B, and C) to form a
! % prediction of the sample X:
%
% C B
% A X
%
***************
*** 1393,1400 ****
%
% The format of the QEncodeImage routine is:
%
! % count=QEncodeImage(pixels,compressed_pixels,number_columns,
! % number_rows)
%
% A description of each parameter follows:
%
--- 1387,1393 ----
%
% The format of the QEncodeImage routine is:
%
! % count=QEncodeImage(pixels,compressed_pixels,number_columns,number_rows)
%
% A description of each parameter follows:
%
diff -r -c ImageMagick/display.c ImageMagick2.2.5/display.c
*** ImageMagick/display.c Wed Jan 6 17:56:08 1993
--- ImageMagick2.2.5/display.c Wed Jan 13 16:58:11 1993
***************
*** 2777,2784 ****
(void) fprintf(stderr,"Window id: 0x%lx (backdrop)\n",
window->backdrop.id);
XMapWindow(display,window->backdrop.id);
- XInstallColormap(display,map_info->colormap);
- XSetInputFocus(display,window->backdrop.id,RevertToNone,CurrentTime);
XClearWindow(display,window->backdrop.id);
/*
Position image in the center the backdrop.
--- 2777,2782 ----
***************
*** 2786,2798 ****
window->image.flags|=USPosition;
window->image.x=0;
width=displayed_image->columns+window->image.border_width;
! if (width < XDisplayWidth(display,visual_info->screen))
! window->image.x=XDisplayWidth(display,visual_info->screen)/2-width/2;
window->image.y=0;
height=displayed_image->rows+window->image.border_width;
! if (height < XDisplayHeight(display,visual_info->screen))
! window->image.y=XDisplayHeight(display,visual_info->screen)/2-height/2;
! if (window->backdrop.id != (Window) NULL)
{
XDestroyWindow(display,window->image.id);
window->image.id=(Window) NULL;
--- 2784,2798 ----
window->image.flags|=USPosition;
window->image.x=0;
width=displayed_image->columns+window->image.border_width;
! if (width > XDisplayWidth(display,window->image.screen))
! width=(XDisplayWidth(display,window->image.screen)*7) >> 3;
! window->image.x=XDisplayWidth(display,visual_info->screen)/2-width/2;
window->image.y=0;
height=displayed_image->rows+window->image.border_width;
! if (height > XDisplayHeight(display,window->image.screen))
! height=(XDisplayHeight(display,window->image.screen)*7) >> 3;
! window->image.y=XDisplayHeight(display,visual_info->screen)/2-height/2;
! if (window->image.id != (Window) NULL)
{
XDestroyWindow(display,window->image.id);
window->image.id=(Window) NULL;
***************
*** 2813,2819 ****
class_hint,manager_hints,delete_property,&window->image);
if (resource_info->debug)
(void) fprintf(stderr,"Window id: 0x%lx (image)\n",window->image.id);
! *state|=ReconfigureImageState;
window->image.x=0;
window->image.y=0;
/*
--- 2813,2820 ----
class_hint,manager_hints,delete_property,&window->image);
if (resource_info->debug)
(void) fprintf(stderr,"Window id: 0x%lx (image)\n",window->image.id);
! if (window->backdrop.id == (Window) NULL)
! *state|=ReconfigureImageState;
window->image.x=0;
window->image.y=0;
/*
***************
*** 3156,3168 ****
if (map_info->colormap != XDefaultColormap(display,visual_info->screen))
if (event.xcrossing.mode != NotifyUngrab)
XInductColormap(display,map_info->colormap);
- if (window->backdrop.id != (Window) NULL)
- if (event.xbutton.window == window->image.id)
- {
- XInstallColormap(display,map_info->colormap);
- XSetInputFocus(display,window->image.id,RevertToNone,CurrentTime);
- break;
- }
break;
}
case Expose:
--- 3157,3162 ----
***************
*** 3284,3289 ****
--- 3278,3289 ----
(void) fprintf(stderr,"Map Notify: 0x%lx\n",event.xmap.window);
if (event.xmap.window == window->image.id)
{
+ if (window->backdrop.id != (Window) NULL)
+ {
+ XInstallColormap(display,map_info->colormap);
+ XSetInputFocus(display,window->image.id,RevertToNone,
+ CurrentTime);
+ }
if ((window->image.width < window->image.ximage->width) ||
(window->image.height < window->image.ximage->height))
XMapRaised(display,window->pan.id);
diff -r -c ImageMagick/display.h ImageMagick2.2.5/display.h
*** ImageMagick/display.h Wed Jan 6 17:56:09 1993
--- ImageMagick2.2.5/display.h Wed Jan 13 17:02:15 1993
***************
*** 51,55 ****
*/
#ifndef lint
static char
! Version[]="@(#)ImageMagick 2.2.3 93/01/01 cristy@dupont.com";
#endif
--- 51,55 ----
*/
#ifndef lint
static char
! Version[]="@(#)ImageMagick 2.2.5 93/01/13 cristy@dupont.com";
#endif
diff -r -c ImageMagick/image.c ImageMagick2.2.5/image.c
*** ImageMagick/image.c Wed Jan 6 17:56:08 1993
--- ImageMagick2.2.5/image.c Wed Jan 13 16:58:11 1993
***************
*** 89,95 ****
%
% o allocated_image: Function AllocateImage returns a pointer to an image
% structure initialized to default values. A null image is returned if
! % there is a a memory shortage or if the image cannot be read.
%
% o magick: Specifies the image format (i.e. MIFF, GIF, JPEG, etc.).
%
--- 89,95 ----
%
% o allocated_image: Function AllocateImage returns a pointer to an image
% structure initialized to default values. A null image is returned if
! % there is a memory shortage.
%
% o magick: Specifies the image format (i.e. MIFF, GIF, JPEG, etc.).
%
Common subdirectories: ImageMagick/images and ImageMagick2.2.5/images
diff -r -c ImageMagick/miff.man ImageMagick2.2.5/miff.man
*** ImageMagick/miff.man Wed Jan 6 17:55:54 1993
--- ImageMagick2.2.5/miff.man Wed Jan 13 16:58:26 1993
***************
*** 146,153 ****
intensity value (and optional alpha value) is encoded using the predictive
arithmetic compression algorithm. Use the \fBpackets\fP keyword to specify
the total number of arithimetic encoded packets that comprise the image.
- Refer to "JPEG-9-R6 Working Draft for Development of JPEG CD", January
- 1992, for implementation specific details.
.PP
If \fBcompression\fP is \fIRunlengthEncoded\fP, each red, green, and
blue byte intensity value (and optional alpha value) is followed by a
--- 146,151 ----
diff -r -c ImageMagick/montage.man ImageMagick2.2.5/montage.man
*** ImageMagick/montage.man Wed Jan 6 17:55:54 1993
--- ImageMagick2.2.5/montage.man Wed Jan 13 16:58:27 1993
***************
*** 192,198 ****
.B replace
The resulting image is \fIcomposite image\fP replaced with \fIimage\fP.
Here the alpha information is ignored.
! .PP
The image compositor requires an alpha, or matte channel in the image
for some operations. This extra channel usually defines a mask which
represents a sort of a cookie-cutter for the image. This is the case
--- 192,198 ----
.B replace
The resulting image is \fIcomposite image\fP replaced with \fIimage\fP.
Here the alpha information is ignored.
!
The image compositor requires an alpha, or matte channel in the image
for some operations. This extra channel usually defines a mask which
represents a sort of a cookie-cutter for the image. This is the case
Common subdirectories: ImageMagick/scenes and ImageMagick2.2.5/scenes
Common subdirectories: ImageMagick/utilities and ImageMagick2.2.5/utilities
Common subdirectories: ImageMagick/xtp and ImageMagick2.2.5/xtp
diff -r -c ImageMagick/utilities/convert.c ImageMagick2.2.5/utilities/convert.c
*** ImageMagick/utilities/convert.c Wed Jan 6 17:56:31 1993
--- ImageMagick2.2.5/utilities/convert.c Wed Jan 13 16:58:40 1993
***************
*** 44,50 ****
%
% The convert program syntax is:
%
! % Usage: convert [options ...] file
%
% Where options include:
% -alpha store alpha channel if the image has one
--- 44,50 ----
%
% The convert program syntax is:
%
! % Usage: convert [options ...] input_file output_file
%
% Where options include:
% -alpha store alpha channel if the image has one
***************
*** 257,265 ****
--- 257,267 ----
colorspace=RGBColorspace;
compression=UndefinedCompression;
dither=False;
+ image=(Image *) NULL;
number_colors=0;
quality=0;
scene=0;
+ start_time=time((time_t *) 0);
tree_depth=0;
verbose=False;
/*
***************
*** 270,276 ****
{
option=argv[i];
if (((int) strlen(option) < 2) || ((*option != '-') && (*option != '+')))
! filename=argv[i];
else
switch(*(option+1))
{
--- 272,289 ----
{
option=argv[i];
if (((int) strlen(option) < 2) || ((*option != '-') && (*option != '+')))
! {
! /*
! Read input image.
! */
! filename=option;
! (void) strcpy(alien_info.filename,filename);
! if (image != (Image *) NULL)
! Error("input image already specified",filename);
! image=ReadAlienImage(&alien_info);
! if (image == (Image *) NULL)
! exit(1);
! }
else
switch(*(option+1))
{
***************
*** 448,460 ****
}
}
}
- if (filename == (char *) NULL)
- Error("missing an image file name",(char *) NULL);
- start_time=time((time_t *) 0);
- (void) strcpy(alien_info.filename,filename);
- image=ReadAlienImage(&alien_info);
if (image == (Image *) NULL)
! exit(1);
/*
Write images.
*/
--- 461,468 ----
}
}
}
if (image == (Image *) NULL)
! Error("missing an image file name",(char *) NULL);
/*
Write images.
*/
diff -r -c ImageMagick/xtp/network.c ImageMagick2.2.5/xtp/network.c
*** ImageMagick/xtp/network.c Wed Jan 6 17:56:41 1993
--- ImageMagick2.2.5/xtp/network.c Wed Jan 13 16:58:56 1993
***************
*** 47,52 ****
--- 47,57 ----
#include "xtp.h"
#include "regular.h"
#include <unistd.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <netdb.h>
+ #include <arpa/inet.h>
+
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************
*** 81,91 ****
char
*name;
{
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <netdb.h>
- #include <arpa/inet.h>
-
char
info[2048],
*p;
--- 86,91 ----
Only in ImageMagick2.2.5/xtp: xtp
diff -r -c ImageMagick/xtp/xtp.c ImageMagick2.2.5/xtp/xtp.c
*** ImageMagick/xtp/xtp.c Wed Jan 6 17:56:42 1993
--- ImageMagick2.2.5/xtp/xtp.c Wed Jan 13 16:58:57 1993
***************
*** 252,260 ****
Condition slave tty line.
*/
(void) tcgetattr(slave,&attributes);
! attributes.c_cflag|=HUPCL;
! attributes.c_lflag&=(~(ICANON | ECHO));
attributes.c_oflag&=(~OPOST);
(void) tcflush(slave,TCIFLUSH);
(void) tcsetattr(slave,TCSANOW,&attributes);
/*
--- 252,265 ----
Condition slave tty line.
*/
(void) tcgetattr(slave,&attributes);
! attributes.c_iflag&=(~(BRKINT | IGNPAR | PARMRK | INPCK | ISTRIP | INLCR |
! IGNCR | ICRNL | IXON));
! attributes.c_iflag|=IGNBRK | IXOFF;
attributes.c_oflag&=(~OPOST);
+ attributes.c_lflag&=
+ (~(ECHO | ECHOE | ECHOK | ECHONL | ICANON | ISIG | NOFLSH | TOSTOP));
+ attributes.c_cflag&=(~(CSIZE | CSTOPB | HUPCL | PARENB));
+ attributes.c_cflag|=CLOCAL | CREAD | CS8;
(void) tcflush(slave,TCIFLUSH);
(void) tcsetattr(slave,TCSANOW,&attributes);
/*
***************
*** 376,381 ****
--- 381,387 ----
*/
(void) tcgetattr(master,&attributes);
attributes.c_lflag&=(~(ICANON | ECHO));
+ (void) tcflush(master,TCIFLUSH);
(void) tcsetattr(master,TCSANOW,&attributes);
return;
}
***************
*** 499,507 ****
*/
(void) sprintf(command,"get %s",filename);
if (strcmp(filename+strlen(filename)-2,".Z"))
! (void) strcat(command," -\r");
else
! (void) strcat(command," |zcat\r");
(void) write(master,command,strlen(command));
(void) fprintf(stdout,"%s:\n",filename);
while (response=Wait())
--- 505,513 ----
*/
(void) sprintf(command,"get %s",filename);
if (strcmp(filename+strlen(filename)-2,".Z"))
! (void) strcat(command," -\n");
else
! (void) strcat(command," |zcat\n");
(void) write(master,command,strlen(command));
(void) fprintf(stdout,"%s:\n",filename);
while (response=Wait())
***************
*** 594,600 ****
/*
Obtain a time sorted recursive directory if available.
*/
! (void) strcpy(command,"get ls-ltR.Z |zcat\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
--- 600,606 ----
/*
Obtain a time sorted recursive directory if available.
*/
! (void) strcpy(command,"get ls-ltR.Z |zcat\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
***************
*** 605,611 ****
Obtain a recursive directory if available.
*/
while (Wait());
! (void) strcpy(command,"get ls-lR.Z |zcat\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
--- 611,617 ----
Obtain a recursive directory if available.
*/
while (Wait());
! (void) strcpy(command,"get ls-lR.Z |zcat\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
***************
*** 625,631 ****
Determine if the FTP server has unix-style filenames.
*/
mode_expression=CompileRegularExpression("^.[rwx-][rwx-][rwx-]");
! (void) strcpy(command,"dir\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (!unix_filesystem)
--- 631,637 ----
Determine if the FTP server has unix-style filenames.
*/
mode_expression=CompileRegularExpression("^.[rwx-][rwx-][rwx-]");
! (void) strcpy(command,"dir\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (!unix_filesystem)
***************
*** 636,647 ****
Obtain recursive directory listing with the FTP directory command.
*/
if (prune)
! (void) strcpy(command,"dir\r");
else
if (unix_filesystem)
! (void) strcpy(command,"ls -ltR\r");
else
! (void) strcpy(command,"ls [...]\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
--- 642,653 ----
Obtain recursive directory listing with the FTP directory command.
*/
if (prune)
! (void) strcpy(command,"dir\n");
else
if (unix_filesystem)
! (void) strcpy(command,"ls -ltR\n");
else
! (void) strcpy(command,"ls [...]\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 0) || (status == 5))
***************
*** 652,658 ****
Directory command has limited functionality.
*/
while (Wait());
! (void) strcpy(command,"dir\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (status == 0)
--- 658,664 ----
Directory command has limited functionality.
*/
while (Wait());
! (void) strcpy(command,"dir\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (status == 0)
***************
*** 855,861 ****
get remote-file
*/
(void) MakeDirectory(filename);
! (void) sprintf(command,"get %s\r",filename);
(void) write(master,command,strlen(command));
while (response=Wait())
if (status == 0)
--- 861,867 ----
get remote-file
*/
(void) MakeDirectory(filename);
! (void) sprintf(command,"get %s\n",filename);
(void) write(master,command,strlen(command));
while (response=Wait())
if (status == 0)
***************
*** 1229,1235 ****
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) sprintf(command,"user %s %s\r",user,ident);
(void) write(master,command,strlen(command));
while (response=Wait())
{
--- 1235,1241 ----
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) sprintf(command,"user %s %s\n",user,ident);
(void) write(master,command,strlen(command));
while (response=Wait())
{
***************
*** 1245,1251 ****
/*
Change remote working directory.
*/
! (void) sprintf(command,"cd %s\r",home_directory);
(void) write(master,command,strlen(command));
while (response=Wait())
{
--- 1251,1257 ----
/*
Change remote working directory.
*/
! (void) sprintf(command,"cd %s\n",home_directory);
(void) write(master,command,strlen(command));
while (response=Wait())
{
***************
*** 1254,1260 ****
if (status == 5)
Error("no such directory",home_directory);
}
! (void) strcpy(command,"pwd\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
--- 1260,1266 ----
if (status == 5)
Error("no such directory",home_directory);
}
! (void) strcpy(command,"pwd\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
***************
*** 1265,1276 ****
/*
Set file transfer type.
*/
! (void) strcpy(command,"binary\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) strcpy(command,"type\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
--- 1271,1282 ----
/*
Set file transfer type.
*/
! (void) strcpy(command,"binary\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) strcpy(command,"type\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
***************
*** 1281,1287 ****
/*
Ensure retrieved files are unique.
*/
! (void) strcpy(command,"runique\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
--- 1287,1293 ----
/*
Ensure retrieved files are unique.
*/
! (void) strcpy(command,"runique\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
***************
*** 1294,1311 ****
/*
Process send request.
*/
! (void) strcpy(command,"glob on\r");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) sprintf(command,"mput %s\r",send_expression);
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 5) || verbose)
(void) fprintf(stderr,"%s\n",response);
}
! (void) strcpy(command,"quit\r");
(void) write(master,command,strlen(command));
/*
Wait for child to finish.
--- 1300,1317 ----
/*
Process send request.
*/
! (void) strcpy(command,"glob on\n");
(void) write(master,command,strlen(command));
while (response=Wait())
if (verbose)
(void) fprintf(stderr,"%s\n",response);
! (void) sprintf(command,"mput %s\n",send_expression);
(void) write(master,command,strlen(command));
while (response=Wait())
if ((status == 5) || verbose)
(void) fprintf(stderr,"%s\n",response);
}
! (void) strcpy(command,"quit\n");
(void) write(master,command,strlen(command));
/*
Wait for child to finish.
--
cristy@dupont.com
exit 0 # Just in case...