|
|
|
|
||
|
DEFINITION MODULE MapViewer; (******************************************************************* Module MapViewer (Version 1.1) Copyright (c) 1999-2006 by Andreas Fischlin and ETH Zurich. Purpose Manages a window to display regions which are defined and output by ArcInfo (GIS) data bases. A mini GIS functionality available within RAMSES. Remarks A data base file as generated by ArcInfo needs some minor adjustments at the begin of each file to conform fully to the format required by this module. The syntax is described exactly in module RegArcHdlr from RAMSES ScienceLib. Programming o Design Andreas Fischlin 16/06/1999 o Implementation Andreas Fischlin 16/06/1999 ETH Zurich Systems Ecology CHN E 35.1 Universitaetstrasse 16 8092 Zurich SWITZERLAND URLs: <mailto:RAMSES@env.ethz.ch> <http://www.sysecol.ethz.ch> <http://www.sysecol.ethz.ch/SimSoftware/RAMSES> Last revision of definition: 07/07/1999 AF *******************************************************************) (******************************************) (*##### Management of Map Viewer #####*) (******************************************) (*===== Usage =====*) PROCEDURE MakeMapViewer; PROCEDURE MapViewerExists(): BOOLEAN; PROCEDURE DiscardMapViewer; (* A simple program module allows you to work with maps as exported by ARC/INFO and view them using the MapViewer package: MODULE ViewMaps; (* DM core *) FROM DMMaster IMPORT RunDialogMachine; (* ScienceLib *) FROM MapViewer IMPORT MakeMapViewer; FROM RegArcHdlr IMPORT UseRegionArcHandler; BEGIN (* ViewMaps *) UseRegionArcHandler; MakeMapViewer; RunDialogMachine; END ViewMaps. The result is a fully functional, interactive application featuring a menu which allows you load and view regions and arcs from disk (ASCII map files written in ARC/INFO format) and view the data in a window. *) (*===== Customization =====*) PROCEDURE EditPreferences; PROCEDURE EditMenuAppearance; PROCEDURE ResetToFactorySettings; PROCEDURE DefineMenuAppearance( title, aliasChars: ARRAY OF CHAR; sepEditMenu: BOOLEAN); PROCEDURE RetrieveMenuAppearance(VAR title, aliasChars: ARRAY OF CHAR; VAR sepEditMenu: BOOLEAN); (* For aliasChars use the sequence of menu commands (this varies depending on sepEditMenu). Use " " (blank) for a command without an alias char. Argument sepEditMenu specifies wether the edit commands (copy, cut, and paste, see routines CopyMap, CutMap, PasteMap) are to be offered separately via the standard edit menu (see module DMClipboard) or wether they will be offered as part of the region viewer's menu. Default sepEditMenu = FALSE. The use of option sepEditMenu = FALSE allows for using MapViewer as an extension of an application which already offers the Edit menu an uses it for its own purposes (e.g. ModelWorks' standard user interface). On the other hand, option sepEditMenu = TRUE allows for using MapViewer in conjunction with the standard menu Edit. MapViewer will then install a standard Edit menu separately via module DMClipboard. Implementation restriction: If you change the title of the menu while it's already in use, it will be removed and reappear at the end of the menu bar. Similarily a change of the option sepEditMenu may move the relative position of the of the region viewer's menu and the Edit menu. Note: sepEditMenu is stored as a mode and treated also as a preference and will influence the menu appearance from one execution of the map viewer to the next one. *) PROCEDURE SetPreferences( omitLegend, drawRegNames, transpNames, preserveProp, sepEditMenu, globalAbout: BOOLEAN); PROCEDURE GetPreferences(VAR omitLegend, drawRegNames, transpNames, preserveProp, sepEditMenu, globalAbout: BOOLEAN); (* - omitLegend Draw maps without a legend listing any object such as regions or arcs to leave more space for the actual map within the Viewer's window. Factory setting omitLegend = FALSE. - drawRegNames Regions are drawn with their names near the center. Factory setting drawRegNames = TRUE. - transpNames Any names are drawn transparently, i.e. without a white background. Factory setting transpNames = FALSE. - preserveProp Preserve proportions of map while drawing it in the map viewer's window. Factory setting preserveProp = FALSE. - sepEditMenu Standard edit commands such as copy, cut, paste etc. are used in a separate menu entitled "Edit" (see also routines EditMenuAppearance, DefineMenuAppearance, and RetrieveMenuAppearance). Factory setting sepEditMenu = FALSE. - globalAbout Add a menu command in the the map viewer's menu which allows to display a package about command. Factory setting globalAbout = TRUE. *) (*===== Error Retrieval =====*) PROCEDURE GetLastMVResCode(): INTEGER; (* Returns the result code of last operation performed by the map viewer package. Note, this routine returns DMLanguage.allOk if no error was encountered. It returns also result codes for operations by the high level handler modules such as RegArcHdlr. *) (*************************************) (*##### Map Viewer's Window #####*) (*************************************) (*===== Management of map window =====*) PROCEDURE ShowMapWindow; PROCEDURE PlaceMapWindow(x,y,w,h: INTEGER; forceOnTop: BOOLEAN); PROCEDURE GetMapWindowPlace(VAR x,y,w,h: INTEGER; VAR isOpen,isOnTop: BOOLEAN); PROCEDURE HideMapWindow; (*===== Drawing in map window =====*) PROCEDURE SelectMapWindowForOutput; PROCEDURE DrawMap; PROCEDURE ClearMap; (*===== Clipboard Support =====*) PROCEDURE CopyMap; PROCEDURE CutMap; PROCEDURE PasteMap; (*===== Scaling & Draw Region =====*) PROCEDURE SetDrawRegion(xmin,xmax,ymin,ymax: REAL); (* Allows to determine the draw region as given by the coordinates xmin, xmax, ymin, ymax. The draw region is used to scale any region for drawing. If you use only the autoscaling mechanism of this module, there is no need to set the draw region, since it is automatically set equal to the base region (see e.g. routine DrawRegions from RegArcHdlr etc.). *) PROCEDURE GetDrawRegion(VAR xmin,xmax,ymin,ymax: REAL); PROCEDURE ForgetDrawRegion; (* Forgets the current definition of draw region. Any subsequent drawing done by module RegArcHdlr etc. will cause an auto scaling; e.g. the base region will be used as current drawing region (see module RegArcHdlr). *) END MapViewer.
|
||
|
|
|