10 #define CACHE_THRESHOLD 4000000L
11 /* maximum size of cache, allowed for raster files */
13 #define MAX_PALETTE_SIZE 20480
14 /* The size of palette file wihch never would be exceeded
15 (256 lines, 80 chars each - is it enough?)
18 /* This header file contain all definition of routines,
19 which implements EPTcl commands. Neccessary for Eptcl_Init
22 void Fgis_DefDeleteProc(ClientData client_data);
23 /* Empty command delete proc */
25 /* Argument parsing and checking*/
27 int Fgis_GetInt(Tcl_Interp *interp,int argc,char **argv,int index,
28 int min, int max,int *result, char *name);
29 /* Fetches int argument from argv array at index, checking for its presence,
30 format and range. Puts into result. name is descriptive name for errir
33 int Fgis_GetLimits(Tcl_Interp *interp,char *list,double *X1,double *Y1,
34 double *X2,double *Y2);
35 /* Parses four element list of doubles, representing region on map or
37 int Fgis_CkArgs(Tcl_Interp *interp,int cond, char *cmd, char *msg);
39 * Palette - related procedures
41 PATTERNS Fgis_GetPatterns(Tcl_Interp *interp,char *name);
43 int Fgis_Palette(ClientData data,Tcl_Interp *interp,int argc,char **argv);
44 /* palette object construction */
46 int Fgis_PaletteObj(ClientData data,Tcl_Interp *interp,int argc,char **argv);
47 /* Command procedure for palette object command */
49 void Fgis_DeletePalette(ClientData data);
50 /* all the same for pattern sets */
51 int Fgis_CreatePatterns(ClientData data,Tcl_Interp *interp,int argc,char **argv);
52 int Fgis_PatternObj(ClientData data,Tcl_Interp *interp, int argc, char **argv);
53 void Fgis_DeletePatterns(ClientData data);
55 * Accessible from other modules Returns palette, corresponding with
56 * tcl command name in interp. Don't try to fool it, passing non palette-object
57 * command! Returns NULL and leaves message in interpreter in case of error.
59 PALETTE Fgis_GetPalette(Tcl_Interp *interp, char *name);
60 /* Allows to fetch palette, if its Tcl name is given */
62 /* Raster related stuff */
64 int Fgis_Raster(ClientData data,Tcl_Interp *interp,int argc,char **argv);
65 /* implements raster command */
66 int Fgis_RasterObj(ClientData data,Tcl_Interp *interp,int argc, char **argv);
67 /* implements object command of raster objects */
69 void Fgis_DeleteRaster(ClientData data);
70 /* delete proc for command raster - desroys global tables*/
71 void Fgis_DeleteRasterObj(ClientData data);
72 /* delete proc for raster object command - destroys raster itself*/
74 RASTER_OBJECT Fgis_GetRaster(Tcl_Interp *interp, char *name);
75 /* vector related stuff */
77 int Fgis_Vector(ClientData data,Tcl_Interp *interp,int argc,char **argv);
78 int Fgis_VectorObj(ClientData data,Tcl_Interp *interp,int argc,char **argv);
79 void Fgis_DeleteVectorObj(ClientData data);
81 /* projection object */
82 int Fgis_Projection(ClientData data,Tcl_Interp* interp,int argc, char **argv);
83 int Fgis_ProjObject(ClientData data,Tcl_Interp* interp,int argc, char **argv);
84 void Fgis_DeleteProj(ClientData data);
87 int Fgis_RasterImage(ClientData data,Tcl_Interp* interp,int argc,
91 /* Planchet methods */
92 int Fgis_MapX(ClientData data,Tcl_Interp* interp,int argc, char **argv);
93 int Fgis_MapY(ClientData data,Tcl_Interp* interp,int argc, char **argv);
94 int Fgis_ScrY(ClientData data,Tcl_Interp* interp,int argc, char **argv);
95 int Fgis_ScrX(ClientData data,Tcl_Interp* interp,int argc, char **argv);
96 int Fgis_Fit(ClientData data,Tcl_Interp* interp,int argc, char **argv);
98 /* Functions for access planchet from C code */
99 double Fgis_AltX(Tcl_Interp *interp,char *planchet ,int x);
100 double Fgis_AltY(Tcl_Interp *interp,char *planchet ,int y);
101 int Fgis_PlanchetX(Tcl_Interp *interp, char *planchet ,double x);
102 int Fgis_PlanchetY(Tcl_Interp *interp, char *planchet ,double y);
103 int Fgis_ValidPlanchet(Tcl_Interp *interp, char *planchet);
104 int Fgis_CreateObjectCommand(Tcl_Interp *interp,char *prefix,
105 Tcl_CmdProc *proc,ClientData data, Tcl_CmdDeleteProc deleteProc);
108 /* Makes dynamically allocante copy of string, using Tcl allocator */
109 #define stralloc(x) (strcpy(Tcl_Alloc(strlen(x)+1),x))
111 /* Body of non-implemented procedure. When it goes away, I would be
113 #define NOT_YET {Tcl_SetResult(interp,"Not implemented yet",TCL_STATIC); return TCL_ERROR;}
115 /* Set result and return error */
116 #define ERROR_MESSAGE(msg,mode) {Tcl_SetResult(interp,msg,mode);return TCL_ERROR;}
118 /* Set result and return success */
119 #define RETURN(value,mode) {Tcl_SetResult(interp,value,mode);return TCL_OK;}
120 /* Given raster object, returns EPP* */
121 #define epp(x) (x->file->e)