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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltoolview.h
  3.  * @brief UI container for tools.
  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_LLTOOLVIEW_H
  33. #define LL_LLTOOLVIEW_H
  34. // requires stdtypes.h
  35. #include "llpanel.h"
  36. // forward declares
  37. class LLTool;
  38. class LLButton;
  39. class LLToolView;
  40. // Utility class, container for the package of information we need about
  41. // each tool.  The package can either point directly to a tool, or indirectly
  42. // to another view of tools.
  43. class LLToolContainer
  44. {
  45. public:
  46. LLToolContainer(LLToolView* parent);
  47. ~LLToolContainer();
  48. public:
  49. LLToolView* mParent; // toolview that owns this container
  50. LLButton* mButton;
  51. LLPanel* mPanel;
  52. LLTool* mTool; // if not NULL, this is a tool ref
  53. };
  54. // A view containing automatically arranged button icons representing
  55. // tools.  The icons sit on top of panels containing options for each
  56. // tool.
  57. class LLToolView
  58. : public LLView
  59. {
  60. public:
  61. LLToolView(const std::string& name, const LLRect& rect);
  62. ~LLToolView();
  63. virtual void draw(); // handle juggling tool button highlights, panel visibility
  64. static void onClickToolButton(void* container);
  65. LLView* getCurrentHoverView();
  66. private:
  67. LLRect getButtonRect(S32 button_index); // return rect for button to add, zero-based index
  68. LLToolContainer *findToolContainer(LLTool *tool);
  69. private:
  70. typedef std::vector<LLToolContainer*> contain_list_t;
  71. contain_list_t  mContainList;
  72. S32 mButtonCount; // used to compute rectangles
  73. };
  74. #endif