3 *initialization procedure for Fgis package
4 * Copyright (C) by SoftWeyr, 1997
15 int check_for_rc(Tcl_Interp *interp,char *home,char *path);
16 /* Global variables */
19 * Initialization procedure for Environmental Planning Tcl extension
20 * Return value TCL_OK if success
22 * defines commands raster vector palette fgisPlanchet_mapx fgisPlanchet_mapy
23 * fgisPlanchet_scrx fgisPlanchet_scry fgisPlanchet_fit defaultpalette
24 * defines default (1:1) reclass table
25 * defines fGIS_HOME variable to directory, containing fgis.rc
26 * Directories are searched in following order
27 * FGIS_HOME as defined in Makefile
31 EXPORT(int, Fgis_Init)(Tcl_Interp *interp)
35 /* Defining commands */
38 if (!Tcl_CreateCommand(interp,"palette",Fgis_Palette,NULL,
41 if (!Tcl_CreateCommand(interp,"defaultpalette",Fgis_PaletteObj,
42 (ClientData)default_palette,Fgis_DeletePalette))
45 if (!Tcl_CreateCommand(interp,"patterns",Fgis_CreatePatterns,
46 NULL,Fgis_DefDeleteProc))
49 if (!Tcl_CreateCommand(interp,"raster",Fgis_Raster,
50 NULL,Fgis_DeleteRaster))
53 if (!Tcl_CreateCommand(interp,"vector",Fgis_Vector,NULL,Fgis_DefDeleteProc))
55 /* Tk dependent fgis commands. Should eventually go into separate package*/
57 if (!Tcl_CreateCommand(interp,"fgisRasterColorImage",Fgis_RasterImage,
58 (ClientData)1,Fgis_DefDeleteProc)) return TCL_ERROR;
59 if (!Tcl_CreateCommand(interp,"fgisRasterBWImage",Fgis_RasterImage,
60 NULL,Fgis_DefDeleteProc)) return TCL_ERROR;
61 /* planchet widget subcommands, written on C */
62 if (!Tcl_CreateCommand(interp,"fgisPlanchet_mapx",Fgis_MapX,NULL,
65 if (!Tcl_CreateCommand(interp,"fgisPlanchet_mapy",Fgis_MapY,NULL,
69 if (!Tcl_CreateCommand(interp,"fgisPlanchet_scrx",Fgis_ScrX,NULL,
72 if (!Tcl_CreateCommand(interp,"fgisPlanchet_scry",Fgis_ScrY,NULL,
75 if (!Tcl_CreateCommand(interp,"fgisPlanchet_fit",Fgis_Fit,NULL,
78 if (!Tcl_CreateCommand(interp,"projection",Fgis_Projection,NULL,
82 /* Searching for fgis.rc and executing it */
83 /* First, check if fGIS_HOME already set */
84 if ((fGIS_HOME=Tcl_GetVar(interp,"fGIS_HOME",TCL_GLOBAL_ONLY))==NULL) {
86 /* Check if compilied in default is valid */
87 if (!check_for_rc(interp,fGIS_HOME,FGIS_HOME)&&
89 !check_for_rc(interp,fGIS_HOME,"/usr/local/lib/fgis")&&
90 !check_for_rc(interp,fGIS_HOME,"/usr/lib/fgis")&&
91 !check_for_rc(interp,fGIS_HOME,"~/fgis")
93 !check_for_rc(interp,fGIS_HOME,"C:/FGIS") &&
94 !check_for_rc(interp,fGIS_HOME,"C:/Program Files/fGIS") &&
95 !check_for_rc(interp,fGIS_HOME,"C:/TCL/LIB/fGIS")
98 Tcl_SetResult(interp,"Cannot determine fGIS home directory",
102 Tcl_SetVar(interp,"fGIS_HOME",fGIS_HOME,TCL_GLOBAL_ONLY);
105 if (Tcl_EvalFile(interp,FGIS_HOME "/fgis.rc")!=TCL_OK) {
106 Tcl_SetResult(interp,"Error in initialization file",TCL_STATIC);
109 /* Providing package for Tcl versions, which supports it */
110 #if (TCL_MAJOR_VERSION>7)||((TCL_MAJOR_VERSION==7)&&(TCL_MINOR_VERSION>=5))
111 Tcl_PkgProvide(interp,"Fgis","0.1");
116 int check_for_rc (Tcl_Interp *interp,char *home,char *path)
119 sprintf(buffer,"file readable [file join {%s} fgis.rc]",path);
120 Tcl_Eval(interp,buffer);
121 if (Tcl_GetInt(interp,interp->result,&result)==TCL_OK&& result) {