/* * XFunctions.h * * Written By: Brian Powell * (c) 1991, All Rights Reserved. * * This is the header file for the External Functions. This contains all of the function * prototypes contained in the external module library. * */ #define EXTERNAL_FUNCTION_LIBRARY_VERSION_NUM 0x00101 /* Define messages to and from Imagic. */ #define INITIALIZE 0 #define MENU_ITEM 100 #define SHUT_DOWN 200 #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef NIL #define NIL 0L #endif /* Type Definitions for any variables we may need. */ typedef Handle ImageHandle, **ImageList; typedef unsigned char PixelVal, *PixelValPtr; typedef double ScaledVal, *ScaledValPtr; typedef struct { int Version; /* Version of the External Module Library */ Boolean Filter; /* If your function is a filter, TRUE */ int NumOfImages; /* The Number of Images you need in order to work. */ int dummy1; /* Not Implemented. */ int dummy2; /* Not Implemented. */ int dummy3; /* Not Implemented. */ int dummy4; /* Not Implemented. */ int dummy5; /* Not Implemented. */ int dummy6; /* Not Implemented. */ int dummy7; /* Not Implemented. */ } InitStruct; /* Function Prototypes to Imagic */ /* Image Functions */ pascal ImageHandle NewBlankImage(StringPtr, int, int, Boolean, Point*, Point*, short); pascal ImageHandle CopyImage(ImageHandle); pascal Boolean BeginImageWork(ImageHandle, Boolean); pascal void EndImageWork(ImageHandle); pascal void GetImageSize(ImageHandle, int*, int*); pascal int GetPixVal(ImageHandle, int, int); pascal void SetPixVal(ImageHandle, int, int, PixelVal); pascal void GetPixLineVal(ImageHandle, PixelValPtr*, int, int); pascal void SetPixLineVal(ImageHandle, PixelValPtr, int, int); pascal void PixToScaledVal(ImageHandle, PixelValPtr, ScaledValPtr*); pascal void ScaledValToPix(ImageHandle, ScaledValPtr, PixelValPtr*); pascal ImageHandle GetTopImage(); pascal StringPtr GetImageName(ImageHandle); pascal void EraseImage(ImageHandle); pascal void DisposImage(ImageHandle); pascal void GetImageGeography(ImageHandle, Point*, Point*, short*); pascal void PixToLatLon(ImageHandle, int, int, double*, double*); pascal void LatLonToPix(ImageHandle, double, double, int*, int*); pascal void CopyCTable(ImageHandle, ImageHandle); /* User Interface Functions. */ pascal Boolean CreateProgressDialog(StringPtr, int); pascal Boolean UpdateProgressDialog(int); pascal void DisposProgressDialog(); pascal int CreateDialog(StringPtr, StringPtr, StringPtr, StringPtr, Boolean); pascal void MessageDialog(StringPtr, Boolean); pascal ImageHandle **GetImageList(int, int, StringPtr, int*); pascal int GetVersion(); pascal Boolean TextFilter(DialogPtr, EventRecord*, int*); pascal void PlaceWindow(WindowPtr, int, int); pascal void OutlineButton(DialogPtr, int); /* Memory Functions */ pascal Handle CreateNewHandle(Size); pascal Ptr CreateNewPtr(Size); pascal void DestroyHandle(Handle); pascal void DestroyPtr(Ptr); /* XFunction Prototypes */ pascal OSErr Initialize(InitStruct*); pascal OSErr ExecuteMenu(); pascal OSErr Exit(); /* Projection Types */ enum { LINEAR = 1, MERCATOR, POLAR, SPHERICAL, QLSC, CONIC, LAMBERT, ORTHOGRAPHIC, EQUIDISTANT };