diff options
Diffstat (limited to 'linden/indra/newview/llfloatermap.cpp')
-rw-r--r-- | linden/indra/newview/llfloatermap.cpp | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/linden/indra/newview/llfloatermap.cpp b/linden/indra/newview/llfloatermap.cpp new file mode 100644 index 0000000..29c4f08 --- /dev/null +++ b/linden/indra/newview/llfloatermap.cpp | |||
@@ -0,0 +1,218 @@ | |||
1 | /** | ||
2 | * @file llfloatermap.cpp | ||
3 | * @brief The "mini-map" or radar in the upper right part of the screen. | ||
4 | * | ||
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
8 | * to you under the terms of the GNU General Public License, version 2.0 | ||
9 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
10 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
11 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
12 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
13 | * | ||
14 | * There are special exceptions to the terms and conditions of the GPL as | ||
15 | * it is applied to this Source Code. View the full text of the exception | ||
16 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
17 | * online at http://secondlife.com/developers/opensource/flossexception | ||
18 | * | ||
19 | * By copying, modifying or distributing this software, you acknowledge | ||
20 | * that you have read and understood your obligations described above, | ||
21 | * and agree to abide by those obligations. | ||
22 | * | ||
23 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
24 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
25 | * COMPLETENESS OR PERFORMANCE. | ||
26 | */ | ||
27 | |||
28 | #include "llviewerprecompiledheaders.h" | ||
29 | |||
30 | // self include | ||
31 | #include "llfloatermap.h" | ||
32 | |||
33 | // Library includes | ||
34 | #include "llfontgl.h" | ||
35 | #include "llinventory.h" | ||
36 | #include "message.h" | ||
37 | |||
38 | // Viewer includes | ||
39 | #include "llagent.h" | ||
40 | #include "llcolorscheme.h" | ||
41 | #include "llviewercontrol.h" | ||
42 | #include "lldraghandle.h" | ||
43 | #include "lleconomy.h" | ||
44 | #include "llfloaterworldmap.h" | ||
45 | #include "llfocusmgr.h" | ||
46 | #include "llnetmap.h" | ||
47 | #include "llregionhandle.h" | ||
48 | #include "llresizebar.h" | ||
49 | #include "llresizehandle.h" | ||
50 | #include "llresmgr.h" | ||
51 | #include "llsky.h" | ||
52 | #include "llsliderctrl.h" | ||
53 | #include "llspinctrl.h" | ||
54 | #include "llstatgraph.h" | ||
55 | #include "llstatusbar.h" | ||
56 | #include "lltextbox.h" | ||
57 | #include "llui.h" | ||
58 | #include "llviewermenu.h" | ||
59 | #include "llviewerparceloverlay.h" | ||
60 | #include "llviewerregion.h" | ||
61 | #include "llviewerstats.h" | ||
62 | #include "viewer.h" | ||
63 | |||
64 | #include "llglheaders.h" | ||
65 | |||
66 | // | ||
67 | // Constants | ||
68 | // | ||
69 | const S32 LEGEND_SIZE = 16; | ||
70 | |||
71 | const S32 HPAD = 4; | ||
72 | |||
73 | const S32 MAP_COMBOBOX_WIDTH = 128; | ||
74 | const S32 MAP_COMBOBOX_HEIGHT = 20; | ||
75 | const S32 GO_BTN_WIDTH = 20; | ||
76 | const S32 SLIDER_WIDTH = LEGEND_SIZE + MAP_COMBOBOX_WIDTH + HPAD + GO_BTN_WIDTH - HPAD; | ||
77 | const S32 SLIDER_HEIGHT = 16; | ||
78 | |||
79 | const S32 SIM_STAT_WIDTH = 8; | ||
80 | |||
81 | const S32 MAP_SCALE_MIN = 35; // in pixels per sim | ||
82 | const S32 MAP_SCALE_MAX = 180; // in pixels per sim | ||
83 | const S32 MAP_SCALE_INCREMENT = 5; | ||
84 | |||
85 | const char MAP_TITLE[] = ""; | ||
86 | |||
87 | const S32 NETMAP_MIN_WIDTH = 128; | ||
88 | const S32 NETMAP_MIN_HEIGHT = 128; | ||
89 | |||
90 | const S32 FLOATERMAP_MIN_WIDTH = | ||
91 | SLIDER_WIDTH + | ||
92 | 2 * (HPAD + LLPANEL_BORDER_WIDTH); | ||
93 | |||
94 | const S32 MORE_BTN_VPAD = 2; | ||
95 | |||
96 | const S32 SPIN_VPAD = 4; | ||
97 | |||
98 | const S32 TRACKING_LABEL_HEIGHT = 16; | ||
99 | |||
100 | const S32 FLOATERMAP_MIN_HEIGHT_LARGE = 60; | ||
101 | |||
102 | // | ||
103 | // Globals | ||
104 | // | ||
105 | LLFloaterMap *gFloaterMap = NULL; | ||
106 | |||
107 | |||
108 | |||
109 | |||
110 | // | ||
111 | // Member functions | ||
112 | // | ||
113 | |||
114 | LLFloaterMap::LLFloaterMap(const std::string& name) | ||
115 | : | ||
116 | LLFloater(name, | ||
117 | "FloaterMapRect", | ||
118 | MAP_TITLE, | ||
119 | TRUE, | ||
120 | FLOATERMAP_MIN_WIDTH, | ||
121 | FLOATERMAP_MIN_HEIGHT_LARGE, | ||
122 | FALSE, | ||
123 | FALSE, | ||
124 | TRUE) // close button | ||
125 | { | ||
126 | const S32 LEFT = LLPANEL_BORDER_WIDTH; | ||
127 | const S32 TOP = mRect.getHeight(); | ||
128 | |||
129 | S32 y = 0; | ||
130 | |||
131 | // Map itself | ||
132 | LLRect map_rect( | ||
133 | LEFT, | ||
134 | TOP - LLPANEL_BORDER_WIDTH, | ||
135 | mRect.getWidth() - LLPANEL_BORDER_WIDTH, | ||
136 | y ); | ||
137 | LLColor4 bg_color = gColors.getColor( "NetMapBackgroundColor" ); | ||
138 | mMap = new LLNetMap("Net Map", map_rect, bg_color); | ||
139 | mMap->setFollowsAll(); | ||
140 | addChildAtEnd(mMap); | ||
141 | |||
142 | // Get the drag handle all the way in back | ||
143 | removeChild(mDragHandle); | ||
144 | addChildAtEnd(mDragHandle); | ||
145 | |||
146 | setIsChrome(TRUE); | ||
147 | } | ||
148 | |||
149 | |||
150 | LLFloaterMap::~LLFloaterMap() | ||
151 | { | ||
152 | } | ||
153 | |||
154 | |||
155 | // virtual | ||
156 | void LLFloaterMap::setVisible(BOOL visible) | ||
157 | { | ||
158 | LLFloater::setVisible(visible); | ||
159 | |||
160 | gSavedSettings.setBOOL("ShowMiniMap", visible); | ||
161 | } | ||
162 | |||
163 | |||
164 | // virtual | ||
165 | void LLFloaterMap::onClose(bool app_quitting) | ||
166 | { | ||
167 | LLFloater::setVisible(FALSE); | ||
168 | |||
169 | if (!app_quitting) | ||
170 | { | ||
171 | gSavedSettings.setBOOL("ShowMiniMap", FALSE); | ||
172 | } | ||
173 | } | ||
174 | |||
175 | BOOL LLFloaterMap::canClose() | ||
176 | { | ||
177 | return !gQuit; | ||
178 | } | ||
179 | |||
180 | |||
181 | // virtual | ||
182 | void LLFloaterMap::draw() | ||
183 | { | ||
184 | if( getVisible() ) | ||
185 | { | ||
186 | // Note: we can't just gAgent.check cameraMouselook() because the transition states are wrong. | ||
187 | if( gAgent.cameraMouselook()) | ||
188 | { | ||
189 | setMouseOpaque(FALSE); | ||
190 | mDragHandle->setMouseOpaque(FALSE); | ||
191 | |||
192 | drawChild(mMap); | ||
193 | } | ||
194 | else | ||
195 | { | ||
196 | setMouseOpaque(TRUE); | ||
197 | mDragHandle->setMouseOpaque(TRUE); | ||
198 | |||
199 | LLFloater::draw(); | ||
200 | } | ||
201 | } | ||
202 | } | ||
203 | |||
204 | // static | ||
205 | void LLFloaterMap::toggle(void*) | ||
206 | { | ||
207 | if( gFloaterMap ) | ||
208 | { | ||
209 | if (gFloaterMap->getVisible()) | ||
210 | { | ||
211 | gFloaterMap->close(); | ||
212 | } | ||
213 | else | ||
214 | { | ||
215 | gFloaterMap->open(); | ||
216 | } | ||
217 | } | ||
218 | } | ||