CHANGED: #1471 CViewText no longer depends on CInterfaceManager.

This commit is contained in:
dfighter1985 2012-06-17 02:08:21 +02:00
parent 396abe14cf
commit 4e67289d6d
18 changed files with 144 additions and 133 deletions

View file

@ -252,6 +252,7 @@ namespace NLGUI
bool isGroupContainer() const { return _IsGroupContainer; } bool isGroupContainer() const { return _IsGroupContainer; }
bool isGroupScrollText() const{ return _IsGroupScrollText; } bool isGroupScrollText() const{ return _IsGroupScrollText; }
bool isGroupInScene() const{ return _IsGroupInScene; } bool isGroupInScene() const{ return _IsGroupInScene; }
bool isGroupList() const{ return _IsGroupList; }
CInterfaceGroup* getEnclosingContainer(); CInterfaceGroup* getEnclosingContainer();
@ -354,6 +355,7 @@ namespace NLGUI
bool _IsGroupContainer : 1; // faster than a virual call bool _IsGroupContainer : 1; // faster than a virual call
bool _IsGroupScrollText : 1; bool _IsGroupScrollText : 1;
bool _IsGroupInScene : 1; bool _IsGroupInScene : 1;
bool _IsGroupList : 1;
bool _NeedFrameUpdatePos : 1; // typically For CGroupInScene bool _NeedFrameUpdatePos : 1; // typically For CGroupInScene
sint32 _ResizeFromChildWMargin; sint32 _ResizeFromChildWMargin;
sint32 _ResizeFromChildHMargin; sint32 _ResizeFromChildHMargin;

View file

@ -22,6 +22,8 @@
#include "nel/misc/debug.h" #include "nel/misc/debug.h"
#include "nel/misc/smart_ptr.h" #include "nel/misc/smart_ptr.h"
#include "nel/misc/rgba.h" #include "nel/misc/rgba.h"
#include "libxml/globals.h"
#include "nel/misc/xml_auto_ptr.h"
namespace NL3D namespace NL3D
{ {

View file

@ -578,6 +578,8 @@ namespace NLGUI
static NL3D::UTextContext *textcontext; static NL3D::UTextContext *textcontext;
public: public:
static NL3D::UTextContext* getTextContext(){ return textcontext; }
static std::set< std::string > *hwCursors; static std::set< std::string > *hwCursors;
static float hwCursorScale; static float hwCursorScale;

View file

@ -25,6 +25,7 @@
#include "nel/misc/rgba.h" #include "nel/misc/rgba.h"
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"
#include "nel/gui/interface_common.h" #include "nel/gui/interface_common.h"
#include "nel/gui/interface_options.h"
namespace NLMISC namespace NLMISC
{ {
@ -302,6 +303,45 @@ namespace NLGUI
// Get the User DblClick Delay (according to save...), in milisecond // Get the User DblClick Delay (according to save...), in milisecond
uint getUserDblClickDelay(); uint getUserDblClickDelay();
/// \name Global Interface Options
// @{
// List of system options
enum TSystemOption{
OptionCtrlSheetGrayColor=0,
OptionCtrlTextGrayColor,
OptionCtrlSheetRedifyColor,
OptionCtrlTextRedifyColor,
OptionCtrlSheetGreenifyColor,
OptionCtrlTextGreenifyColor,
OptionViewTextOverBackColor,
OptionFont,
OptionAddCoefFont,
OptionMulCoefAnim,
OptionTimeoutBubbles,
OptionTimeoutMessages,
OptionTimeoutContext,
OptionTimeoutContextHtml,
NumSystemOptions
};
void setupOptions();
/** Get a system option by its enum (faster than getOptions() and getVal())
* NB: array updated after each parseInterface()
*/
const CInterfaceOptionValue &getSystemOption( TSystemOption o ) const{ return _SystemOptions[ o ]; }
// @}
CInterfaceElement* getOverExtendViewText(){ return _OverExtendViewText; }
NLMISC::CRGBA& getOverExtendViewTextBackColor(){ return _OverExtendViewTextBackColor; }
// For single lined ViewText that are clipped: on over of viewText too big, the text is drawn on top. A CRefPtr is kept
void setOverExtendViewText( CInterfaceElement *vt, NLMISC::CRGBA backGround ){
_OverExtendViewText = vt;
_OverExtendViewTextBackColor = backGround;
}
static IParser *parser; static IParser *parser;
private: private:
@ -345,6 +385,13 @@ namespace NLGUI
NLMISC::CCDBNodeLeaf *_AProp; NLMISC::CCDBNodeLeaf *_AProp;
bool _MouseHandlingEnabled; bool _MouseHandlingEnabled;
// System Options
CInterfaceOptionValue _SystemOptions[ NumSystemOptions ];
// The next ViewText to draw for Over
NLMISC::CRefPtr< CInterfaceElement > _OverExtendViewText;
NLMISC::CRGBA _OverExtendViewTextBackColor;
}; };
} }

View file

@ -60,6 +60,7 @@ namespace NLGUI
_IsGroupContainer = false; _IsGroupContainer = false;
_IsGroupScrollText = false; _IsGroupScrollText = false;
_IsGroupInScene = false; _IsGroupInScene = false;
_IsGroupList = false;
_AHOnActive = NULL; _AHOnActive = NULL;
_AHOnDeactive = NULL; _AHOnDeactive = NULL;
_AHOnLeftClick = NULL; _AHOnLeftClick = NULL;

View file

@ -17,7 +17,6 @@
#include "nel/gui/interface_element.h" #include "nel/gui/interface_element.h"
#include "nel/misc/xml_auto_ptr.h"
#include "nel/gui/interface_options.h" #include "nel/gui/interface_options.h"
using namespace std; using namespace std;

View file

@ -1420,7 +1420,31 @@ namespace NLGUI
return dbclickDelay; return dbclickDelay;
} }
// ------------------------------------------------------------------------------------------------
void CWidgetManager::setupOptions()
{
// After parsing options and templates node -> init system options.
CInterfaceOptions *opt = getOptions( "system" );
if( opt != NULL )
{
// List here all Special options
_SystemOptions[OptionCtrlSheetGrayColor]= opt->getValue("ctrl_sheet_gray_color");
_SystemOptions[OptionCtrlTextGrayColor]= opt->getValue("ctrl_text_gray_color");
_SystemOptions[OptionCtrlSheetRedifyColor]= opt->getValue("ctrl_sheet_redify_color");
_SystemOptions[OptionCtrlTextRedifyColor]= opt->getValue("ctrl_text_redify_color");
_SystemOptions[OptionCtrlSheetGreenifyColor]= opt->getValue("ctrl_sheet_greenify_color");
_SystemOptions[OptionCtrlTextGreenifyColor]= opt->getValue("ctrl_text_greenify_color");
_SystemOptions[OptionViewTextOverBackColor]= opt->getValue("text_over_back_color");
_SystemOptions[OptionFont]= opt->getValue("font");
_SystemOptions[OptionAddCoefFont]= opt->getValue("add_coef_font");
_SystemOptions[OptionMulCoefAnim]= opt->getValue("mul_coef_anim");
_SystemOptions[OptionTimeoutBubbles]= opt->getValue("bubbles_timeout");
_SystemOptions[OptionTimeoutMessages]= opt->getValue("messages_timeout");
_SystemOptions[OptionTimeoutContext]= opt->getValue("context_timeout");
_SystemOptions[OptionTimeoutContextHtml]= opt->getValue("context_html_timeout");
}
}
CWidgetManager::CWidgetManager() CWidgetManager::CWidgetManager()
{ {

View file

@ -2108,8 +2108,8 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti
curNoSheetColor= CRGBA(255,255,255, CWidgetManager::getInstance()->getGlobalColorForContent().A); curNoSheetColor= CRGBA(255,255,255, CWidgetManager::getInstance()->getGlobalColorForContent().A);
// The gray color // The gray color
CRGBA grayColor= pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetGrayColor).getValColor(); CRGBA grayColor= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetGrayColor).getValColor();
CRGBA redifyColor= pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetRedifyColor).getValColor(); CRGBA redifyColor= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetRedifyColor).getValColor();
// The color of the number. // The color of the number.
CRGBA numberColor; CRGBA numberColor;

View file

@ -89,34 +89,34 @@ void CDBGroupListSheetMission::CSheetChildMission::updateViewText(CDBGroupListSh
if (CachePreReqState == MISSION_DESC::PreReqFail) if (CachePreReqState == MISSION_DESC::PreReqFail)
{ {
// If mission prerequesits failed for miscellaneaous reasons : COLOR RED // If mission prerequesits failed for miscellaneaous reasons : COLOR RED
CRGBA color = pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetRedifyColor).getValColor(); CRGBA color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetRedifyColor).getValColor();
Ctrl->setGrayed(true); Ctrl->setGrayed(true);
Ctrl->setSheetColor(color); Ctrl->setSheetColor(color);
color = pIM->getSystemOption(CInterfaceManager::OptionCtrlTextRedifyColor).getValColor(); color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextRedifyColor).getValColor();
Text->setColor(color); Text->setColor(color);
} }
else if (CachePreReqState == MISSION_DESC::PreReqFailAlreadyDone) else if (CachePreReqState == MISSION_DESC::PreReqFailAlreadyDone)
{ {
// If mission prerequesits failed because mission is already done : COLOR GREEN // If mission prerequesits failed because mission is already done : COLOR GREEN
CRGBA color = pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetGreenifyColor).getValColor(); CRGBA color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetGreenifyColor).getValColor();
Ctrl->setGrayed(true); Ctrl->setGrayed(true);
Ctrl->setSheetColor(color); Ctrl->setSheetColor(color);
color = pIM->getSystemOption(CInterfaceManager::OptionCtrlTextGreenifyColor).getValColor(); color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextGreenifyColor).getValColor();
Text->setColor(color); Text->setColor(color);
} }
else if (CachePreReqState == MISSION_DESC::PreReqFailRunning) else if (CachePreReqState == MISSION_DESC::PreReqFailRunning)
{ {
// If mission prerequesits failed because the mission is in progress : COLOR GRAY // If mission prerequesits failed because the mission is in progress : COLOR GRAY
CRGBA color = pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetGrayColor).getValColor(); CRGBA color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetGrayColor).getValColor();
Ctrl->setGrayed(true); Ctrl->setGrayed(true);
Ctrl->setSheetColor(color); Ctrl->setSheetColor(color);
color = pIM->getSystemOption(CInterfaceManager::OptionCtrlTextGrayColor).getValColor(); color = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextGrayColor).getValColor();
Text->setColor(color); Text->setColor(color);
} }
else else

View file

@ -506,8 +506,8 @@ void CDBGroupListSheetText::checkCoords ()
{ {
// The gray color // The gray color
CRGBA normalColor= _TextTemplate.getColor(); CRGBA normalColor= _TextTemplate.getColor();
CRGBA grayColor= pIM->getSystemOption(CInterfaceManager::OptionCtrlSheetGrayColor).getValColor(); CRGBA grayColor= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlSheetGrayColor).getValColor();
CRGBA redifyColor= pIM->getSystemOption(CInterfaceManager::OptionCtrlTextRedifyColor).getValColor(); CRGBA redifyColor= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextRedifyColor).getValColor();
grayColor.modulateFromColor(grayColor, normalColor); grayColor.modulateFromColor(grayColor, normalColor);
redifyColor.modulateFromColor(redifyColor, normalColor); redifyColor.modulateFromColor(redifyColor, normalColor);

View file

@ -73,7 +73,7 @@ void contextHelp (const std::string &name)
completeURL += "_" + ClientCfg.getHtmlLanguageCode() + ".html"; completeURL += "_" + ClientCfg.getHtmlLanguageCode() + ".html";
// Add bubble // Add bubble
InSceneBubbleManager.addContextHelpHTML(completeURL, target, InSceneBubbleManager.addContextHelpHTML(completeURL, target,
pIM->getSystemOption(CInterfaceManager::OptionTimeoutContextHtml).getValSInt32()); CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutContextHtml).getValSInt32());
} }
// Found one help // Found one help
@ -565,7 +565,7 @@ void CGroupInSceneBubbleManager::addMessagePopup (const ucstring &message, CRGBA
// default timeout? // default timeout?
if(time==0) if(time==0)
time=pIM->getSystemOption(CInterfaceManager::OptionTimeoutMessages).getValSInt32(); time=CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutMessages).getValSInt32();
// Create a skill popup // Create a skill popup
string id = "message_popup_"+toString(_PopupCount++); string id = "message_popup_"+toString(_PopupCount++);
@ -614,7 +614,7 @@ void CGroupInSceneBubbleManager::addMessagePopupCenter (const ucstring &message,
// default timeout? // default timeout?
if(time==0) if(time==0)
time= pIM->getSystemOption(CInterfaceManager::OptionTimeoutMessages).getValSInt32(); time= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutMessages).getValSInt32();
// Create a skill popup // Create a skill popup
string id = "message_popup_"+toString(_PopupCount++); string id = "message_popup_"+toString(_PopupCount++);
@ -825,7 +825,7 @@ void CGroupInSceneBubbleManager::chatOpen (uint32 nUID, const ucstring &ucsText,
CCharacterCL *pChar = dynamic_cast<CCharacterCL*>(EntitiesMngr.getEntityByCompressedIndex(nUID)); CCharacterCL *pChar = dynamic_cast<CCharacterCL*>(EntitiesMngr.getEntityByCompressedIndex(nUID));
if (pChar == NULL || nUID==CLFECOMMON::INVALID_CLIENT_DATASET_INDEX) return; if (pChar == NULL || nUID==CLFECOMMON::INVALID_CLIENT_DATASET_INDEX) return;
if (bubbleTimer == 0) bubbleTimer = pIM->getSystemOption(CInterfaceManager::OptionTimeoutBubbles).getValSInt32(); if (bubbleTimer == 0) bubbleTimer = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutBubbles).getValSInt32();
// Output the message in a bubble // Output the message in a bubble
@ -1575,7 +1575,7 @@ class CHandlerCharacterBubble : public IActionHandler
string sTime = getParam (sParams, "time"); string sTime = getParam (sParams, "time");
uint duration; uint duration;
if (sTime.empty()) if (sTime.empty())
duration = pIM->getSystemOption(CInterfaceManager::OptionTimeoutBubbles).getValSInt32(); duration = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutBubbles).getValSInt32();
else else
fromString(sTime, duration); fromString(sTime, duration);
@ -1602,7 +1602,7 @@ class CHandlerSkillPopup : public IActionHandler
string sTime = getParam (sParams, "time"); string sTime = getParam (sParams, "time");
uint duration; uint duration;
if (sTime.empty()) if (sTime.empty())
duration = pIM->getSystemOption(CInterfaceManager::OptionTimeoutMessages).getValSInt32(); duration = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutMessages).getValSInt32();
else else
fromString(sTime, duration); fromString(sTime, duration);
@ -1626,7 +1626,7 @@ class CHandlerMessagePopup : public IActionHandler
string sTime = getParam (sParams, "time"); string sTime = getParam (sParams, "time");
uint duration; uint duration;
if (sTime.empty()) if (sTime.empty())
duration = pIM->getSystemOption(CInterfaceManager::OptionTimeoutMessages).getValSInt32(); duration = CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutMessages).getValSInt32();
else else
fromString(sTime, duration); fromString(sTime, duration);
@ -1651,7 +1651,7 @@ class CHandlerContextHelp : public IActionHandler
if (itext.empty()) if (itext.empty())
itext = CI18N::get(text); itext = CI18N::get(text);
InSceneBubbleManager.addContextHelp (itext, targetName, pIM->getSystemOption(CInterfaceManager::OptionTimeoutContext).getValSInt32()); InSceneBubbleManager.addContextHelp (itext, targetName, CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionTimeoutContext).getValSInt32());
} }
}; };
REGISTER_ACTION_HANDLER( CHandlerContextHelp, "context_help"); REGISTER_ACTION_HANDLER( CHandlerContextHelp, "context_help");

View file

@ -53,6 +53,7 @@ CGroupList::CGroupList(const TCtorParam &param)
_Over = false; _Over = false;
_OverColor = CRGBA(255, 255, 255, 32); _OverColor = CRGBA(255, 255, 255, 32);
_OverElt = -1; _OverElt = -1;
_IsGroupList = true;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View file

@ -685,7 +685,7 @@ void CGroupTree::draw()
} }
// will be drawn over all the interface // will be drawn over all the interface
pIM->setOverExtendViewText(viewTextExtend, col); CWidgetManager::getInstance()->setOverExtendViewText(viewTextExtend, col);
} }
} }
} }

View file

@ -123,7 +123,7 @@ bool CInterfaceTrack::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup)
{ {
double dTime; double dTime;
fromString(k.Time, dTime); fromString(k.Time, dTime);
k.Time = toString(dTime * CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionMulCoefAnim).getValFloat()); k.Time = toString(dTime * CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionMulCoefAnim).getValFloat());
} }
// Depending on the type of the track read extra values // Depending on the type of the track read extra values
@ -193,7 +193,7 @@ bool CInterfaceTrack::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup)
float fAnimTime; float fAnimTime;
fromString((const char*)time, fAnimTime); fromString((const char*)time, fAnimTime);
TAnimationTime animTime = fAnimTime * CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionMulCoefAnim).getValFloat(); TAnimationTime animTime = fAnimTime * CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionMulCoefAnim).getValFloat();
double animValue; double animValue;
fromString(value, animValue); fromString(value, animValue);
@ -544,7 +544,7 @@ bool CInterfaceAnim::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup)
fromString((const char*)ptr, _Duration); fromString((const char*)ptr, _Duration);
if (_Duration == 0) if (_Duration == 0)
_Duration = 1.0; _Duration = 1.0;
_Duration *= CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionMulCoefAnim).getValFloat(); _Duration *= CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionMulCoefAnim).getValFloat();
ptr = xmlGetProp (cur, (xmlChar*)"disable_buttons"); ptr = xmlGetProp (cur, (xmlChar*)"disable_buttons");
if (ptr) if (ptr)

View file

@ -1343,36 +1343,17 @@ void CInterfaceManager::updateFrameViews(NL3D::UCamera camera)
} }
// ------------------------------------------------------------------------------------------------
void CInterfaceManager::setupOptions() void CInterfaceManager::setupOptions()
{ {
// After parsing options and templates node -> init system options. CWidgetManager *wm = CWidgetManager::getInstance();
CInterfaceOptions *opt= CWidgetManager::getInstance()->getOptions("system"); wm->setupOptions();
if(opt)
{
// List here all Special options
_SystemOptions[OptionCtrlSheetGrayColor]= opt->getValue("ctrl_sheet_gray_color");
_SystemOptions[OptionCtrlTextGrayColor]= opt->getValue("ctrl_text_gray_color");
_SystemOptions[OptionCtrlSheetRedifyColor]= opt->getValue("ctrl_sheet_redify_color");
_SystemOptions[OptionCtrlTextRedifyColor]= opt->getValue("ctrl_text_redify_color");
_SystemOptions[OptionCtrlSheetGreenifyColor]= opt->getValue("ctrl_sheet_greenify_color");
_SystemOptions[OptionCtrlTextGreenifyColor]= opt->getValue("ctrl_text_greenify_color");
_SystemOptions[OptionViewTextOverBackColor]= opt->getValue("text_over_back_color");
_SystemOptions[OptionFont]= opt->getValue("font");
_SystemOptions[OptionAddCoefFont]= opt->getValue("add_coef_font");
_SystemOptions[OptionMulCoefAnim]= opt->getValue("mul_coef_anim");
_SystemOptions[OptionTimeoutBubbles]= opt->getValue("bubbles_timeout");
_SystemOptions[OptionTimeoutMessages]= opt->getValue("messages_timeout");
_SystemOptions[OptionTimeoutContext]= opt->getValue("context_timeout");
_SystemOptions[OptionTimeoutContextHtml]= opt->getValue("context_html_timeout");
}
// Try to change font if any // Try to change font if any
string sFont = _SystemOptions[OptionFont].getValStr(); string sFont = wm->getSystemOption( CWidgetManager::OptionFont ).getValStr();
extern void resetTextContext( const char*, bool ); extern void resetTextContext( const char*, bool );
if ((!sFont.empty()) && (driver != NULL)) if ((!sFont.empty()) && (driver != NULL))
resetTextContext(sFont.c_str(), true); resetTextContext(sFont.c_str(), true);
// Continue to parse the rest of the interface // Continue to parse the rest of the interface
} }
@ -4029,21 +4010,14 @@ void CInterfaceManager::incLocalSyncActionCounter()
} }
// ***************************************************************************
void CInterfaceManager::setOverExtendViewText(CViewText *vt, CRGBA backGround)
{
_OverExtendViewText= vt;
_OverExtendViewTextBackColor= backGround;
}
// *************************************************************************** // ***************************************************************************
void CInterfaceManager::drawOverExtendViewText() void CInterfaceManager::drawOverExtendViewText()
{ {
// CViewRenderer &rVR= getViewRenderer(); // CViewRenderer &rVR= getViewRenderer();
if(_OverExtendViewText) if( CWidgetManager::getInstance()->getOverExtendViewText() )
{ {
CViewText *vtSrc= safe_cast<CViewText*>((CInterfaceElement*)_OverExtendViewText); CViewText *vtSrc= safe_cast<CViewText*>( CWidgetManager::getInstance()->getOverExtendViewText() );
CInterfaceGroup *groupOver = getWindowForActiveMasterGroup("over_extend_view_text"); CInterfaceGroup *groupOver = getWindowForActiveMasterGroup("over_extend_view_text");
if(groupOver) if(groupOver)
@ -4065,7 +4039,7 @@ void CInterfaceManager::drawOverExtendViewText()
CViewBitmap *pBack= dynamic_cast<CViewBitmap*>(groupOver->getView("midback")); CViewBitmap *pBack= dynamic_cast<CViewBitmap*>(groupOver->getView("midback"));
CViewBitmap *pOutline= dynamic_cast<CViewBitmap*>(groupOver->getView("midoutline")); CViewBitmap *pOutline= dynamic_cast<CViewBitmap*>(groupOver->getView("midoutline"));
if(pBack) if(pBack)
pBack->setColor(_OverExtendViewTextBackColor); pBack->setColor( CWidgetManager::getInstance()->getOverExtendViewTextBackColor() );
if(pOutline) if(pOutline)
{ {
pOutline->setColor(vtSrc->getColor()); pOutline->setColor(vtSrc->getColor());
@ -4112,7 +4086,7 @@ void CInterfaceManager::drawOverExtendViewText()
} }
// Reset the ptr so at next frame, won't be rendered (but if reset) // Reset the ptr so at next frame, won't be rendered (but if reset)
_OverExtendViewText= NULL; CWidgetManager::getInstance()->setOverExtendViewText( NULL, CWidgetManager::getInstance()->getOverExtendViewTextBackColor() );
} }
} }

View file

@ -315,39 +315,8 @@ public:
// display a system info string // display a system info string
void displaySystemInfo(const ucstring &str, const std::string &Category = "SYS"); void displaySystemInfo(const ucstring &str, const std::string &Category = "SYS");
NLMISC::CRGBA getSystemInfoColor(const std::string &Category = "SYS"); NLMISC::CRGBA getSystemInfoColor(const std::string &Category = "SYS");
/// \name Global Interface Options
// @{
// List of system options
enum TSystemOption
{
OptionCtrlSheetGrayColor=0,
OptionCtrlTextGrayColor,
OptionCtrlSheetRedifyColor,
OptionCtrlTextRedifyColor,
OptionCtrlSheetGreenifyColor,
OptionCtrlTextGreenifyColor,
OptionViewTextOverBackColor,
OptionFont,
OptionAddCoefFont,
OptionMulCoefAnim,
OptionTimeoutBubbles,
OptionTimeoutMessages,
OptionTimeoutContext,
OptionTimeoutContextHtml,
NumSystemOptions,
};
virtual void setupOptions();
/** Get a system option by its enum (faster than getOptions() and getVal())
* NB: array updated after each parseInterface()
*/
const CInterfaceOptionValue &getSystemOption(TSystemOption o) const {return _SystemOptions[o];}
// @}
void setupOptions();
/** Open a MessageBox. this is a simple ModalWindow with a Ok button /** Open a MessageBox. this is a simple ModalWindow with a Ok button
* ui:interface:message_box must be defined in xml, with a "text" ViewText son * ui:interface:message_box must be defined in xml, with a "text" ViewText son
@ -493,9 +462,6 @@ public:
return fTmp*fTmp*fTmp; return fTmp*fTmp*fTmp;
} }
// For single lined ViewText that are clipped: on over of viewText too big, the text is drawn on top. A CRefPtr is kept
void setOverExtendViewText(CViewText *vt, NLMISC::CRGBA backGround);
// Item Carac Test, get the value // Item Carac Test, get the value
bool isItemCaracRequirementMet(CHARACTERISTICS::TCharacteristics type, sint32 value) bool isItemCaracRequirementMet(CHARACTERISTICS::TCharacteristics type, sint32 value)
{ {
@ -730,9 +696,6 @@ private:
bool isControlInWindow (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd); bool isControlInWindow (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd);
uint getDepth (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd); uint getDepth (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd);
// System Options
CInterfaceOptionValue _SystemOptions[NumSystemOptions];
// Modes // Modes
CInterfaceConfig::CDesktopImage _Modes[MAX_NUM_MODES]; CInterfaceConfig::CDesktopImage _Modes[MAX_NUM_MODES];
uint8 _CurrentMode; uint8 _CurrentMode;
@ -758,9 +721,6 @@ private:
NLMISC::CCDBNodeLeaf *_ErrorColor; NLMISC::CCDBNodeLeaf *_ErrorColor;
NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB; NLMISC::CCDBNodeLeaf *_AlphaRolloverSpeedDB;
// The next ViewText to draw for Over
NLMISC::CRefPtr<CInterfaceElement> _OverExtendViewText;
NLMISC::CRGBA _OverExtendViewTextBackColor;
void drawOverExtendViewText(); void drawOverExtendViewText();
CInterfaceGroup *getWindowForActiveMasterGroup(const std::string &windowName); CInterfaceGroup *getWindowForActiveMasterGroup(const std::string &windowName);

View file

@ -97,14 +97,14 @@ void addKeyLine (CGroupList *pParent, const ucstring &keyName, const ucstring &s
if (pViewKeyName != NULL) if (pViewKeyName != NULL)
{ {
pViewKeyName->setText (keyName); pViewKeyName->setText (keyName);
pViewKeyName->setColor(grayed?pIM->getSystemOption(CInterfaceManager::OptionCtrlTextGrayColor).getValColor():CRGBA::White); pViewKeyName->setColor(grayed?CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextGrayColor).getValColor():CRGBA::White);
} }
CViewText *pViewShortcutName = dynamic_cast<CViewText*>(pKeysLine->getView(TEMPLATE_KEYS_SHORTCUT_NAME)); CViewText *pViewShortcutName = dynamic_cast<CViewText*>(pKeysLine->getView(TEMPLATE_KEYS_SHORTCUT_NAME));
if (pViewShortcutName != NULL) if (pViewShortcutName != NULL)
{ {
pViewShortcutName->setText (shortcutName); pViewShortcutName->setText (shortcutName);
pViewShortcutName->setColor(grayed?pIM->getSystemOption(CInterfaceManager::OptionCtrlTextGrayColor).getValColor():CRGBA::White); pViewShortcutName->setColor(grayed?CWidgetManager::getInstance()->getSystemOption(CWidgetManager::OptionCtrlTextGrayColor).getValColor():CRGBA::White);
} }
pKeysLine->setParent (pParent); pKeysLine->setParent (pParent);

View file

@ -18,13 +18,13 @@
#include "nel/misc/i18n.h" #include "nel/misc/i18n.h"
#include "view_text.h" #include "view_text.h"
#include "interface_manager.h"
#include "nel/gui/view_renderer.h" #include "nel/gui/view_renderer.h"
#include "nel/gui/widget_manager.h" #include "nel/gui/widget_manager.h"
#include "nel/gui/group_container_base.h" #include "nel/gui/group_container_base.h"
#include "nel/gui/ctrl_tooltip.h" #include "nel/gui/ctrl_tooltip.h"
#include "nel/misc/xml_auto_ptr.h" #include "nel/misc/xml_auto_ptr.h"
#include "nel/gui/lua_ihm.h" #include "nel/gui/lua_ihm.h"
#include "nel/gui/view_pointer_base.h"
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
@ -51,7 +51,8 @@ void CViewText::setupDefault ()
_ParentPosRef = Hotspot_BL; _ParentPosRef = Hotspot_BL;
_PosRef = Hotspot_BL; _PosRef = Hotspot_BL;
_FontSize = 12+CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); _FontSize = 12 +
CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
_Color = CRGBA(255,255,255,255); _Color = CRGBA(255,255,255,255);
_Shadow = false; _Shadow = false;
_ShadowColor = CRGBA(0,0,0,255); _ShadowColor = CRGBA(0,0,0,255);
@ -109,7 +110,7 @@ CViewText:: CViewText (const std::string& id, const std::string Text, sint FontS
_Id = id; _Id = id;
setupDefault (); setupDefault ();
_FontSize = FontSize+CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); _FontSize = FontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
_Color = Color; _Color = Color;
_Shadow = Shadow; _Shadow = Shadow;
setText(Text); setText(Text);
@ -120,7 +121,7 @@ CViewText:: CViewText (const std::string& id, const std::string Text, sint FontS
CViewText::~CViewText() CViewText::~CViewText()
{ {
if (_Index != 0xFFFFFFFF) if (_Index != 0xFFFFFFFF)
CInterfaceManager::getInstance()->getTextContext()->erase (_Index); CViewRenderer::getTextContext()->erase (_Index);
clearLines(); clearLines();
if (!_Setuped) if (!_Setuped)
@ -134,7 +135,7 @@ CViewText::~CViewText()
CViewText &CViewText::operator=(const CViewText &vt) CViewText &CViewText::operator=(const CViewText &vt)
{ {
if (_Index != 0xFFFFFFFF) if (_Index != 0xFFFFFFFF)
CInterfaceManager::getInstance()->getTextContext()->erase (_Index); CViewRenderer::getTextContext()->erase (_Index);
// Create database entries // Create database entries
_Active = vt._Active; _Active = vt._Active;
@ -187,11 +188,11 @@ void CViewText::parseTextOptions (xmlNodePtr cur)
_ModulateGlobalColor= convertBool(prop); _ModulateGlobalColor= convertBool(prop);
prop = (char*) xmlGetProp( cur, (xmlChar*)"fontsize" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"fontsize" );
_FontSize = 12+CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); _FontSize = 12 + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
if (prop) if (prop)
{ {
fromString((const char*)prop, _FontSize); fromString((const char*)prop, _FontSize);
_FontSize += CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); _FontSize += CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
} }
prop = (char*) xmlGetProp( cur, (xmlChar*)"shadow" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"shadow" );
@ -376,7 +377,6 @@ void CViewText::checkCoords ()
} }
else else
{ {
CInterfaceManager *pIM = CInterfaceManager::getInstance();
CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft(); CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft();
if (pCB != NULL) if (pCB != NULL)
{ {
@ -412,7 +412,6 @@ void CViewText::draw ()
{ {
H_AUTO( RZ_Interface_CViewText_draw ) H_AUTO( RZ_Interface_CViewText_draw )
CInterfaceManager *pIM = CInterfaceManager::getInstance();
CViewRenderer &rVR = *CViewRenderer::getInstance(); CViewRenderer &rVR = *CViewRenderer::getInstance();
// *** Out Of Clip? // *** Out Of Clip?
@ -430,7 +429,7 @@ void CViewText::draw ()
return; return;
rVR.getScreenOOSize (oow, ooh); rVR.getScreenOOSize (oow, ooh);
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
// *** get current color // *** get current color
@ -455,7 +454,7 @@ void CViewText::draw ()
{ {
if (_Lines.size() == 0) return; if (_Lines.size() == 0) return;
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
@ -645,8 +644,8 @@ void CViewText::draw ()
CGroupContainerBase *gc= dynamic_cast<CGroupContainerBase*>(pIG); CGroupContainerBase *gc= dynamic_cast<CGroupContainerBase*>(pIG);
if(!gc || !gc->isMoving()) if(!gc || !gc->isMoving())
{ {
CRGBA col= pIM->getSystemOption(CInterfaceManager::OptionViewTextOverBackColor).getValColor(); CRGBA col= CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionViewTextOverBackColor).getValColor();
pIM->setOverExtendViewText(this, col); CWidgetManager::getInstance()->setOverExtendViewText(this, col);
} }
} }
} }
@ -716,7 +715,7 @@ void CViewText::setText(const ucstring & text)
// *************************************************************************** // ***************************************************************************
void CViewText::setFontSize (sint nFontSize) void CViewText::setFontSize (sint nFontSize)
{ {
_FontSize = nFontSize+CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); _FontSize = nFontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
computeFontSize (); computeFontSize ();
invalidateContent(); invalidateContent();
} }
@ -724,7 +723,7 @@ void CViewText::setFontSize (sint nFontSize)
// *************************************************************************** // ***************************************************************************
sint CViewText::getFontSize() const sint CViewText::getFontSize() const
{ {
return _FontSize - CInterfaceManager::getInstance()->getSystemOption(CInterfaceManager::OptionAddCoefFont).getValSInt32(); return _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
} }
// *************************************************************************** // ***************************************************************************
@ -862,7 +861,7 @@ void CViewText::updateTextContextMultiLine(uint nMaxWidth)
rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_FontWidth); rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_FontWidth);
} }
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
// Parse the letter // Parse the letter
{ {
@ -1040,7 +1039,7 @@ void CViewText::updateTextContextMultiLineJustified(uint nMaxWidth, bool expandS
// Get the word value. // Get the word value.
wordValue = _Text.substr(spaceEnd, wordEnd - spaceEnd); wordValue = _Text.substr(spaceEnd, wordEnd - spaceEnd);
// compute width of word // compute width of word
si = CInterfaceManager::getInstance()->getTextContext()->getStringInfo(wordValue); si = CViewRenderer::getTextContext()->getStringInfo(wordValue);
// compute size of spaces/Tab + word // compute size of spaces/Tab + word
newLineWidth = lineWidth + numSpaces * _SpaceWidth; newLineWidth = lineWidth + numSpaces * _SpaceWidth;
@ -1119,7 +1118,7 @@ void CViewText::updateTextContextMultiLineJustified(uint nMaxWidth, bool expandS
for(currChar = 0; currChar < wordValue.length(); ++currChar) for(currChar = 0; currChar < wordValue.length(); ++currChar)
{ {
oneChar = wordValue[currChar]; oneChar = wordValue[currChar];
si = CInterfaceManager::getInstance()->getTextContext()->getStringInfo(oneChar); si = CViewRenderer::getTextContext()->getStringInfo(oneChar);
if ((uint) (px + si.StringWidth) > nMaxWidth) break; if ((uint) (px + si.StringWidth) > nMaxWidth) break;
px += si.StringWidth; px += si.StringWidth;
} }
@ -1238,7 +1237,7 @@ void CViewText::updateTextContextMultiLineJustified(uint nMaxWidth, bool expandS
// *************************************************************************** // ***************************************************************************
void CViewText::updateTextContext () void CViewText::updateTextContext ()
{ {
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
@ -1413,7 +1412,7 @@ void CViewText::updateCoords()
{ {
CInterfaceGroup *parent = _Parent; CInterfaceGroup *parent = _Parent;
// avoid resizing parents to compute the limiter // avoid resizing parents to compute the limiter
while (parent && (parent->getResizeFromChildW() || dynamic_cast<CGroupList *>(parent))) while (parent && (parent->getResizeFromChildW() || parent->isGroupList() ))
{ {
// NB nico : the dynamic_cast for CGroupList is bad!! // NB nico : the dynamic_cast for CGroupList is bad!!
// can't avoid it for now, because, CGroupList implicitly does a "resize from child" in its update coords // can't avoid it for now, because, CGroupList implicitly does a "resize from child" in its update coords
@ -1550,7 +1549,7 @@ void CViewText::setColorRGBA(NLMISC::CRGBA col)
void CViewText::getCharacterPositionFromIndex(sint index, bool cursorAtPreviousLineEnd, sint &x, sint &y, sint &height) const void CViewText::getCharacterPositionFromIndex(sint index, bool cursorAtPreviousLineEnd, sint &x, sint &y, sint &height) const
{ {
NLMISC::clamp(index, 0, (sint) _Text.length()); NLMISC::clamp(index, 0, (sint) _Text.length());
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setFontSize (_FontSize); TextContext->setFontSize (_FontSize);
@ -1662,7 +1661,7 @@ static uint getCharacterIndex(const ucstring &textValue, float x)
{ {
// get character width // get character width
singleChar[0] = textValue[i]; singleChar[0] = textValue[i];
si = CInterfaceManager::getInstance()->getTextContext()->getStringInfo(singleChar); si = CViewRenderer::getTextContext()->getStringInfo(singleChar);
px += si.StringWidth; px += si.StringWidth;
// the character is at the i - 1 position // the character is at the i - 1 position
if (px > x) if (px > x)
@ -1679,7 +1678,7 @@ static uint getCharacterIndex(const ucstring &textValue, float x)
// *************************************************************************** // ***************************************************************************
void CViewText::getCharacterIndexFromPosition(sint x, sint y, uint &index, bool &cursorAtPreviousLineEnd) const void CViewText::getCharacterIndexFromPosition(sint x, sint y, uint &index, bool &cursorAtPreviousLineEnd) const
{ {
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
// setup the text context // setup the text context
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
@ -1819,7 +1818,7 @@ void CViewText::setStringSelectionSkipingSpace(uint stringId, const ucstring &te
quadSize--; quadSize--;
} }
// select what quad to skip // select what quad to skip
CInterfaceManager::getInstance()->getTextContext()->setStringSelection(stringId, quadStart, quadSize); CViewRenderer::getTextContext()->setStringSelection(stringId, quadStart, quadSize);
} }
// *************************************************************************** // ***************************************************************************
@ -1911,7 +1910,7 @@ void CViewText::CLine::clear()
for(uint k = 0; k < _Words.size(); ++k) for(uint k = 0; k < _Words.size(); ++k)
{ {
if (_Words[k].Index != 0xffffffff) if (_Words[k].Index != 0xffffffff)
CInterfaceManager::getInstance()->getTextContext()->erase(_Words[k].Index); CViewRenderer::getTextContext()->erase(_Words[k].Index);
} }
_Words.clear(); _Words.clear();
_NumChars = 0; _NumChars = 0;
@ -1932,7 +1931,7 @@ void CViewText::CWord::build(const ucstring &text, uint numSpaces/*=0*/)
{ {
Text = text; Text = text;
NumSpaces = numSpaces; NumSpaces = numSpaces;
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
Index = TextContext->textPush(text); Index = TextContext->textPush(text);
Info = TextContext->getStringInfo(Index); Info = TextContext->getStringInfo(Index);
} }
@ -1955,7 +1954,7 @@ sint32 CViewText::getMaxUsedW() const
static const ucstring lineFeedStr("\n"); static const ucstring lineFeedStr("\n");
float maxWidth = 0; float maxWidth = 0;
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setFontSize (_FontSize); TextContext->setFontSize (_FontSize);
@ -2039,7 +2038,7 @@ sint32 CViewText::getMinUsedW() const
// If we can't clip the words, return the size of the largest word // If we can't clip the words, return the size of the largest word
else if ((_TextMode == DontClipWord) || (_TextMode == Justified)) else if ((_TextMode == DontClipWord) || (_TextMode == Justified))
{ {
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setFontSize (_FontSize); TextContext->setFontSize (_FontSize);
@ -2090,7 +2089,7 @@ void CViewText::onInvalidateContent()
// *************************************************************************** // ***************************************************************************
void CViewText::computeFontSize () void CViewText::computeFontSize ()
{ {
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
TextContext->setHotSpot (UTextContext::BottomLeft); TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow); TextContext->setShaded (_Shadow);
TextContext->setFontSize (_FontSize); TextContext->setFontSize (_FontSize);
@ -2444,7 +2443,7 @@ void CViewText::setSingleLineTextFormatTaged(const ucstring &text)
} }
// convert in ULetterColors // convert in ULetterColors
NL3D::UTextContext *TextContext = CInterfaceManager::getInstance()->getTextContext(); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext();
ULetterColors * letterColors = TextContext->createLetterColors(); ULetterColors * letterColors = TextContext->createLetterColors();
for(uint i=0; i<tempLetterColors.size(); i++) for(uint i=0; i<tempLetterColors.size(); i++)
{ {