Compare commits
82
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e27dfb0eb
|
||
|
|
42c669de55
|
||
|
|
4488425a94
|
||
|
|
eafe5c9be5
|
||
|
|
d18e397eaf
|
||
|
|
fc5a357caa
|
||
|
|
a1cb3bf290
|
||
|
|
8c1063640c
|
||
|
|
85f50df154
|
||
|
|
32c94e0776
|
||
|
|
6b5f30b334
|
||
|
|
42cb7ce2ed
|
||
|
|
26a8c230c6
|
||
|
|
0a5a86459b
|
||
|
|
0f25a70901
|
||
|
|
6a22b26a3d
|
||
|
|
245cc0f314
|
||
|
|
cb437d41a0
|
||
|
|
322ce785b9
|
||
|
|
b29e298d55
|
||
|
|
2801b876e6
|
||
|
|
f1540f0098
|
||
|
|
54584728c3
|
||
|
|
daaf473af7
|
||
|
|
9ed3ed233d
|
||
|
|
dd97aab749
|
||
|
|
0746295013
|
||
|
|
2984354884
|
||
|
|
4d2470b0c6
|
||
|
|
cfb6a9b3dd
|
||
|
|
799e779fe6
|
||
|
|
7f708a565e
|
||
|
|
280ce524bf
|
||
|
|
b99fc39444
|
||
|
|
6dbf5a4812
|
||
|
|
ff3b241dd2
|
||
|
|
7a1751589e
|
||
|
|
8a4b3c119d
|
||
|
|
1f7d96a455
|
||
|
|
c9768010f2
|
||
|
|
679de3ae94
|
||
|
|
af7fc026df
|
||
|
|
5bc8046ebe
|
||
|
|
8215baac99
|
||
|
|
a776addf11
|
||
|
|
1cf3b6f8e6
|
||
|
|
b5321ca1a1
|
||
|
|
4498c2c0fb
|
||
|
|
818b086f08
|
||
|
|
e560496512
|
||
|
|
7b6e611f12
|
||
|
|
72deaad28d
|
||
|
|
2e652a3c24
|
||
|
|
784421fa6c
|
||
|
|
bc06a3fee8
|
||
|
|
d2ab60c824
|
||
|
|
a8fe58ef0f
|
||
|
|
eea0e9844f
|
||
|
|
4777c85f9a
|
||
|
|
b49c0bd3dc
|
||
|
|
4db5d98cb2
|
||
|
|
794e06b890
|
||
|
|
d8efcd41b1
|
||
|
|
4dab1987d1
|
||
|
|
6fab4a07a9
|
||
|
|
baad2ce15c
|
||
|
|
a86c13b9a3
|
||
|
|
3b0b103eb3
|
||
|
|
6beef97cdf
|
||
|
|
afe30a5dbd
|
||
|
|
e6cd8b7d24
|
||
|
|
66602a79e0
|
||
|
|
a28b7318d2
|
||
|
|
71563e8979
|
||
|
|
7d89ab1c47
|
||
|
|
186fce803e
|
||
|
|
66412ca8e0
|
||
|
|
e04046720b
|
||
|
|
d4c59e5b61
|
||
|
|
fe9194b907
|
||
|
|
4924d86bc0
|
||
|
|
41b612ec0a
|
@@ -42,10 +42,6 @@ class PD_API Drawlist {
|
||||
void Copy(Drawlist& other);
|
||||
void Optimize();
|
||||
void Clear();
|
||||
void SetLayer(int layer) { pCurrentLayer = layer; }
|
||||
void LayerUp() { pCurrentLayer++; }
|
||||
void LayerDown() { pCurrentLayer--; }
|
||||
int GetLayer() const { return pCurrentLayer; }
|
||||
|
||||
size_t GetNumVertices() const {
|
||||
size_t count = 0;
|
||||
@@ -130,7 +126,6 @@ class PD_API Drawlist {
|
||||
|
||||
private:
|
||||
Texture pCurrentTexture;
|
||||
int pCurrentLayer = 0;
|
||||
Pool<Command> pCommands;
|
||||
Pool<fvec2> pPath;
|
||||
Pool<Vertex> pVertices;
|
||||
|
||||
@@ -59,7 +59,6 @@ class PD_API Container {
|
||||
void Init(UI7::IO* io, Li::Drawlist* l) {
|
||||
list = l;
|
||||
this->io = io;
|
||||
pFont = io->Font;
|
||||
// this->screen = io->Ren->CurrentScreen();
|
||||
}
|
||||
|
||||
@@ -76,7 +75,6 @@ class PD_API Container {
|
||||
fvec2 GetPos() { return pos; }
|
||||
/** Getter for Size */
|
||||
fvec2 GetSize() { return size; }
|
||||
Li::Font* GetFont() { return pFont; }
|
||||
/**
|
||||
* Get the Containers Final Position
|
||||
* for Rendering and Input (if it has a parent Object)
|
||||
@@ -195,7 +193,6 @@ class PD_API Container {
|
||||
fvec4 pClipRect;
|
||||
/** Clip Rect used */
|
||||
bool pCLipRectUsed = false;
|
||||
Li::Font* pFont = nullptr;
|
||||
};
|
||||
} // namespace UI7
|
||||
} // namespace PD
|
||||
|
||||
@@ -58,8 +58,6 @@ enum UI7MenuFlags_ {
|
||||
enum UI7LayoutFlags_ {
|
||||
UI7LayoutFlags_None = 0, ///< No Flags used
|
||||
UI7LayoutFlags_UseClipRect = 1 << 0, ///< Enable ClipRect
|
||||
UI7LayoutFlags_HzScrolling = 1 << 1, ///< Scrolling Horizontal
|
||||
UI7LayoutFlags_VtScrolling = 1 << 2, ///< Scrolling Vertical
|
||||
};
|
||||
|
||||
/** UI7 Context Flags */
|
||||
|
||||
@@ -81,7 +81,6 @@ class PD_API IO {
|
||||
u32 NumVertices = 0; ///< Debug Vertices Num
|
||||
u32 NumIndices = 0; ///< Debug Indices Num
|
||||
std::vector<u32> MenuOrder;
|
||||
std::vector<Li::Font*> FontStack;
|
||||
|
||||
// Pools
|
||||
PD::Pool<UI7::Label> LabelPool;
|
||||
@@ -108,18 +107,6 @@ class PD_API IO {
|
||||
return ViewPorts[id.RawID()];
|
||||
}
|
||||
|
||||
void PushFont(Li::Font* f) {
|
||||
FontStack.push_back(Font);
|
||||
Font = f;
|
||||
}
|
||||
|
||||
void PopFont() {
|
||||
if (!FontStack.empty()) {
|
||||
Font = FontStack.back();
|
||||
FontStack.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
UI7::InputHandler InputHandler;
|
||||
};
|
||||
} // namespace UI7
|
||||
|
||||
@@ -127,8 +127,6 @@ class PD_API Layout {
|
||||
void CursorInit();
|
||||
void SameLine();
|
||||
void CursorMove(const fvec2& size);
|
||||
void PushFont(Li::Font* f) { IO.PushFont(f); }
|
||||
void PopFont() { IO.PopFont(); }
|
||||
|
||||
bool ObjectWorkPos(fvec2& movpos);
|
||||
|
||||
@@ -165,8 +163,6 @@ class PD_API Layout {
|
||||
void SetAlign(UI7Align a) { Alignment = a; }
|
||||
void NextAlign(UI7Align a) { TempAlign = a; }
|
||||
|
||||
void HandleScrolling();
|
||||
|
||||
void Update();
|
||||
|
||||
fvec2 DbgScrollOffset() { return ScrollOffset; }
|
||||
|
||||
@@ -110,6 +110,7 @@ class PD_API Menu {
|
||||
void EndTreeNode();
|
||||
|
||||
void HandleFocus();
|
||||
void HandleScrolling();
|
||||
void HandleTitlebarActions();
|
||||
void DrawBaseLayout();
|
||||
|
||||
@@ -119,9 +120,6 @@ class PD_API Menu {
|
||||
}
|
||||
Container* FindObject(u32 id) { return pLayout.FindObject(id); }
|
||||
|
||||
void PushFont(Li::Font* f) { pIO.PushFont(f); }
|
||||
void PopFont() { pIO.PopFont(); }
|
||||
|
||||
void Update();
|
||||
|
||||
void SetSize(PD::fvec2 size) { pLayout.SetSize(size); }
|
||||
|
||||
@@ -12,20 +12,12 @@ PD_API Drawlist::Drawlist() { Clear(); }
|
||||
PD_API Drawlist::~Drawlist() { Clear(); }
|
||||
|
||||
PD_API void Drawlist::Merge(Drawlist& other) {
|
||||
size_t start = pCommands.size();
|
||||
pCommands.AppendMove(other.pCommands);
|
||||
for (size_t i = start; i < pCommands.size(); i++) {
|
||||
pCommands[i].Layer += this->pCurrentLayer;
|
||||
}
|
||||
other.Clear();
|
||||
}
|
||||
|
||||
PD_API void Drawlist::Copy(Drawlist& other) {
|
||||
int start = pCommands.size();
|
||||
pCommands.AppendCopy(other.pCommands);
|
||||
for (size_t i = start; i < pCommands.size(); i++) {
|
||||
pCommands[i].Layer += this->pCurrentLayer;
|
||||
}
|
||||
}
|
||||
|
||||
PD_API void Drawlist::Optimize() {
|
||||
@@ -42,14 +34,12 @@ PD_API void Drawlist::Clear() {
|
||||
UnbindTexture();
|
||||
pPath.ResetFast();
|
||||
pCommands.NoReset();
|
||||
pCurrentLayer = 0;
|
||||
}
|
||||
|
||||
/** Command Allocation */
|
||||
PD_API Command& Drawlist::NewCommand() {
|
||||
auto cmd = pCommands.Allocate(1);
|
||||
cmd->Reset();
|
||||
cmd->Layer = pCurrentLayer;
|
||||
cmd->Tex = pCurrentTexture.GetID();
|
||||
return *cmd;
|
||||
}
|
||||
|
||||
@@ -288,8 +288,7 @@ PD_API void Font::CmdTextEx(Drawlist& dl, const fvec2& pos, u32 color,
|
||||
}
|
||||
|
||||
if (cp.Size.x > 0 && cp.Size.y > 0) {
|
||||
if (cmd == nullptr || cmd->Tex != Textures[cp.Tex] ||
|
||||
cmd->Layer != dl.GetLayer()) {
|
||||
if (cmd == nullptr || cmd->Tex != Textures[cp.Tex]) {
|
||||
if (cp.Tex >= Textures.size()) continue;
|
||||
cmd = &dl.NewCommand();
|
||||
cmd->Tex = Textures[cp.Tex];
|
||||
|
||||
@@ -49,13 +49,12 @@ PD_API void Button::HandleInput() {
|
||||
PD_API void Button::Draw() {
|
||||
// Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->SetFont(GetFont());
|
||||
list->PathRect(FinalPos(), FinalPos() + size, io->FrameRounding);
|
||||
list->PathFill(io->Theme.Get(color));
|
||||
list->LayerUp();
|
||||
// list->LayerUp();
|
||||
list->DrawText(FinalPos() + size * 0.5 - tdim * 0.5, label.c_str(),
|
||||
io->Theme.Get(UI7Color_Text));
|
||||
list->LayerDown();
|
||||
// list->LayerDown();
|
||||
}
|
||||
|
||||
PD_API void Button::Update() {
|
||||
|
||||
@@ -48,7 +48,6 @@ PD_API void Checkbox::HandleInput() {
|
||||
PD_API void Checkbox::Draw() {
|
||||
// Assert(list.get() && io.get(), "Did you run Container::Init correctly?");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->SetFont(GetFont());
|
||||
list->PathRect(FinalPos(), FinalPos() + cbs, io->FrameRounding);
|
||||
list->PathFill(io->Theme.Get(color));
|
||||
if (usr_ref) {
|
||||
|
||||
@@ -44,7 +44,6 @@ PD_API void ColorEdit::HandleInput() {
|
||||
PD_API void ColorEdit::Draw() {
|
||||
// Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->SetFont(GetFont());
|
||||
list->PathRect(FinalPos(), FinalPos() + io->ItemRowHeight, io->FrameRounding);
|
||||
list->PathFill(*color_ref);
|
||||
list->DrawText(FinalPos() + fvec2(io->ItemSpace.x + io->ItemRowHeight, 0),
|
||||
@@ -56,19 +55,16 @@ PD_API void ColorEdit::Draw() {
|
||||
layout->SetPosition(FinalPos());
|
||||
DynObj* r = io->DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([=, this](UI7::IO* io, Li::Drawlist* l, Container* thiz) {
|
||||
list->SetFont(thiz->GetFont());
|
||||
thiz->SetSize(layout->GetSize());
|
||||
// l->Layer(30);
|
||||
l->PathRect(thiz->GetPos(), thiz->GetPos() + thiz->GetSize(),
|
||||
io->FrameRounding);
|
||||
l->PathFill(io->Theme.Get(UI7Color_FrameBackground));
|
||||
l->SetLayer(0);
|
||||
});
|
||||
layout->AddObjectEx(r, UI7LytAdd_Front | UI7LytAdd_NoCursorUpdate |
|
||||
UI7LytAdd_NoScrollHandle);
|
||||
r = io->DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([=, this](UI7::IO* io, Li::Drawlist* l, Container* thiz) {
|
||||
list->SetFont(thiz->GetFont());
|
||||
l->PathRect(thiz->FinalPos(), thiz->FinalPos() + io->ItemRowHeight,
|
||||
io->FrameRounding);
|
||||
l->PathFill(*color_ref);
|
||||
@@ -88,9 +84,7 @@ PD_API void ColorEdit::Draw() {
|
||||
layout->Slider<u8>("B", ((u8*)color_ref) + 2);
|
||||
layout->Slider<u8>("A", ((u8*)color_ref) + 3);
|
||||
layout->Update();
|
||||
list->SetLayer(50);
|
||||
list->Merge(layout->GetDrawList());
|
||||
list->SetLayer(0);
|
||||
// io->RegisterDrawList(GetID(), layout->GetDrawList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,11 +86,11 @@ PD_API void DragData<T>::Draw() {
|
||||
FinalPos() + fvec2(off_x, 0) + td + io->FramePadding,
|
||||
io->FrameRounding);
|
||||
list->PathFill(io->Theme.Get(UI7Color_Button));
|
||||
list->LayerUp();
|
||||
// list->LayerUp();
|
||||
list->DrawTextEx(FinalPos() + fvec2(off_x, 0), p.c_str(),
|
||||
io->Theme.Get(UI7Color_Text), LiTextFlags_AlignMid,
|
||||
td + io->FramePadding);
|
||||
list->LayerDown();
|
||||
// list->LayerDown();
|
||||
off_x += td.x + io->ItemSpace.x + io->FramePadding.x;
|
||||
}
|
||||
list->DrawText(FinalPos() + fvec2(off_x, io->FramePadding.y * 0.5),
|
||||
@@ -101,7 +101,6 @@ template <typename T>
|
||||
PD_API void DragData<T>::Update() {
|
||||
// Assert(io.get(), "Did you run Container::Init correctly?");
|
||||
// Probably need to find a faster solution (caching sizes calculated here)
|
||||
list->SetFont(GetFont());
|
||||
float off_x = 0;
|
||||
for (size_t i = 0; i < elm_count; i++) {
|
||||
std::string p;
|
||||
|
||||
@@ -29,11 +29,11 @@ PD_API void Image::Draw() {
|
||||
// Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
|
||||
// Assert(img.get(), "Image is nullptr!");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->LayerUp();
|
||||
// list->LayerUp();
|
||||
list->BindTexture(img);
|
||||
list->DrawRectFilled(FinalPos(), newsize, 0xffffffff);
|
||||
list->UnbindTexture();
|
||||
list->LayerDown();
|
||||
// list->LayerDown();
|
||||
}
|
||||
} // namespace UI7
|
||||
} // namespace PD
|
||||
@@ -28,7 +28,6 @@ namespace UI7 {
|
||||
PD_API void Label::Draw() {
|
||||
// Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->SetFont(GetFont());
|
||||
list->DrawTextEx(FinalPos(), label.c_str(), io->Theme.Get(UI7Color_Text),
|
||||
LiTextFlags_NoOOS,
|
||||
PD::fvec2(0, io->CurrentViewPort.pSize.w));
|
||||
|
||||
@@ -70,7 +70,6 @@ template <typename T>
|
||||
PD_API void Slider<T>::Draw() {
|
||||
// Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
|
||||
// io->Ren->OnScreen(screen);
|
||||
list->SetFont(GetFont());
|
||||
std::string p;
|
||||
if constexpr (std::is_floating_point_v<T>) {
|
||||
p = std::format("{:.{}f}", *data, precision);
|
||||
@@ -85,10 +84,10 @@ PD_API void Slider<T>::Draw() {
|
||||
FinalPos() + fvec2(slp + slw - 2, td.y - 2) + io->FramePadding,
|
||||
io->FrameRounding);
|
||||
list->PathFill(io->Theme.Get(UI7Color_ButtonActive));
|
||||
list->LayerUp();
|
||||
// list->LayerUp();
|
||||
list->DrawTextEx(FinalPos(), p.c_str(), io->Theme.Get(UI7Color_Text),
|
||||
LiTextFlags_AlignMid, fvec2(width, td.y) + io->FramePadding);
|
||||
list->LayerDown();
|
||||
// list->LayerDown();
|
||||
list->DrawText(FinalPos() + fvec2(width + io->FramePadding.x * 2.f,
|
||||
io->FramePadding.y * 0.5),
|
||||
label.c_str(), io->Theme.Get(UI7Color_Text));
|
||||
|
||||
@@ -21,7 +21,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include <pd/ui7/containers.hpp>
|
||||
#include <pd/ui7/layout.hpp>
|
||||
|
||||
@@ -123,42 +122,6 @@ PD_API fvec2 Layout::AlignPosition(fvec2 pos, fvec2 size, fvec4 area,
|
||||
return p;
|
||||
}
|
||||
|
||||
PD_API void Layout::HandleScrolling() {
|
||||
if (Flags & UI7LayoutFlags_VtScrolling) {
|
||||
bool allowed = MaxPosition.y > WorkRect.w;
|
||||
if (allowed) {
|
||||
if (PD::Hid::IsEvent(Hid::Event::Down, PD::Hid::Gamepad::Touch) ||
|
||||
PD::Hid::IsEvent(Hid::Event::Down, PD::Hid::Keyboard::MouseLeft)) {
|
||||
ScrollStart = ScrollOffset;
|
||||
}
|
||||
if (IO.InputHandler.DragObject(UI7::ID("sbg" + ID.GetName()),
|
||||
fvec4(Pos, fvec2(0.f)) + WorkRect)) {
|
||||
if (!IO.InputHandler.DragReleasedAW) {
|
||||
ScrollOffset.y =
|
||||
std::clamp(ScrollStart.y + IO.InputHandler.DragSourcePos.y -
|
||||
IO.InputHandler.DragPosition.y,
|
||||
-20.f, MaxPosition.y - WorkRect.w + 20.f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ScrollOffset.y = 0.f;
|
||||
}
|
||||
|
||||
if (ScrollOffset.y > MaxPosition.y - WorkRect.w) {
|
||||
ScrollOffset.y -= 1.5f;
|
||||
if (ScrollOffset.y < MaxPosition.y - WorkRect.w) {
|
||||
ScrollOffset.y = MaxPosition.y - WorkRect.w;
|
||||
}
|
||||
}
|
||||
if (ScrollOffset.y < 0) {
|
||||
ScrollOffset.y += 1.5f;
|
||||
if (ScrollOffset.y > 0) {
|
||||
ScrollOffset.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PD_API void Layout::Update() {
|
||||
if (Size == fvec2(0.f)) {
|
||||
Size = fvec2(MaxPosition) + IO.MenuPadding * 2;
|
||||
@@ -192,7 +155,6 @@ PD_API void Layout::Update() {
|
||||
Objects.clear();
|
||||
WorkRect = fvec4(fvec2(WorkRect.x, WorkRect.y), Size - IO.MenuPadding);
|
||||
CursorInit();
|
||||
HandleScrolling();
|
||||
}
|
||||
|
||||
/** SECTION CONTAINERS (STOLEN FROM FORMER MENU) */
|
||||
|
||||
+47
-15
@@ -104,7 +104,6 @@ PD_API void Menu::SeparatorText(const std::string& label) {
|
||||
DynObj* r = pIO.DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([=, this](UI7::IO* io, Li::Drawlist* l,
|
||||
UI7::Container* self) {
|
||||
l->SetFont(self->GetFont());
|
||||
fvec2 size = self->GetSize();
|
||||
fvec2 tdim = io->Font->GetTextBounds(label.c_str(), io->FontScale);
|
||||
fvec2 pos = self->FinalPos();
|
||||
@@ -148,6 +147,45 @@ PD_API void Menu::HandleFocus() {
|
||||
}
|
||||
}
|
||||
|
||||
/** Todo: (func name is self describing) */
|
||||
PD_API void Menu::HandleScrolling() {
|
||||
if (Flags & UI7MenuFlags_VtScrolling) {
|
||||
bool allowed =
|
||||
pLayout.MaxPosition.y > (pLayout.WorkRect.w - pLayout.WorkRect.y);
|
||||
if (allowed) {
|
||||
if (PD::Hid::IsEvent(Hid::Event::Down, PD::Hid::Gamepad::Touch)) {
|
||||
pLayout.ScrollStart = pLayout.ScrollOffset;
|
||||
}
|
||||
if (pIO.InputHandler.DragObject(
|
||||
"sbg" + pID.GetName(),
|
||||
fvec4(pLayout.Pos, fvec2(0.f)) + pLayout.WorkRect)) {
|
||||
if (pIO.InputHandler.DragReleasedAW) {
|
||||
} else {
|
||||
pLayout.ScrollOffset.y = std::clamp(
|
||||
pLayout.ScrollStart.y + pIO.InputHandler.DragSourcePos.y -
|
||||
pIO.InputHandler.DragPosition.y,
|
||||
-20.f, pLayout.MaxPosition.y - 220);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pLayout.ScrollOffset.y = 0.f;
|
||||
}
|
||||
|
||||
if (pLayout.ScrollOffset.y > pLayout.MaxPosition.y - 240) {
|
||||
pLayout.ScrollOffset.y -= 1.5;
|
||||
if (pLayout.ScrollOffset.y < pLayout.MaxPosition.y - 240) {
|
||||
pLayout.ScrollOffset.y = pLayout.MaxPosition.y - 240;
|
||||
}
|
||||
}
|
||||
if (pLayout.ScrollOffset.y < 0) {
|
||||
pLayout.ScrollOffset.y += 1.5;
|
||||
if (pLayout.ScrollOffset.y > 0) {
|
||||
pLayout.ScrollOffset.y = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PD_API void Menu::HandleTitlebarActions() {
|
||||
// Collapse
|
||||
if (!(Flags & UI7MenuFlags_NoCollapse)) {
|
||||
@@ -219,12 +257,11 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
if (!(Flags & UI7MenuFlags_NoResize)) {
|
||||
DynObj* r = pIO.DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([](IO* io, Li::Drawlist* l, UI7::Container* self) {
|
||||
l->SetLayer(1);
|
||||
// //l->Layer(1);
|
||||
l->PathAdd(self->FinalPos() + self->GetSize() - fvec2(0, 20));
|
||||
l->PathAdd(self->FinalPos() + self->GetSize());
|
||||
l->PathAdd(self->FinalPos() + self->GetSize() - fvec2(20, 0));
|
||||
l->PathFill(io->Theme.Get(UI7Color_Button));
|
||||
l->SetLayer(0);
|
||||
});
|
||||
r->SetSize(
|
||||
fvec2(pLayout.GetSize().x, pLayout.GetSize().y - TitleBarHeight));
|
||||
@@ -236,7 +273,7 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
/** Background */
|
||||
DynObj* r = pIO.DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([](IO* io, Li::Drawlist* l, UI7::Container* self) {
|
||||
l->SetLayer(0);
|
||||
// l->Layer(0);
|
||||
l->PathRectEx(self->FinalPos(), self->FinalPos() + self->GetSize(), 10.f,
|
||||
LiPathRectFlags_KeepTop | LiPathRectFlags_KeepBot);
|
||||
l->PathFill(io->Theme.Get(UI7Color_Background));
|
||||
@@ -254,12 +291,11 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
DynObj* r = pIO.DynObjPool.Allocate();
|
||||
*r = UI7::DynObj(
|
||||
[=, this](UI7::IO* io, Li::Drawlist* l, UI7::Container* self) {
|
||||
l->SetFont(self->GetFont());
|
||||
l->SetLayer(20);
|
||||
// l->Layer(20);
|
||||
/** Header Bar */
|
||||
l->DrawRectFilled(self->FinalPos(), self->GetSize(),
|
||||
io->Theme.Get(UI7Color_Header));
|
||||
l->SetLayer(21);
|
||||
// l->Layer(21);
|
||||
/** Inline if statement to shift the Text if collapse sym is shown */
|
||||
/** What the hell is this code btw (didn't found a better way) */
|
||||
l->DrawText(self->FinalPos() +
|
||||
@@ -269,7 +305,6 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
(io->FramePadding.x * 2)),
|
||||
2),
|
||||
pID.GetName().c_str(), io->Theme.Get(UI7Color_Text));
|
||||
l->SetLayer(0);
|
||||
});
|
||||
r->SetSize(fvec2(pLayout.GetSize().x, TitleBarHeight));
|
||||
r->SetPos(0);
|
||||
@@ -281,7 +316,7 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
*r = UI7::DynObj([=, this](UI7::IO* io, Li::Drawlist* l,
|
||||
UI7::Container* self) {
|
||||
/** This sym actually requires layer 21 (i dont know why) */
|
||||
l->SetLayer(21);
|
||||
// l->Layer(21);
|
||||
/**
|
||||
* Symbol (Position Swapping set by pIsOpen ? openpos : closepos;)
|
||||
*/
|
||||
@@ -292,7 +327,6 @@ PD_API void Menu::DrawBaseLayout() {
|
||||
self->FinalPos() +
|
||||
fvec2(pIsOpen ? self->GetSize().x * 0.5 : 0, self->GetSize().y),
|
||||
io->Theme.Get(UI7Color_FrameBackground));
|
||||
l->SetLayer(0);
|
||||
});
|
||||
r->SetSize(TitleBarHeight - pIO.FramePadding.y * 2);
|
||||
r->SetPos(pIO.FramePadding);
|
||||
@@ -324,10 +358,6 @@ PD_API void Menu::Update() {
|
||||
if (pLayout.Size == fvec2(0.f) || Flags & UI7MenuFlags_AlwaysAutoSize) {
|
||||
pLayout.Size = fvec2(pLayout.MaxPosition) + pIO.MenuPadding * 2;
|
||||
}
|
||||
if (Flags & UI7MenuFlags_VtScrolling)
|
||||
pLayout.Flags |= UI7LayoutFlags_VtScrolling;
|
||||
if (Flags & UI7MenuFlags_HzScrolling)
|
||||
pLayout.Flags |= UI7LayoutFlags_HzScrolling;
|
||||
if (!(Flags & UI7MenuFlags_NoTitlebar)) {
|
||||
TitleBarHeight = pIO.FontScale * pIO.Font->PixelHeight + pIO.MenuPadding.y;
|
||||
pLayout.WorkRect.y = 5.f + TitleBarHeight;
|
||||
@@ -338,6 +368,9 @@ PD_API void Menu::Update() {
|
||||
}
|
||||
DrawBaseLayout();
|
||||
pLayout.Update();
|
||||
if (Flags & UI7MenuFlags_VtScrolling || Flags & UI7MenuFlags_HzScrolling) {
|
||||
HandleScrolling();
|
||||
}
|
||||
}
|
||||
|
||||
PD_API bool Menu::BeginTreeNode(const ID& id) {
|
||||
@@ -358,7 +391,6 @@ PD_API bool Menu::BeginTreeNode(const ID& id) {
|
||||
// Object
|
||||
DynObj* r = pIO.DynObjPool.Allocate();
|
||||
*r = UI7::DynObj([=, this](IO* io, Li::Drawlist* l, Container* self) {
|
||||
l->SetFont(self->GetFont());
|
||||
fvec2 ts = self->FinalPos() + fvec2(0, 7);
|
||||
fvec2 pl[2] = {fvec2(10, 5), fvec2(0, 10)};
|
||||
if (n->second) {
|
||||
|
||||
@@ -143,11 +143,8 @@ PD_API void Context::Update() {
|
||||
pMenus[it]->Update(); /** Render */
|
||||
this->pIO.InputHandler.CurrentMenu = 0;
|
||||
}
|
||||
int base_layer = 0;
|
||||
for (int i = (int)FinalList.size() - 1; i >= 0; i--) {
|
||||
pIO.FDL.SetLayer(base_layer);
|
||||
pIO.FDL.Merge(pMenus[FinalList[i]]->pLayout.GetDrawList());
|
||||
base_layer += 100;
|
||||
}
|
||||
pCurrentMenus.clear();
|
||||
pIO.Update();
|
||||
|
||||
@@ -304,7 +304,6 @@ int main(int argc, char** argv) {
|
||||
ui7.EndMenu();
|
||||
}
|
||||
if (auto m = ui7.BeginMenu("LI DBG INFO")) {
|
||||
m->PushFont(&debug_font);
|
||||
m->Label("Gfx Driver: {}", PD::Gfx::GetDriverName());
|
||||
m->Separator();
|
||||
m->Label("LI Draw Comamnds: {}", PD::Gfx::GetNumCommands());
|
||||
@@ -312,7 +311,6 @@ int main(int argc, char** argv) {
|
||||
m->Label("GFX Vertices: {}", PD::Gfx::GetNumVertices());
|
||||
m->Label("GFX Triangles: {}", PD::Gfx::GetNumVertices() / 3);
|
||||
m->Label("GFX Indices: {}", PD::Gfx::GetNumIndices());
|
||||
m->PopFont();
|
||||
ui7.EndMenu();
|
||||
}
|
||||
ui7.MetricsMenu();
|
||||
|
||||
Reference in New Issue
Block a user