did a few more tweaks to teh list

This commit is contained in:
PS 2020-11-15 16:36:11 -08:00
parent 118b734d6c
commit 91b2b822f9
2 changed files with 14 additions and 69 deletions

View File

@ -152,14 +152,11 @@ Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* Ren
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawHorizontalFill) || if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawHorizontalFill) ||
ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawVerticalFill)) ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawVerticalFill))
{ {
v4 Color = State->Interface.Style.ButtonColor_Active; v4 Color = State->Interface.Style.ButtonColor_Selected;
if (ui_WidgetIdsEqual(Widget.Id, State->Interface.HotWidget)) if (ui_WidgetIdsEqual(Widget.Id, State->Interface.HotWidget) ||
ui_WidgetIdsEqual(Widget.Id, State->Interface.ActiveWidget))
{ {
Color = State->Interface.Style.ButtonColor_Selected; Color = WhiteV4;
}
if (ui_WidgetIdsEqual(Widget.Id, State->Interface.ActiveWidget))
{
Color = State->Interface.Style.ButtonColor_Selected;
} }
rect2 FillBounds = {}; rect2 FillBounds = {};
@ -205,7 +202,7 @@ Editor_DrawWidget(app_state* State, context* Context, render_command_buffer* Ren
FillBounds.Max.y = FillToPoint; FillBounds.Max.y = FillToPoint;
} }
} }
PushRenderQuad2D(RenderBuffer, FillBounds.Min, FillBounds.Max, Color); PushRenderQuad2DClipped(RenderBuffer, FillBounds, WidgetParentUnion, Color);
if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0) if (ui_WidgetIsFlagSet(Widget, UIWidgetFlag_DrawString) && Widget.String.Length > 0)
{ {
@ -260,18 +257,12 @@ TestRender(app_state* State, context* Context, render_command_buffer* RenderBuff
ui_Label(&State->Interface, MakeString("Spacer")); ui_Label(&State->Interface, MakeString("Spacer"));
ui_Label(&State->Interface, MakeString("Spacer")); ui_Label(&State->Interface, MakeString("Spacer"));
ui_BeginList(&State->Interface, MakeString("TestList"), 5, 9); ui_BeginList(&State->Interface, MakeString("TestList"), 5, 4);
{ {
ui_Button(&State->Interface, MakeString("B")); ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B")); ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B")); ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B")); ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B"));
ui_Button(&State->Interface, MakeString("B"));
} }
ui_EndList(&State->Interface); ui_EndList(&State->Interface);
//ui_Button(&State->Interface, MakeString("B")); //ui_Button(&State->Interface, MakeString("B"));

View File

@ -58,19 +58,11 @@ DrawCharacter_ (render_quad_batch_constructor* BatchConstructor, r32 MinX, r32 M
s32 AlignedMaxX = AlignedMinX + (CodepointInfo.Width); s32 AlignedMaxX = AlignedMinX + (CodepointInfo.Width);
s32 AlignedMaxY = AlignedMinY + (CodepointInfo.Height); s32 AlignedMaxY = AlignedMinY + (CodepointInfo.Height);
#if 1
PushQuad2DOnBatch(BatchConstructor, PushQuad2DOnBatch(BatchConstructor,
Rect2BottomLeft(Bounds), Rect2BottomRight(Bounds), Rect2BottomLeft(Bounds), Rect2BottomRight(Bounds),
Rect2TopRight(Bounds), Rect2TopLeft(Bounds), Rect2TopRight(Bounds), Rect2TopLeft(Bounds),
UVBounds.Min, UVBounds.Max, UVBounds.Min, UVBounds.Max,
Color); Color);
#else
PushQuad2DOnBatch(BatchConstructor,
v2{(r32)AlignedMinX, (r32)AlignedMinY}, v2{(r32)AlignedMaxX, (r32)AlignedMinY},
v2{(r32)AlignedMaxX, (r32)AlignedMaxY}, v2{(r32)AlignedMinX, (r32)AlignedMaxY},
CodepointInfo.UVMin, CodepointInfo.UVMax,
Color);
#endif
} }
internal v2 internal v2
@ -1170,6 +1162,11 @@ ui_Toggle(ui_interface* Interface, gs_string Text, bool Value)
internal void internal void
ui_BeginList(ui_interface* Interface, gs_string Text, u32 ViewportRows, u32 ElementCount) ui_BeginList(ui_interface* Interface, gs_string Text, u32 ViewportRows, u32 ElementCount)
{ {
if (ElementCount < ViewportRows)
{
ViewportRows = ElementCount;
}
ui_column_spec ColumnRules[] = { ui_column_spec ColumnRules[] = {
{ UIColumnSize_Fixed, 32 }, { UIColumnSize_Fixed, 32 },
{ UIColumnSize_Fill, 0 }, { UIColumnSize_Fill, 0 },
@ -1202,6 +1199,7 @@ ui_BeginList(ui_interface* Interface, gs_string Text, u32 ViewportRows, u32 Elem
// Create the scroll bar // Create the scroll bar
// //
// TODO(pjs): Maybe make this a vertical slider widget?
ui_widget* SliderRegion = ui_CreateWidget(Interface, MakeString("Slider")); ui_widget* SliderRegion = ui_CreateWidget(Interface, MakeString("Slider"));
ui_WidgetSetFlag(SliderRegion, UIWidgetFlag_DrawOutline); ui_WidgetSetFlag(SliderRegion, UIWidgetFlag_DrawOutline);
@ -1230,9 +1228,10 @@ ui_BeginList(ui_interface* Interface, gs_string Text, u32 ViewportRows, u32 Elem
ViewportLayout->Bounds.Min.y = SliderBounds.Min.y; ViewportLayout->Bounds.Min.y = SliderBounds.Min.y;
ViewportLayout->Bounds.Max.y = SliderBounds.Max.y; ViewportLayout->Bounds.Max.y = SliderBounds.Max.y;
s32 ScrollableElements = Max(0, ElementCount - ViewportRows);
ui_widget_retained_state* ViewportState = ui_GetOrCreateRetainedState(Interface, ViewportLayout); ui_widget_retained_state* ViewportState = ui_GetOrCreateRetainedState(Interface, ViewportLayout);
ViewportState->ChildrenDrawOffset.x = 0; ViewportState->ChildrenDrawOffset.x = 0;
ViewportState->ChildrenDrawOffset.y = ((1.0f - State->InitialValueR32) * (r32)(ElementCount - ViewportRows)) * ViewportLayout->RowHeight; ViewportState->ChildrenDrawOffset.y = ((1.0f - State->InitialValueR32) * (r32)(ScrollableElements)) * ViewportLayout->RowHeight;
} }
internal void internal void
@ -1246,50 +1245,5 @@ ui_EndList(ui_interface* Interface)
} }
//
// OLD
//
internal r32
EvaluateColorChannelSlider (render_command_buffer* RenderBuffer, v4 ChannelMask, v2 Min, v2 Max, r32 Current, mouse_state Mouse)
{
r32 Result = Current;
// TODO(Peter): Can this come from outside the function? Would rather pass rect around than min/max
rect2 Rect = rect2{ Min, Max };
render_quad_batch_constructor Batch = PushRenderQuad2DBatch(RenderBuffer, 2);
v4 LeftColor = ChannelMask * 0;
LeftColor.a = 1.f;
v4 RightColor = ChannelMask;
PushQuad2DOnBatch(&Batch,
RectBottomLeft(Rect), RectBottomRight(Rect),
RectTopRight(Rect), RectTopLeft(Rect),
v2{0, 0}, v2{1, 0}, v2{1, 1}, v2{0, 1},
LeftColor, RightColor, RightColor, LeftColor);
if (MouseButtonTransitionedDown(Mouse.LeftButtonState))
{
if (PointIsInRect(Rect, Mouse.DownPos))
{
Result = ((r32)Mouse.Pos.x - Min.x) / (Max.x - Min.x);
Result = Clamp01(Result);
}
}
r32 DragBarWidth = 8;
v2 DragBarMin = v2{
LerpR32(Result, Min.x, Max.x) - (DragBarWidth / 2),
Min.y - 2
};
v2 DragBarMax = DragBarMin + v2{DragBarWidth, (Max.y - Min.y) + 4};
PushQuad2DOnBatch(&Batch, DragBarMin, DragBarMax, v4{.3f, .3f, .3f, 1.f});
return Result;
}
#define INTERFACE_H #define INTERFACE_H
#endif // INTERFACE_H #endif // INTERFACE_H