162 lines
4.2 KiB
C++
162 lines
4.2 KiB
C++
#include "stdafx.h"
|
|
#include "KViewport.h"
|
|
#include "KPrimitiveSprite.h"
|
|
#include "KUIControlStatusBar.h"
|
|
|
|
#include "KResourceManager.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// KUIControlStatusBar Implement
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
namespace
|
|
{
|
|
KUIWnd* Creator()
|
|
{
|
|
return new KUIControlStatusBar;
|
|
}
|
|
bool bRegister = KUIFactory::GetInstance()->RegisterCreator( Creator, "statusbar");
|
|
}
|
|
|
|
|
|
KUIControlStatusBar::KUIControlStatusBar()
|
|
{
|
|
for(int i = 0 ; i < 3; ++i)
|
|
{
|
|
_registerSprite(&m_StatusSprite[i]);
|
|
}
|
|
}
|
|
|
|
KUIControlStatusBar::~KUIControlStatusBar()
|
|
{
|
|
}
|
|
|
|
void KUIControlStatusBar::Create(KUIWND_CREATE_ARG& CREATE_ARG)
|
|
{
|
|
KUIControl::Create( CREATE_ARG);
|
|
}
|
|
void KUIControlStatusBar::_destroyControl()
|
|
{
|
|
for ( int j = 0 ; j<3 ; ++j )
|
|
{
|
|
m_StatusSprite[j].SetRes( NULL );
|
|
}
|
|
}
|
|
|
|
|
|
void KUIControlStatusBar::_initControl()
|
|
{
|
|
KResSprite* pFrameLeft = _getSpriteSet()->GetSpriteRes( m_sAniName.c_str(), 0 );
|
|
KResSprite* pFrameCenter = _getSpriteSet()->GetSpriteRes( m_sAniName.c_str(), 1 );
|
|
KResSprite* pFrameRight = _getSpriteSet()->GetSpriteRes( m_sAniName.c_str(), 2 );
|
|
|
|
if( !pFrameLeft || !pFrameRight )
|
|
{
|
|
assert( false && "Cannot find Sprite Res Frame" );
|
|
return;
|
|
}
|
|
|
|
for ( int j = 0 ; j<3 ; ++j )
|
|
{
|
|
KResSprite* pFrame = _getSpriteSet()->GetSpriteRes( m_sAniName.c_str(), j );
|
|
m_StatusSprite[j].SetRes( pFrame );
|
|
if ( (m_dwStyle & KSTYLE_SB_NORIGHTSIDE) && (m_dwStyle & KSTYLE_SB_NOLEFTSIDE) )
|
|
{
|
|
switch( j )
|
|
{
|
|
case 0: break;
|
|
case 1:
|
|
m_StatusSprite[j].SetPosition( m_rcRegion.left, m_rcRegion.top, m_fZPos );
|
|
m_StatusSprite[j].SetTargetSize( m_rcRegion.GetWidth(), pFrameCenter->GetSizeY() );
|
|
break;
|
|
case 2:
|
|
break;
|
|
}
|
|
}
|
|
else if ( m_dwStyle & KSTYLE_SB_NOLEFTSIDE )
|
|
{
|
|
switch( j )
|
|
{
|
|
case 0: break;
|
|
case 1:
|
|
m_StatusSprite[j].SetPosition( m_rcRegion.left, m_rcRegion.top, m_fZPos );
|
|
m_StatusSprite[j].SetTargetSize( m_rcRegion.GetWidth() - pFrameRight->GetSizeX(),
|
|
pFrameCenter->GetSizeY() );
|
|
break;
|
|
case 2:
|
|
m_StatusSprite[j].SetPosition( m_rcRegion.left + m_rcRegion.GetWidth() - pFrameRight->GetSizeX(),
|
|
m_rcRegion.top, m_fZPos );
|
|
break;
|
|
}
|
|
}
|
|
else if ( m_dwStyle & KSTYLE_SB_NORIGHTSIDE )
|
|
{
|
|
switch( j )
|
|
{
|
|
case 0: m_StatusSprite[j].SetPosition( m_rcRegion.left, m_rcRegion.top, m_fZPos ); break;
|
|
case 1:
|
|
m_StatusSprite[j].SetPosition( pFrameLeft->GetSizeX() + m_rcRegion.left, m_rcRegion.top, m_fZPos );
|
|
m_StatusSprite[j].SetTargetSize( m_rcRegion.GetWidth() - pFrameLeft->GetSizeX(),
|
|
pFrameCenter->GetSizeY() );
|
|
break;
|
|
case 2:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch( j )
|
|
{
|
|
case 0: m_StatusSprite[j].SetPosition( m_rcRegion.left, m_rcRegion.top, m_fZPos ); break;
|
|
case 1:
|
|
m_StatusSprite[j].SetPosition( pFrameLeft->GetSizeX() + m_rcRegion.left, m_rcRegion.top, m_fZPos );
|
|
m_StatusSprite[j].SetTargetSize( m_rcRegion.GetWidth() - pFrameLeft->GetSizeX() - pFrameRight->GetSizeX(),
|
|
pFrameCenter->GetSizeY() );
|
|
break;
|
|
case 2:
|
|
m_StatusSprite[j].SetPosition( m_rcRegion.left + m_rcRegion.GetWidth() - pFrameRight->GetSizeX(),
|
|
m_rcRegion.top, m_fZPos );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
m_rcCaptionArea = m_rcRegion;
|
|
m_rcCaptionArea.left += pFrameLeft->GetSizeX();
|
|
|
|
SetCaptionAlign( KTextRender::KTALIGN_LEFT | KTextRender::KTALIGN_VCENTER );
|
|
UpdateCaption();
|
|
}
|
|
|
|
DWORD KUIControlStatusBar::OnKeyMessage(DWORD dwMessage, DWORD dwKeyCode)
|
|
{
|
|
return KUIControl::OnKeyMessage(dwMessage, dwKeyCode);
|
|
}
|
|
|
|
DWORD KUIControlStatusBar::OnMouseMessage( DWORD dwMessage, int x, int y )
|
|
{
|
|
return KUIControl::OnMouseMessage(dwMessage, x,y);
|
|
}
|
|
|
|
void KUIControlStatusBar::Render(KViewportObject * pViewport, bool isFront )
|
|
{
|
|
if ( m_bShowFlag )
|
|
{
|
|
if ( !(m_dwStyle & KSTYLE_SB_NOLEFTSIDE) )
|
|
pViewport->Register( &m_StatusSprite[0] );
|
|
pViewport->Register( &m_StatusSprite[1] );
|
|
if ( !(m_dwStyle & KSTYLE_SB_NORIGHTSIDE) )
|
|
pViewport->Register( &m_StatusSprite[2] );
|
|
|
|
// Caption Render
|
|
_renderCaption(pViewport);
|
|
|
|
// ToolTip Render
|
|
#ifndef _KUI_INVALIDATION
|
|
_renderToolTip(pViewport);
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|