llworldmapview.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
- /**
- * @file llworldmapview.h
- * @brief LLWorldMapView class header file
- *
- * $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$
- */
- // View of the global map of the world
- // The data (model) for the global map (a singleton, unique to the application instance) is
- // in LLWorldMap and is typically accessed using LLWorldMap::getInstance()
- #ifndef LL_LLWORLDMAPVIEW_H
- #define LL_LLWORLDMAPVIEW_H
- #include "llpanel.h"
- #include "llworldmap.h"
- #include "v4color.h"
- const S32 DEFAULT_TRACKING_ARROW_SIZE = 16;
- class LLUUID;
- class LLVector3d;
- class LLVector3;
- class LLTextBox;
- class LLWorldMapView : public LLPanel
- {
- public:
- static void initClass();
- static void cleanupClass();
- LLWorldMapView();
- virtual ~LLWorldMapView();
-
- virtual BOOL postBuild();
-
- virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE );
- virtual void setVisible(BOOL visible);
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(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 handleToolTip( S32 x, S32 y, MASK mask);
- bool checkItemHit(S32 x, S32 y, LLItemInfo& item, LLUUID* id, bool track);
- void handleClick(S32 x, S32 y, MASK mask, S32* hit_type, LLUUID* id);
- // Scale and pan are shared across all instances! (i.e. Terrain and Objects maps are always registered)
- static void setScale( F32 scale );
- static void translatePan( S32 delta_x, S32 delta_y );
- static void setPan( S32 x, S32 y, BOOL snap = TRUE );
- // Return true if the current scale level is above the threshold for accessing region info
- static bool showRegionInfo();
- LLVector3 globalPosToView(const LLVector3d& global_pos);
- LLVector3d viewPosToGlobal(S32 x,S32 y);
- virtual void draw();
- void drawGenericItems(const LLSimInfo::item_info_list_t& items, LLUIImagePtr image);
- void drawGenericItem(const LLItemInfo& item, LLUIImagePtr image);
- void drawImage(const LLVector3d& global_pos, LLUIImagePtr image, const LLColor4& color = LLColor4::white);
- void drawImageStack(const LLVector3d& global_pos, LLUIImagePtr image, U32 count, F32 offset, const LLColor4& color);
- void drawAgents();
- void drawItems();
- void drawFrustum();
- void drawMipmap(S32 width, S32 height);
- bool drawMipmapLevel(S32 width, S32 height, S32 level, bool load = true);
- static void cleanupTextures();
- // Draw the tracking indicator, doing the right thing if it's outside
- // the view area.
- void drawTracking( const LLVector3d& pos_global, const LLColor4& color, BOOL draw_arrow = TRUE,
- const std::string& label = std::string(), const std::string& tooltip = std::string(),
- S32 vert_offset = 0);
- static void drawTrackingArrow(const LLRect& view_rect, S32 x, S32 y,
- const LLColor4& color,
- S32 arrow_size = DEFAULT_TRACKING_ARROW_SIZE);
- static void drawTrackingDot(F32 x_pixels,
- F32 y_pixels,
- const LLColor4& color,
- F32 relative_z = 0.f,
- F32 dot_radius = 5.f);
- static void drawTrackingCircle( const LLRect& rect, S32 x, S32 y,
- const LLColor4& color,
- S32 min_thickness,
- S32 overlap );
- static void drawAvatar( F32 x_pixels,
- F32 y_pixels,
- const LLColor4& color,
- F32 relative_z = 0.f,
- F32 dot_radius = 3.f);
- static void drawIconName(F32 x_pixels,
- F32 y_pixels,
- const LLColor4& color,
- const std::string& first_line,
- const std::string& second_line);
- // Prevents accidental double clicks
- static void clearLastClick() { sHandledLastClick = FALSE; }
- // if the view changes, download additional sim info as needed
- void updateVisibleBlocks();
- protected:
- void setDirectionPos( LLTextBox* text_box, F32 rotation );
- void updateDirections();
- public:
- LLColor4 mBackgroundColor;
- static LLUIImagePtr sAvatarSmallImage;
- static LLUIImagePtr sAvatarYouImage;
- static LLUIImagePtr sAvatarYouLargeImage;
- static LLUIImagePtr sAvatarLevelImage;
- static LLUIImagePtr sAvatarAboveImage;
- static LLUIImagePtr sAvatarBelowImage;
- static LLUIImagePtr sTelehubImage;
- static LLUIImagePtr sInfohubImage;
- static LLUIImagePtr sHomeImage;
- static LLUIImagePtr sEventImage;
- static LLUIImagePtr sEventMatureImage;
- static LLUIImagePtr sEventAdultImage;
- static LLUIImagePtr sTrackCircleImage;
- static LLUIImagePtr sTrackArrowImage;
- static LLUIImagePtr sClassifiedsImage;
- static LLUIImagePtr sForSaleImage;
- static LLUIImagePtr sForSaleAdultImage;
- static F32 sMapScale; // scale = size of a region in pixels
- BOOL mItemPicked;
- static F32 sPanX; // in pixels
- static F32 sPanY; // in pixels
- static F32 sTargetPanX; // in pixels
- static F32 sTargetPanY; // in pixels
- static S32 sTrackingArrowX;
- static S32 sTrackingArrowY;
- static bool sVisibleTilesLoaded;
- // Are we mid-pan from a user drag?
- BOOL mPanning;
- S32 mMouseDownPanX; // value at start of drag
- S32 mMouseDownPanY; // value at start of drag
- S32 mMouseDownX;
- S32 mMouseDownY;
- LLTextBox* mTextBoxEast;
- LLTextBox* mTextBoxNorth;
- LLTextBox* mTextBoxWest;
- LLTextBox* mTextBoxSouth;
- LLTextBox* mTextBoxSouthEast;
- LLTextBox* mTextBoxNorthEast;
- LLTextBox* mTextBoxNorthWest;
- LLTextBox* mTextBoxSouthWest;
- LLTextBox* mTextBoxScrollHint;
- static BOOL sHandledLastClick;
- S32 mSelectIDStart;
- // Keep the list of regions that are displayed on screen. Avoids iterating through the whole region map after draw().
- typedef std::vector<U64> handle_list_t;
- handle_list_t mVisibleRegions; // set every frame
- static std::map<std::string,std::string> sStringsMap;
- private:
- void drawTileOutline(S32 level, F32 top, F32 left, F32 bottom, F32 right);
- };
- #endif