Current Working State
This commit is contained in:
@@ -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;
|
||||
|
@@ -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.
|
||||
|
@@ -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;
|
||||
|
@@ -34,6 +34,6 @@ namespace JUI
|
||||
float minimum;
|
||||
float maximum;
|
||||
float interval;
|
||||
bool
|
||||
|
||||
};
|
||||
}
|
||||
|
2
main.cpp
2
main.cpp
@@ -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;
|
||||
|
@@ -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; }
|
||||
|
||||
|
||||
}
|
@@ -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()};
|
||||
}
|
||||
|
||||
}
|
@@ -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()};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user