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); }
void ImageBox::SetTexture(const char* file) { if (!file) return; if (mImageFile == file) return; mImageFile = file ? file : ""; if (mImageFile.empty()){ SetTexture(TexturePtr()); } else{ TexturePtr pTexture = Renderer::GetInstance().CreateTexture(mImageFile.c_str()); SetTexture(pTexture); } UIManager::GetInstance().DirtyRenderList(GetHwndId()); }
void TextField::OnFocusGain() { KeyboardCursor::GetInstance().SetHwndId(GetHwndId()); UIManager::GetInstance().DirtyRenderList(mHwndId); auto mani = UIManager::GetInstance().GetTextManipulator(); mani->AddObserver(ITextManipulatorObserver::Default, std::dynamic_pointer_cast<ITextManipulatorObserver>(mSelfPtr.lock())); mani->SetText(&mTextw); auto propertyList = IsInPropertyList(); if (propertyList) { ListItem* listItem = (ListItem*)GetParent().get(); propertyList->SetFocusRow(listItem->GetRowIndex()); } KeyboardCursor::GetInstance().SetScissorRegion(GetScissorRegion()); }
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()); } }