Current Working State

This commit is contained in:
2024-10-14 20:42:05 -04:00
parent 53a1d7bd9c
commit 63ff2e6ef2
9 changed files with 60 additions and 15 deletions

View File

@@ -52,12 +52,9 @@ namespace JUI
Color4 BGColor() const;
Color4 GetBorderColor() const;
float GetBorderWidth() const;
BorderMode GetBorderMode() const;
enum BorderMode BorderMode() const;
void SetBorderMode(const BorderMode& mode)
{
border_mode = mode;
}
void BorderMode(const enum BorderMode& mode);
bool GetClipsDescendants() const;
@@ -66,7 +63,7 @@ namespace JUI
void Draw(const Vector2& pos, const Vector2& size);
protected:
BorderMode border_mode = BorderMode::Middle;
enum BorderMode border_mode = BorderMode::Middle;
bool mouse_press_debounce;
bool mouse_inside_debounce;
float border_width = 1.f;

View File

@@ -217,6 +217,8 @@ namespace JUI
void AnchorPoint(const Vector2 &point);
[[nodiscard]] virtual AABB2D GetActualRenderBounds() const;
public:
/// Renders the widget to the current OpenGL Context using JGL.
/// The user should call this on their Scene instances only. JUI will handle the rest.

View File

@@ -13,6 +13,7 @@
#include <JUI/Base/Widget.hpp>
#include <JUI/Base/RectBase.hpp>
#include <J3ML/Geometry/AABB2D.hpp>
namespace JUI {
@@ -28,6 +29,10 @@ namespace JUI {
~Rect() override {}
bool IsMouseInside() const;
AABB2D GetActualRenderBounds() const override;
public:
void Draw() override;
void Update(float delta) override;

View File

@@ -34,6 +34,6 @@ namespace JUI
float minimum;
float maximum;
float interval;
bool
};
}

View File

@@ -182,7 +182,7 @@ JUI::Scene* CreateScene() {
root->SetViewportSize(800, 600);
Slider* slider = new JUI::Slider(root);
//Slider* slider = new JUI::Slider(root);
return root;

View File

@@ -30,19 +30,39 @@ namespace JUI {
void RectBase::Draw(const Vector2 &abs_pos, const Vector2 &abs_size) {
// Background rect
J2D::Begin();
J2D::FillRect(bg_color, abs_pos, abs_size);
//if (corner_rounding_radius > 0)
// J2D::FillRoundedRect(bg_color, abs_pos, abs_size, corner_rounding_radius);
//else
J2D::FillRect(bg_color, abs_pos, abs_size);
// Outline rect
Vector2 border_offset = {border_width/2, border_width/2};
Vector2 border_offset = {0, 0};
if (border_mode == BorderMode::Inset)
border_offset = {0, 0};
if (border_mode == BorderMode::Middle)
border_offset = {border_width/2, border_width/2};
if (border_mode == BorderMode::Outline)
border_offset = {border_width, border_width};
// TODO: implement border_mode behavior when rendering here.
if (corner_rounding_radius >= 0)
//if (corner_rounding_radius > 0)
// J2D::OutlineRoundedRect(border_color, abs_pos - border_offset, abs_size + (border_offset*2), corner_rounding_radius, border_width);
//else
J2D::OutlineRect(border_color, abs_pos - border_offset, abs_size + (border_offset*2), border_width);
J2D::End();
}
void RectBase::BorderMode(const enum BorderMode &mode) {
border_mode = mode;
}
BorderMode RectBase::BorderMode() const { return border_mode; }
}

View File

@@ -1,6 +1,6 @@
#include "JUI/Base/Widget.hpp"
#include <jlog/Logger.hpp>
#include <J3ML/Geometry/AABB2D.hpp>
namespace JUI {
@@ -334,4 +334,8 @@ namespace JUI {
void Widget::ZIndex(int new_zindex) { zindex = new_zindex; }
AABB2D Widget::GetActualRenderBounds() const {
return {GetAbsolutePosition(), GetAbsoluteSize()};
}
}

View File

@@ -82,6 +82,22 @@ namespace JUI {
return false;
}
AABB2D Rect::GetActualRenderBounds() const {
Vector2 border = {border_width, border_width};
if (border_mode == BorderMode::Inset)
return { GetAbsolutePosition(), GetAbsoluteSize()};
if (border_mode == BorderMode::Outline)
return {GetAbsolutePosition() - border, GetAbsoluteSize() + border};
if (border_mode == BorderMode::Middle)
return { GetAbsolutePosition() - (border/2), GetAbsoluteSize() + (border/2)};
return { GetAbsolutePosition(), GetAbsoluteSize()};
}
}

View File

@@ -12,7 +12,7 @@ namespace JUI
this->BGColor({0,0,0,0});
this->BorderColor({92,92,192});
this->SetBorderWidth(2);
this->SetBorderMode(BorderMode::Outline);
this->BorderMode(BorderMode::Outline);
//this->OnHoverEvent += [&] (Vector2 MousePos) {
@@ -44,10 +44,11 @@ namespace JUI
Viewport = new Rect(this);
Viewport->Name("Viewport");
Viewport->BGColor({64,64,64, 255});
Viewport->Size({0, -20, 1, 1});
Viewport->Position({0, 20, 0, 0});
// TODO: Viewport->AnchorPoint({0.f, 0.f});
//Viewport->BorderColor({128, 128, 128, 255});
Viewport->BorderColor({128, 128, 128, 255});
//Viewport->SetBorderWidth(1);
//Viewport->Padding(1_px);
@@ -57,7 +58,7 @@ namespace JUI
Topbar->Position({0_px, 0_px});
Topbar->Size({100_percent, 20_px});
Topbar->BGColor({92,92,192, 255});
//Topbar->BorderColor({128, 128, 128, 255});
Topbar->BorderColor({128, 128, 128, 0});
//Topbar->SetBorderWidth(1);
TitleLabel = new Text(Topbar);