From 2eaa0e0d1a1045af65eabe75c7f72091e1a98ad2 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Tue, 9 Jun 2009 21:45:12 -0700 Subject: Applied Aimee's minimap zoom patch --- ChangeLog.txt | 11 +++++++ linden/doc/contributions.txt | 1 + linden/indra/newview/app_settings/settings.xml | 2 +- linden/indra/newview/llnetmap.cpp | 36 ++++++++++++++-------- linden/indra/newview/llnetmap.h | 3 +- linden/indra/newview/llworldmapview.cpp | 31 +++++++++++-------- linden/indra/newview/llworldmapview.h | 6 ++-- .../newview/skins/default/textures/textures.xml | 1 - 8 files changed, 62 insertions(+), 29 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 8566125..280cc5b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -22,6 +22,17 @@ modified: indra/newview/llworldmapview.cpp modified: indra/newview/skins/default/colors_base.xml modified: indra/newview/skins/silver/colors_base.xml + + + * Applied Aimee's minimap magnify patch. + + modified: doc/contributions.txt + modified: indra/newview/app_settings/settings.xml + modified: indra/newview/llnetmap.cpp + modified: indra/newview/llnetmap.h + modified: indra/newview/llworldmapview.cpp + modified: indra/newview/llworldmapview.h + modified: indra/newview/skins/default/textures/textures.xml 2009-06-08 McCabe Maxsted diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index 9886640..6da9879 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt @@ -21,6 +21,7 @@ Aimee Trescothick VWR-8341 VWR-8430 VWR-9255 + VWR-12748 Alejandro Rosenthal VWR-1184 Alissa Sabre diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index cce09e2..2d64f03 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -4800,7 +4800,7 @@ MiniMapScale Comment - Miniature world map zoom levle (pixels per region) + Miniature world map zoom level (pixels per region) Persist 1 Type diff --git a/linden/indra/newview/llnetmap.cpp b/linden/indra/newview/llnetmap.cpp index 71eb35b..5a54068 100644 --- a/linden/indra/newview/llnetmap.cpp +++ b/linden/indra/newview/llnetmap.cpp @@ -68,13 +68,14 @@ #include "llglheaders.h" const F32 MAP_SCALE_MIN = 32; -const F32 MAP_SCALE_MID = 172; -const F32 MAP_SCALE_MAX = 512; +const F32 MAP_SCALE_MID = 1024; +const F32 MAP_SCALE_MAX = 4096; const F32 MAP_SCALE_INCREMENT = 16; -const F32 MAP_MIN_PICK_DIST = 4; +const F32 MAP_SCALE_ZOOM_FACTOR = 1.04f; // Zoom in factor per click of the scroll wheel (4%) const F32 MAP_MINOR_DIR_THRESHOLD = 0.08f; - -const S32 TRACKING_RADIUS = 3; +const F32 MIN_DOT_RADIUS = 3.5f; +const F32 DOT_SCALE = 0.75f; +const F32 MIN_PICK_SCALE = 2.f; LLNetMap::LLNetMap(const std::string& name) : LLPanel(name), @@ -89,6 +90,7 @@ LLNetMap::LLNetMap(const std::string& name) : { mScale = gSavedSettings.getF32("MiniMapScale"); mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); + mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS); mObjectImageCenterGlobal = gAgent.getCameraPositionGlobal(); @@ -138,6 +140,7 @@ void LLNetMap::setScale( F32 scale ) } mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); + mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS); mUpdateNow = TRUE; } @@ -319,6 +322,7 @@ void LLNetMap::draw() LLUI::getCursorPositionLocal(this, &local_mouse_x, &local_mouse_y); mClosestAgentToCursor.setNull(); F32 closest_dist = F32_MAX; + F32 min_pick_dist = mDotRadius * MIN_PICK_SCALE; // Draw avatars LLColor4 avatar_color = gColors.getColor( "MapAvatar" ); @@ -335,10 +339,11 @@ void LLNetMap::draw() LLWorldMapView::drawAvatar( pos_map.mV[VX], pos_map.mV[VY], is_agent_friend(avatar_ids[i]) ? friend_color : avatar_color, - pos_map.mV[VZ]); + pos_map.mV[VZ], + mDotRadius); F32 dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]), LLVector2(local_mouse_x,local_mouse_y)); - if(dist_to_cursor < MAP_MIN_PICK_DIST && dist_to_cursor < closest_dist) + if(dist_to_cursor < min_pick_dist && dist_to_cursor < closest_dist) { closest_dist = dist_to_cursor; mClosestAgentToCursor = avatar_ids[i]; @@ -367,10 +372,13 @@ void LLNetMap::draw() // Draw dot for self avatar position pos_global = gAgent.getPositionGlobal(); pos_map = globalPosToView(pos_global, rotate_map); - LLUIImagePtr you = LLWorldMapView::sAvatarYouSmallImage; + LLUIImagePtr you = LLWorldMapView::sAvatarYouLargeImage; + S32 dot_width = llround(mDotRadius * 2.f); you->draw( - llround(pos_map.mV[VX]) - you->getWidth()/2, - llround(pos_map.mV[VY]) - you->getHeight()/2); + llround(pos_map.mV[VX] - mDotRadius), + llround(pos_map.mV[VY] - mDotRadius), + dot_width, + dot_width); // Draw frustum F32 meters_to_pixels = mScale/ LLWorld::getInstance()->getRegionWidthInMeters(); @@ -509,8 +517,12 @@ LLVector3d LLNetMap::viewPosToGlobal( S32 x, S32 y, BOOL rotated ) BOOL LLNetMap::handleScrollWheel(S32 x, S32 y, S32 clicks) { - // note that clicks are reversed from what you'd think - setScale(llclamp(mScale - clicks*MAP_SCALE_INCREMENT, MAP_SCALE_MIN, MAP_SCALE_MAX)); + // note that clicks are reversed from what you'd think: i.e. > 0 means zoom out, < 0 means zoom in + F32 scale = mScale; + + scale *= pow(MAP_SCALE_ZOOM_FACTOR, -clicks); + setScale(llclamp(scale, MAP_SCALE_MIN, MAP_SCALE_MAX)); + return TRUE; } diff --git a/linden/indra/newview/llnetmap.h b/linden/indra/newview/llnetmap.h index be5593d..6a112ad 100644 --- a/linden/indra/newview/llnetmap.h +++ b/linden/indra/newview/llnetmap.h @@ -85,7 +85,8 @@ private: F32 mScale; // Size of a region in pixels F32 mPixelsPerMeter; // world meters to map pixels F32 mObjectMapTPM; // texels per meter on map - F32 mObjectMapPixels; // Width of object map in pixels; + F32 mObjectMapPixels; // Width of object map in pixels + F32 mDotRadius; // Size of avatar markers F32 mTargetPanX; F32 mTargetPanY; F32 mCurPanX; diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp index 73c2d8b..2ded35a 100644 --- a/linden/indra/newview/llworldmapview.cpp +++ b/linden/indra/newview/llworldmapview.cpp @@ -70,9 +70,10 @@ const S32 SCROLL_HINT_WIDTH = 65; const F32 BIG_DOT_RADIUS = 5.f; BOOL LLWorldMapView::sHandledLastClick = FALSE; -LLUIImagePtr LLWorldMapView::sAvatarYouSmallImage = NULL; LLUIImagePtr LLWorldMapView::sAvatarSmallImage = NULL; -LLUIImagePtr LLWorldMapView::sAvatarLargeImage = NULL; +LLUIImagePtr LLWorldMapView::sAvatarYouImage = NULL; +LLUIImagePtr LLWorldMapView::sAvatarYouLargeImage = NULL; +LLUIImagePtr LLWorldMapView::sAvatarLevelImage = NULL; LLUIImagePtr LLWorldMapView::sAvatarAboveImage = NULL; LLUIImagePtr LLWorldMapView::sAvatarBelowImage = NULL; @@ -112,11 +113,12 @@ std::map LLWorldMapView::sStringsMap; void LLWorldMapView::initClass() { - sAvatarYouSmallImage = LLUI::getUIImage("map_avatar_you_8.tga"); sAvatarSmallImage = LLUI::getUIImage("map_avatar_8.tga"); - sAvatarLargeImage = LLUI::getUIImage("map_avatar_16.tga"); - sAvatarAboveImage = LLUI::getUIImage("map_avatar_above_8.tga"); - sAvatarBelowImage = LLUI::getUIImage("map_avatar_below_8.tga"); + sAvatarYouImage = LLUI::getUIImage("map_avatar_16.tga"); + sAvatarYouLargeImage = LLUI::getUIImage("map_avatar_you_32.tga"); + sAvatarLevelImage = LLUI::getUIImage("map_avatar_32.tga"); + sAvatarAboveImage = LLUI::getUIImage("map_avatar_above_32.tga"); + sAvatarBelowImage = LLUI::getUIImage("map_avatar_below_32.tga"); sHomeImage = LLUI::getUIImage("map_home.tga"); sTelehubImage = LLUI::getUIImage("map_telehub.tga"); @@ -136,9 +138,10 @@ void LLWorldMapView::initClass() // static void LLWorldMapView::cleanupClass() { - sAvatarYouSmallImage = NULL; sAvatarSmallImage = NULL; - sAvatarLargeImage = NULL; + sAvatarYouImage = NULL; + sAvatarYouLargeImage = NULL; + sAvatarLevelImage = NULL; sAvatarAboveImage = NULL; sAvatarBelowImage = NULL; @@ -724,7 +727,7 @@ void LLWorldMapView::draw() // Now draw your avatar after all that other stuff. LLVector3d pos_global = gAgent.getPositionGlobal(); - drawImage(pos_global, sAvatarLargeImage); + drawImage(pos_global, sAvatarYouImage); LLVector3 pos_map = globalPosToView(pos_global); if (!pointInView(llround(pos_map.mV[VX]), llround(pos_map.mV[VY]))) @@ -1210,7 +1213,7 @@ void LLWorldMapView::drawAvatar(F32 x_pixels, F32 dot_radius) { const F32 HEIGHT_THRESHOLD = 7.f; - LLUIImagePtr dot_image = sAvatarSmallImage; + LLUIImagePtr dot_image = sAvatarLevelImage; if(relative_z < -HEIGHT_THRESHOLD) { dot_image = sAvatarBelowImage; @@ -1219,9 +1222,13 @@ void LLWorldMapView::drawAvatar(F32 x_pixels, { dot_image = sAvatarAboveImage; } + + S32 dot_width = llround(dot_radius * 2.f); dot_image->draw( - llround(x_pixels) - dot_image->getWidth()/2, - llround(y_pixels) - dot_image->getHeight()/2, + llround(x_pixels - dot_radius), + llround(y_pixels - dot_radius), + dot_width, + dot_width, color); } diff --git a/linden/indra/newview/llworldmapview.h b/linden/indra/newview/llworldmapview.h index 7e94e19..6dbaa8d 100644 --- a/linden/indra/newview/llworldmapview.h +++ b/linden/indra/newview/llworldmapview.h @@ -136,11 +136,13 @@ protected: public: LLColor4 mBackgroundColor; - static LLUIImagePtr sAvatarYouSmallImage; static LLUIImagePtr sAvatarSmallImage; - static LLUIImagePtr sAvatarLargeImage; + static LLUIImagePtr sAvatarYouImage; + static LLUIImagePtr sAvatarYouLargeImage; + static LLUIImagePtr sAvatarLevelImage; static LLUIImagePtr sAvatarAboveImage; static LLUIImagePtr sAvatarBelowImage; + static LLUIImagePtr sTelehubImage; static LLUIImagePtr sInfohubImage; static LLUIImagePtr sHomeImage; diff --git a/linden/indra/newview/skins/default/textures/textures.xml b/linden/indra/newview/skins/default/textures/textures.xml index 9e1d9b5..89399ef 100644 --- a/linden/indra/newview/skins/default/textures/textures.xml +++ b/linden/indra/newview/skins/default/textures/textures.xml @@ -150,7 +150,6 @@ - -- cgit v1.1