summaryrefslogtreecommitdiff
path: root/indra/newview/llworldmapview.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llworldmapview.h')
-rw-r--r--indra/newview/llworldmapview.h173
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