# 0.3.1-1

- Add Deltatime usage for Overscroll as well as a config value for ids multiplier
- Add Function to Layout to remove all ID Objects
- Add step and precision to DragData as well as setting min and max to their type limits
- Use the Address for now for the id of the DragData (cause with tree nodes opened backwars all DragData will share the same data reference)
- Add a fix to MaxPosition in Layout to be actually the max Position on X axis
This commit is contained in:
2025-03-16 20:03:08 +01:00
parent 35272687f6
commit 6738fda55c
10 changed files with 53 additions and 22 deletions

View File

@ -38,17 +38,26 @@ class DragData : public Container {
/**
* Constructor
* @param label Label of the Button
* @param pos Base Position
* @param lr Reference to the Renderer
* @param data Data reference (Supported types can be seen in dragdata.cpp)
* @param num_elms Number of Array elements (for exaple with use ofvec4)
* @param io IO Reference
* @param min minimum number using Minimum limit
* @param max Maximum number set by max limit by default
* @param step To set the modifier for drag movement
* @param precision for float and double to set precision
*/
DragData(const std::string& label, T* data, size_t num_elms, UI7::IO::Ref io,
T min = 0, T max = 100) {
T min = std::numeric_limits<T>::min(),
T max = std::numeric_limits<T>::max(), T step = 1,
int precision = 1) {
PD::Assert(data != nullptr, "Input Data Address is null!");
this->label = label;
this->data = data;
this->elm_count = num_elms;
this->min = min;
this->max = max;
this->step = step;
this->precision = precision;
this->tdim = io->Ren->GetTextDimensions(label);
}
~DragData() = default;
@ -74,6 +83,8 @@ class DragData : public Container {
size_t elm_count = 0;
T min;
T max;
T step;
int precision = 1;
};
} // namespace UI7
} // namespace PD

View File

@ -71,7 +71,8 @@ class IO : public SmartCtor<IO> {
vec2 FramePadding = 5.f;
vec2 ItemSpace = vec2(5.f, 2.f);
vec2 MinSliderDragSize = 10.f; // Min height (Vt) and Min Width (Hz)
u64 DoubleClickTime = 500; // Milliseconds
float OverScrollMod = 0.15f;
u64 DoubleClickTime = 500; // Milliseconds
std::vector<std::pair<UI7::ID, DrawList::Ref>> DrawListRegestry;
DrawList::Ref Back;
DrawList::Ref Front;

View File

@ -63,6 +63,7 @@ class Layout : public PD::SmartCtor<Layout> {
void AddObject(Container::Ref obj);
Container::Ref FindObject(u32 id);
void ClearIDObjects() { IDObjects.clear(); }
vec2 AlignPosition(vec2 pos, vec2 size, vec4 area, UI7Align alignment);

View File

@ -92,11 +92,14 @@ class Menu : public SmartCtor<Menu> {
void DragFloat(const std::string& label, float* data, size_t num_elms);
template <typename T>
void DragData(const std::string& label, T* data, size_t num_elms = 1,
T min = 0, T max = 100) {
u32 id = Strings::FastHash("dfl" + label + std::to_string(count_btn++));
T min = std::numeric_limits<T>::min(),
T max = std::numeric_limits<T>::max(), T step = 1,
int precision = 1) {
u32 id = Strings::FastHash("drd" + label + std::to_string((u32)data));
Container::Ref r = Layout->FindObject(id);
if (!r) {
r = PD::New<UI7::DragData<T>>(label, data, num_elms, io, min, max);
r = PD::New<UI7::DragData<T>>(label, data, num_elms, io, min, max, step,
precision);
r->SetID(id);
}
Layout->AddObject(r);

View File

@ -37,7 +37,7 @@ SOFTWARE.
* Major Minor Patch Build
* 0x01010000 -> 1.1.0-0
*/
#define UI7_VERSION 0x00030100
#define UI7_VERSION 0x00030101
namespace PD {
namespace UI7 {