CHANGED: #1471 CCtrlButton is now under the NLGUI namespace.
--HG-- branch : gui-refactoring
This commit is contained in:
parent
aca24ff510
commit
a90445fa03
6 changed files with 352 additions and 337 deletions
|
@ -25,77 +25,77 @@
|
|||
namespace NLGUI
|
||||
{
|
||||
class CEventDescriptor;
|
||||
}
|
||||
|
||||
/**
|
||||
* <Class description>
|
||||
* \author Nicolas Brigand
|
||||
* \author Nevrax France
|
||||
* \date 2002
|
||||
*/
|
||||
class CCtrlButton : public CCtrlBaseButton
|
||||
{
|
||||
public:
|
||||
|
||||
/// Constructor
|
||||
CCtrlButton(const TCtorParam ¶m) : CCtrlBaseButton(param)
|
||||
/**
|
||||
* <Class description>
|
||||
* \author Nicolas Brigand
|
||||
* \author Nevrax France
|
||||
* \date 2002
|
||||
*/
|
||||
class CCtrlButton : public CCtrlBaseButton
|
||||
{
|
||||
_Scale = false;
|
||||
_Align = 0;
|
||||
}
|
||||
public:
|
||||
|
||||
// Init part
|
||||
virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
|
||||
/// Constructor
|
||||
CCtrlButton(const TCtorParam ¶m) : CCtrlBaseButton(param)
|
||||
{
|
||||
_Scale = false;
|
||||
_Align = 0;
|
||||
}
|
||||
|
||||
virtual void updateCoords();
|
||||
// Init part
|
||||
virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup);
|
||||
|
||||
virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
|
||||
virtual void updateCoords();
|
||||
|
||||
virtual bool getMouseOverShape(std::string &/* texName */, uint8 &/* rot */, NLMISC::CRGBA &/* col */);
|
||||
virtual uint32 getMemory() { return (uint32)(sizeof(*this)+_Id.size()); }
|
||||
|
||||
// Display part
|
||||
virtual void draw();
|
||||
virtual bool getMouseOverShape(std::string &/* texName */, uint8 &/* rot */, NLMISC::CRGBA &/* col */);
|
||||
|
||||
void setTexture (const std::string&name);
|
||||
void setTexturePushed (const std::string&name);
|
||||
void setTextureOver (const std::string&name);
|
||||
// Display part
|
||||
virtual void draw();
|
||||
|
||||
void fitTexture();
|
||||
void setTexture (const std::string&name);
|
||||
void setTexturePushed (const std::string&name);
|
||||
void setTextureOver (const std::string&name);
|
||||
|
||||
std::string getTexture () const;
|
||||
std::string getTexturePushed () const;
|
||||
std::string getTextureOver() const;
|
||||
void fitTexture();
|
||||
|
||||
bool isTextureValid() const { return _TextureIdNormal != -1; }
|
||||
std::string getTexture () const;
|
||||
std::string getTexturePushed () const;
|
||||
std::string getTextureOver() const;
|
||||
|
||||
// test if the texture must scale
|
||||
bool getScale() const { return _Scale; }
|
||||
void setScale(bool scale) { _Scale = scale; }
|
||||
bool isTextureValid() const { return _TextureIdNormal != -1; }
|
||||
|
||||
// test if the texture must scale
|
||||
bool getScale() const { return _Scale; }
|
||||
void setScale(bool scale) { _Scale = scale; }
|
||||
|
||||
|
||||
/// \from CInterfaceElement
|
||||
sint32 getMaxUsedW() const;
|
||||
sint32 getMinUsedW() const;
|
||||
/// \from CInterfaceElement
|
||||
sint32 getMaxUsedW() const;
|
||||
sint32 getMinUsedW() const;
|
||||
|
||||
REFLECT_EXPORT_START(CCtrlButton, CCtrlBaseButton)
|
||||
REFLECT_STRING("texture", getTexture, setTexture);
|
||||
REFLECT_STRING("texture_pushed", getTexturePushed, setTexturePushed);
|
||||
REFLECT_STRING("texture_over", getTextureOver, setTextureOver);
|
||||
REFLECT_BOOL("scale", getScale, setScale);
|
||||
REFLECT_EXPORT_END
|
||||
REFLECT_EXPORT_START(CCtrlButton, CCtrlBaseButton)
|
||||
REFLECT_STRING("texture", getTexture, setTexture);
|
||||
REFLECT_STRING("texture_pushed", getTexturePushed, setTexturePushed);
|
||||
REFLECT_STRING("texture_over", getTextureOver, setTextureOver);
|
||||
REFLECT_BOOL("scale", getScale, setScale);
|
||||
REFLECT_EXPORT_END
|
||||
|
||||
protected:
|
||||
protected:
|
||||
|
||||
CViewRenderer::CTextureId _TextureIdNormal;
|
||||
CViewRenderer::CTextureId _TextureIdPushed;
|
||||
CViewRenderer::CTextureId _TextureIdOver;
|
||||
CViewRenderer::CTextureId _TextureIdNormal;
|
||||
CViewRenderer::CTextureId _TextureIdPushed;
|
||||
CViewRenderer::CTextureId _TextureIdOver;
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
bool _Scale;
|
||||
sint32 _Align; /// 1st bit - Left/Right (0/1) 2nd bit - Bottom/Top (0/1)
|
||||
};
|
||||
bool _Scale;
|
||||
sint32 _Align; /// 1st bit - Left/Right (0/1) 2nd bit - Bottom/Top (0/1)
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // RZ_CTRL_BUTTON_H
|
||||
|
||||
|
|
|
@ -14,9 +14,6 @@
|
|||
// 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_button.h"
|
||||
#include "nel/misc/xml_auto_ptr.h"
|
||||
#include "nel/gui/widget_manager.h"
|
||||
|
@ -29,139 +26,158 @@ using namespace NL3D;
|
|||
|
||||
NLMISC_REGISTER_OBJECT(CViewBase, CCtrlButton, std::string, "button");
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
bool CCtrlButton::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
|
||||
namespace NLGUI
|
||||
{
|
||||
CXMLAutoPtr prop;
|
||||
//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) )
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
bool CCtrlButton::parse(xmlNodePtr cur, CInterfaceGroup * 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 = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdNormal.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
|
||||
if (prop)
|
||||
{
|
||||
string TxName = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdPushed.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
|
||||
if (prop)
|
||||
{
|
||||
string TxName = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdOver.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
// *** Misc.
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"scale" );
|
||||
_Scale = false;
|
||||
if (prop)
|
||||
_Scale = convertBool(prop);
|
||||
|
||||
|
||||
prop = (char*) xmlGetProp (cur, (xmlChar*)"align");
|
||||
_Align = 0;
|
||||
if (prop)
|
||||
{
|
||||
const char *seekPtr = prop.getDatas();
|
||||
while (*seekPtr != 0)
|
||||
CXMLAutoPtr prop;
|
||||
//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) )
|
||||
{
|
||||
if ((*seekPtr=='l')||(*seekPtr=='L'))
|
||||
_Align &= ~1;
|
||||
if ((*seekPtr=='r')||(*seekPtr=='R'))
|
||||
_Align |= 1;
|
||||
if ((*seekPtr=='b')||(*seekPtr=='B'))
|
||||
_Align &= ~2;
|
||||
if ((*seekPtr=='t')||(*seekPtr=='T'))
|
||||
_Align |= 2;
|
||||
++seekPtr;
|
||||
string tmp = "cannot parse view:"+getId()+", parent:"+parentGroup->getId();
|
||||
nlinfo(tmp.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::draw ()
|
||||
{
|
||||
sint32 nTxId = -1;
|
||||
CRGBA color;
|
||||
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
|
||||
|
||||
// *** Detect Over
|
||||
bool lastOver = false;
|
||||
|
||||
updateOver(lastOver);
|
||||
|
||||
|
||||
sint32 x = _XReal;
|
||||
sint32 y = _YReal;
|
||||
sint32 txw, txh;
|
||||
// the pointer is over the button
|
||||
if (_Scale)
|
||||
{
|
||||
x = _XReal;
|
||||
y = _YReal;
|
||||
txw = _WReal;
|
||||
txh = _HReal;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = _XReal;
|
||||
y = _YReal;
|
||||
}
|
||||
|
||||
switch(_Type)
|
||||
{
|
||||
case ToggleButton:
|
||||
// *** Read Textures
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_normal" );
|
||||
if (prop)
|
||||
{
|
||||
if (_Pushed)
|
||||
string TxName = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdNormal.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_pushed" );
|
||||
if (prop)
|
||||
{
|
||||
string TxName = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdPushed.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"tx_over" );
|
||||
if (prop)
|
||||
{
|
||||
string TxName = (const char *) prop;
|
||||
TxName = strlwr(TxName);
|
||||
_TextureIdOver.setTexture(TxName.c_str());
|
||||
}
|
||||
|
||||
// *** Misc.
|
||||
prop = (char*) xmlGetProp( cur, (xmlChar*)"scale" );
|
||||
_Scale = false;
|
||||
if (prop)
|
||||
_Scale = convertBool(prop);
|
||||
|
||||
|
||||
prop = (char*) xmlGetProp (cur, (xmlChar*)"align");
|
||||
_Align = 0;
|
||||
if (prop)
|
||||
{
|
||||
const char *seekPtr = prop.getDatas();
|
||||
while (*seekPtr != 0)
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
nTxId = _TextureIdNormal;
|
||||
color = getCurrentColorNormal(globalColor);
|
||||
if ((*seekPtr=='l')||(*seekPtr=='L'))
|
||||
_Align &= ~1;
|
||||
if ((*seekPtr=='r')||(*seekPtr=='R'))
|
||||
_Align |= 1;
|
||||
if ((*seekPtr=='b')||(*seekPtr=='B'))
|
||||
_Align &= ~2;
|
||||
if ((*seekPtr=='t')||(*seekPtr=='T'))
|
||||
_Align |= 2;
|
||||
++seekPtr;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RadioButton:
|
||||
{
|
||||
// CViewPointer &rIP = *CInterfaceManager::getInstance()->getPointer();
|
||||
// Init the radio button
|
||||
initRBRef();
|
||||
|
||||
if (*_RBRef == this)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::draw ()
|
||||
{
|
||||
sint32 nTxId = -1;
|
||||
CRGBA color;
|
||||
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
CRGBA globalColor= CWidgetManager::getInstance()->getGlobalColorForContent();
|
||||
|
||||
// *** Detect Over
|
||||
bool lastOver = false;
|
||||
|
||||
updateOver(lastOver);
|
||||
|
||||
|
||||
sint32 x = _XReal;
|
||||
sint32 y = _YReal;
|
||||
sint32 txw, txh;
|
||||
// the pointer is over the button
|
||||
if (_Scale)
|
||||
{
|
||||
x = _XReal;
|
||||
y = _YReal;
|
||||
txw = _WReal;
|
||||
txh = _HReal;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = _XReal;
|
||||
y = _YReal;
|
||||
}
|
||||
|
||||
switch(_Type)
|
||||
{
|
||||
case ToggleButton:
|
||||
{
|
||||
// if it is equal to the ref value, then the button must appear pushed
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
if (_Pushed)
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
nTxId = _TextureIdNormal;
|
||||
color = getCurrentColorNormal(globalColor);
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
case RadioButton:
|
||||
{
|
||||
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
// 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
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
nTxId = _TextureIdNormal;
|
||||
color = getCurrentColorNormal(globalColor);
|
||||
_Pushed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PushButton:
|
||||
{
|
||||
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
|
@ -173,175 +189,162 @@ void CCtrlButton::draw ()
|
|||
_Pushed = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PushButton:
|
||||
|
||||
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
||||
|
||||
// Fromzen ?
|
||||
if (getFrozen() && getFrozenHalfTone())
|
||||
color.A >>= 2;
|
||||
|
||||
if (!_Scale)
|
||||
{
|
||||
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
CViewRenderer::getInstance()->getTextureSizeFromId (nTxId, txw, txh);
|
||||
if (_Align&1)
|
||||
x = x + _WReal - txw;
|
||||
if (_Align&2)
|
||||
y = y + _HReal - txh;
|
||||
}
|
||||
rVR.drawRotFlipBitmap ( _RenderLayer, x, y, txw, txh,
|
||||
0, false,
|
||||
nTxId,
|
||||
color );
|
||||
|
||||
if ((_OverWhenPushed == false) && (_Pushed == true || (CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
||||
return;
|
||||
|
||||
|
||||
|
||||
if (_Over)
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
// Frozen ?
|
||||
if (getFrozen())
|
||||
color.A >>= 2;
|
||||
|
||||
// draw the over. force upper layer to avoid problem with DXTC/tga
|
||||
rVR.drawRotFlipBitmap ( _RenderLayer+1, x, y, txw, txh,
|
||||
0, false,
|
||||
_TextureIdOver,
|
||||
color );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::updateCoords()
|
||||
{
|
||||
if (!_Scale)
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
sint32 txw, txh;
|
||||
rVR.getTextureSizeFromId (_TextureIdNormal, txw, txh);
|
||||
_W = txw;
|
||||
_H = txh;
|
||||
}
|
||||
CViewBase::updateCoords();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTexture(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdNormal.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTexturePushed(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdPushed.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTextureOver(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdOver.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTexture() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdNormal);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTexturePushed() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdPushed);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTextureOver() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdOver);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
sint32 CCtrlButton::getMaxUsedW() const
|
||||
{
|
||||
sint32 txw, txh;
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
rVR.getTextureSizeFromId (_TextureIdNormal, txw, txh);
|
||||
return txw;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
sint32 CCtrlButton::getMinUsedW() const
|
||||
{
|
||||
return getMaxUsedW();
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CCtrlButton::fitTexture()
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
sint32 w, h;
|
||||
rVR.getTextureSizeFromId(_TextureIdNormal, w, h);
|
||||
setW(w);
|
||||
setH(h);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
bool CCtrlButton::getMouseOverShape(string &texName, uint8 &rot, CRGBA &col)
|
||||
{
|
||||
if (_AHOnLeftClickString == "browse")
|
||||
{
|
||||
if (!_AHOnLeftClickStringParams.empty())
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
texName = "@curs_pick.tga@"+_AHOnLeftClickStringParams;
|
||||
}
|
||||
else
|
||||
{
|
||||
nTxId = _TextureIdNormal;
|
||||
color = getCurrentColorNormal(globalColor);
|
||||
_Pushed = false;
|
||||
texName = "curs_pick.tga";
|
||||
}
|
||||
rot= 0;
|
||||
col = CRGBA::White;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
color.A = (uint8)(((sint32)color.A*((sint32)globalColor.A+1))>>8);
|
||||
|
||||
// Fromzen ?
|
||||
if (getFrozen() && getFrozenHalfTone())
|
||||
color.A >>= 2;
|
||||
|
||||
if (!_Scale)
|
||||
{
|
||||
CViewRenderer::getInstance()->getTextureSizeFromId (nTxId, txw, txh);
|
||||
if (_Align&1)
|
||||
x = x + _WReal - txw;
|
||||
if (_Align&2)
|
||||
y = y + _HReal - txh;
|
||||
}
|
||||
rVR.drawRotFlipBitmap ( _RenderLayer, x, y, txw, txh,
|
||||
0, false,
|
||||
nTxId,
|
||||
color );
|
||||
|
||||
if ((_OverWhenPushed == false) && (_Pushed == true || (CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
||||
return;
|
||||
|
||||
|
||||
|
||||
if (_Over)
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
// Frozen ?
|
||||
if (getFrozen())
|
||||
color.A >>= 2;
|
||||
|
||||
// draw the over. force upper layer to avoid problem with DXTC/tga
|
||||
rVR.drawRotFlipBitmap ( _RenderLayer+1, x, y, txw, txh,
|
||||
0, false,
|
||||
_TextureIdOver,
|
||||
color );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::updateCoords()
|
||||
{
|
||||
if (!_Scale)
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
sint32 txw, txh;
|
||||
rVR.getTextureSizeFromId (_TextureIdNormal, txw, txh);
|
||||
_W = txw;
|
||||
_H = txh;
|
||||
}
|
||||
CViewBase::updateCoords();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTexture(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdNormal.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTexturePushed(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdPushed.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CCtrlButton::setTextureOver(const std::string&name)
|
||||
{
|
||||
// CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
// CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
_TextureIdOver.setTexture(name.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTexture() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdNormal);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTexturePushed() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdPushed);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
std::string CCtrlButton::getTextureOver() const
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
return rVR.getTextureNameFromId(_TextureIdOver);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
sint32 CCtrlButton::getMaxUsedW() const
|
||||
{
|
||||
sint32 txw, txh;
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
rVR.getTextureSizeFromId (_TextureIdNormal, txw, txh);
|
||||
return txw;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
sint32 CCtrlButton::getMinUsedW() const
|
||||
{
|
||||
return getMaxUsedW();
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CCtrlButton::fitTexture()
|
||||
{
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
sint32 w, h;
|
||||
rVR.getTextureSizeFromId(_TextureIdNormal, w, h);
|
||||
setW(w);
|
||||
setH(h);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
bool CCtrlButton::getMouseOverShape(string &texName, uint8 &rot, CRGBA &col)
|
||||
{
|
||||
if (_AHOnLeftClickString == "browse")
|
||||
{
|
||||
if (!_AHOnLeftClickStringParams.empty())
|
||||
{
|
||||
texName = "@curs_pick.tga@"+_AHOnLeftClickStringParams;
|
||||
}
|
||||
else
|
||||
{
|
||||
texName = "curs_pick.tga";
|
||||
}
|
||||
rot= 0;
|
||||
col = CRGBA::White;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -27,9 +27,13 @@
|
|||
#include "dbctrl_sheet.h"
|
||||
#include "view_text.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CCtrlButton;
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
class CCtrlButton;
|
||||
class CCtrlScroll;
|
||||
class CHandlerListSheetTradeSelect;
|
||||
class CHandlerListSheetTradeRightClick;
|
||||
|
|
|
@ -23,9 +23,13 @@
|
|||
#include "dbgroup_list_sheet_text.h"
|
||||
#include "game_share/bot_chat_types.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CCtrlButton;
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
class CCtrlButton;
|
||||
class CCtrlScroll;
|
||||
class CHandlerListSheetTradeSelect;
|
||||
class CHandlerListSheetTradeRightClick;
|
||||
|
|
|
@ -26,10 +26,10 @@
|
|||
namespace NLGUI
|
||||
{
|
||||
class CEventDescriptorLocalised;
|
||||
class CCtrlButton;
|
||||
}
|
||||
|
||||
class CInterfaceList;
|
||||
class CCtrlButton;
|
||||
class CCtrlScroll;
|
||||
class CViewText;
|
||||
class COptionsContainerInsertion;
|
||||
|
|
|
@ -37,9 +37,13 @@ extern "C"
|
|||
#include "WWWInit.h"
|
||||
}
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CCtrlButton;
|
||||
}
|
||||
|
||||
class CGroupList;
|
||||
class CCtrlScroll;
|
||||
class CCtrlButton;
|
||||
class CDBGroupComboBox;
|
||||
class CGroupParagraph;
|
||||
|
||||
|
|
Loading…
Reference in a new issue