bool TextBox::SetProperty(UIProperty::Enum prop, const char* val) { switch (prop) { case UIProperty::BACKGROUND_IMAGE_NOATLAS: { mStrBackImage = val; if (!mImage) { mImage = ImageBox::Create(); mImage->SetHwndId(GetHwndId()); mImage->SetRender3D(mRender3D, GetRenderTargetSize()); mImage->SetManualParent(mSelfPtr.lock()); mImage->ChangePos(GetFinalPos()); mImage->ChangeSize(GetFinalSize()); } UIManager::GetInstance().DirtyRenderList(GetHwndId()); mImage->SetTexture(val); return true; } case UIProperty::KEEP_IMAGE_RATIO: { mStrKeepRatio = val; if (!mImage) { mImage = ImageBox::Create(); mImage->SetHwndId(GetHwndId()); mImage->SetRender3D(mRender3D, GetRenderTargetSize()); mImage->SetManualParent(mSelfPtr.lock()); mImage->ChangePos(GetFinalPos()); mImage->ChangeSize(GetFinalSize()); } UIManager::GetInstance().DirtyRenderList(GetHwndId()); mImage->SetKeepImageRatio(StringConverter::ParseBool(val, true)); return true; } case UIProperty::TEXTBOX_MATCH_HEIGHT: { mMatchHeight = StringConverter::ParseBool(val); if (mMatchHeight) { unsigned height = GetTextBoxHeight(); ChangeSizeY(height); } return true; } } return __super::SetProperty(prop, val); }
NumericUpDown::NumericUpDown() :mValue(0) , mMin(0) , mMax(100) , mShiftStep(5) , mStep(1) { mUIObject = UIObject::Create(GetRenderTargetSize()); mUIObject->mOwnerUI = this; mUIObject->mTypeString = ComponentType::ConvertToString(GetType()); mUIObject->SetTextColor(mTextColor); mUIObject->SetNoDrawBackground(true); }
TextBox::TextBox() : mCursorPos(0) , mPasswd(false) , mMatchHeight(false) { mUIObject = UIObject::Create(GetRenderTargetSize()); mUIObject->mOwnerUI = this; mUIObject->mTypeString = ComponentType::ConvertToString(GetType()); mUIObject->SetTextColor(mTextColor); mUIObject->SetNoDrawBackground(true); mUIObject->SetMultiline(true); SetProperty(UIProperty::FIXED_TEXT_SIZE, "true"); SetProperty(UIProperty::MATCH_SIZE, "false"); }
TextField::TextField() : WinBase() , mPasswd(false) , mCursorOffset(0) { mUIObject = UIObject::Create(GetRenderTargetSize()); mUIObject->SetMaterial("EssentialEngineData/materials/UITextField.material"); mUIObject->mOwnerUI = this; mUIObject->mTypeString = ComponentType::ConvertToString(GetType()); mUIObject->SetTextSize(mTextSize); mUIObject->SetTextColor(mTextColor); RegisterEventFunc(UIEvents::EVENT_MOUSE_LEFT_CLICK, std::bind(&TextField::OnClicked, this, std::placeholders::_1)); RegisterEventFunc(UIEvents::EVENT_MOUSE_LEFT_DOUBLE_CLICK, std::bind(&TextField::OnDoubleClicked, this, std::placeholders::_1)); }
ImageBox::ImageBox() : mTextureAtlas(0) , mAtlasRegion(0) , mUseHighlight(false) , mKeepImageRatio(true) , mFrameImage(0) , mAnimation(false) , mSecPerFrame(0) , mPlayingTime(0) , mCurFrame(0), mImageFixedSize(false) , mTexture(0), mColorOveraySet(false) , mRenderTarget(0) , mImageRot(false) , mLinearSampler(false) { mUIObject = UIObject::Create(GetRenderTargetSize()); mUIObject->SetMaterial("EssentialEngineData/materials/UIImageBox.material"); mUIObject->mOwnerUI = this; mUIObject->mTypeString = ComponentType::ConvertToString(GetType()); }
void TextField::SetUseBorder(bool use) { if (use && mBorders.empty()) { auto T = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); T->SetHwndId(GetHwndId()); mBorders.push_back(T); T->SetRender3D(mRender3D, GetRenderTargetSize()); T->SetManualParent(mSelfPtr.lock()); T->ChangeSizeY(1); T->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto L = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); L->SetHwndId(GetHwndId()); mBorders.push_back(L); L->SetRender3D(mRender3D, GetRenderTargetSize()); L->SetManualParent(mSelfPtr.lock()); L->ChangeSizeX(1); L->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto R = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); R->SetHwndId(GetHwndId()); mBorders.push_back(R); R->SetRender3D(mRender3D, GetRenderTargetSize()); R->SetManualParent(mSelfPtr.lock()); R->SetAlign(ALIGNH::RIGHT, ALIGNV::TOP); R->ChangeSizeX(1); R->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto B = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); B->SetHwndId(GetHwndId()); mBorders.push_back(B); B->SetRender3D(mRender3D, GetRenderTargetSize()); B->SetManualParent(mSelfPtr.lock()); B->SetAlign(ALIGNH::LEFT, ALIGNV::BOTTOM); B->ChangeSizeY(1); B->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto LT = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); LT->SetHwndId(GetHwndId()); mBorders.push_back(LT); LT->SetRender3D(mRender3D, GetRenderTargetSize()); LT->SetManualParent(mSelfPtr.lock()); LT->ChangeSize(Vec2I(1, 1)); LT->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto RT = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); RT->SetHwndId(GetHwndId()); mBorders.push_back(RT); RT->SetRender3D(mRender3D, GetRenderTargetSize()); RT->SetManualParent(mSelfPtr.lock()); RT->ChangeSize(Vec2I(1, 1)); RT->SetAlign(ALIGNH::RIGHT, ALIGNV::TOP); RT->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto LB = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); LB->SetHwndId(GetHwndId()); mBorders.push_back(LB); LB->SetRender3D(mRender3D, GetRenderTargetSize()); LB->SetManualParent(mSelfPtr.lock()); LB->ChangeSize(Vec2I(1, 1)); LB->SetAlign(ALIGNH::LEFT, ALIGNV::BOTTOM); LB->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); auto RB = std::static_pointer_cast<ImageBox>(UIManager::GetInstance().CreateComponent(ComponentType::ImageBox)); RB->SetHwndId(GetHwndId()); mBorders.push_back(RB); RB->SetRender3D(mRender3D, GetRenderTargetSize()); RB->SetManualParent(mSelfPtr.lock()); RB->ChangeSize(Vec2I(1, 1)); RB->SetAlign(ALIGNH::RIGHT, ALIGNV::BOTTOM); RB->SetTextureAtlasRegion("EssentialEngineData/textures/ui.xml", "ThinBorder"); RefreshBorder(); RefreshScissorRects(); UIManager::GetInstance().DirtyRenderList(GetHwndId()); } else if (!use && !mBorders.empty()) { mBorders.clear(); UIManager::GetInstance().DirtyRenderList(GetHwndId()); } }