]> www.wagner.pp.ru Git - oss/fgis.git/blob - dll/fgis.h
First checked in version
[oss/fgis.git] / dll / fgis.h
1 #ifndef FGIS_H
2 #define FGIS_H
3
4 #include <tcl.h>
5 #include <epp.h>
6 #include <reclass.h>
7 #include "fgisInt.h"
8
9
10 #define CACHE_THRESHOLD 4000000L 
11 /* maximum size of cache, allowed for raster files */
12
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?)
16  */
17
18 /* This header file contain all definition of routines,
19   which implements EPTcl commands. Neccessary for Eptcl_Init 
20  */
21
22 void Fgis_DefDeleteProc(ClientData client_data);
23 /* Empty command delete proc */
24
25 /* Argument parsing and checking*/
26
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
31    reporting 
32  */  
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
36    window */
37 int Fgis_CkArgs(Tcl_Interp *interp,int cond, char *cmd, char *msg);
38 /*
39  * Palette - related procedures
40  */
41 PATTERNS Fgis_GetPatterns(Tcl_Interp *interp,char *name);
42
43 int Fgis_Palette(ClientData data,Tcl_Interp *interp,int argc,char **argv);
44 /* palette object construction */
45
46 int Fgis_PaletteObj(ClientData data,Tcl_Interp *interp,int argc,char **argv);
47 /* Command procedure for palette object command */
48
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);
54 /*
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. 
58  */
59 PALETTE Fgis_GetPalette(Tcl_Interp *interp, char *name);
60 /* Allows to fetch palette, if its Tcl name is given */
61
62 /* Raster related stuff */
63
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 */
68
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*/
73
74 RASTER_OBJECT Fgis_GetRaster(Tcl_Interp *interp, char *name);
75 /* vector related stuff */
76
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);
80
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);
85 /* Drawing objects */
86
87 int Fgis_RasterImage(ClientData data,Tcl_Interp* interp,int argc,
88  char **argv);
89
90
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);
97
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);
106 /* handy defines */
107
108 /* Makes dynamically allocante copy of string, using Tcl allocator */
109 #define stralloc(x) (strcpy(Tcl_Alloc(strlen(x)+1),x))
110
111 /* Body of non-implemented procedure. When it goes away, I would be
112   VERY happy*/
113 #define NOT_YET {Tcl_SetResult(interp,"Not implemented yet",TCL_STATIC); return TCL_ERROR;}
114
115 /* Set result and return error */
116 #define ERROR_MESSAGE(msg,mode) {Tcl_SetResult(interp,msg,mode);return TCL_ERROR;}
117
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)
122 #endif