mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-25 02:10:53 +00:00
CHANGED: #1471 CCtrlTextButton is now part of NELGUI library, and is under NLGUI namespace.
--HG-- branch : gui-refactoring
This commit is contained in:
parent
040eaad94c
commit
47a1769dea
19 changed files with 734 additions and 725 deletions
166
code/nel/include/nel/gui/ctrl_text_button.h
Normal file
166
code/nel/include/nel/gui/ctrl_text_button.h
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NL_CTRL_TEXT_BUTTON_H
|
||||||
|
#define NL_CTRL_TEXT_BUTTON_H
|
||||||
|
|
||||||
|
#include "nel/gui/ctrl_base_button.h"
|
||||||
|
#include "nel/gui/view_renderer.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
class CEventDescriptor;
|
||||||
|
class CViewText;
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
/**
|
||||||
|
* Text Button that can be either Push or Toggle button. Localized, auto-resize
|
||||||
|
* \author Lionel Berenguier
|
||||||
|
* \author Nevrax France
|
||||||
|
* \date 2002
|
||||||
|
*/
|
||||||
|
class CCtrlTextButton : public CCtrlBaseButton
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/// Constructor
|
||||||
|
CCtrlTextButton(const TCtorParam ¶m);
|
||||||
|
|
||||||
|
// Init part
|
||||||
|
virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
|
||||||
|
|
||||||
|
virtual void updateCoords();
|
||||||
|
|
||||||
|
virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
|
||||||
|
|
||||||
|
// Display part
|
||||||
|
virtual void draw();
|
||||||
|
|
||||||
|
// Hide/Show the text also.
|
||||||
|
virtual void setActive(bool state);
|
||||||
|
|
||||||
|
// Add also our ViewText
|
||||||
|
virtual void onAddToGroup();
|
||||||
|
|
||||||
|
|
||||||
|
/// \from CInterfaceElement
|
||||||
|
sint32 getMaxUsedW() const;
|
||||||
|
sint32 getMinUsedW() const;
|
||||||
|
|
||||||
|
// Special Text Colors accessors
|
||||||
|
// Colors
|
||||||
|
NLMISC::CRGBA getTextColorNormal() const {return _TextColorNormal;}
|
||||||
|
void setTextColorNormal(NLMISC::CRGBA v) {_TextColorNormal= v;}
|
||||||
|
NLMISC::CRGBA getTextColorPushed() const {return _TextColorPushed;}
|
||||||
|
void setTextColorPushed(NLMISC::CRGBA v) {_TextColorPushed= v;}
|
||||||
|
NLMISC::CRGBA getTextColorOver() const {return _TextColorOver;}
|
||||||
|
void setTextColorOver(NLMISC::CRGBA v) {_TextColorOver= v;}
|
||||||
|
// Shadow Colors
|
||||||
|
NLMISC::CRGBA getTextShadowColorNormal() const {return _TextShadowColorNormal;}
|
||||||
|
void setTextShadowColorNormal(NLMISC::CRGBA v) {_TextShadowColorNormal= v;}
|
||||||
|
NLMISC::CRGBA getTextShadowColorPushed() const {return _TextShadowColorPushed;}
|
||||||
|
void setTextShadowColorPushed(NLMISC::CRGBA v) {_TextShadowColorPushed= v;}
|
||||||
|
NLMISC::CRGBA getTextShadowColorOver() const {return _TextShadowColorOver;}
|
||||||
|
void setTextShadowColorOver(NLMISC::CRGBA v) {_TextShadowColorOver= v;}
|
||||||
|
// Global Modulate Colors
|
||||||
|
bool getTextModulateGlobalColorNormal() const {return _TextModulateGlobalColorNormal;}
|
||||||
|
void setTextModulateGlobalColorNormal(bool v) {_TextModulateGlobalColorNormal= v;}
|
||||||
|
bool getTextModulateGlobalColorPushed() const {return _TextModulateGlobalColorPushed;}
|
||||||
|
void setTextModulateGlobalColorPushed(bool v) {_TextModulateGlobalColorPushed= v;}
|
||||||
|
bool getTextModulateGlobalColorOver() const {return _TextModulateGlobalColorOver;}
|
||||||
|
void setTextModulateGlobalColorOver(bool v) {_TextModulateGlobalColorOver= v;}
|
||||||
|
// Set text (noop if text id)
|
||||||
|
void setText (const ucstring &text);
|
||||||
|
ucstring getText () const;
|
||||||
|
|
||||||
|
void setHardText (const std::string &text);
|
||||||
|
std::string getHardText () const;
|
||||||
|
|
||||||
|
CViewText* getViewText();
|
||||||
|
void setViewText(CViewText* text) {_ViewText=text;}
|
||||||
|
|
||||||
|
void setTextX(sint32 x);
|
||||||
|
sint32 getTextX() const { return _TextX; }
|
||||||
|
|
||||||
|
void setWMargin(sint32 w) { _WMargin = w; }
|
||||||
|
sint32 getWMargin() const { return _WMargin; }
|
||||||
|
|
||||||
|
sint32 getWMin() const { return _WMin; }
|
||||||
|
void setWMin( sint32 wmin ) { _WMin = wmin; }
|
||||||
|
|
||||||
|
// Compute Size according to bitmap and Text (Ensure as big as possible button)
|
||||||
|
sint32 getWMax() const;
|
||||||
|
|
||||||
|
int luaGetViewText(CLuaState &ls);
|
||||||
|
|
||||||
|
REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton)
|
||||||
|
REFLECT_UCSTRING("uc_hardtext", getText, setText);
|
||||||
|
REFLECT_STRING("hardtext", getHardText, setHardText);
|
||||||
|
REFLECT_SINT32("text_x", getTextX, setTextX)
|
||||||
|
REFLECT_SINT32("wmargin", getWMargin, setWMargin)
|
||||||
|
REFLECT_SINT32("wmin", getWMin, setWMin)
|
||||||
|
REFLECT_LUA_METHOD("getViewText", luaGetViewText)
|
||||||
|
REFLECT_EXPORT_END
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
enum {NumTexture= 3};
|
||||||
|
|
||||||
|
CViewRenderer::CTextureId _TextureIdNormal[NumTexture];
|
||||||
|
CViewRenderer::CTextureId _TextureIdPushed[NumTexture];
|
||||||
|
CViewRenderer::CTextureId _TextureIdOver[NumTexture];
|
||||||
|
|
||||||
|
// setup
|
||||||
|
void setup();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
CViewText *_ViewText;
|
||||||
|
|
||||||
|
bool _Setuped;
|
||||||
|
bool _IsViewTextId;
|
||||||
|
bool _ForceTextOver; // text is displayed over the "over" texture
|
||||||
|
// Size of Bitmaps
|
||||||
|
sint32 _BmpLeftW, _BmpMiddleW, _BmpRightW, _BmpH;
|
||||||
|
// Value to add to TextW to get button W.
|
||||||
|
sint32 _WMargin;
|
||||||
|
// Min W Value
|
||||||
|
sint32 _WMin;
|
||||||
|
sint32 _TextY;
|
||||||
|
sint32 _TextX;
|
||||||
|
THotSpot _TextPosRef;
|
||||||
|
THotSpot _TextParentPosRef;
|
||||||
|
// Special Colors for text
|
||||||
|
NLMISC::CRGBA _TextColorNormal;
|
||||||
|
NLMISC::CRGBA _TextColorPushed;
|
||||||
|
NLMISC::CRGBA _TextColorOver;
|
||||||
|
NLMISC::CRGBA _TextShadowColorNormal;
|
||||||
|
NLMISC::CRGBA _TextShadowColorPushed;
|
||||||
|
NLMISC::CRGBA _TextShadowColorOver;
|
||||||
|
bool _TextModulateGlobalColorNormal;
|
||||||
|
bool _TextModulateGlobalColorPushed;
|
||||||
|
bool _TextModulateGlobalColorOver;
|
||||||
|
bool _TextHeaderColor;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // NL_CTRL_TEXT_BUTTON_H
|
||||||
|
|
||||||
|
/* End of ctrl_text_button.h */
|
552
code/nel/src/gui/ctrl_text_button.cpp
Normal file
552
code/nel/src/gui/ctrl_text_button.cpp
Normal file
|
@ -0,0 +1,552 @@
|
||||||
|
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
|
#include "nel/misc/xml_auto_ptr.h"
|
||||||
|
#include "nel/gui/view_text.h"
|
||||||
|
#include "nel/gui/view_text_id.h"
|
||||||
|
#include "nel/gui/group_container_base.h"
|
||||||
|
#include "nel/gui/lua_ihm.h"
|
||||||
|
#include "nel/gui/widget_manager.h"
|
||||||
|
#include "nel/misc/i18n.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace NLMISC;
|
||||||
|
using namespace NL3D;
|
||||||
|
|
||||||
|
|
||||||
|
NLMISC_REGISTER_OBJECT(CViewBase, CCtrlTextButton, std::string, "text_button");
|
||||||
|
|
||||||
|
namespace NLGUI
|
||||||
|
{
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
CCtrlTextButton::CCtrlTextButton(const TCtorParam ¶m)
|
||||||
|
: CCtrlBaseButton(param)
|
||||||
|
{
|
||||||
|
_BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0;
|
||||||
|
_WMargin= 0;
|
||||||
|
_WMin= 0;
|
||||||
|
_TextX= -2;
|
||||||
|
_TextY= -2;
|
||||||
|
_Setuped= false;
|
||||||
|
_ViewText= NULL;
|
||||||
|
_IsViewTextId= false;
|
||||||
|
_TextColorNormal= CRGBA(255, 255, 255, 255);
|
||||||
|
_TextColorPushed= CRGBA(255, 255, 255, 255);
|
||||||
|
_TextColorOver= CRGBA(255, 255, 255, 255);
|
||||||
|
_TextShadowColorNormal= CRGBA(0, 0, 0, 255);
|
||||||
|
_TextShadowColorPushed= CRGBA(0, 0, 0, 255);
|
||||||
|
_TextShadowColorOver= CRGBA(0, 0, 0, 255);
|
||||||
|
_TextModulateGlobalColorNormal= true;
|
||||||
|
_TextModulateGlobalColorPushed= true;
|
||||||
|
_TextModulateGlobalColorOver= true;
|
||||||
|
_TextHeaderColor= false;
|
||||||
|
_TextPosRef = Hotspot_MM;
|
||||||
|
_TextParentPosRef = Hotspot_MM;
|
||||||
|
_ForceTextOver = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
bool CCtrlTextButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
|
||||||
|
{
|
||||||
|
CXMLAutoPtr prop;
|
||||||
|
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||||
|
|
||||||
|
//try to get props that can be inherited from groups
|
||||||
|
//if a property is not defined, try to find it in the parent group.
|
||||||
|
//if it is undefined, set it to zero
|
||||||
|
if (! CCtrlBaseButton::parse(cur,parentGroup) )
|
||||||
|
{
|
||||||
|
string tmp = "cannot parse view:"+getId()+", parent:"+parentGroup->getId();
|
||||||
|
nlinfo(tmp.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// *** Read Textures.
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_normal" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
string TxName = toLower(std::string((const char *) prop));
|
||||||
|
_TextureIdNormal[0].setTexture((TxName+"_l.tga").c_str());
|
||||||
|
_TextureIdNormal[1].setTexture((TxName+"_m.tga").c_str());
|
||||||
|
_TextureIdNormal[2].setTexture((TxName+"_r.tga").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
string TxName = toLower(std::string((const char *) prop));
|
||||||
|
_TextureIdPushed[0].setTexture((TxName+"_l.tga").c_str());
|
||||||
|
_TextureIdPushed[1].setTexture((TxName+"_m.tga").c_str());
|
||||||
|
_TextureIdPushed[2].setTexture((TxName+"_r.tga").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
string TxName = toLower(std::string((const char *) prop));
|
||||||
|
_TextureIdOver[0].setTexture((TxName+"_l.tga").c_str());
|
||||||
|
_TextureIdOver[1].setTexture((TxName+"_m.tga").c_str());
|
||||||
|
_TextureIdOver[2].setTexture((TxName+"_r.tga").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute Bmp Sizes
|
||||||
|
nlctassert(NumTexture==3);
|
||||||
|
rVR.getTextureSizeFromId(_TextureIdNormal[0], _BmpLeftW, _BmpH);
|
||||||
|
rVR.getTextureSizeFromId(_TextureIdNormal[1], _BmpMiddleW, _BmpH);
|
||||||
|
rVR.getTextureSizeFromId(_TextureIdNormal[2], _BmpRightW, _BmpH);
|
||||||
|
|
||||||
|
|
||||||
|
// *** Create the ViewText for draw, and set text
|
||||||
|
// ViewTextId or standard view?
|
||||||
|
CXMLAutoPtr ptr((const char*)xmlGetProp(cur,(xmlChar*)"textid"));
|
||||||
|
_IsViewTextId= (bool)ptr;
|
||||||
|
if(_IsViewTextId)
|
||||||
|
_ViewText= new CViewTextID(CViewBase::TCtorParam());
|
||||||
|
else
|
||||||
|
_ViewText= new CViewText(CViewBase::TCtorParam());
|
||||||
|
_ViewText->setId(_Id+"_text");
|
||||||
|
_ViewText->parseTextOptions(cur);
|
||||||
|
_ViewText->setAvoidResizeParent(avoidResizeParent());
|
||||||
|
if(_IsViewTextId)
|
||||||
|
((CViewTextID*)_ViewText)->parseTextIdOptions(cur);
|
||||||
|
// Same RenderLayer as us.
|
||||||
|
_ViewText->setRenderLayer(getRenderLayer());
|
||||||
|
// Parse the hardText (if not text id)
|
||||||
|
if(!_IsViewTextId)
|
||||||
|
{
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"hardtext" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
const char *propPtr = prop;
|
||||||
|
ucstring text = ucstring(propPtr);
|
||||||
|
if ((strlen(propPtr)>2) && (propPtr[0] == 'u') && (propPtr[1] == 'i'))
|
||||||
|
text = CI18N::get (propPtr);
|
||||||
|
_ViewText->setText(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// wmargin
|
||||||
|
_WMargin= 0;
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"wmargin" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
fromString((const char *) prop, _WMargin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// wmin
|
||||||
|
_WMin= 0;
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"wmin" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
fromString((const char *) prop, _WMin);
|
||||||
|
}
|
||||||
|
// _WMin is at least the size of All W Bitmaps
|
||||||
|
_WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW);
|
||||||
|
|
||||||
|
// TextY
|
||||||
|
_TextY= -2;
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
fromString((const char *) prop, _TextY);
|
||||||
|
}
|
||||||
|
_TextX = 0;
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_x" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
fromString((const char *) prop, _TextX);
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_underlined" );
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
_ViewText->setUnderlined(convertBool(prop));
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*) "text_posref" );
|
||||||
|
_TextParentPosRef = Hotspot_MM;
|
||||||
|
_TextPosRef = Hotspot_MM;
|
||||||
|
if (prop)
|
||||||
|
{
|
||||||
|
char *seekPtr = prop.getDatas();
|
||||||
|
seekPtr = strtok(seekPtr," \t");
|
||||||
|
if (seekPtr == NULL)
|
||||||
|
{
|
||||||
|
// mean that there s a bad formated posref (missing space or tab)
|
||||||
|
nlwarning("bad 'text_pos_ref' formatting");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_TextParentPosRef = convertHotSpot (seekPtr);
|
||||||
|
seekPtr = strtok (seekPtr+1+strlen(seekPtr)," \t");
|
||||||
|
_TextPosRef = convertHotSpot (seekPtr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// *** Read Text Colors
|
||||||
|
// get color normal
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_normal" );
|
||||||
|
_TextColorNormal = CRGBA(255,255,255,255);
|
||||||
|
if (prop)
|
||||||
|
_TextColorNormal = convertColor (prop);
|
||||||
|
|
||||||
|
// Get ColorPushed
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_pushed" );
|
||||||
|
_TextColorPushed = CRGBA(255,255,255,255);
|
||||||
|
if (prop)
|
||||||
|
_TextColorPushed = convertColor(prop);
|
||||||
|
|
||||||
|
// Get ColorOver
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_over" );
|
||||||
|
_TextColorOver = CRGBA(255,255,255,255);
|
||||||
|
if (prop)
|
||||||
|
_TextColorOver = convertColor(prop);
|
||||||
|
|
||||||
|
|
||||||
|
// *** Read Text Shadow Colors
|
||||||
|
// get color normal
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_normal" );
|
||||||
|
_TextShadowColorNormal = CRGBA(0,0,0,255);
|
||||||
|
if (prop)
|
||||||
|
_TextShadowColorNormal = convertColor (prop);
|
||||||
|
|
||||||
|
// Get ColorPushed
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_pushed" );
|
||||||
|
_TextShadowColorPushed = CRGBA(0,0,0,255);
|
||||||
|
if (prop)
|
||||||
|
_TextShadowColorPushed = convertColor(prop);
|
||||||
|
|
||||||
|
// Get ColorOver
|
||||||
|
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_over" );
|
||||||
|
_TextShadowColorOver = CRGBA(0,0,0,255);
|
||||||
|
if (prop)
|
||||||
|
_TextShadowColorOver = convertColor(prop);
|
||||||
|
|
||||||
|
// *** Read Text Global Color
|
||||||
|
// Default: take "global_color" param interface_element option.
|
||||||
|
_TextModulateGlobalColorNormal= _TextModulateGlobalColorPushed= _TextModulateGlobalColorOver= getModulateGlobalColor();
|
||||||
|
|
||||||
|
// Read special text global_color for each state
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_normal" );
|
||||||
|
if (prop) _TextModulateGlobalColorNormal= convertBool(prop);
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_pushed" );
|
||||||
|
if (prop) _TextModulateGlobalColorPushed= convertBool(prop);
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_over" );
|
||||||
|
if (prop) _TextModulateGlobalColorOver= convertBool(prop);
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"force_text_over" );
|
||||||
|
if (prop) _ForceTextOver= convertBool(prop);
|
||||||
|
|
||||||
|
// read Text header color
|
||||||
|
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_header_color" );
|
||||||
|
if (prop) _TextHeaderColor= convertBool(prop);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::draw ()
|
||||||
|
{
|
||||||
|
CViewRenderer::CTextureId *pTxId = NULL;
|
||||||
|
CRGBA color;
|
||||||
|
|
||||||
|
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||||
|
CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
|
||||||
|
|
||||||
|
// *** Detect Over
|
||||||
|
bool lastOver = false;
|
||||||
|
updateOver(lastOver);
|
||||||
|
|
||||||
|
// *** Choose Button State
|
||||||
|
switch(_Type)
|
||||||
|
{
|
||||||
|
case ToggleButton:
|
||||||
|
{
|
||||||
|
if (_Pushed)
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdPushed;
|
||||||
|
color = getCurrentColorPushed(globalColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdNormal;
|
||||||
|
color = getCurrentColorNormal(globalColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RadioButton:
|
||||||
|
{
|
||||||
|
// CViewPointer &rIP = *CInterfaceManager::getInstance()->getPointer();
|
||||||
|
// Init the radio button
|
||||||
|
initRBRef();
|
||||||
|
|
||||||
|
if (*_RBRef == this)
|
||||||
|
{
|
||||||
|
// if it is equal to the ref value, then the button must appear pushed
|
||||||
|
pTxId = _TextureIdPushed;
|
||||||
|
color = getCurrentColorPushed(globalColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdPushed;
|
||||||
|
color = getCurrentColorPushed(globalColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdNormal;
|
||||||
|
color = getCurrentColorNormal(globalColor);
|
||||||
|
_Pushed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PushButton:
|
||||||
|
{
|
||||||
|
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdPushed;
|
||||||
|
color = getCurrentColorPushed(globalColor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pTxId = _TextureIdNormal;
|
||||||
|
color = getCurrentColorNormal(globalColor);
|
||||||
|
_Pushed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// *** Draw
|
||||||
|
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
||||||
|
|
||||||
|
// Fromzen ?
|
||||||
|
if (getFrozen() && getFrozenHalfTone())
|
||||||
|
color.A >>= 2;
|
||||||
|
|
||||||
|
sint32 x= _XReal;
|
||||||
|
sint32 y= _YReal;
|
||||||
|
sint32 txw, txh;
|
||||||
|
txw = _WReal - _BmpLeftW - _BmpRightW;
|
||||||
|
txh = _HReal;
|
||||||
|
nlctassert(NumTexture==3);
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
|
||||||
|
|
||||||
|
// *** Draw Over
|
||||||
|
if (_Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
||||||
|
{
|
||||||
|
if ((lastOver == false) && (_AHOnOver != NULL))
|
||||||
|
CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
|
||||||
|
|
||||||
|
// the pointer is over the button.
|
||||||
|
color= getCurrentColorOver(globalColor);
|
||||||
|
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
||||||
|
|
||||||
|
// Fromzen ?
|
||||||
|
if (getFrozen() && getFrozenHalfTone())
|
||||||
|
color.A >>= 2;
|
||||||
|
|
||||||
|
nlctassert(NumTexture==3);
|
||||||
|
pTxId= _TextureIdOver;
|
||||||
|
uint layerOffset = _ForceTextOver ? 0 : 1; // Must write Over On Top of the text ?
|
||||||
|
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
|
||||||
|
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
|
||||||
|
}
|
||||||
|
|
||||||
|
// *** Setup ViewText Color according to selected one (should be drawn after because of eltorder)
|
||||||
|
// update header color?
|
||||||
|
CRGBA viewTextColor;
|
||||||
|
if(_TextHeaderColor)
|
||||||
|
{
|
||||||
|
CInterfaceGroup *pIG= getRootWindow();
|
||||||
|
if(pIG->isGroupContainer())
|
||||||
|
{
|
||||||
|
CGroupContainerBase *pGC = static_cast<CGroupContainerBase*>(pIG);
|
||||||
|
viewTextColor= pGC->getDrawnHeaderColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Setup ViewText color
|
||||||
|
if ( pTxId==_TextureIdNormal )
|
||||||
|
{
|
||||||
|
if(_TextHeaderColor) viewTextColor.A= _TextColorNormal.A;
|
||||||
|
else viewTextColor= _TextColorNormal;
|
||||||
|
_ViewText->setColor(viewTextColor);
|
||||||
|
_ViewText->setShadowColor(_TextShadowColorNormal);
|
||||||
|
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorNormal);
|
||||||
|
}
|
||||||
|
else if ( pTxId==_TextureIdPushed )
|
||||||
|
{
|
||||||
|
if(_TextHeaderColor) viewTextColor.A= _TextColorPushed.A;
|
||||||
|
else viewTextColor= _TextColorPushed;
|
||||||
|
_ViewText->setColor(viewTextColor);
|
||||||
|
_ViewText->setShadowColor(_TextShadowColorPushed);
|
||||||
|
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorPushed);
|
||||||
|
}
|
||||||
|
else if ( pTxId==_TextureIdOver )
|
||||||
|
{
|
||||||
|
if(_TextHeaderColor) viewTextColor.A= _TextColorOver.A;
|
||||||
|
else viewTextColor= _TextColorOver;
|
||||||
|
_ViewText->setColor(viewTextColor);
|
||||||
|
_ViewText->setShadowColor(_TextShadowColorOver);
|
||||||
|
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorOver);
|
||||||
|
}
|
||||||
|
if(getFrozen() && getFrozenHalfTone())
|
||||||
|
_ViewText->setAlpha(_ViewText->getAlpha()>>2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::updateCoords()
|
||||||
|
{
|
||||||
|
// Should have been setuped with addCtrl
|
||||||
|
nlassert(_Setuped);
|
||||||
|
|
||||||
|
// Compute Size according to bitmap and Text.
|
||||||
|
if (!(_SizeRef & 1))
|
||||||
|
{
|
||||||
|
_W= _ViewText->getW() + _WMargin + _TextX;
|
||||||
|
// Ensure as big as possible button
|
||||||
|
_W= max(_W, _WMin);
|
||||||
|
}
|
||||||
|
if (!(_SizeRef & 2))
|
||||||
|
{
|
||||||
|
_H= _BmpH;
|
||||||
|
}
|
||||||
|
|
||||||
|
CViewBase::updateCoords();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
sint32 CCtrlTextButton::getWMax() const
|
||||||
|
{
|
||||||
|
return max(_ViewText->getW(false) + _WMargin + _TextX, _WMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::setup()
|
||||||
|
{
|
||||||
|
_Setuped= true;
|
||||||
|
|
||||||
|
// setup the viewText and add to parent
|
||||||
|
_ViewText->setParent (getParent());
|
||||||
|
_ViewText->setParentPos (this);
|
||||||
|
_ViewText->setParentPosRef (_TextParentPosRef);
|
||||||
|
_ViewText->setPosRef (_TextPosRef);
|
||||||
|
_ViewText->setActive(_Active);
|
||||||
|
_ViewText->setX(_TextX);
|
||||||
|
_ViewText->setY(_TextY);
|
||||||
|
|
||||||
|
getParent()->addView(_ViewText);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::setTextX(sint32 x)
|
||||||
|
{
|
||||||
|
_TextX = x;
|
||||||
|
if (_ViewText) _ViewText->setX(_TextX);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
sint32 CCtrlTextButton::getMaxUsedW() const
|
||||||
|
{
|
||||||
|
return _W;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
sint32 CCtrlTextButton::getMinUsedW() const
|
||||||
|
{
|
||||||
|
return _W;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::setActive(bool state)
|
||||||
|
{
|
||||||
|
_ViewText->setActive(state);
|
||||||
|
CCtrlBaseButton::setActive(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::onAddToGroup()
|
||||||
|
{
|
||||||
|
// Add the view if not done
|
||||||
|
if(!_Setuped)
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::setText (const ucstring &text)
|
||||||
|
{
|
||||||
|
if (_ViewText && !_IsViewTextId)
|
||||||
|
_ViewText->setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
ucstring CCtrlTextButton::getText () const
|
||||||
|
{
|
||||||
|
if (_ViewText && !_IsViewTextId)
|
||||||
|
return _ViewText->getText();
|
||||||
|
return ucstring("");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
void CCtrlTextButton::setHardText (const std::string &text)
|
||||||
|
{
|
||||||
|
if (_ViewText && !_IsViewTextId)
|
||||||
|
_ViewText->setHardText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
string CCtrlTextButton::getHardText () const
|
||||||
|
{
|
||||||
|
if (_ViewText && !_IsViewTextId)
|
||||||
|
return _ViewText->getHardText();
|
||||||
|
return string("");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
|
CViewText* CCtrlTextButton::getViewText()
|
||||||
|
{
|
||||||
|
return _ViewText;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
|
int CCtrlTextButton::luaGetViewText(CLuaState &ls)
|
||||||
|
{
|
||||||
|
const char *funcName = "getViewText";
|
||||||
|
CLuaIHM::checkArgCount(ls, funcName, 0);
|
||||||
|
CLuaIHM::pushUIOnStack(ls, getViewText());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***************************************************************************
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "interface_v3/group_editbox.h"
|
#include "interface_v3/group_editbox.h"
|
||||||
#include "permanent_ban.h"
|
#include "permanent_ban.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "interface_v3/ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "interface_v3/group_tab.h"
|
#include "interface_v3/group_tab.h"
|
||||||
#include "string_manager_client.h"
|
#include "string_manager_client.h"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
// Client.
|
// Client.
|
||||||
#include "game_context_menu.h"
|
#include "game_context_menu.h"
|
||||||
#include "interface_v3/interface_manager.h"
|
#include "interface_v3/interface_manager.h"
|
||||||
#include "interface_v3/ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "interface_v3/group_menu.h"
|
#include "interface_v3/group_menu.h"
|
||||||
#include "entities.h"
|
#include "entities.h"
|
||||||
#include "interface_v3/bot_chat_manager.h"
|
#include "interface_v3/bot_chat_manager.h"
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
#include "main_loop.h"
|
#include "main_loop.h"
|
||||||
#include "interface_v3/ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "nel/gui/interface_group.h"
|
#include "nel/gui/interface_group.h"
|
||||||
#include "interface_v3/interface_pointer.h"
|
#include "interface_v3/interface_pointer.h"
|
||||||
#include "game_share/bot_chat_types.h"
|
#include "game_share/bot_chat_types.h"
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
#include "../string_manager_client.h"
|
#include "../string_manager_client.h"
|
||||||
#include "group_container.h"
|
#include "group_container.h"
|
||||||
#include "dbgroup_list_sheet_text.h"
|
#include "dbgroup_list_sheet_text.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "../client_cfg.h"
|
#include "../client_cfg.h"
|
||||||
#include "../init_main_loop.h"
|
#include "../init_main_loop.h"
|
||||||
#include "guild_manager.h"
|
#include "guild_manager.h"
|
||||||
|
|
|
@ -1,545 +0,0 @@
|
||||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
||||||
// Copyright (C) 2010 Winch Gate Property Limited
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as
|
|
||||||
// published by the Free Software Foundation, either version 3 of the
|
|
||||||
// License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
#include "ctrl_text_button.h"
|
|
||||||
#include "nel/misc/xml_auto_ptr.h"
|
|
||||||
#include "nel/gui/view_text.h"
|
|
||||||
#include "nel/gui/view_text_id.h"
|
|
||||||
#include "nel/gui/group_container_base.h"
|
|
||||||
#include "nel/gui/lua_ihm.h"
|
|
||||||
#include "nel/gui/widget_manager.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace NLMISC;
|
|
||||||
using namespace NL3D;
|
|
||||||
|
|
||||||
|
|
||||||
NLMISC_REGISTER_OBJECT(CViewBase, CCtrlTextButton, std::string, "text_button");
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
CCtrlTextButton::CCtrlTextButton(const TCtorParam ¶m)
|
|
||||||
: CCtrlBaseButton(param)
|
|
||||||
{
|
|
||||||
_BmpLeftW= _BmpMiddleW= _BmpRightW= _BmpH= 0;
|
|
||||||
_WMargin= 0;
|
|
||||||
_WMin= 0;
|
|
||||||
_TextX= -2;
|
|
||||||
_TextY= -2;
|
|
||||||
_Setuped= false;
|
|
||||||
_ViewText= NULL;
|
|
||||||
_IsViewTextId= false;
|
|
||||||
_TextColorNormal= CRGBA(255, 255, 255, 255);
|
|
||||||
_TextColorPushed= CRGBA(255, 255, 255, 255);
|
|
||||||
_TextColorOver= CRGBA(255, 255, 255, 255);
|
|
||||||
_TextShadowColorNormal= CRGBA(0, 0, 0, 255);
|
|
||||||
_TextShadowColorPushed= CRGBA(0, 0, 0, 255);
|
|
||||||
_TextShadowColorOver= CRGBA(0, 0, 0, 255);
|
|
||||||
_TextModulateGlobalColorNormal= true;
|
|
||||||
_TextModulateGlobalColorPushed= true;
|
|
||||||
_TextModulateGlobalColorOver= true;
|
|
||||||
_TextHeaderColor= false;
|
|
||||||
_TextPosRef = Hotspot_MM;
|
|
||||||
_TextParentPosRef = Hotspot_MM;
|
|
||||||
_ForceTextOver = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
bool CCtrlTextButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
|
|
||||||
{
|
|
||||||
CXMLAutoPtr prop;
|
|
||||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
|
||||||
|
|
||||||
//try to get props that can be inherited from groups
|
|
||||||
//if a property is not defined, try to find it in the parent group.
|
|
||||||
//if it is undefined, set it to zero
|
|
||||||
if (! CCtrlBaseButton::parse(cur,parentGroup) )
|
|
||||||
{
|
|
||||||
string tmp = "cannot parse view:"+getId()+", parent:"+parentGroup->getId();
|
|
||||||
nlinfo(tmp.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// *** Read Textures.
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_normal" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
string TxName = toLower(std::string((const char *) prop));
|
|
||||||
_TextureIdNormal[0].setTexture((TxName+"_l.tga").c_str());
|
|
||||||
_TextureIdNormal[1].setTexture((TxName+"_m.tga").c_str());
|
|
||||||
_TextureIdNormal[2].setTexture((TxName+"_r.tga").c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
string TxName = toLower(std::string((const char *) prop));
|
|
||||||
_TextureIdPushed[0].setTexture((TxName+"_l.tga").c_str());
|
|
||||||
_TextureIdPushed[1].setTexture((TxName+"_m.tga").c_str());
|
|
||||||
_TextureIdPushed[2].setTexture((TxName+"_r.tga").c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
string TxName = toLower(std::string((const char *) prop));
|
|
||||||
_TextureIdOver[0].setTexture((TxName+"_l.tga").c_str());
|
|
||||||
_TextureIdOver[1].setTexture((TxName+"_m.tga").c_str());
|
|
||||||
_TextureIdOver[2].setTexture((TxName+"_r.tga").c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute Bmp Sizes
|
|
||||||
nlctassert(NumTexture==3);
|
|
||||||
rVR.getTextureSizeFromId(_TextureIdNormal[0], _BmpLeftW, _BmpH);
|
|
||||||
rVR.getTextureSizeFromId(_TextureIdNormal[1], _BmpMiddleW, _BmpH);
|
|
||||||
rVR.getTextureSizeFromId(_TextureIdNormal[2], _BmpRightW, _BmpH);
|
|
||||||
|
|
||||||
|
|
||||||
// *** Create the ViewText for draw, and set text
|
|
||||||
// ViewTextId or standard view?
|
|
||||||
CXMLAutoPtr ptr((const char*)xmlGetProp(cur,(xmlChar*)"textid"));
|
|
||||||
_IsViewTextId= (bool)ptr;
|
|
||||||
if(_IsViewTextId)
|
|
||||||
_ViewText= new CViewTextID(CViewBase::TCtorParam());
|
|
||||||
else
|
|
||||||
_ViewText= new CViewText(CViewBase::TCtorParam());
|
|
||||||
_ViewText->setId(_Id+"_text");
|
|
||||||
_ViewText->parseTextOptions(cur);
|
|
||||||
_ViewText->setAvoidResizeParent(avoidResizeParent());
|
|
||||||
if(_IsViewTextId)
|
|
||||||
((CViewTextID*)_ViewText)->parseTextIdOptions(cur);
|
|
||||||
// Same RenderLayer as us.
|
|
||||||
_ViewText->setRenderLayer(getRenderLayer());
|
|
||||||
// Parse the hardText (if not text id)
|
|
||||||
if(!_IsViewTextId)
|
|
||||||
{
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"hardtext" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
const char *propPtr = prop;
|
|
||||||
ucstring text = ucstring(propPtr);
|
|
||||||
if ((strlen(propPtr)>2) && (propPtr[0] == 'u') && (propPtr[1] == 'i'))
|
|
||||||
text = CI18N::get (propPtr);
|
|
||||||
_ViewText->setText(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// wmargin
|
|
||||||
_WMargin= 0;
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"wmargin" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
fromString((const char *) prop, _WMargin);
|
|
||||||
}
|
|
||||||
|
|
||||||
// wmin
|
|
||||||
_WMin= 0;
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"wmin" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
fromString((const char *) prop, _WMin);
|
|
||||||
}
|
|
||||||
// _WMin is at least the size of All W Bitmaps
|
|
||||||
_WMin= max(_WMin, _BmpLeftW + _BmpMiddleW + _BmpRightW);
|
|
||||||
|
|
||||||
// TextY
|
|
||||||
_TextY= -2;
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_y" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
fromString((const char *) prop, _TextY);
|
|
||||||
}
|
|
||||||
_TextX = 0;
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_x" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
fromString((const char *) prop, _TextX);
|
|
||||||
}
|
|
||||||
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_underlined" );
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
_ViewText->setUnderlined(convertBool(prop));
|
|
||||||
}
|
|
||||||
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*) "text_posref" );
|
|
||||||
_TextParentPosRef = Hotspot_MM;
|
|
||||||
_TextPosRef = Hotspot_MM;
|
|
||||||
if (prop)
|
|
||||||
{
|
|
||||||
char *seekPtr = prop.getDatas();
|
|
||||||
seekPtr = strtok(seekPtr," \t");
|
|
||||||
if (seekPtr == NULL)
|
|
||||||
{
|
|
||||||
// mean that there s a bad formated posref (missing space or tab)
|
|
||||||
nlwarning("bad 'text_pos_ref' formatting");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_TextParentPosRef = convertHotSpot (seekPtr);
|
|
||||||
seekPtr = strtok (seekPtr+1+strlen(seekPtr)," \t");
|
|
||||||
_TextPosRef = convertHotSpot (seekPtr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// *** Read Text Colors
|
|
||||||
// get color normal
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_normal" );
|
|
||||||
_TextColorNormal = CRGBA(255,255,255,255);
|
|
||||||
if (prop)
|
|
||||||
_TextColorNormal = convertColor (prop);
|
|
||||||
|
|
||||||
// Get ColorPushed
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_pushed" );
|
|
||||||
_TextColorPushed = CRGBA(255,255,255,255);
|
|
||||||
if (prop)
|
|
||||||
_TextColorPushed = convertColor(prop);
|
|
||||||
|
|
||||||
// Get ColorOver
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_color_over" );
|
|
||||||
_TextColorOver = CRGBA(255,255,255,255);
|
|
||||||
if (prop)
|
|
||||||
_TextColorOver = convertColor(prop);
|
|
||||||
|
|
||||||
|
|
||||||
// *** Read Text Shadow Colors
|
|
||||||
// get color normal
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_normal" );
|
|
||||||
_TextShadowColorNormal = CRGBA(0,0,0,255);
|
|
||||||
if (prop)
|
|
||||||
_TextShadowColorNormal = convertColor (prop);
|
|
||||||
|
|
||||||
// Get ColorPushed
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_pushed" );
|
|
||||||
_TextShadowColorPushed = CRGBA(0,0,0,255);
|
|
||||||
if (prop)
|
|
||||||
_TextShadowColorPushed = convertColor(prop);
|
|
||||||
|
|
||||||
// Get ColorOver
|
|
||||||
prop= (char*) xmlGetProp( cur, (xmlChar*)"text_shadow_color_over" );
|
|
||||||
_TextShadowColorOver = CRGBA(0,0,0,255);
|
|
||||||
if (prop)
|
|
||||||
_TextShadowColorOver = convertColor(prop);
|
|
||||||
|
|
||||||
// *** Read Text Global Color
|
|
||||||
// Default: take "global_color" param interface_element option.
|
|
||||||
_TextModulateGlobalColorNormal= _TextModulateGlobalColorPushed= _TextModulateGlobalColorOver= getModulateGlobalColor();
|
|
||||||
|
|
||||||
// Read special text global_color for each state
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_normal" );
|
|
||||||
if (prop) _TextModulateGlobalColorNormal= convertBool(prop);
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_pushed" );
|
|
||||||
if (prop) _TextModulateGlobalColorPushed= convertBool(prop);
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_global_color_over" );
|
|
||||||
if (prop) _TextModulateGlobalColorOver= convertBool(prop);
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"force_text_over" );
|
|
||||||
if (prop) _ForceTextOver= convertBool(prop);
|
|
||||||
|
|
||||||
// read Text header color
|
|
||||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"text_header_color" );
|
|
||||||
if (prop) _TextHeaderColor= convertBool(prop);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::draw ()
|
|
||||||
{
|
|
||||||
CViewRenderer::CTextureId *pTxId = NULL;
|
|
||||||
CRGBA color;
|
|
||||||
|
|
||||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
|
||||||
CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
|
|
||||||
|
|
||||||
// *** Detect Over
|
|
||||||
bool lastOver = false;
|
|
||||||
updateOver(lastOver);
|
|
||||||
|
|
||||||
// *** Choose Button State
|
|
||||||
switch(_Type)
|
|
||||||
{
|
|
||||||
case ToggleButton:
|
|
||||||
{
|
|
||||||
if (_Pushed)
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdPushed;
|
|
||||||
color = getCurrentColorPushed(globalColor);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdNormal;
|
|
||||||
color = getCurrentColorNormal(globalColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RadioButton:
|
|
||||||
{
|
|
||||||
// CViewPointer &rIP = *CInterfaceManager::getInstance()->getPointer();
|
|
||||||
// Init the radio button
|
|
||||||
initRBRef();
|
|
||||||
|
|
||||||
if (*_RBRef == this)
|
|
||||||
{
|
|
||||||
// if it is equal to the ref value, then the button must appear pushed
|
|
||||||
pTxId = _TextureIdPushed;
|
|
||||||
color = getCurrentColorPushed(globalColor);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdPushed;
|
|
||||||
color = getCurrentColorPushed(globalColor);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdNormal;
|
|
||||||
color = getCurrentColorNormal(globalColor);
|
|
||||||
_Pushed = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PushButton:
|
|
||||||
{
|
|
||||||
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdPushed;
|
|
||||||
color = getCurrentColorPushed(globalColor);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pTxId = _TextureIdNormal;
|
|
||||||
color = getCurrentColorNormal(globalColor);
|
|
||||||
_Pushed = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// *** Draw
|
|
||||||
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
|
||||||
|
|
||||||
// Fromzen ?
|
|
||||||
if (getFrozen() && getFrozenHalfTone())
|
|
||||||
color.A >>= 2;
|
|
||||||
|
|
||||||
sint32 x= _XReal;
|
|
||||||
sint32 y= _YReal;
|
|
||||||
sint32 txw, txh;
|
|
||||||
txw = _WReal - _BmpLeftW - _BmpRightW;
|
|
||||||
txh = _HReal;
|
|
||||||
nlctassert(NumTexture==3);
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
|
|
||||||
|
|
||||||
// *** Draw Over
|
|
||||||
if (_Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
|
||||||
{
|
|
||||||
if ((lastOver == false) && (_AHOnOver != NULL))
|
|
||||||
CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
|
|
||||||
|
|
||||||
// the pointer is over the button.
|
|
||||||
color= getCurrentColorOver(globalColor);
|
|
||||||
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
|
||||||
|
|
||||||
// Fromzen ?
|
|
||||||
if (getFrozen() && getFrozenHalfTone())
|
|
||||||
color.A >>= 2;
|
|
||||||
|
|
||||||
nlctassert(NumTexture==3);
|
|
||||||
pTxId= _TextureIdOver;
|
|
||||||
uint layerOffset = _ForceTextOver ? 0 : 1; // Must write Over On Top of the text ?
|
|
||||||
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x, y, _BmpLeftW, txh, 0, false, pTxId[0], color );
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW, y, txw, txh, 0, false, pTxId[1], color );
|
|
||||||
rVR.drawRotFlipBitmap ( _RenderLayer+layerOffset, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
|
|
||||||
}
|
|
||||||
|
|
||||||
// *** Setup ViewText Color according to selected one (should be drawn after because of eltorder)
|
|
||||||
// update header color?
|
|
||||||
CRGBA viewTextColor;
|
|
||||||
if(_TextHeaderColor)
|
|
||||||
{
|
|
||||||
CInterfaceGroup *pIG= getRootWindow();
|
|
||||||
if(pIG->isGroupContainer())
|
|
||||||
{
|
|
||||||
CGroupContainerBase *pGC = static_cast<CGroupContainerBase*>(pIG);
|
|
||||||
viewTextColor= pGC->getDrawnHeaderColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Setup ViewText color
|
|
||||||
if ( pTxId==_TextureIdNormal )
|
|
||||||
{
|
|
||||||
if(_TextHeaderColor) viewTextColor.A= _TextColorNormal.A;
|
|
||||||
else viewTextColor= _TextColorNormal;
|
|
||||||
_ViewText->setColor(viewTextColor);
|
|
||||||
_ViewText->setShadowColor(_TextShadowColorNormal);
|
|
||||||
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorNormal);
|
|
||||||
}
|
|
||||||
else if ( pTxId==_TextureIdPushed )
|
|
||||||
{
|
|
||||||
if(_TextHeaderColor) viewTextColor.A= _TextColorPushed.A;
|
|
||||||
else viewTextColor= _TextColorPushed;
|
|
||||||
_ViewText->setColor(viewTextColor);
|
|
||||||
_ViewText->setShadowColor(_TextShadowColorPushed);
|
|
||||||
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorPushed);
|
|
||||||
}
|
|
||||||
else if ( pTxId==_TextureIdOver )
|
|
||||||
{
|
|
||||||
if(_TextHeaderColor) viewTextColor.A= _TextColorOver.A;
|
|
||||||
else viewTextColor= _TextColorOver;
|
|
||||||
_ViewText->setColor(viewTextColor);
|
|
||||||
_ViewText->setShadowColor(_TextShadowColorOver);
|
|
||||||
_ViewText->setModulateGlobalColor(_TextModulateGlobalColorOver);
|
|
||||||
}
|
|
||||||
if(getFrozen() && getFrozenHalfTone())
|
|
||||||
_ViewText->setAlpha(_ViewText->getAlpha()>>2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::updateCoords()
|
|
||||||
{
|
|
||||||
// Should have been setuped with addCtrl
|
|
||||||
nlassert(_Setuped);
|
|
||||||
|
|
||||||
// Compute Size according to bitmap and Text.
|
|
||||||
if (!(_SizeRef & 1))
|
|
||||||
{
|
|
||||||
_W= _ViewText->getW() + _WMargin + _TextX;
|
|
||||||
// Ensure as big as possible button
|
|
||||||
_W= max(_W, _WMin);
|
|
||||||
}
|
|
||||||
if (!(_SizeRef & 2))
|
|
||||||
{
|
|
||||||
_H= _BmpH;
|
|
||||||
}
|
|
||||||
|
|
||||||
CViewBase::updateCoords();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
sint32 CCtrlTextButton::getWMax() const
|
|
||||||
{
|
|
||||||
return max(_ViewText->getW(false) + _WMargin + _TextX, _WMin);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::setup()
|
|
||||||
{
|
|
||||||
_Setuped= true;
|
|
||||||
|
|
||||||
// setup the viewText and add to parent
|
|
||||||
_ViewText->setParent (getParent());
|
|
||||||
_ViewText->setParentPos (this);
|
|
||||||
_ViewText->setParentPosRef (_TextParentPosRef);
|
|
||||||
_ViewText->setPosRef (_TextPosRef);
|
|
||||||
_ViewText->setActive(_Active);
|
|
||||||
_ViewText->setX(_TextX);
|
|
||||||
_ViewText->setY(_TextY);
|
|
||||||
|
|
||||||
getParent()->addView(_ViewText);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::setTextX(sint32 x)
|
|
||||||
{
|
|
||||||
_TextX = x;
|
|
||||||
if (_ViewText) _ViewText->setX(_TextX);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
sint32 CCtrlTextButton::getMaxUsedW() const
|
|
||||||
{
|
|
||||||
return _W;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
sint32 CCtrlTextButton::getMinUsedW() const
|
|
||||||
{
|
|
||||||
return _W;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::setActive(bool state)
|
|
||||||
{
|
|
||||||
_ViewText->setActive(state);
|
|
||||||
CCtrlBaseButton::setActive(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::onAddToGroup()
|
|
||||||
{
|
|
||||||
// Add the view if not done
|
|
||||||
if(!_Setuped)
|
|
||||||
setup();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::setText (const ucstring &text)
|
|
||||||
{
|
|
||||||
if (_ViewText && !_IsViewTextId)
|
|
||||||
_ViewText->setText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
ucstring CCtrlTextButton::getText () const
|
|
||||||
{
|
|
||||||
if (_ViewText && !_IsViewTextId)
|
|
||||||
return _ViewText->getText();
|
|
||||||
return ucstring("");
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
void CCtrlTextButton::setHardText (const std::string &text)
|
|
||||||
{
|
|
||||||
if (_ViewText && !_IsViewTextId)
|
|
||||||
_ViewText->setHardText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
string CCtrlTextButton::getHardText () const
|
|
||||||
{
|
|
||||||
if (_ViewText && !_IsViewTextId)
|
|
||||||
return _ViewText->getHardText();
|
|
||||||
return string("");
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
|
|
||||||
CViewText* CCtrlTextButton::getViewText()
|
|
||||||
{
|
|
||||||
return _ViewText;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
|
|
||||||
int CCtrlTextButton::luaGetViewText(CLuaState &ls)
|
|
||||||
{
|
|
||||||
const char *funcName = "getViewText";
|
|
||||||
CLuaIHM::checkArgCount(ls, funcName, 0);
|
|
||||||
CLuaIHM::pushUIOnStack(ls, getViewText());
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
|
@ -1,165 +0,0 @@
|
||||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
|
||||||
// Copyright (C) 2010 Winch Gate Property Limited
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Affero General Public License as
|
|
||||||
// published by the Free Software Foundation, either version 3 of the
|
|
||||||
// License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef NL_CTRL_TEXT_BUTTON_H
|
|
||||||
#define NL_CTRL_TEXT_BUTTON_H
|
|
||||||
|
|
||||||
#include "nel/gui/ctrl_base_button.h"
|
|
||||||
#include "nel/gui/view_renderer.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace NLGUI
|
|
||||||
{
|
|
||||||
class CEventDescriptor;
|
|
||||||
class CViewText;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
/**
|
|
||||||
* Text Button that can be either Push or Toggle button. Localized, auto-resize
|
|
||||||
* \author Lionel Berenguier
|
|
||||||
* \author Nevrax France
|
|
||||||
* \date 2002
|
|
||||||
*/
|
|
||||||
class CCtrlTextButton : public CCtrlBaseButton
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
/// Constructor
|
|
||||||
CCtrlTextButton(const TCtorParam ¶m);
|
|
||||||
|
|
||||||
// Init part
|
|
||||||
virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
|
|
||||||
|
|
||||||
virtual void updateCoords();
|
|
||||||
|
|
||||||
virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
|
|
||||||
|
|
||||||
// Display part
|
|
||||||
virtual void draw();
|
|
||||||
|
|
||||||
// Hide/Show the text also.
|
|
||||||
virtual void setActive(bool state);
|
|
||||||
|
|
||||||
// Add also our ViewText
|
|
||||||
virtual void onAddToGroup();
|
|
||||||
|
|
||||||
|
|
||||||
/// \from CInterfaceElement
|
|
||||||
sint32 getMaxUsedW() const;
|
|
||||||
sint32 getMinUsedW() const;
|
|
||||||
|
|
||||||
// Special Text Colors accessors
|
|
||||||
// Colors
|
|
||||||
NLMISC::CRGBA getTextColorNormal() const {return _TextColorNormal;}
|
|
||||||
void setTextColorNormal(NLMISC::CRGBA v) {_TextColorNormal= v;}
|
|
||||||
NLMISC::CRGBA getTextColorPushed() const {return _TextColorPushed;}
|
|
||||||
void setTextColorPushed(NLMISC::CRGBA v) {_TextColorPushed= v;}
|
|
||||||
NLMISC::CRGBA getTextColorOver() const {return _TextColorOver;}
|
|
||||||
void setTextColorOver(NLMISC::CRGBA v) {_TextColorOver= v;}
|
|
||||||
// Shadow Colors
|
|
||||||
NLMISC::CRGBA getTextShadowColorNormal() const {return _TextShadowColorNormal;}
|
|
||||||
void setTextShadowColorNormal(NLMISC::CRGBA v) {_TextShadowColorNormal= v;}
|
|
||||||
NLMISC::CRGBA getTextShadowColorPushed() const {return _TextShadowColorPushed;}
|
|
||||||
void setTextShadowColorPushed(NLMISC::CRGBA v) {_TextShadowColorPushed= v;}
|
|
||||||
NLMISC::CRGBA getTextShadowColorOver() const {return _TextShadowColorOver;}
|
|
||||||
void setTextShadowColorOver(NLMISC::CRGBA v) {_TextShadowColorOver= v;}
|
|
||||||
// Global Modulate Colors
|
|
||||||
bool getTextModulateGlobalColorNormal() const {return _TextModulateGlobalColorNormal;}
|
|
||||||
void setTextModulateGlobalColorNormal(bool v) {_TextModulateGlobalColorNormal= v;}
|
|
||||||
bool getTextModulateGlobalColorPushed() const {return _TextModulateGlobalColorPushed;}
|
|
||||||
void setTextModulateGlobalColorPushed(bool v) {_TextModulateGlobalColorPushed= v;}
|
|
||||||
bool getTextModulateGlobalColorOver() const {return _TextModulateGlobalColorOver;}
|
|
||||||
void setTextModulateGlobalColorOver(bool v) {_TextModulateGlobalColorOver= v;}
|
|
||||||
// Set text (noop if text id)
|
|
||||||
void setText (const ucstring &text);
|
|
||||||
ucstring getText () const;
|
|
||||||
|
|
||||||
void setHardText (const std::string &text);
|
|
||||||
std::string getHardText () const;
|
|
||||||
|
|
||||||
CViewText* getViewText();
|
|
||||||
void setViewText(CViewText* text) {_ViewText=text;}
|
|
||||||
|
|
||||||
void setTextX(sint32 x);
|
|
||||||
sint32 getTextX() const { return _TextX; }
|
|
||||||
|
|
||||||
void setWMargin(sint32 w) { _WMargin = w; }
|
|
||||||
sint32 getWMargin() const { return _WMargin; }
|
|
||||||
|
|
||||||
sint32 getWMin() const { return _WMin; }
|
|
||||||
void setWMin( sint32 wmin ) { _WMin = wmin; }
|
|
||||||
|
|
||||||
// Compute Size according to bitmap and Text (Ensure as big as possible button)
|
|
||||||
sint32 getWMax() const;
|
|
||||||
|
|
||||||
int luaGetViewText(CLuaState &ls);
|
|
||||||
|
|
||||||
REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton)
|
|
||||||
REFLECT_UCSTRING("uc_hardtext", getText, setText);
|
|
||||||
REFLECT_STRING("hardtext", getHardText, setHardText);
|
|
||||||
REFLECT_SINT32("text_x", getTextX, setTextX)
|
|
||||||
REFLECT_SINT32("wmargin", getWMargin, setWMargin)
|
|
||||||
REFLECT_SINT32("wmin", getWMin, setWMin)
|
|
||||||
REFLECT_LUA_METHOD("getViewText", luaGetViewText)
|
|
||||||
REFLECT_EXPORT_END
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
enum {NumTexture= 3};
|
|
||||||
|
|
||||||
CViewRenderer::CTextureId _TextureIdNormal[NumTexture];
|
|
||||||
CViewRenderer::CTextureId _TextureIdPushed[NumTexture];
|
|
||||||
CViewRenderer::CTextureId _TextureIdOver[NumTexture];
|
|
||||||
|
|
||||||
// setup
|
|
||||||
void setup();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
CViewText *_ViewText;
|
|
||||||
|
|
||||||
bool _Setuped;
|
|
||||||
bool _IsViewTextId;
|
|
||||||
bool _ForceTextOver; // text is displayed over the "over" texture
|
|
||||||
// Size of Bitmaps
|
|
||||||
sint32 _BmpLeftW, _BmpMiddleW, _BmpRightW, _BmpH;
|
|
||||||
// Value to add to TextW to get button W.
|
|
||||||
sint32 _WMargin;
|
|
||||||
// Min W Value
|
|
||||||
sint32 _WMin;
|
|
||||||
sint32 _TextY;
|
|
||||||
sint32 _TextX;
|
|
||||||
THotSpot _TextPosRef;
|
|
||||||
THotSpot _TextParentPosRef;
|
|
||||||
// Special Colors for text
|
|
||||||
NLMISC::CRGBA _TextColorNormal;
|
|
||||||
NLMISC::CRGBA _TextColorPushed;
|
|
||||||
NLMISC::CRGBA _TextColorOver;
|
|
||||||
NLMISC::CRGBA _TextShadowColorNormal;
|
|
||||||
NLMISC::CRGBA _TextShadowColorPushed;
|
|
||||||
NLMISC::CRGBA _TextShadowColorOver;
|
|
||||||
bool _TextModulateGlobalColorNormal;
|
|
||||||
bool _TextModulateGlobalColorPushed;
|
|
||||||
bool _TextModulateGlobalColorOver;
|
|
||||||
bool _TextHeaderColor;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // NL_CTRL_TEXT_BUTTON_H
|
|
||||||
|
|
||||||
/* End of ctrl_text_button.h */
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "nel/misc/xml_auto_ptr.h"
|
#include "nel/misc/xml_auto_ptr.h"
|
||||||
#include "interface_manager.h"
|
#include "interface_manager.h"
|
||||||
#include "view_bitmap.h"
|
#include "view_bitmap.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "../net_manager.h"
|
#include "../net_manager.h"
|
||||||
#include "../client_sheets/item_sheet.h"
|
#include "../client_sheets/item_sheet.h"
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ extern "C"
|
||||||
#include "nel/gui/ctrl_scroll.h"
|
#include "nel/gui/ctrl_scroll.h"
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "dbctrl_sheet.h"
|
#include "dbctrl_sheet.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "nel/gui/action_handler.h"
|
#include "nel/gui/action_handler.h"
|
||||||
#include "group_paragraph.h"
|
#include "group_paragraph.h"
|
||||||
#include "group_editbox.h"
|
#include "group_editbox.h"
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include "nel/gui/group_modal.h"
|
#include "nel/gui/group_modal.h"
|
||||||
#include "nel/gui/group_submenu_base.h"
|
#include "nel/gui/group_submenu_base.h"
|
||||||
#include "nel/gui/view_text.h"
|
#include "nel/gui/view_text.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
|
|
||||||
namespace NLGUI
|
namespace NLGUI
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
#include "nel/gui/interface_group.h"
|
#include "nel/gui/interface_group.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
// Ctrl
|
// Ctrl
|
||||||
#include "nel/gui/ctrl_scroll.h"
|
#include "nel/gui/ctrl_scroll.h"
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
// DBCtrl
|
// DBCtrl
|
||||||
#include "dbctrl_sheet.h"
|
#include "dbctrl_sheet.h"
|
||||||
// Group
|
// Group
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "nel/gui/ctrl_col_pick.h"
|
#include "nel/gui/ctrl_col_pick.h"
|
||||||
#include "nel/gui/ctrl_tooltip.h"
|
#include "nel/gui/ctrl_tooltip.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "group_paragraph.h" // For CCtrlLink
|
#include "group_paragraph.h" // For CCtrlLink
|
||||||
// DBCtrl
|
// DBCtrl
|
||||||
#include "dbctrl_sheet.h"
|
#include "dbctrl_sheet.h"
|
||||||
|
|
|
@ -28,6 +28,7 @@ namespace NLGUI
|
||||||
class CCtrlBaseButton;
|
class CCtrlBaseButton;
|
||||||
class CInterfaceGroup;
|
class CInterfaceGroup;
|
||||||
class CViewText;
|
class CViewText;
|
||||||
|
class CCtrlTextButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
using namespace NLGUI;
|
using namespace NLGUI;
|
||||||
|
@ -60,7 +61,7 @@ public:
|
||||||
// Some pointers
|
// Some pointers
|
||||||
typedef CInterfacePtr<CInterfaceElement>::TInterfacePtr CInterfaceElementPtr;
|
typedef CInterfacePtr<CInterfaceElement>::TInterfacePtr CInterfaceElementPtr;
|
||||||
typedef CInterfacePtr<CInterfaceGroup>::TInterfacePtr CInterfaceGroupPtr;
|
typedef CInterfacePtr<CInterfaceGroup>::TInterfacePtr CInterfaceGroupPtr;
|
||||||
typedef CInterfacePtr<class CCtrlTextButton>::TInterfacePtr CCtrlTextButtonPtr;
|
typedef CInterfacePtr<CCtrlTextButton>::TInterfacePtr CCtrlTextButtonPtr;
|
||||||
typedef CInterfacePtr<CViewText>::TInterfacePtr CViewTextPtr;
|
typedef CInterfacePtr<CViewText>::TInterfacePtr CViewTextPtr;
|
||||||
typedef CInterfacePtr<class CViewTextMenu>::TInterfacePtr CViewTextMenuPtr;
|
typedef CInterfacePtr<class CViewTextMenu>::TInterfacePtr CViewTextMenuPtr;
|
||||||
typedef CInterfacePtr<CCtrlBase>::TInterfacePtr CCtrlBasePtr;
|
typedef CInterfacePtr<CCtrlBase>::TInterfacePtr CCtrlBasePtr;
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include "../string_manager_client.h"
|
#include "../string_manager_client.h"
|
||||||
#include "nel/gui/interface_expr.h"
|
#include "nel/gui/interface_expr.h"
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "filtered_chat_summary.h"
|
#include "filtered_chat_summary.h"
|
||||||
#include "input_handler_manager.h"
|
#include "input_handler_manager.h"
|
||||||
#include "../user_entity.h"
|
#include "../user_entity.h"
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include "group_list.h"
|
#include "group_list.h"
|
||||||
#include "dbgroup_select_number.h"
|
#include "dbgroup_select_number.h"
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "nel/gui/ctrl_col_pick.h"
|
#include "nel/gui/ctrl_col_pick.h"
|
||||||
#include "nel/gui/ctrl_draggable.h"
|
#include "nel/gui/ctrl_draggable.h"
|
||||||
#include "dbctrl_sheet.h"
|
#include "dbctrl_sheet.h"
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include "interface_v3/group_quick_help.h"
|
#include "interface_v3/group_quick_help.h"
|
||||||
#include "nel/gui/view_text.h"
|
#include "nel/gui/view_text.h"
|
||||||
#include "nel/gui/ctrl_button.h"
|
#include "nel/gui/ctrl_button.h"
|
||||||
#include "interface_v3/ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "sound_manager.h"
|
#include "sound_manager.h"
|
||||||
#include "far_tp.h"
|
#include "far_tp.h"
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
#include "interface_v3/bot_chat_manager.h"
|
#include "interface_v3/bot_chat_manager.h"
|
||||||
#include "interface_v3/bot_chat_page_all.h"
|
#include "interface_v3/bot_chat_page_all.h"
|
||||||
#include "nel/gui/view_text_id.h"
|
#include "nel/gui/view_text_id.h"
|
||||||
#include "interface_v3/ctrl_text_button.h"
|
#include "nel/gui/ctrl_text_button.h"
|
||||||
#include "interface_v3/input_handler_manager.h"
|
#include "interface_v3/input_handler_manager.h"
|
||||||
#include "interface_v3/guild_manager.h"
|
#include "interface_v3/guild_manager.h"
|
||||||
#include "interface_v3/skill_manager.h"
|
#include "interface_v3/skill_manager.h"
|
||||||
|
|
Loading…
Reference in a new issue