magick
|
Colorlist.h,
Imakefile,
Makefile,
Makefile.in,
PreRvIcccm.c,
PreRvIcccm.h,
X.c,
X.h,
XWDFile.h,
colors.c,
compress.c,
compress.h,
decode.c,
effects.c,
encode.c,
error.c,
error.h,
formats.h,
gems.c,
gems.h,
image.c,
image.h,
logo.h,
mac.c,
mac.h,
magick.h,
make.com,
monitor.c,
monitor.h,
nt.c,
nt.h,
plug-ins.h,
quantize.c,
segment.c,
shear.c,
signature.c,
utility.c,
utility.h,
version.h,
vms.c,
vms.h,
widget.c,
widget.h,
|
|
|
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% %
% N N TTTTT %
% NN N T %
% N N N T %
% N NN T %
% N N T %
% %
% Windows NT Utility Routines for ImageMagick. %
% %
% %
% Software Design %
% John Cristy %
% December 1996 %
% %
% %
% Copyright 1997 E. I. du Pont de Nemours and Company %
% %
% Permission to use, copy, modify, distribute, and sell this software and %
% its documentation for any purpose is hereby granted without fee, %
% provided that the above Copyright notice appear in all copies and that %
% both that Copyright notice and this permission notice appear in %
% supporting documentation, and that the name of E. I. du Pont de Nemours %
% and Company not be used in advertising or publicity pertaining to %
% distribution of the software without specific, written prior %
% permission. E. I. du Pont de Nemours and Company makes no representations %
% about the suitability of this software for any purpose. It is provided %
% "as is" without express or implied warranty. %
% %
% E. I. du Pont de Nemours and Company disclaims all warranties with regard %
% to this software, including all implied warranties of merchantability %
% and fitness, in no event shall E. I. du Pont de Nemours and Company be %
% liable for any special, indirect or consequential damages or any %
% damages whatsoever resulting from loss of use, data or profits, whether %
% in an action of contract, negligence or other tortious action, arising %
% out of or in connection with the use or performance of this software. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
*/
#if defined(WIN32)
/*
Include declarations.
*/
#include
#include
#include
#include
#include "nt.h"
/*
External declarations.
*/
extern "C" BOOL WINAPI
DllMain(HINSTANCE hInst,DWORD wDataSeg,LPVOID lpvReserved);
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% c l o s e d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function closedir closes the named directory stream and frees the DIR
% structure.
%
% The format of the closedir routine is:
%
% closedir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
void closedir(DIR *entry)
{
assert(entry != (DIR *) NULL);
FindClose(entry->hSearch);
free((char *) entry);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% E x i t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function Exit calls TerminateProcess for Win95.
%
% The format of the Exit routine is:
%
% Exit(status)
%
% A description of each parameter follows:
%
% o status: an integer value representing the status of the terminating
% process.
%
%
*/
__declspec(dllexport) int Exit(int status)
{
OSVERSIONINFO
version_info;
version_info.dwOSVersionInfoSize=sizeof(version_info);
if (GetVersionEx(&version_info) &&
(version_info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS))
TerminateProcess(GetCurrentProcess(),(unsigned int) status);
exit(status);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% o p e n d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function opendir opens the directory named by filename and associates
% a directory stream with it.
%
% The format of the opendir routine is:
%
% opendir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
DIR *opendir(char *path)
{
char
file_specification[2048];
DIR
*entry;
assert(path != (char *) NULL);
(void) strcpy(file_specification,path);
(void) strcat(file_specification,"/*.*");
entry=(DIR *) malloc(sizeof(DIR));
if (entry != (DIR *) NULL)
entry->hSearch=
FindFirstFile(file_specification,&entry->Win32FindData);
return(entry);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% r e a d d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function readdir returns a pointer to a structure representing the
% directory entry at the current position in the directory stream to
% which entry refers.
%
% The format of the readdir
%
% readdir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
struct dirent *readdir(DIR *entry)
{
int
status;
static dirent
file_info;
status=FindNextFile(entry->hSearch,&entry->Win32FindData);
if (status == 0)
return((struct dirent *) NULL);
(void) strcpy(file_info.d_name,entry->Win32FindData.cFileName);
file_info.d_namlen=strlen(file_info.d_name);
return(&file_info);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% s e e k d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function seekdir sets the position of the next readdir() operation
% on the directory stream.
%
% The format of the seekdir routine is:
%
% closedir(entry,position)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
% o position: specifies the position associated with the directory
% stream.
%
%
%
*/
void seekdir(DIR *entry,long position)
{
assert(entry != (DIR *) NULL);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% s y s t e m N T %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function systemNT executes the specified command and waits until it
% terminates. The returned value is the exit status of the command.
%
% The format of the systemNT routine is:
%
% systemNT(command)
%
% A description of each parameter follows:
%
% o command: This string is the command to execute.
%
%
*/
__declspec(dllexport) int systemNT(char *command)
{
char
local_command[2048];
DWORD
child_status;
int
status;
PROCESS_INFORMATION
process_info;
STARTUPINFO
startup_info;
unsigned int
background_process;
if (command == (char *) NULL)
return(-1);
GetStartupInfo(&startup_info);
startup_info.dwFlags=STARTF_USESHOWWINDOW;
startup_info.wShowWindow=SW_SHOWMINNOACTIVE;
(void) strcpy(local_command,command);
background_process=command[strlen(command)-1] == '&';
if (background_process)
local_command[strlen(command)-1]='\0';
if (command[strlen(command)-1] == '|')
local_command[strlen(command)-1]='\0';
else
startup_info.wShowWindow=SW_SHOWDEFAULT;
status=CreateProcess((LPCTSTR) NULL,local_command,
(LPSECURITY_ATTRIBUTES) NULL,(LPSECURITY_ATTRIBUTES) NULL,(BOOL) FALSE,
(DWORD) NORMAL_PRIORITY_CLASS,(LPVOID) NULL,(LPCSTR) NULL,&startup_info,
&process_info);
if (status == 0)
return(-1);
if (background_process)
return(status == 0);
status=WaitForSingleObject(process_info.hProcess,INFINITE);
if (status != WAIT_OBJECT_0)
return(status);
status=GetExitCodeProcess(process_info.hProcess,&child_status);
if (status == 0)
return(-1);
CloseHandle(process_info.hProcess);
CloseHandle(process_info.hThread);
return((int) child_status);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% t e l l d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function telldir returns the current location associated with the
% named directory stream.
%
% The format of the telldir routine is:
%
% telldir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
long telldir(DIR *entry)
{
assert(entry != (DIR *) NULL);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% D l l M a i n %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function Dllmain is the entry point for the ImageMagick DLL library.
%
%
*/
BOOL WINAPI DllMain(HINSTANCE hInst,DWORD wDataSeg,LPVOID lpReserved)
{
switch(wDataSeg)
{
case DLL_PROCESS_ATTACH:
return(1);
case DLL_PROCESS_DETACH:
break;
default:
return(1);
}
return(0);
}
#endif
|