Update
- Add data getter to DrawList - Add NoOOS (Out Of screen Rendering) flag to text renderer (requires a textbox) - UI7 Label Wrapping (optinal and beta)
This commit is contained in:
@@ -272,6 +272,15 @@ PD_LITHIUM_API void Font::CmdTextEx(std::vector<Command::Ref> &cmds,
|
||||
}
|
||||
|
||||
for (auto &it : lines) {
|
||||
if (flags & LiTextFlags_NoOOS) {
|
||||
if (rpos.y + off.y + lh < 0) {
|
||||
off.y += lh;
|
||||
continue;
|
||||
}
|
||||
if (rpos.y + off.y > box.y && box.y != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (flags & LiTextFlags_Short) {
|
||||
fvec2 tmp_dim;
|
||||
it = pShortText(it, scale, box - pos, tmp_dim);
|
||||
|
||||
@@ -31,10 +31,27 @@ PD_UI7_API void Label::Draw() {
|
||||
if (pCLipRectUsed) {
|
||||
list->PushClipRect(pClipRect);
|
||||
}
|
||||
list->DrawText(FinalPos(), label, io->Theme->Get(UI7Color_Text));
|
||||
list->DrawTextEx(FinalPos(), label, io->Theme->Get(UI7Color_Text),
|
||||
LiTextFlags_NoOOS, PD::fvec2(0, io->CurrentViewPort.w));
|
||||
if (pCLipRectUsed) {
|
||||
list->PopClipRect();
|
||||
}
|
||||
}
|
||||
|
||||
PD_UI7_API void Label::Update() {
|
||||
/**
|
||||
* Todo: This is a hacky workaround
|
||||
* Needs proper optimisation
|
||||
* Needs a max size (to support sligning dynaically by the window size)
|
||||
*/
|
||||
if (io->WrapLabels) {
|
||||
this->label =
|
||||
io->Font->pWrapText(this->label, io->FontScale,
|
||||
PD::fvec2(io->CurrentViewPort.z - FinalPos().x * 4,
|
||||
io->CurrentViewPort.w),
|
||||
this->tdim);
|
||||
SetSize(tdim);
|
||||
}
|
||||
}
|
||||
} // namespace UI7
|
||||
} // namespace PD
|
||||
@@ -81,7 +81,9 @@ PD_UI7_API void Menu::Separator() {
|
||||
pIO->Theme->Get(UI7Color_TextDead));
|
||||
});
|
||||
// Set size before pushing (cause Cursor Move will require it)
|
||||
r->SetSize(fvec2(pLayout->Size.x - 10, 1));
|
||||
r->SetSize(fvec2(
|
||||
pLayout->Size.x - pIO->MenuPadding.x * 2 - pLayout->InitialCursorOffset.x,
|
||||
1));
|
||||
pLayout->AddObject(r);
|
||||
}
|
||||
|
||||
@@ -109,8 +111,9 @@ PD_UI7_API void Menu::SeparatorText(const std::string& label) {
|
||||
fvec2(pLayout->Size.x, self->GetSize().y));
|
||||
});
|
||||
// Set size before pushing (cause Cursor Move will require it)
|
||||
r->SetSize(
|
||||
fvec2(pLayout->Size.x - 10, pIO->Font->PixelHeight * pIO->FontScale));
|
||||
r->SetSize(fvec2(
|
||||
pLayout->Size.x - pIO->MenuPadding.x * 2 - pLayout->InitialCursorOffset.x,
|
||||
pIO->Font->PixelHeight * pIO->FontScale));
|
||||
pLayout->AddObject(r);
|
||||
}
|
||||
PD_UI7_API void Menu::HandleFocus() {
|
||||
|
||||
Reference in New Issue
Block a user