lltoolcomp.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:8k
- /**
- * @file lltoolcomp.h
- * @brief Composite tools
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2010, 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://secondlifegrid.net/programs/open_source/licensing/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://secondlifegrid.net/programs/open_source/licensing/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$
- */
- #ifndef LL_TOOLCOMP_H
- #define LL_TOOLCOMP_H
- #include "lltool.h"
- class LLManip;
- class LLToolSelectRect;
- class LLToolPlacer;
- class LLPickInfo;
- class LLView;
- class LLTextBox;
- //-----------------------------------------------------------------------
- // LLToolComposite
- class LLToolComposite : public LLTool
- {
- public:
- LLToolComposite(const std::string& name);
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0; // Sets the current tool
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask) = 0;
- // Map virtual functions to the currently active internal tool
- virtual BOOL handleHover(S32 x, S32 y, MASK mask) { return mCur->handleHover( x, y, mask ); }
- virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) { return mCur->handleScrollWheel( x, y, clicks ); }
- virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) { return mCur->handleRightMouseDown( x, y, mask ); }
- virtual LLViewerObject* getEditingObject() { return mCur->getEditingObject(); }
- virtual LLVector3d getEditingPointGlobal() { return mCur->getEditingPointGlobal(); }
- virtual BOOL isEditing() { return mCur->isEditing(); }
- virtual void stopEditing() { mCur->stopEditing(); mCur = mDefault; }
- virtual BOOL clipMouseWhenDown() { return mCur->clipMouseWhenDown(); }
- virtual void handleSelect();
- virtual void handleDeselect() { mCur->handleDeselect(); mCur = mDefault; mSelected = FALSE; }
- virtual void render() { mCur->render(); }
- virtual void draw() { mCur->draw(); }
- virtual BOOL handleKey(KEY key, MASK mask) { return mCur->handleKey( key, mask ); }
- virtual void onMouseCaptureLost();
- virtual void screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const
- { mCur->screenPointToLocal(screen_x, screen_y, local_x, local_y); }
- virtual void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const
- { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); }
- BOOL isSelecting();
- protected:
- void setCurrentTool( LLTool* new_tool );
- LLTool* getCurrentTool() { return mCur; }
- // In hover handler, call this to auto-switch tools
- void setToolFromMask( MASK mask, LLTool *normal );
- protected:
- LLTool* mCur; // The tool to which we're delegating.
- LLTool* mDefault;
- BOOL mSelected;
- BOOL mMouseDown;
- LLManip* mManip;
- LLToolSelectRect* mSelectRect;
- public:
- static const std::string sNameComp;
- };
- //-----------------------------------------------------------------------
- // LLToolCompTranslate
- class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompInspect>
- {
- public:
- LLToolCompInspect();
- virtual ~LLToolCompInspect();
- // Overridden from LLToolComposite
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- static void pickCallback(const LLPickInfo& pick_info);
- };
- //-----------------------------------------------------------------------
- // LLToolCompTranslate
- class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCompTranslate>
- {
- public:
- LLToolCompTranslate();
- virtual ~LLToolCompTranslate();
- // Overridden from LLToolComposite
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- virtual BOOL handleHover(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
- virtual void render();
- virtual LLTool* getOverrideTool(MASK mask);
- static void pickCallback(const LLPickInfo& pick_info);
- };
- //-----------------------------------------------------------------------
- // LLToolCompScale
- class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompScale>
- {
- public:
- LLToolCompScale();
- virtual ~LLToolCompScale();
- // Overridden from LLToolComposite
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- virtual BOOL handleHover(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool
- virtual void render();
- virtual LLTool* getOverrideTool(MASK mask);
-
- static void pickCallback(const LLPickInfo& pick_info);
- };
- //-----------------------------------------------------------------------
- // LLToolCompRotate
- class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRotate>
- {
- public:
- LLToolCompRotate();
- virtual ~LLToolCompRotate();
- // Overridden from LLToolComposite
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- virtual BOOL handleHover(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- virtual void render();
- virtual LLTool* getOverrideTool(MASK mask);
- static void pickCallback(const LLPickInfo& pick_info);
- protected:
- };
- //-----------------------------------------------------------------------
- // LLToolCompCreate
- class LLToolCompCreate : public LLToolComposite, public LLSingleton<LLToolCompCreate>
- {
- public:
- LLToolCompCreate();
- virtual ~LLToolCompCreate();
- // Overridden from LLToolComposite
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
-
- static void pickCallback(const LLPickInfo& pick_info);
- protected:
- LLToolPlacer* mPlacer;
- BOOL mObjectPlacedOnMouseDown;
- };
- //-----------------------------------------------------------------------
- // LLToolCompGun
- class LLToolGun;
- class LLToolGrab;
- class LLToolSelect;
- class LLToolCompGun : public LLToolComposite, public LLSingleton<LLToolCompGun>
- {
- public:
- LLToolCompGun();
- virtual ~LLToolCompGun();
- // Overridden from LLToolComposite
- virtual BOOL handleHover(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
- virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
- virtual void onMouseCaptureLost();
- virtual void handleSelect();
- virtual void handleDeselect();
- virtual LLTool* getOverrideTool(MASK mask) { return NULL; }
- protected:
- LLToolGun* mGun;
- LLToolGrab* mGrab;
- LLTool* mNull;
- };
- #endif // LL_TOOLCOMP_H