File: xxMap.hh

package info (click to toggle)
xtide 2.6.4-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,996 kB
  • ctags: 2,617
  • sloc: cpp: 26,266; ansic: 8,105; makefile: 152; yacc: 113; sh: 54; lex: 54
file content (78 lines) | stat: -rw-r--r-- 3,225 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// $Id: xxMap.hh,v 1.3 2002/10/03 14:35:48 flaterco Exp $
/*  xxMap   Location chooser using Cylindrical Equidistant projection.

    There is some duplicated code between xxGlobe and xxMap.  However,
    they are sufficiently different that I think complete
    encapsulation is the cleanest approach.  -- DWF

    Copyright (C) 2002  David Flater.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

class xxMap: public xxWindow 
{
public:
  xxMap (xxContext *context, StationIndex &in_stationIndex,
           xxTideContext *in_tidecontext);
  ~xxMap ();
  void global_redraw();
  void dismiss();

protected:
  friend void xxMapButtonPressEventHandler (Widget w, 
                                              XtPointer client_data, 
                                              XEvent *event, 
                                              Boolean *continue_dispatch);
  friend void xxMapKeyboardEventHandler (Widget w, XtPointer client_data,
                                           XEvent *event, 
                                           Boolean *continue_dispatch);
  friend void xxMapPointerMotionEventHandler (Widget w, 
                                                XtPointer client_data,
                                                XEvent *event, 
                                                Boolean *continue_dispatch);
  friend void xxMapListAllCallback (Widget w, XtPointer client_data,
                               XtPointer call_data);
  friend void xxMapZoomOutCallback (Widget w, XtPointer client_data,
                               XtPointer call_data);
  friend void xxMapRoundCallback (Widget w, XtPointer client_data,
                               XtPointer call_data);
  friend void xxMapHelpCallback (Widget w, XtPointer client_data,
                                   XtPointer call_data);

  Pixmap mappixmap;
  StationIndex *stationIndex;
  xxContext *picture, *dismissbutton, *listAllButton, *helpbutton, 
    *zoomoutbutton, *lattext, *lontext, *roundbutton;
  xxLocationList *locationlist;
  int zoom_level, redraw_zero_level;
  int blastx, blasty, blastflag, last_x, last_y;
  Dimension internalHeight, internalWidth;
  double center_longitude;
  typedef struct
  {
    double slat;
    double nlat;
    double wlon;
    double elon;
  } BOUNDS;
  BOUNDS bounds[max_zoom_level + 1];

  int translateCoordinates (double lat, double lon, int *x, int *y);
  void untranslateCoordinates (double *lat, double *lon, int x, int y);
  void update_position (int x, int y);
  void blast (int x, int y);
  void redrawMap ();
};