diff options
Diffstat (limited to 'indra/newview/llworldmapview.h')
-rw-r--r-- | indra/newview/llworldmapview.h | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h new file mode 100644 index 0000000000..7cf0f655a1 --- /dev/null +++ b/indra/newview/llworldmapview.h @@ -0,0 +1,173 @@ +/** + * @file llworldmapview.h + * @brief LLWorldMapView class header file + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +// Global map of the world. + +#ifndef LL_LLWORLDMAPVIEW_H +#define LL_LLWORLDMAPVIEW_H + +#include "llpanel.h" +#include "v3math.h" +#include "v3dmath.h" +#include "v4color.h" +#include "llviewerimage.h" +#include "llmapimagetype.h" +#include "llworldmap.h" + +class LLItemInfo; + +const S32 DEFAULT_TRACKING_ARROW_SIZE = 16; + +class LLColor4; +class LLColor4U; +class LLCoordGL; +class LLViewerImage; +class LLTextBox; + +#define SIM_NULL_MAP_SCALE 2 // width in pixels, where we start drawing "null" sims +#define SIM_MAP_AGENT_SCALE 20 // width in pixels, where we start drawing agents +#define SIM_MAP_SCALE 90 // width in pixels, where we start drawing sim tiles + +#define AGENTS_UPDATE_TIME 60.0 // in seconds +#define AGENT_COUNTS_UPDATE_TIME 60.0 // in seconds + +class LLWorldMapView : public LLPanel +{ +public: + static void initClass(); + static void cleanupClass(); + + LLWorldMapView(const std::string& name, const LLRect& rect ); + virtual ~LLWorldMapView(); + + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE ); + + 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, LLString& msg, LLRect* sticky_rect_screen ); + + 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. + static void setScale( F32 scale ); + static void translatePan( S32 delta_x, S32 delta_y ); + static void setPan( S32 x, S32 y, BOOL snap = TRUE ); + + LLVector3 globalPosToView(const LLVector3d& global_pos); + LLVector3d viewPosToGlobal(S32 x,S32 y); + + virtual void draw(); + void drawGenericItems(const LLWorldMap::item_info_list_t& items, LLPointer<LLViewerImage> image); + void drawGenericItem(const LLItemInfo& item, LLPointer<LLViewerImage> image); + void drawAgents(); + void drawEvents(); + void drawDots(); + void drawFrustum(); + + 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, LLString label = "", LLString tooltip = "", 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 = 3.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 updateBlock(S32 block_x, S32 block_y); + void updateVisibleBlocks(); + +protected: + void setDirectionPos( LLTextBox* text_box, F32 rotation ); + void updateDirections(); + +public: + LLColor4 mBackgroundColor; + + static LLPointer<LLViewerImage> sAvatarYouSmallImage; + static LLPointer<LLViewerImage> sAvatarSmallImage; + static LLPointer<LLViewerImage> sAvatarLargeImage; + static LLPointer<LLViewerImage> sTelehubImage; + static LLPointer<LLViewerImage> sInfohubImage; + static LLPointer<LLViewerImage> sHomeImage; + static LLPointer<LLViewerImage> sEventImage; + static LLPointer<LLViewerImage> sEventMatureImage; + static LLPointer<LLViewerImage> sTrackCircleImage; + static LLPointer<LLViewerImage> sTrackArrowImage; + static LLPointer<LLViewerImage> sClassifiedsImage; + static LLPointer<LLViewerImage> sPopularImage; + static LLPointer<LLViewerImage> sForSaleImage; + + static F32 sThresholdA; + static F32 sThresholdB; + static F32 sPixelsPerMeter; // world meters to map 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; + + // 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; + F64 mAgentCountsUpdateTime; + + typedef std::vector<U64> handle_list_t; + handle_list_t mVisibleRegions; // set every frame +}; + +#endif |