lltool.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:4k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltool.h
  3.  * @brief LLTool class header file
  4.  *
  5.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2001-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLTOOL_H
  33. #define LL_LLTOOL_H
  34. #include "llkeyboard.h"
  35. #include "llmousehandler.h"
  36. #include "llcoord.h"
  37. #include "v3math.h"
  38. #include "v3dmath.h"
  39. class LLViewerObject;
  40. class LLToolComposite;
  41. class LLView;
  42. class LLPanel;
  43. class LLTool
  44. : public LLMouseHandler
  45. {
  46. public:
  47. LLTool( const std::string& name, LLToolComposite* composite = NULL );
  48. virtual ~LLTool();
  49. // Hack to support LLFocusMgr
  50. virtual BOOL isView() const { return FALSE; }
  51. // Virtual functions inherited from LLMouseHandler
  52. virtual BOOL handleAnyMouseClick(S32 x, S32 y, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
  53. virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  54. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  55. virtual BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask);
  56. virtual BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask);
  57. virtual BOOL handleHover(S32 x, S32 y, MASK mask);
  58. virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
  59. virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
  60. virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
  61. virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
  62. virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
  63. // Return FALSE to allow context menu to be shown.
  64. virtual void screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const
  65. { *local_x = screen_x; *local_y = screen_y; }
  66. virtual void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const
  67. { *screen_x = local_x; *screen_y = local_y; }
  68. virtual std::string getName() const { return mName; }
  69. // New virtual functions
  70. virtual LLViewerObject* getEditingObject() { return NULL; }
  71. virtual LLVector3d getEditingPointGlobal() { return LLVector3d(); }
  72. virtual BOOL isEditing() { return (getEditingObject() != NULL); }
  73. virtual void stopEditing() {}
  74. virtual BOOL clipMouseWhenDown() { return TRUE; }
  75. virtual void handleSelect() { } // do stuff when your tool is selected
  76. virtual void handleDeselect() { } // clean up when your tool is deselected
  77. virtual LLTool* getOverrideTool(MASK mask);
  78. // isAlwaysRendered() - return true if this is a tool that should
  79. // always be rendered regardless of selection.
  80. virtual BOOL isAlwaysRendered() { return FALSE; }
  81. virtual void render() {} // draw tool specific 3D content in world
  82. virtual void draw(); // draw tool specific 2D overlay
  83. virtual BOOL handleKey(KEY key, MASK mask);
  84. // Note: NOT virtual.  Subclasses should call this version.
  85. void setMouseCapture(BOOL b);
  86. BOOL hasMouseCapture();
  87. virtual void onMouseCaptureLost() {}  // override this one as needed.
  88. protected:
  89. LLToolComposite* mComposite;  // Composite will handle mouse captures.
  90. std::string mName;
  91. public:
  92. static const std::string sNameNull;
  93. };
  94. #endif