# 0.3.0
- Fix minor issues - Add Custom UV Support to Drawlist and Menu Image - Add DoubleClick to IO Input API - Add Flashbang Theme (Not completly done) - Fix Menu glitch when scrolling was possible when not allowed
This commit is contained in:
		@@ -52,7 +52,7 @@ execute_process(
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set Project
 | 
					# Set Project
 | 
				
			||||||
project(palladium LANGUAGES C CXX VERSION 0.2.9)
 | 
					project(palladium LANGUAGES C CXX VERSION 0.3.0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option(PD_BUILD_TESTS "Sets if TestApp and TestBench get build" OFF)
 | 
					option(PD_BUILD_TESTS "Sets if TestApp and TestBench get build" OFF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,9 +37,10 @@ class Image : public Container {
 | 
				
			|||||||
   * @param img Image Texture Reference
 | 
					   * @param img Image Texture Reference
 | 
				
			||||||
   * @param size Custom Size of the Image
 | 
					   * @param size Custom Size of the Image
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  Image(Texture::Ref img, vec2 size = 0.f) {
 | 
					  Image(Texture::Ref img, vec2 size = 0.f, LI::Rect uv = vec4(0.f)) {
 | 
				
			||||||
    this->img = img;
 | 
					    this->img = img;
 | 
				
			||||||
    this->newsize = size;
 | 
					    this->newsize = size;
 | 
				
			||||||
 | 
					    this->cuv = uv;
 | 
				
			||||||
    if (size.x() != 0 || size.y() != 0) {
 | 
					    if (size.x() != 0 || size.y() != 0) {
 | 
				
			||||||
      this->SetSize(size);
 | 
					      this->SetSize(size);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@@ -57,6 +58,7 @@ class Image : public Container {
 | 
				
			|||||||
 private:
 | 
					 private:
 | 
				
			||||||
  Texture::Ref img;    ///< Texture reference to the Image
 | 
					  Texture::Ref img;    ///< Texture reference to the Image
 | 
				
			||||||
  vec2 newsize = 0.f;  ///< New Size
 | 
					  vec2 newsize = 0.f;  ///< New Size
 | 
				
			||||||
 | 
					  LI::Rect cuv;        ///< Custom UV
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}  // namespace UI7
 | 
					}  // namespace UI7
 | 
				
			||||||
}  // namespace PD
 | 
					}  // namespace PD
 | 
				
			||||||
@@ -69,8 +69,10 @@ class DrawList : public SmartCtor<DrawList> {
 | 
				
			|||||||
   * @param pos Position
 | 
					   * @param pos Position
 | 
				
			||||||
   * @param img Image Texture Reference
 | 
					   * @param img Image Texture Reference
 | 
				
			||||||
   * @param size Optional Size of the Image
 | 
					   * @param size Optional Size of the Image
 | 
				
			||||||
 | 
					   * @param uv Custom UV coords
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  void AddImage(vec2 pos, Texture::Ref img, vec2 size = 0.f);
 | 
					  void AddImage(vec2 pos, Texture::Ref img, vec2 size = 0.f,
 | 
				
			||||||
 | 
					                LI::Rect uv = vec4(0.f));
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Render a Line from Position A to Position B
 | 
					   * Render a Line from Position A to Position B
 | 
				
			||||||
   * @param a Pos a
 | 
					   * @param a Pos a
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,10 @@ class ID {
 | 
				
			|||||||
  ~ID() = default;
 | 
					  ~ID() = default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** Get The ID Initial Name */
 | 
					  /** Get The ID Initial Name */
 | 
				
			||||||
  std::string GetName() const { return name; }
 | 
					  const std::string& GetName() const { return name; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /** Getter for the raw 32bit int id */
 | 
				
			||||||
 | 
					  const u32& RawID() const { return id; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** Return the ID when casting to u32 */
 | 
					  /** Return the ID when casting to u32 */
 | 
				
			||||||
  operator u32() const { return id; }
 | 
					  operator u32() const { return id; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,19 +69,13 @@ class IO : public SmartCtor<IO> {
 | 
				
			|||||||
  vec2 MenuPadding = 5.f;
 | 
					  vec2 MenuPadding = 5.f;
 | 
				
			||||||
  vec2 FramePadding = 5.f;
 | 
					  vec2 FramePadding = 5.f;
 | 
				
			||||||
  vec2 ItemSpace = vec2(5.f, 2.f);
 | 
					  vec2 ItemSpace = vec2(5.f, 2.f);
 | 
				
			||||||
 | 
					  u64 DoubleClickTime = 500;  // Milliseconds
 | 
				
			||||||
  std::vector<std::pair<UI7::ID, DrawList::Ref>> DrawListRegestry;
 | 
					  std::vector<std::pair<UI7::ID, DrawList::Ref>> DrawListRegestry;
 | 
				
			||||||
  DrawList::Ref Back;
 | 
					  DrawList::Ref Back;
 | 
				
			||||||
  DrawList::Ref Front;
 | 
					  DrawList::Ref Front;
 | 
				
			||||||
  u32 NumVertices = 0;  ///< Debug Vertices Num
 | 
					  u32 NumVertices = 0;  ///< Debug Vertices Num
 | 
				
			||||||
  u32 NumIndices = 0;   ///< Debug Indices Num
 | 
					  u32 NumIndices = 0;   ///< Debug Indices Num
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Layer Rules
 | 
					 | 
				
			||||||
  int ContextBackLayer = 10;
 | 
					 | 
				
			||||||
  int MenuBackLayer = 20;
 | 
					 | 
				
			||||||
  int MenuMainLayer = 30;
 | 
					 | 
				
			||||||
  int MenuFrontLayer = 40;
 | 
					 | 
				
			||||||
  int ContextFrontLayer = 50;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // DrawListApi
 | 
					  // DrawListApi
 | 
				
			||||||
  void RegisterDrawList(const UI7::ID& id, DrawList::Ref v) {
 | 
					  void RegisterDrawList(const UI7::ID& id, DrawList::Ref v) {
 | 
				
			||||||
    DrawListRegestry.push_back(std::make_pair(id, v));
 | 
					    DrawListRegestry.push_back(std::make_pair(id, v));
 | 
				
			||||||
@@ -97,8 +91,10 @@ class IO : public SmartCtor<IO> {
 | 
				
			|||||||
  vec2 DragLastPosition = 0;
 | 
					  vec2 DragLastPosition = 0;
 | 
				
			||||||
  vec4 DragDestination = 0;
 | 
					  vec4 DragDestination = 0;
 | 
				
			||||||
  Timer::Ref DragTime;
 | 
					  Timer::Ref DragTime;
 | 
				
			||||||
  bool DragReleased = false;    ///< Drag Releaded in Box
 | 
					  u64 DragLastReleased = 0;
 | 
				
			||||||
  bool DragReleasedAW = false;  ///< Drag Released Anywhere
 | 
					  bool DragReleased = false;       ///< Drag Releaded in Box
 | 
				
			||||||
 | 
					  bool DragReleasedAW = false;     ///< Drag Released Anywhere
 | 
				
			||||||
 | 
					  bool DragDoubleRelease = false;  ///< Double Click
 | 
				
			||||||
  /** Check if an object is Dragged already */
 | 
					  /** Check if an object is Dragged already */
 | 
				
			||||||
  bool IsObjectDragged() const { return DraggedObject != 0; }
 | 
					  bool IsObjectDragged() const { return DraggedObject != 0; }
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@@ -147,6 +143,13 @@ class IO : public SmartCtor<IO> {
 | 
				
			|||||||
      // and Only if still in Box
 | 
					      // and Only if still in Box
 | 
				
			||||||
      DragReleased = Ren->InBox(Inp->TouchPosLast(), area);
 | 
					      DragReleased = Ren->InBox(Inp->TouchPosLast(), area);
 | 
				
			||||||
      DragReleasedAW = true;  // Advanced
 | 
					      DragReleasedAW = true;  // Advanced
 | 
				
			||||||
 | 
					      u64 d_rel = Sys::GetTime();
 | 
				
			||||||
 | 
					      if (d_rel - DragLastReleased < DoubleClickTime) {
 | 
				
			||||||
 | 
					        DragDoubleRelease = true;
 | 
				
			||||||
 | 
					        DragLastReleased = 0;  // Set 0 to prevent double exec
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        DragLastReleased = d_rel;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      // Ensure timer is paused
 | 
					      // Ensure timer is paused
 | 
				
			||||||
      DragTime->Pause();
 | 
					      DragTime->Pause();
 | 
				
			||||||
      DragTime->Reset();
 | 
					      DragTime->Reset();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,7 +80,7 @@ class Menu : public SmartCtor<Menu> {
 | 
				
			|||||||
   * @param img Texture reference of the image
 | 
					   * @param img Texture reference of the image
 | 
				
			||||||
   * @param size a Custom Size if needed
 | 
					   * @param size a Custom Size if needed
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  void Image(Texture::Ref img, vec2 size = 0.f);
 | 
					  void Image(Texture::Ref img, vec2 size = 0.f, LI::Rect uv = vec4(0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Color Edit Object that opens a popup editor if clicked
 | 
					   * Color Edit Object that opens a popup editor if clicked
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,6 +69,11 @@ class Theme : public SmartCtor<Theme> {
 | 
				
			|||||||
   * @param theme Theme Reference
 | 
					   * @param theme Theme Reference
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  static void Default(Theme& theme);
 | 
					  static void Default(Theme& theme);
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * White Mode Theme
 | 
				
			||||||
 | 
					   * @param Theme theme reference
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static void Flashbang(Theme& theme);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** Revert the last Color Change */
 | 
					  /** Revert the last Color Change */
 | 
				
			||||||
  Theme& Pop() {
 | 
					  Theme& Pop() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ SOFTWARE.
 | 
				
			|||||||
 *         Major Minor Patch Build
 | 
					 *         Major Minor Patch Build
 | 
				
			||||||
 * 0x01010000 -> 1.1.0-0
 | 
					 * 0x01010000 -> 1.1.0-0
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define UI7_VERSION 0x00020901
 | 
					#define UI7_VERSION 0x00030000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace PD {
 | 
					namespace PD {
 | 
				
			||||||
namespace UI7 {
 | 
					namespace UI7 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,8 +50,10 @@ void Button::Draw() {
 | 
				
			|||||||
  Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
 | 
					  Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
 | 
				
			||||||
  io->Ren->OnScreen(screen);
 | 
					  io->Ren->OnScreen(screen);
 | 
				
			||||||
  list->AddRectangle(FinalPos(), size, io->Theme->Get(color));
 | 
					  list->AddRectangle(FinalPos(), size, io->Theme->Get(color));
 | 
				
			||||||
 | 
					  list->Layer(list->Layer() + 1);
 | 
				
			||||||
  list->AddText(FinalPos() + size * 0.5 - tdim * 0.5, label,
 | 
					  list->AddText(FinalPos() + size * 0.5 - tdim * 0.5, label,
 | 
				
			||||||
                io->Theme->Get(UI7Color_Text));
 | 
					                io->Theme->Get(UI7Color_Text));
 | 
				
			||||||
 | 
					  list->Layer(list->Layer() - 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Button::Update() {
 | 
					void Button::Update() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ void Image::Draw() {
 | 
				
			|||||||
  Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
 | 
					  Assert(io.get() && list.get(), "Did you run Container::Init correctly?");
 | 
				
			||||||
  Assert(img.get(), "Image is nullptr!");
 | 
					  Assert(img.get(), "Image is nullptr!");
 | 
				
			||||||
  io->Ren->OnScreen(screen);
 | 
					  io->Ren->OnScreen(screen);
 | 
				
			||||||
  list->AddImage(FinalPos(), img, newsize);
 | 
					  list->AddImage(FinalPos(), img, newsize, this->cuv);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}  // namespace UI7
 | 
					}  // namespace UI7
 | 
				
			||||||
}  // namespace PD
 | 
					}  // namespace PD
 | 
				
			||||||
@@ -95,28 +95,11 @@ void DrawList::AddText(vec2 pos, const std::string& text, const UI7Color& clr,
 | 
				
			|||||||
        ren->CurrentScreen()->ScreenType() == Screen::Bottom, it));
 | 
					        ren->CurrentScreen()->ScreenType() == Screen::Bottom, it));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  e->GetRawObject()->ReCopy();
 | 
					  e->GetRawObject()->ReCopy();
 | 
				
			||||||
 | 
					 | 
				
			||||||
  ////// STILL LEAVING THE OLD CODE BELOW AS IT IS MAYBE NEEDED //////
 | 
					 | 
				
			||||||
  //////   IF STATIC TEXT SYSTEM SHOULD HAVE AN DISABLE OPTION  //////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Dont create a Command here as TextCommand has autosetup
 | 
					 | 
				
			||||||
  // cause it needs to generate multiple commands if
 | 
					 | 
				
			||||||
  // Font uses multiple textures
 | 
					 | 
				
			||||||
  // Oh and Handle Layer management here as well
 | 
					 | 
				
			||||||
  //  int l = ren->Layer();
 | 
					 | 
				
			||||||
  //  ren->Layer(base + layer);
 | 
					 | 
				
			||||||
  //  std::vector<LI::Command::Ref> cmds;
 | 
					 | 
				
			||||||
  //  ren->TextCommand(cmds, pos, clr, text, flags, box);
 | 
					 | 
				
			||||||
  //  ren->Layer(l);
 | 
					 | 
				
			||||||
  //  for (auto c : cmds) {
 | 
					 | 
				
			||||||
  //    commands.push_back(
 | 
					 | 
				
			||||||
  //        std::make_pair(ren->CurrentScreen()->ScreenType() == Screen::Bottom,
 | 
					 | 
				
			||||||
  //        c));
 | 
					 | 
				
			||||||
  //  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DrawList::AddImage(vec2 pos, Texture::Ref img, vec2 size) {
 | 
					void DrawList::AddImage(vec2 pos, Texture::Ref img, vec2 size, LI::Rect uv) {
 | 
				
			||||||
  size = size == 0.f ? img->GetSize() : size;
 | 
					  size = size == 0.f ? img->GetSize() : size;
 | 
				
			||||||
 | 
					  uv = (uv.Top() == 0.0f && uv.Bot() == 0.0f) ? img->GetUV() : uv;
 | 
				
			||||||
  if (!ren->InBox(pos, size, ren->GetViewport())) {
 | 
					  if (!ren->InBox(pos, size, ren->GetViewport())) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -129,7 +112,7 @@ void DrawList::AddImage(vec2 pos, Texture::Ref img, vec2 size) {
 | 
				
			|||||||
    cmd->SetScissorMode(LI::ScissorMode_Normal);
 | 
					    cmd->SetScissorMode(LI::ScissorMode_Normal);
 | 
				
			||||||
    cmd->ScissorRect(clip_rects.top());
 | 
					    cmd->ScissorRect(clip_rects.top());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ren->QuadCommand(cmd, rect, img->GetUV(), 0xffffffff);
 | 
					  ren->QuadCommand(cmd, rect, uv, 0xffffffff);
 | 
				
			||||||
  commands.push_back(std::make_pair(
 | 
					  commands.push_back(std::make_pair(
 | 
				
			||||||
      ren->CurrentScreen()->ScreenType() == Screen::Bottom, cmd));
 | 
					      ren->CurrentScreen()->ScreenType() == Screen::Bottom, cmd));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,7 @@ void UI7::IO::Update() {
 | 
				
			|||||||
  DragTime->Update();
 | 
					  DragTime->Update();
 | 
				
			||||||
  DragReleased = false;
 | 
					  DragReleased = false;
 | 
				
			||||||
  DragReleasedAW = false;
 | 
					  DragReleasedAW = false;
 | 
				
			||||||
 | 
					  DragDoubleRelease = false;
 | 
				
			||||||
  Framerate = 1000.f / Delta;
 | 
					  Framerate = 1000.f / Delta;
 | 
				
			||||||
  DrawListRegestry.clear();
 | 
					  DrawListRegestry.clear();
 | 
				
			||||||
  RegisterDrawList("CtxBackList", Back);
 | 
					  RegisterDrawList("CtxBackList", Back);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,8 +85,8 @@ void UI7::Menu::Checkbox(const std::string& label, bool& v) {
 | 
				
			|||||||
  r->HandleScrolling(scrolling_off, view_area);
 | 
					  r->HandleScrolling(scrolling_off, view_area);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void UI7::Menu::Image(Texture::Ref img, vec2 size) {
 | 
					void UI7::Menu::Image(Texture::Ref img, vec2 size, LI::Rect uv) {
 | 
				
			||||||
  Container::Ref r = ObjectPush(PD::New<UI7::Image>(img, size));
 | 
					  Container::Ref r = ObjectPush(PD::New<UI7::Image>(img, size, uv));
 | 
				
			||||||
  r->SetPos(AlignPos(Cursor(), r->GetSize(), view_area, GetAlignment()));
 | 
					  r->SetPos(AlignPos(Cursor(), r->GetSize(), view_area, GetAlignment()));
 | 
				
			||||||
  CursorMove(r->GetSize());
 | 
					  CursorMove(r->GetSize());
 | 
				
			||||||
  r->Init(io, main);
 | 
					  r->Init(io, main);
 | 
				
			||||||
@@ -538,6 +538,7 @@ bool UI7::Menu::BeginTreeNode(const UI7::ID& id) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  return n->second;
 | 
					  return n->second;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void UI7::Menu::EndTreeNode() {
 | 
					void UI7::Menu::EndTreeNode() {
 | 
				
			||||||
  icursoroff.x() -= 10.f;
 | 
					  icursoroff.x() -= 10.f;
 | 
				
			||||||
  cursor.x() -= 10;
 | 
					  cursor.x() -= 10;
 | 
				
			||||||
@@ -591,6 +592,9 @@ void UI7::Menu::MoveHandler() {
 | 
				
			|||||||
    if (has_touch &&
 | 
					    if (has_touch &&
 | 
				
			||||||
        io->DragObject(name + "tmv",
 | 
					        io->DragObject(name + "tmv",
 | 
				
			||||||
                       vec4(view_area.xy(), vec2(view_area.z(), tbh)))) {
 | 
					                       vec4(view_area.xy(), vec2(view_area.z(), tbh)))) {
 | 
				
			||||||
 | 
					      if (io->DragDoubleRelease) {
 | 
				
			||||||
 | 
					        is_open = !is_open;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      view_area =
 | 
					      view_area =
 | 
				
			||||||
          vec4(view_area.xy() + (io->DragPosition - io->DragLastPosition),
 | 
					          vec4(view_area.xy() + (io->DragPosition - io->DragLastPosition),
 | 
				
			||||||
               view_area.zw());
 | 
					               view_area.zw());
 | 
				
			||||||
@@ -626,7 +630,8 @@ void UI7::Menu::CollapseHandler() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void UI7::Menu::PostScrollHandler() {
 | 
					void UI7::Menu::PostScrollHandler() {
 | 
				
			||||||
  if (has_touch && io->DragObject(id, view_area) && scrolling[1] &&
 | 
					  if (has_touch && io->DragObject(id, view_area) && scrolling[1] &&
 | 
				
			||||||
      flags & UI7MenuFlags_VtScrolling) {
 | 
					      flags & UI7MenuFlags_VtScrolling &&
 | 
				
			||||||
 | 
					      max[1] - view_area.w() + io->MenuPadding[1] > 0) {
 | 
				
			||||||
    if (io->DragReleased) {
 | 
					    if (io->DragReleased) {
 | 
				
			||||||
      scroll_mod = (io->DragPosition - io->DragLastPosition);
 | 
					      scroll_mod = (io->DragPosition - io->DragLastPosition);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,5 +44,24 @@ void Theme::Default(Theme& theme) {
 | 
				
			|||||||
  theme.Set(UI7Color_ListEven, Color("#CCCCCCFF"));
 | 
					  theme.Set(UI7Color_ListEven, Color("#CCCCCCFF"));
 | 
				
			||||||
  theme.Set(UI7Color_ListOdd, Color("#BBBBBBFF"));
 | 
					  theme.Set(UI7Color_ListOdd, Color("#BBBBBBFF"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Theme::Flashbang(Theme& theme) {
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Text, Color("#000000FF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_TextDead, Color("#333333FF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Background, Color("#eeeeeeFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Button, Color("#ccccccFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_ButtonDead, Color("#bbbbbbFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_ButtonActive, Color("#ccccccFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_ButtonHovered, Color("#cbcbcbFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Header, Color("#ddddddFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_HeaderDead, Color("#cdcdcdFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Selector, Color("#222222FF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Checkmark, Color("#ccccccFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_FrameBackground, Color("#aaaaaaFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_FrameBackgroundHovered, Color("#909090FF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_Progressbar, Color("#00FF00FF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_ListEven, Color("#CCCCCCFF"));
 | 
				
			||||||
 | 
					  theme.Set(UI7Color_ListOdd, Color("#BBBBBBFF"));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
}  // namespace UI7
 | 
					}  // namespace UI7
 | 
				
			||||||
}  // namespace PD
 | 
					}  // namespace PD
 | 
				
			||||||
@@ -178,6 +178,18 @@ void UI7::Context::MetricsMenu(bool* show) {
 | 
				
			|||||||
    m->Label(std::format("NumIndices: {} -> {} Tris", io->NumIndices,
 | 
					    m->Label(std::format("NumIndices: {} -> {} Tris", io->NumIndices,
 | 
				
			||||||
                         io->NumIndices / 3));
 | 
					                         io->NumIndices / 3));
 | 
				
			||||||
    m->Label("Menus: " + std::to_string(menus.size()));
 | 
					    m->Label("Menus: " + std::to_string(menus.size()));
 | 
				
			||||||
 | 
					    if (m->BeginTreeNode("Font")) {
 | 
				
			||||||
 | 
					      for (u32 i = 0; i <= 0x00ff; i++) {
 | 
				
			||||||
 | 
					        auto& c = io->Ren->Font()->GetCodepoint(i);
 | 
				
			||||||
 | 
					        if (!c.invalid()) {
 | 
				
			||||||
 | 
					          m->Image(c.tex(), c.size(), c.uv());
 | 
				
			||||||
 | 
					          if ((i % 15) != 0 || i == 0) {
 | 
				
			||||||
 | 
					            m->SameLine();
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      m->EndTreeNode();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    m->SeparatorText("TimeTrace");
 | 
					    m->SeparatorText("TimeTrace");
 | 
				
			||||||
    if (m->BeginTreeNode("Traces (" +
 | 
					    if (m->BeginTreeNode("Traces (" +
 | 
				
			||||||
                         std::to_string(Sys::GetTraceMap().size()) + ")")) {
 | 
					                         std::to_string(Sys::GetTraceMap().size()) + ")")) {
 | 
				
			||||||
@@ -280,6 +292,13 @@ void UI7::Context::StyleEditor(bool* show) {
 | 
				
			|||||||
      io->ItemSpace += 1;
 | 
					      io->ItemSpace += 1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    m->SeparatorText("Theme");
 | 
					    m->SeparatorText("Theme");
 | 
				
			||||||
 | 
					    if (m->Button("Dark")) {
 | 
				
			||||||
 | 
					      UI7::Theme::Default(*io->Theme.get());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    m->SameLine();
 | 
				
			||||||
 | 
					    if (m->Button("Flashbang")) {
 | 
				
			||||||
 | 
					      UI7::Theme::Flashbang(*io->Theme.get());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    /// Small trick to print without prefix
 | 
					    /// Small trick to print without prefix
 | 
				
			||||||
#define ts(x) m->ColorEdit(std::string(#x).substr(9), &io->Theme->GetRef(x));
 | 
					#define ts(x) m->ColorEdit(std::string(#x).substr(9), &io->Theme->GetRef(x));
 | 
				
			||||||
    ts(UI7Color_Background);
 | 
					    ts(UI7Color_Background);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user