Skip to content

Commit

Permalink
Added Gradient to AssetBrowser Entries
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelsakharov committed Mar 22, 2024
1 parent 8685940 commit 549a6e7
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions Prowl.Editor/EditorWindows/AssetBrowserWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ private void RenderBody()
{
const float padding = 8;
float contentWidth = ImGui.GetContentRegionAvail().X;
var start = ImGui.GetCursorScreenPos();
var size = ImGui.GetContentRegionAvail();

int rowCount = Math.Max((int)(contentWidth / (ThumbnailSize + padding)), 1);
float itemSize = ThumbnailSize + padding;
Expand All @@ -200,6 +202,12 @@ private void RenderBody()
RenderEntry(rowCount, itemSize, ref curPos, ref i, file);
}
}

// Background rect for entire body
var drawList = ImGui.GetWindowDrawList();
var min = start;
var max = start + size;
drawList.AddRectFilled(min, max, ImGui.GetColorU32(ImGuiCol.FrameBg), 0f);
}

private void RenderEntry(int rowCount, float itemSize, ref System.Numerics.Vector2 curPos, ref int i, FileSystemInfo entry)
Expand Down Expand Up @@ -244,7 +252,26 @@ private void RenderFileSystemEntry(FileSystemInfo entry)

ImGui.Selectable("##" + entry.FullName, isSelected, ImGuiSelectableFlags.AllowOverlap, System.Numerics.Vector2.One * thumbnailSize);

GUIHelper.ItemRectFilled(0.5f, 0.5f, 0.5f, 0.1f);
var gradientStart = ImGui.GetColorU32(new System.Numerics.Vector4(0.2f, 0.2f, 0.2f, 0.8f));
var gradientEnd = ImGui.GetColorU32(new System.Numerics.Vector4(0.1f, 0.1f, 0.1f, 0.8f));
if (entry is FileInfo f)
{
gradientStart = AssetsWindow.GetFileColor(f.Extension.ToLower().Trim(), 0.2f);
gradientEnd = AssetsWindow.GetFileColor(f.Extension.ToLower().Trim(), 0.8f);
}

// Draw a gradient background
var drawList = ImGui.GetWindowDrawList();
var min = ImGui.GetItemRectMin();
var max = ImGui.GetItemRectMax();
//drawList.AddRectFilledMultiColor(min, max, ImGui.GetColorU32(gradientStart), ImGui.GetColorU32(gradientStart), ImGui.GetColorU32(gradientEnd), ImGui.GetColorU32(gradientEnd));
//drawList.AddRectFilledMultiColor
//GUIHelper.ItemRectFilled(gradientStart, 0, 8f);

int vertStartIdx = drawList.VtxBuffer.Size;
drawList.AddRectFilled(min, max, ImGui.GetColorU32(gradientStart), 8f);
int vertEndIdx = drawList.VtxBuffer.Size;
ImGui.ShadeVertsLinearColorGradientKeepAlpha(drawList, vertStartIdx, vertEndIdx, min, new System.Numerics.Vector2(min.X, max.Y), gradientStart, gradientEnd);

if (ImGui.IsItemHovered())
{
Expand Down Expand Up @@ -273,10 +300,8 @@ private void RenderFileSystemEntry(FileSystemInfo entry)
ImGui.PushID(entry.FullName);
if (entry is FileInfo file)
{
ImDrawListPtr drawList = ImGui.GetWindowDrawList();
var lineColor = AssetsWindow.GetFileColor(file.Extension.ToLower().Trim());
var pos = ImGui.GetCursorScreenPos();
drawList.AddLine(new(0, pos.Y), new(pos.X + thumbnailSize, pos.Y + 1f), lineColor, 3f);
drawList.AddLine(new(0, pos.Y), new(pos.X + thumbnailSize, pos.Y + 1f), gradientStart, 3f);

if (RenamingEntry == entry.FullName)
{
Expand Down

0 comments on commit 549a6e7

Please sign in to comment.