More work on the UI elements.

--HG--
branch : dev
This commit is contained in:
Martí­n Lucas Golini
2017-02-23 23:33:29 -03:00
parent 58cbdebb3b
commit aa7ea93d1f
22 changed files with 380 additions and 70 deletions

View File

@@ -9,6 +9,8 @@ class EE_API UIComboBox : public UIDropDownList {
public:
UIComboBox( UIComboBox::CreateParams& Params );
UIComboBox();
virtual ~UIComboBox();
virtual Uint32 getType() const;
@@ -30,6 +32,8 @@ class EE_API UIComboBox : public UIDropDownList {
void createButton();
virtual void onControlClear( const UIEvent *Event );
virtual void onSizeChange();
};
}}

View File

@@ -174,6 +174,8 @@ class EE_API UIControl {
void setFlags( const Uint32& flags );
void unsetFlags( const Uint32& flags );
void setBlendMode( const EE_BLEND_MODE& blend );
EE_BLEND_MODE getBlendMode();
@@ -197,6 +199,10 @@ class EE_API UIControl {
Uint32 isClipped();
Uint32 isRotated();
bool isMeOrParentTreeRotated();
Uint32 addEventListener( const Uint32& EventType, const UIEventCallback& Callback );
void removeEventListener( const Uint32& CallbackId );
@@ -403,6 +409,12 @@ class EE_API UIControl {
Rectf getRectf();
void drawHighlightFocus();
void drawOverControl();
void drawDebugData();
void setInternalPosition( const Vector2i& Pos );
void setInternalSize( const Sizei& size );

View File

@@ -27,6 +27,8 @@ class EE_API UIDropDownList : public UITextInput {
UIDropDownList( UIDropDownList::CreateParams& Params );
UIDropDownList();
virtual ~UIDropDownList();
virtual Uint32 getType() const;

View File

@@ -21,6 +21,7 @@ enum UI_CONTROL_FLAGS_VALUES {
UI_CTRL_FLAG_TOUCH_DRAGGING = (1<<12),
UI_CTRL_FLAG_DISABLED_BY_MODAL_WINDOW = (1<<13),
UI_CTRL_FLAG_SELECTING = (1<<14),
UI_CTRL_FLAG_ROTATED = (1<<15),
UI_CTRL_FLAG_FREE_USE = (1<<31)
};
@@ -111,7 +112,8 @@ enum UI_SCROLLBAR_MODE {
enum UI_MANAGER_FLAGS {
UI_MANAGER_HIGHLIGHT_FOCUS = ( 1 << 0 ),
UI_MANAGER_HIGHLIGHT_OVER = ( 1 << 1 )
UI_MANAGER_HIGHLIGHT_OVER = ( 1 << 1 ),
UI_MANAGER_DRAW_DEBUG_DATA = ( 1 << 2 )
};
enum UI_WINDOW_FLAGS {

View File

@@ -10,6 +10,8 @@ class UIItemContainer : public UIControl {
public:
UIItemContainer( UIControl::CreateParams& Params );
UIItemContainer();
~UIItemContainer();
void update();
@@ -25,6 +27,12 @@ UIItemContainer<TContainer>::UIItemContainer( UIControl::CreateParams& Params )
{
}
template<class TContainer>
UIItemContainer<TContainer>::UIItemContainer() :
UIControl()
{
}
template<class TContainer>
UIItemContainer<TContainer>::~UIItemContainer()
{

View File

@@ -56,6 +56,8 @@ class EE_API UIListBox : public UIComplexControl {
UIListBox( UIListBox::CreateParams& Params );
UIListBox();
virtual ~UIListBox();
virtual Uint32 getType() const;

View File

@@ -12,6 +12,8 @@ class EE_API UIListBoxItem : public UITextBox {
public:
UIListBoxItem( const UITextBox::CreateParams& Params );
UIListBoxItem();
virtual ~UIListBoxItem();
virtual Uint32 getType() const;

View File

@@ -47,10 +47,18 @@ class EE_API UIManager {
const Uint32& getLastPressTrigger() const;
void clipPlaneEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height );
void clipPlaneDisable();
void clipEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height );
void clipDisable();
void clipSmartEnable( UIControl * ctrl, const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height );
void clipSmartDisable( UIControl * ctrl );
void sendKeyUp( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod );
void sendKeyDown( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod );
@@ -59,6 +67,10 @@ class EE_API UIManager {
bool getHighlightFocus() const;
void setDrawDebugData( bool debug );
bool getDrawDebugData() const;
void setHighlightFocusColor( const ColorA& Color );
const ColorA& getHighlightFocusColor() const;

View File

@@ -23,6 +23,8 @@ class EE_API UIScrollBar : public UIComplexControl {
UIScrollBar( const UIScrollBar::CreateParams& Params );
UIScrollBar();
virtual ~UIScrollBar();
virtual Uint32 getType() const;

View File

@@ -12,6 +12,15 @@ UIComboBox::UIComboBox( UIComboBox::CreateParams& Params ) :
applyDefaultTheme();
}
UIComboBox::UIComboBox() :
UIDropDownList(),
mButton( NULL )
{
setAllowEditing( true );
applyDefaultTheme();
}
UIComboBox::~UIComboBox() {
}
@@ -28,16 +37,12 @@ void UIComboBox::setTheme( UITheme * Theme ) {
autoSizeControl();
createButton();
autoPadding();
onSizeChange();
}
void UIComboBox::createButton() {
eeSAFE_DELETE( mButton );
Int32 btnWidth = 0;
if ( NULL != mSkinState && NULL != mSkinState->getSkin() ) {
@@ -51,16 +56,19 @@ void UIComboBox::createButton() {
}
}
UIControl::CreateParams Params;
Params.setParent( this ),
Params.Size = Sizei( btnWidth, mSize.getHeight() );
Params.setPosition( mSize.getWidth() - btnWidth, 0 );
mButton = eeNew( UIControl, ( Params ) );
mButton->setVisible( true );
mButton->setEnabled( true );
mButton->addEventListener( UIEvent::EventMouseClick, cb::Make1( this, &UIComboBox::onButtonClick ) );
mButton->addEventListener( UIEvent::EventMouseEnter, cb::Make1( this, &UIComboBox::onButtonEnter ) );
mButton->addEventListener( UIEvent::EventMouseExit, cb::Make1( this, &UIComboBox::onButtonExit ) );
if ( NULL == mButton ) {
mButton = eeNew( UIControl, () );
mButton->setParent( this );
mButton->setVisible( true );
mButton->setEnabled( true );
mButton->addEventListener( UIEvent::EventMouseClick, cb::Make1( this, &UIComboBox::onButtonClick ) );
mButton->addEventListener( UIEvent::EventMouseEnter, cb::Make1( this, &UIComboBox::onButtonEnter ) );
mButton->addEventListener( UIEvent::EventMouseExit, cb::Make1( this, &UIComboBox::onButtonExit ) );
}
mButton->setPixelsSize( btnWidth, mRealSize.getHeight() );
mButton->setPixelsPosition( mRealSize.getWidth() - btnWidth, 0 );
}
void UIComboBox::onButtonClick( const UIEvent * Event ) {
@@ -94,4 +102,10 @@ Uint32 UIComboBox::onMouseClick( const Vector2i& position, const Uint32 Flags )
void UIComboBox::onControlClear( const UIEvent *Event ) {
}
void UIComboBox::onSizeChange() {
UIDropDownList::onSizeChange();
createButton();
}
}}

View File

@@ -4,6 +4,7 @@
#include <eepp/graphics/primitives.hpp>
#include <eepp/graphics/subtexture.hpp>
#include <eepp/graphics/renderer/gl.hpp>
#include <eepp/graphics/font.hpp>
#include <eepp/window/engine.hpp>
namespace EE { namespace UI {
@@ -327,6 +328,39 @@ void UIControl::close() {
UIManager::instance()->addToCloseQueue( this );
}
void UIControl::drawHighlightFocus() {
if ( UIManager::instance()->getHighlightFocus() && UIManager::instance()->getFocusControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightFocusColor() );
P.setLineWidth( dpToPxI( 1 ) );
P.drawRectangle( getRectf() );
}
}
void UIControl::drawOverControl() {
if ( UIManager::instance()->getHighlightOver() && UIManager::instance()->getOverControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightOverColor() );
P.setLineWidth( dpToPxI( 1 ) );
P.drawRectangle( getRectf() );
}
}
void UIControl::drawDebugData() {
Graphics::Font * font = UIThemeManager::instance()->getDefaultFont();
if ( UIManager::instance()->getDrawDebugData() && font != NULL ) {
String text( String::strFormated( "X: %d Y: %d\nW: %d H: %d", mRealPos.x, mRealPos.y, mRealSize.x, mRealSize.y ) );
font->setColor( ColorA( 255, 0, 255, 255 ) );
font->draw( text, mScreenPos.x, mScreenPos.y );
}
}
void UIControl::draw() {
if ( mVisible ) {
if ( mFlags & UI_FILL_BACKGROUND )
@@ -336,23 +370,13 @@ void UIControl::draw() {
borderDraw();
if ( NULL != mSkinState )
mSkinState->draw( mScreenPosf.x, mScreenPosf.y, (Float)mSize.getWidth(), (Float)mSize.getHeight(), 255 );
mSkinState->draw( mScreenPosf.x, mScreenPosf.y, (Float)mRealSize.getWidth(), (Float)mRealSize.getHeight(), 255 );
if ( UIManager::instance()->getHighlightFocus() && UIManager::instance()->getFocusControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightFocusColor() );
P.drawRectangle( getRectf() );
}
drawHighlightFocus();
if ( UIManager::instance()->getHighlightOver() && UIManager::instance()->getOverControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightOverColor() );
P.drawRectangle( getRectf() );
}
drawOverControl();
drawDebugData();
}
}
@@ -561,6 +585,11 @@ void UIControl::setFlags( const Uint32& flags ) {
mBorder = eeNew( UIBorder, () );
}
void UIControl::unsetFlags(const Uint32 & flags) {
if ( mFlags & flags )
mFlags &= ~flags;
}
void UIControl::setBlendMode( const EE_BLEND_MODE& blend ) {
mBlend = static_cast<Uint16> ( blend );
}
@@ -769,15 +798,15 @@ void UIControl::internalDraw() {
void UIControl::clipMe() {
if ( mFlags & UI_CLIP_ENABLE ) {
if ( mFlags & UI_BORDER )
UIManager::instance()->clipEnable( mScreenPos.x, mScreenPos.y, mRealSize.getWidth(), mRealSize.getHeight() + 1 );
UIManager::instance()->clipSmartEnable( this, mScreenPos.x, mScreenPos.y, mRealSize.getWidth(), mRealSize.getHeight() + 1 );
else
UIManager::instance()->clipEnable( mScreenPos.x, mScreenPos.y, mRealSize.getWidth(), mRealSize.getHeight() );
UIManager::instance()->clipSmartEnable( this, mScreenPos.x, mScreenPos.y, mRealSize.getWidth(), mRealSize.getHeight() );
}
}
void UIControl::clipDisable() {
if ( mFlags & UI_CLIP_ENABLE )
UIManager::instance()->clipDisable();
UIManager::instance()->clipSmartDisable( this );
}
void UIControl::matrixSet() {
@@ -1025,6 +1054,23 @@ Uint32 UIControl::isClipped() {
return mFlags & UI_CLIP_ENABLE;
}
Uint32 UIControl::isRotated() {
return mControlFlags & UI_CTRL_FLAG_ROTATED;
}
bool UIControl::isMeOrParentTreeRotated() {
UIControl * Ctrl = this;
while( NULL != Ctrl ) {
if ( Ctrl->isRotated() )
return true;
Ctrl = Ctrl->getParent();
}
return false;
}
Polygon2f& UIControl::getPolygon() {
return mPoly;
}

View File

@@ -62,21 +62,11 @@ void UIControlAnim::draw() {
if ( NULL != mSkinState )
mSkinState->draw( mScreenPosf.x, mScreenPosf.y, (Float)mRealSize.getWidth(), (Float)mRealSize.getHeight(), (Uint32)mAlpha );
if ( UIManager::instance()->getHighlightFocus() && UIManager::instance()->getFocusControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightFocusColor() );
P.drawRectangle( getRectf() );
}
drawHighlightFocus();
if ( UIManager::instance()->getHighlightOver() && UIManager::instance()->getOverControl() == this ) {
Primitives P;
P.setFillMode( DRAW_LINE );
P.setBlendMode( getBlendMode() );
P.setColor( UIManager::instance()->getHighlightOverColor() );
P.drawRectangle( getRectf() );
}
drawOverControl();
drawDebugData();
}
}
@@ -103,6 +93,14 @@ Vector2f UIControlAnim::getRotationCenter() {
void UIControlAnim::setRotation( const Float& angle ) {
mAngle = angle;
if ( mAngle != 0.f ) {
mControlFlags |= UI_CTRL_FLAG_ROTATED;
} else {
if ( mControlFlags & UI_CTRL_FLAG_ROTATED )
mControlFlags &= ~UI_CTRL_FLAG_ROTATED;
}
onAngleChange();
}

View File

@@ -46,6 +46,43 @@ UIDropDownList::UIDropDownList( UIDropDownList::CreateParams& Params ) :
mListBox->addEventListener( UIEvent::EventOnControlClear, cb::Make1( this, &UIDropDownList::onControlClear ) );
}
UIDropDownList::UIDropDownList() :
UITextInput(),
mListBox( NULL ),
mMinNumVisibleItems( 10 ),
mPopUpToMainControl( false )
{
setFlags( UI_CLIP_ENABLE | UI_AUTO_SIZE | UI_AUTO_PADDING );
setAllowEditing( false );
applyDefaultTheme();
Uint32 flags = UI_CLIP_ENABLE | UI_AUTO_PADDING;
UITheme * Theme = UIThemeManager::instance()->getDefaultTheme();
if ( NULL != Theme ) {
mListBox = Theme->createListBox( NULL, Sizei( mSize.getWidth(), mMinNumVisibleItems * mSize.getHeight() ),Vector2i(), flags );
} else {
UIListBox::CreateParams LBParams;
LBParams.Size = Sizei( mSize.getWidth(), mMinNumVisibleItems * mSize.getHeight() );
LBParams.Flags = flags;
LBParams.FontSelectedColor = ColorA( 255, 255, 255, 255 );
mListBox = eeNew( UIListBox, ( LBParams ) );
}
mListBox->setEnabled( false );
mListBox->setVisible( false );
mListBox->addEventListener( UIEvent::EventOnComplexControlFocusLoss, cb::Make1( this, &UIDropDownList::onListBoxFocusLoss ) );
mListBox->addEventListener( UIEvent::EventOnItemSelected , cb::Make1( this, &UIDropDownList::onItemSelected ) );
mListBox->addEventListener( UIEvent::EventOnItemClicked, cb::Make1( this, &UIDropDownList::onItemClicked ) );
mListBox->addEventListener( UIEvent::EventOnItemKeyDown, cb::Make1( this, &UIDropDownList::onItemKeyDown ) );
mListBox->addEventListener( UIEvent::EventKeyDown , cb::Make1( this, &UIDropDownList::onItemKeyDown ) );
mListBox->addEventListener( UIEvent::EventOnControlClear, cb::Make1( this, &UIDropDownList::onControlClear ) );
}
UIDropDownList::~UIDropDownList() {
destroyListBox();
}
@@ -70,10 +107,12 @@ void UIDropDownList::setTheme( UITheme * Theme ) {
void UIDropDownList::onSizeChange() {
UIComplexControl::onSizeChange();
autoSizeControl();
}
void UIDropDownList::autoSizeControl() {
if ( mFlags & UI_AUTO_SIZE ) {
if ( mFlags & UI_AUTO_SIZE || 0 == mSize.getHeight() ) {
setPixelsSize( mRealSize.x, getSkinSize().getHeight() );
}
}

View File

@@ -78,6 +78,71 @@ UIListBox::UIListBox( UIListBox::CreateParams& Params ) :
applyDefaultTheme();
}
UIListBox::UIListBox() :
UIComplexControl(),
mContainer( NULL ),
mVScrollBar( NULL ),
mHScrollBar( NULL ),
mLastPos( eeINDEX_NOT_FOUND ),
mMaxTextWidth(0),
mHScrollInit(0),
mItemsNotVisible(0),
mLastTickMove(0),
mVisibleFirst(0),
mVisibleLast(0),
mTouchDragAcceleration(0)
{
setFlags( UI_CLIP_ENABLE | UI_AUTO_PADDING );
if ( NULL != UIThemeManager::instance()->getDefaultFont() )
mFont = UIThemeManager::instance()->getDefaultFont();
UIControl::CreateParams CParams;
CParams.setParent( this );
CParams.setPosition( mPaddingContainer.Left, mPaddingContainer.Top );
CParams.Size = Sizei( mSize.getWidth() - mPaddingContainer.Right - mPaddingContainer.Left, mSize.getHeight() - mPaddingContainer.Top - mPaddingContainer.Bottom );
CParams.Flags = mFlags;
mContainer = eeNew( UIItemContainer<UIListBox>, ( CParams ) );
mContainer->setVisible( true );
mContainer->setEnabled( true );
if ( mFlags & UI_CLIP_ENABLE )
mFlags &= ~UI_CLIP_ENABLE;
UIScrollBar::CreateParams ScrollBarP;
ScrollBarP.setParent( this );
ScrollBarP.Size = Sizei( 15, mSize.getHeight() );
ScrollBarP.setPosition( mSize.getWidth() - 15, 0 );
ScrollBarP.Flags = UI_AUTO_SIZE;
ScrollBarP.VerticalScrollBar = true;
mVScrollBar = eeNew( UIScrollBar, ( ScrollBarP ) );
ScrollBarP.Size = Sizei( mSize.getWidth() - mVScrollBar->getSize().getWidth(), 15 );
ScrollBarP.setPosition( 0, mSize.getHeight() - 15 );
ScrollBarP.VerticalScrollBar = false;
mHScrollBar = eeNew( UIScrollBar, ( ScrollBarP ) );
if ( UI_SCROLLBAR_ALWAYS_ON == mHScrollMode ) {
mHScrollBar->setVisible( true );
mHScrollBar->setEnabled( true );
}
if ( UI_SCROLLBAR_ALWAYS_ON == mVScrollMode ) {
mVScrollBar->setVisible( true );
mVScrollBar->setEnabled( true );
}
mVScrollBar->addEventListener( UIEvent::EventOnValueChange, cb::Make1( this, &UIListBox::onScrollValueChange ) );
mHScrollBar->addEventListener( UIEvent::EventOnValueChange, cb::Make1( this, &UIListBox::onHScrollValueChange ) );
setSmoothScroll( true );
setRowHeight();
applyDefaultTheme();
}
UIListBox::~UIListBox() {
}
@@ -155,7 +220,7 @@ Uint32 UIListBox::addListBoxItem( const String& Text ) {
Uint32 twidth = mFont->getTextWidth( Text );
if ( twidth > mMaxTextWidth ) {
mMaxTextWidth = twidth;
mMaxTextWidth = (Uint32)pxToDpI( twidth );
updateListBoxItemsSize();
}
@@ -335,7 +400,7 @@ void UIListBox::findMaxWidth() {
width = mFont->getTextWidth( mTexts[i] );
if ( width > (Int32)mMaxTextWidth )
mMaxTextWidth = (Uint32)width;
mMaxTextWidth = (Uint32)pxToDpI( width );
}
}
@@ -351,7 +416,7 @@ void UIListBox::itemUpdateSize( UIListBoxItem * Item ) {
Int32 width = (Int32)Item->getTextWidth();
if ( width > (Int32)mMaxTextWidth )
mMaxTextWidth = (Uint32)width;
mMaxTextWidth = (Uint32)pxToDpI( width );
if ( !mHScrollBar->isVisible() ) {
if ( width < mContainer->getSize().getWidth() )

View File

@@ -10,6 +10,12 @@ UIListBoxItem::UIListBoxItem( const UITextBox::CreateParams& Params ) :
applyDefaultTheme();
}
UIListBoxItem::UIListBoxItem() :
UITextBox()
{
applyDefaultTheme();
}
UIListBoxItem::~UIListBoxItem() {
if ( UIManager::instance()->getFocusControl() == this )
mParentCtrl->setFocus();

View File

@@ -285,14 +285,38 @@ const Uint32& UIManager::getLastPressTrigger() const {
return mKM->getLastPressTrigger();
}
void UIManager::clipEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height ) {
void UIManager::clipPlaneEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height ) {
mWindow->clipPlaneEnable( x, y, Width, Height );
}
void UIManager::clipDisable() {
void UIManager::clipPlaneDisable() {
mWindow->clipPlaneDisable();
}
void UIManager::clipEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height ) {
mWindow->clipEnable( x, y, Width, Height );
}
void UIManager::clipDisable() {
mWindow->clipDisable();
}
void UIManager::clipSmartEnable(UIControl * ctrl, const Int32 & x, const Int32 & y, const Uint32 & Width, const Uint32 & Height) {
if ( ctrl->isMeOrParentTreeRotated() ) {
clipPlaneEnable( x, y, Width, Height );
} else {
clipEnable( x, y, Width, Height );
}
}
void UIManager::clipSmartDisable(UIControl * ctrl) {
if ( ctrl->isMeOrParentTreeRotated() ) {
clipPlaneDisable();
} else {
clipDisable();
}
}
void UIManager::setHighlightFocus( bool Highlight ) {
BitOp::setBitFlagValue( &mFlags, UI_MANAGER_HIGHLIGHT_FOCUS, Highlight ? 1 : 0 );
}
@@ -301,6 +325,14 @@ bool UIManager::getHighlightFocus() const {
return 0 != ( mFlags & UI_MANAGER_HIGHLIGHT_FOCUS );
}
void UIManager::setDrawDebugData( bool debug ) {
BitOp::setBitFlagValue( &mFlags, UI_MANAGER_DRAW_DEBUG_DATA, debug ? 1 : 0 );
}
bool UIManager::getDrawDebugData() const {
return 0 != ( mFlags & UI_MANAGER_DRAW_DEBUG_DATA );
}
void UIManager::setHighlightFocusColor( const ColorA& Color ) {
mHighlightFocusColor = Color;
}

View File

@@ -42,6 +42,32 @@ UIScrollBar::UIScrollBar( const UIScrollBar::CreateParams& Params ) :
applyDefaultTheme();
}
UIScrollBar::UIScrollBar() :
UIComplexControl()
{
mBtnDown = eeNew( UIControlAnim, () );
mBtnUp = eeNew( UIControlAnim, () );
mBtnUp->setParent( this );
mBtnUp->setVisible( true );
mBtnUp->setEnabled( true );
mBtnUp->setSize( 16, 16 );
mBtnDown->setParent( this );
mBtnDown->setVisible( true );
mBtnDown->setEnabled( true );
mBtnDown->setSize( 16, 16 );
mSlider = eeNew( UISlider, () );
mSlider->setParent( this );
mSlider->setVisible( true );
mSlider->setEnabled( true );
mSlider->addEventListener( UIEvent::EventOnValueChange, cb::Make1( this, &UIScrollBar::onValueChangeCb ) );
adjustChilds();
applyDefaultTheme();
}
UIScrollBar::~UIScrollBar() {
}

View File

@@ -23,7 +23,7 @@ UISlider::UISlider( const UISlider::CreateParams& Params ) :
if ( !mVertical )
BgParams.Size = Sizei( mSize.getWidth() - 16, 8 );
else
BgParams.Size = Sizei( 8, mSize.getWidth() - 16 );
BgParams.Size = Sizei( 8, mSize.getHeight() - 16 );
mBackSlider = eeNew( UIControlAnim, ( BgParams ) );
mBackSlider->setVisible( true );
@@ -66,7 +66,7 @@ UISlider::UISlider() :
if ( !mVertical )
bgSize = dpToPxI( Sizei( mSize.getWidth() - 16, 8 ) );
else
bgSize = dpToPxI( Sizei( 8, mSize.getWidth() - 16 ) );
bgSize = dpToPxI( Sizei( 8, mSize.getHeight() - 16 ) );
mBackSlider = eeNew( UIControlAnim, () );
mBackSlider->setParent( this );

View File

@@ -77,7 +77,8 @@ void UITextBox::draw() {
if ( mTextCache->getTextWidth() ) {
if ( mFlags & UI_CLIP_ENABLE ) {
UIManager::instance()->clipEnable(
UIManager::instance()->clipSmartEnable(
this,
mScreenPos.x + mRealPadding.Left,
mScreenPos.y + mRealPadding.Top,
mRealSize.getWidth() - mRealPadding.Left - mRealPadding.Right,
@@ -89,7 +90,7 @@ void UITextBox::draw() {
mTextCache->draw( (Float)mScreenPos.x + mAlignOffset.x + (Float)mRealPadding.Left, (Float)mScreenPos.y + mAlignOffset.y + (Float)mRealPadding.Top, Vector2f::One, 0.f, getBlendMode() );
if ( mFlags & UI_CLIP_ENABLE ) {
UIManager::instance()->clipDisable();
UIManager::instance()->clipSmartDisable( this );
}
}
}

View File

@@ -30,6 +30,8 @@ UITextInput::UITextInput() :
mAllowEditing( true ),
mShowingWait( true )
{
setFlags( UI_CLIP_ENABLE | UI_AUTO_PADDING | UI_AUTO_SIZE );
mTextBuffer.start();
mTextBuffer.setActive( false );
mTextBuffer.setFreeEditing( true );
@@ -80,6 +82,8 @@ void UITextInput::update() {
if ( mCursorPos != mTextBuffer.getCursorPos() ) {
alignFix();
mCursorPos = mTextBuffer.getCursorPos();
mWaitCursorTime = 0.f;
mShowingWait = true;
onCursorPosChange();
}
}
@@ -191,7 +195,7 @@ void UITextInput::setTheme( UITheme * Theme ) {
}
void UITextInput::autoSize() {
if ( mFlags & UI_AUTO_SIZE ) {
if ( ( mFlags & UI_AUTO_SIZE ) || 0 == mSize.getHeight() ) {
setPixelsSize( mRealSize.x, getSkinSize().getHeight() );
}
}

View File

@@ -30,7 +30,8 @@ void UITextInputPassword::draw() {
if ( mPassCache->getTextWidth() ) {
if ( mFlags & UI_CLIP_ENABLE ) {
UIManager::instance()->clipEnable(
UIManager::instance()->clipSmartEnable(
this,
mScreenPos.x + mRealPadding.Left,
mScreenPos.y + mRealPadding.Top,
mSize.getWidth() - mRealPadding.Left - mRealPadding.Right,
@@ -42,7 +43,7 @@ void UITextInputPassword::draw() {
mPassCache->draw( (Float)mScreenPos.x + mAlignOffset.x + (Float)mRealPadding.Left, (Float)mScreenPos.y + mAlignOffset.y + (Float)mRealPadding.Top, Vector2f::One, 0.f, getBlendMode() );
if ( mFlags & UI_CLIP_ENABLE ) {
UIManager::instance()->clipDisable();
UIManager::instance()->clipSmartDisable( this );
}
}
}

View File

@@ -277,6 +277,15 @@ void EETest::createUI() {
UIThemeManager::instance()->setDefaultEffectsEnabled( true );
UIThemeManager::instance()->setDefaultFont( TTF );
UIThemeManager::instance()->setDefaultTheme( mThemeName );
Int32 wsize = 100;
std::vector<String> str(wsize);
if ( wsize ) {
for ( Int32 i = 1; i <= wsize; i++ )
str[i-1] = "Test ListBox " + String::toStr(i) + " testing it right now!";
}
/**/
UIControl::CreateParams Params( UIManager::instance()->getMainControl(), Vector2i(0,0), Sizei( 530, 380 ), UI_FILL_BACKGROUND | UI_CLIP_ENABLE | UI_BORDER );
@@ -426,16 +435,7 @@ void EETest::createUI() {
mListBox->setVisible( true );
mListBox->setEnabled( true );
Int32 wsize = 100;
if ( wsize ) {
std::vector<String> str(wsize);
for ( Int32 i = 1; i <= wsize; i++ )
str[i-1] = "Test ListBox " + String::toStr(i) + " testing it right now!";
mListBox->addListBoxItems( str );
}
mListBox->addListBoxItems( str );
UIDropDownList::CreateParams DDLParams;
DDLParams.setParent( C );
@@ -620,6 +620,38 @@ void EETest::createUI() {
slider->setSize( 16, 100 );
slider->setVisible( true );
slider->setEnabled( true );
UITextInput * textInput = eeNew( UITextInput, () );
textInput->setPosition( 50, 210 );
textInput->setSize( 100, 0 );
textInput->setVisible( true );
textInput->setEnabled( true );
UIDropDownList * dropdownList = eeNew( UIDropDownList, () );
dropdownList->setPosition( 50, 250 );
dropdownList->setSize( 100, 0 );
dropdownList->setVisible( true );
dropdownList->setEnabled( true );
dropdownList->getListBox()->addListBoxItem( "Test 1" );
dropdownList->getListBox()->addListBoxItem( "Test 2" );
dropdownList->getListBox()->addListBoxItem( "Test 3" );
UIComboBox * comboBox = eeNew( UIComboBox, () );
comboBox->setPosition( 50, 280 );
comboBox->setSize( 100, 0 );
comboBox->setVisible( true );
comboBox->setEnabled( true );
comboBox->getListBox()->addListBoxItem( "Test 1" );
comboBox->getListBox()->addListBoxItem( "Test 2" );
comboBox->getListBox()->addListBoxItem( "Test 3" );
comboBox->getListBox()->setSelected( 0 );
UIListBox * listBox = eeNew( UIListBox, () );
listBox->setPosition( 50, 320 );
listBox->setSize( 100, 160 );
listBox->setVisible( true );
listBox->setEnabled( true );
listBox->addListBoxItems( str );
}
void EETest::createMapEditor() {