llviewerchat.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:5k
- /**
- * @file llviewerchat.cpp
- * @brief Builds menus out of items.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-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$
- */
- #include "llviewerprecompiledheaders.h"
- #include "llviewerchat.h"
- // newview includes
- #include "llagent.h" // gAgent
- #include "lluicolortable.h"
- #include "llviewercontrol.h" // gSavedSettings
- // LLViewerChat
- //static
- void LLViewerChat::getChatColor(const LLChat& chat, LLColor4& r_color)
- {
- if(chat.mMuted)
- {
- r_color= LLUIColorTable::instance().getColor("LtGray");
- }
- else
- {
- switch(chat.mSourceType)
- {
- case CHAT_SOURCE_SYSTEM:
- r_color = LLUIColorTable::instance().getColor("SystemChatColor");
- break;
- case CHAT_SOURCE_AGENT:
- if (chat.mFromID.isNull())
- {
- r_color = LLUIColorTable::instance().getColor("SystemChatColor");
- }
- else
- {
- if(gAgentID == chat.mFromID)
- {
- r_color = LLUIColorTable::instance().getColor("UserChatColor");
- }
- else
- {
- r_color = LLUIColorTable::instance().getColor("AgentChatColor");
- }
- }
- break;
- case CHAT_SOURCE_OBJECT:
- if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
- {
- r_color = LLUIColorTable::instance().getColor("ScriptErrorColor");
- }
- else if ( chat.mChatType == CHAT_TYPE_OWNER )
- {
- r_color = LLUIColorTable::instance().getColor("llOwnerSayChatColor");
- }
- else
- {
- r_color = LLUIColorTable::instance().getColor("ObjectChatColor");
- }
- break;
- default:
- r_color.setToWhite();
- }
-
- if (!chat.mPosAgent.isExactlyZero())
- {
- LLVector3 pos_agent = gAgent.getPositionAgent();
- F32 distance = dist_vec(pos_agent, chat.mPosAgent);
- if (distance > gAgent.getNearChatRadius())
- {
- // diminish far-off chat
- r_color.mV[VALPHA] = 0.8f;
- }
- }
- }
- }
- //static
- void LLViewerChat::getChatColor(const LLChat& chat, std::string& r_color_name, F32& r_color_alpha)
- {
- if(chat.mMuted)
- {
- r_color_name = "LtGray";
- }
- else
- {
- switch(chat.mSourceType)
- {
- case CHAT_SOURCE_SYSTEM:
- r_color_name = "SystemChatColor";
- break;
-
- case CHAT_SOURCE_AGENT:
- if (chat.mFromID.isNull())
- {
- r_color_name = "SystemChatColor";
- }
- else
- {
- if(gAgentID == chat.mFromID)
- {
- r_color_name = "UserChatColor";
- }
- else
- {
- r_color_name = "AgentChatColor";
- }
- }
- break;
-
- case CHAT_SOURCE_OBJECT:
- if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
- {
- r_color_name = "ScriptErrorColor";
- }
- else if ( chat.mChatType == CHAT_TYPE_OWNER )
- {
- r_color_name = "llOwnerSayChatColor";
- }
- else
- {
- r_color_name = "ObjectChatColor";
- }
- break;
- default:
- r_color_name = "White";
- }
-
- if (!chat.mPosAgent.isExactlyZero())
- {
- LLVector3 pos_agent = gAgent.getPositionAgent();
- F32 distance = dist_vec(pos_agent, chat.mPosAgent);
- if (distance > gAgent.getNearChatRadius())
- {
- // diminish far-off chat
- r_color_alpha = 0.8f;
- }
- else
- {
- r_color_alpha = 1.0f;
- }
- }
- }
-
- }
- //static
- LLFontGL* LLViewerChat::getChatFont()
- {
- S32 font_size = gSavedSettings.getS32("ChatFontSize");
- LLFontGL* fontp = NULL;
- switch(font_size)
- {
- case 0:
- fontp = LLFontGL::getFontSansSerifSmall();
- break;
- default:
- case 1:
- fontp = LLFontGL::getFontSansSerif();
- break;
- case 2:
- fontp = LLFontGL::getFontSansSerifBig();
- break;
- }
-
- return fontp;
-
- }
- //static
- S32 LLViewerChat::getChatFontSize()
- {
- return gSavedSettings.getS32("ChatFontSize");
- }
- //static
- void LLViewerChat::formatChatMsg(const LLChat& chat, std::string& formated_msg)
- {
- std::string tmpmsg = chat.mText;
-
- if(chat.mChatStyle == CHAT_STYLE_IRC)
- {
- formated_msg = chat.mFromName + tmpmsg.substr(3);
- }
- else
- {
- formated_msg = tmpmsg;
- }
- }