summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatercamera.cpp
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2008-04-03 18:43:54 +0000
committerJames Cook <james@lindenlab.com>2008-04-03 18:43:54 +0000
commit55c25229b79b1755c989e5996c8e8d118f369721 (patch)
tree1fa882bc7e11dc8aec031d5e268131809874168a /indra/newview/llfloatercamera.cpp
parentb3fcfa16ba8b984163c38904e165052a34be6dab (diff)
svn merge -r 83778:83944 maint-ui-10-merge
QAR-442
Diffstat (limited to 'indra/newview/llfloatercamera.cpp')
-rw-r--r--indra/newview/llfloatercamera.cpp163
1 files changed, 163 insertions, 0 deletions
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
new file mode 100644
index 0000000000..6bc14b331b
--- /dev/null
+++ b/indra/newview/llfloatercamera.cpp
@@ -0,0 +1,163 @@
+/**
+ * @file llfloatercamera.cpp
+ * @brief Container for camera control buttons (zoom, pan, orbit)
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2007, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatercamera.h"
+
+// Library includes
+#include "lluictrlfactory.h"
+
+// Viewer includes
+#include "lljoystickbutton.h"
+#include "llviewercontrol.h"
+
+// Constants
+const F32 CAMERA_BUTTON_DELAY = 0.0f;
+
+// Globals
+LLFloaterCamera* gFloaterCamera = NULL;
+
+
+//
+// Member functions
+//
+
+LLFloaterCamera::LLFloaterCamera(const std::string& name)
+: LLFloater(name) // uses "FloaterCameraRect3"
+{
+ setIsChrome(TRUE);
+
+ // For now, only used for size and tooltip strings
+ LLUICtrlFactory::getInstance()->buildFloater(this, "floater_camera.xml");
+
+ S32 top = getRect().getHeight();
+ S32 bottom = 0;
+ S32 left = 16;
+
+ const S32 ROTATE_WIDTH = 64;
+ mRotate = new LLJoystickCameraRotate("cam rotate stick",
+ LLRect( left, top, left + ROTATE_WIDTH, bottom ),
+ "cam_rotate_out.tga",
+ "cam_rotate_in.tga" );
+ mRotate->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT);
+ mRotate->setHeldDownDelay(CAMERA_BUTTON_DELAY);
+ mRotate->setToolTip( getString("rotate_tooltip") );
+ mRotate->setSoundFlags(MOUSE_DOWN | MOUSE_UP);
+ addChild(mRotate);
+
+ left += ROTATE_WIDTH;
+
+ const S32 ZOOM_WIDTH = 16;
+ mZoom = new LLJoystickCameraZoom(
+ "zoom",
+ LLRect( left, top, left + ZOOM_WIDTH, bottom ),
+ "cam_zoom_out.tga",
+ "cam_zoom_plus_in.tga",
+ "cam_zoom_minus_in.tga");
+ mZoom->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT);
+ mZoom->setHeldDownDelay(CAMERA_BUTTON_DELAY);
+ mZoom->setToolTip( getString("zoom_tooltip") );
+ mZoom->setSoundFlags(MOUSE_DOWN | MOUSE_UP);
+ addChild(mZoom);
+
+ left += ZOOM_WIDTH;
+
+ const S32 TRACK_WIDTH = 64;
+ mTrack = new LLJoystickCameraTrack("cam track stick",
+ LLRect( left, top, left + TRACK_WIDTH, bottom ),
+ "cam_tracking_out.tga",
+ "cam_tracking_in.tga");
+ mTrack->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT);
+ mTrack->setHeldDownDelay(CAMERA_BUTTON_DELAY);
+ mTrack->setToolTip( getString("move_tooltip") );
+ mTrack->setSoundFlags(MOUSE_DOWN | MOUSE_UP);
+ addChild(mTrack);
+}
+
+
+LLFloaterCamera::~LLFloaterCamera()
+{
+ // children all deleted by LLView destructor
+ gFloaterCamera = NULL;
+}
+
+// virtual
+void LLFloaterCamera::onClose(bool app_quitting)
+{
+ LLFloater::onClose(app_quitting);
+
+ if (!app_quitting)
+ {
+ gSavedSettings.setBOOL("ShowCameraControls", FALSE);
+ }
+}
+
+//
+// Static member functions
+//
+
+// static
+void LLFloaterCamera::show(void*)
+{
+ if(!gFloaterCamera)
+ {
+ gFloaterCamera = new LLFloaterCamera("camera floater");
+ }
+ gFloaterCamera->open(); /* Flawfinder: ignore */
+ gSavedSettings.setBOOL("ShowCameraControls", TRUE);
+}
+
+// static
+void LLFloaterCamera::toggle(void*)
+{
+ if (gFloaterCamera)
+ {
+ gFloaterCamera->close();
+ }
+ else
+ {
+ show(NULL);
+ }
+}
+
+// static
+BOOL LLFloaterCamera::visible(void*)
+{
+ if (gFloaterCamera)
+ {
+ return gFloaterCamera->getVisible();
+ }
+ else
+ {
+ return FALSE;
+ }
+}