Start Implement AutoSizing into UI7
This commit is contained in:
		| @@ -26,6 +26,7 @@ namespace RenderD7 { | |||||||
| R7Vec2 GetTextDimensions(const std::string& text); | R7Vec2 GetTextDimensions(const std::string& text); | ||||||
| void CustomTextSize(float size); | void CustomTextSize(float size); | ||||||
| void TextDefaultSize(); | void TextDefaultSize(); | ||||||
|  | float TextGetSize(); | ||||||
| std::string TextShort(const std::string& in, int max_len); | std::string TextShort(const std::string& in, int max_len); | ||||||
| // Overrite TextBox Size (by default Screenwidth x Text.h) | // Overrite TextBox Size (by default Screenwidth x Text.h) | ||||||
| void TextMaxBox(R7Vec2 size); | void TextMaxBox(R7Vec2 size); | ||||||
|   | |||||||
| @@ -104,12 +104,19 @@ void Sample::Draw() const { | |||||||
|       UI7::SameLine(); |       UI7::SameLine(); | ||||||
|       UI7::Checkbox("RD7-Debug", rd7_debugging); |       UI7::Checkbox("RD7-Debug", rd7_debugging); | ||||||
|       UI7::InputText("Search", search__, "Tap Here"); |       UI7::InputText("Search", search__, "Tap Here"); | ||||||
|  |       UI7::Label("Text Control:"); | ||||||
|  |       if(UI7::Button("text++")) txt_size+=0.01; | ||||||
|  |       UI7::SameLine(); | ||||||
|  |       if(UI7::Button("text--")) txt_size -= 0.01; | ||||||
|  |       UI7::SameLine(); | ||||||
|  |       if(UI7::Button("def")) txt_size = 0.5; | ||||||
|     } |     } | ||||||
|     UI7::EndMenu(); |     UI7::EndMenu(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| void Sample::Logic() { | void Sample::Logic() { | ||||||
|  |   RenderD7::CustomTextSize(txt_size); | ||||||
|   for (const auto& it : shared_requests) { |   for (const auto& it : shared_requests) { | ||||||
|     if (it.first == 1U) { |     if (it.first == 1U) { | ||||||
|       if (it.second) RenderD7::LoadSettings(); |       if (it.second) RenderD7::LoadSettings(); | ||||||
|   | |||||||
| @@ -28,5 +28,6 @@ class Sample : public RenderD7::Scene { | |||||||
|   mutable std::vector<std::string> names; |   mutable std::vector<std::string> names; | ||||||
|   mutable std::vector<std::string> files; |   mutable std::vector<std::string> files; | ||||||
|   mutable int sel; |   mutable int sel; | ||||||
|  |   mutable float txt_size = 0.5f; | ||||||
|   State state = State_Menu; |   State state = State_Menu; | ||||||
| }; | }; | ||||||
| @@ -109,6 +109,8 @@ void TextFont(Font fnt) { rd7i_d2_fnt = fnt.ptr(); } | |||||||
|  |  | ||||||
| void TextDefaultFont() { rd7i_d2_fnt = rd7i_base_font; } | void TextDefaultFont() { rd7i_d2_fnt = rd7i_base_font; } | ||||||
|  |  | ||||||
|  | float TextGetSize() { return rd7i_d2_txt_size; } | ||||||
|  |  | ||||||
| std::string TextShort(const std::string &in, int max_len) { | std::string TextShort(const std::string &in, int max_len) { | ||||||
|   return GetShortedText(in, max_len); |   return GetShortedText(in, max_len); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -272,6 +272,8 @@ Ovl_Metrik::Ovl_Metrik(bool* is_enabled, bool* screen, uint32_t* mt_color, | |||||||
| } | } | ||||||
|  |  | ||||||
| void Ovl_Metrik::Draw(void) const { | void Ovl_Metrik::Draw(void) const { | ||||||
|  |   float tmp_txt = RenderD7::TextGetSize(); | ||||||
|  |   RenderD7::TextDefaultSize(); | ||||||
|   if (i_screen[0]) { |   if (i_screen[0]) { | ||||||
|     RenderD7::OnScreen(Bottom); |     RenderD7::OnScreen(Bottom); | ||||||
|   } else { |   } else { | ||||||
| @@ -332,6 +334,7 @@ void Ovl_Metrik::Draw(void) const { | |||||||
|                           R7Vec2(320, Hid::GetTouchPosition().y), |                           R7Vec2(320, Hid::GetTouchPosition().y), | ||||||
|                           RenderD7::Color::Hex("#ff0000")); |                           RenderD7::Color::Hex("#ff0000")); | ||||||
|   } |   } | ||||||
|  |   RenderD7::CustomTextSize(tmp_txt); | ||||||
| } | } | ||||||
|  |  | ||||||
| void Ovl_Metrik::Logic() { | void Ovl_Metrik::Logic() { | ||||||
|   | |||||||
| @@ -242,7 +242,8 @@ bool Button(const std::string &label, R7Vec2 size) { | |||||||
|  |  | ||||||
| void Checkbox(const std::string &label, bool &c) { | void Checkbox(const std::string &label, bool &c) { | ||||||
|   if (!UI7CtxValidate()) return; |   if (!UI7CtxValidate()) return; | ||||||
|   R7Vec2 cbs = R7Vec2(18, 18); |   float sv = (RenderD7::TextGetSize()*40)*0.9; | ||||||
|  |   R7Vec2 cbs = R7Vec2(sv, sv); | ||||||
|   R7Vec2 txtdim = RenderD7::GetTextDimensions(label); |   R7Vec2 txtdim = RenderD7::GetTextDimensions(label); | ||||||
|   R7Vec2 inp = cbs + R7Vec2(txtdim.x + 5, 0); |   R7Vec2 inp = cbs + R7Vec2(txtdim.x + 5, 0); | ||||||
|   RD7Color bg = RD7Color_FrameBg; |   RD7Color bg = RD7Color_FrameBg; | ||||||
| @@ -307,6 +308,8 @@ void BrowserList(const std::vector<std::string> &entrys, int &selection, | |||||||
|                  RD7TextFlags txtflags, R7Vec2 size, int max_entrys) { |                  RD7TextFlags txtflags, R7Vec2 size, int max_entrys) { | ||||||
|   if (!UI7CtxValidate()) return; |   if (!UI7CtxValidate()) return; | ||||||
|   if (selection < 0) return; |   if (selection < 0) return; | ||||||
|  |   float tmp_txt = RenderD7::TextGetSize(); | ||||||
|  |   RenderD7::TextDefaultSize(); | ||||||
|   R7Vec2 pos = GetCursorPos(); |   R7Vec2 pos = GetCursorPos(); | ||||||
|   if (pos.y + 15 * max_entrys > 230) max_entrys = (int)((230 - pos.y) / 15); |   if (pos.y + 15 * max_entrys > 230) max_entrys = (int)((230 - pos.y) / 15); | ||||||
|   if (size.x == 0) size.x = (rd7i_current_screen ? 400 : 320) - (pos.x * 2); |   if (size.x == 0) size.x = (rd7i_current_screen ? 400 : 320) - (pos.x * 2); | ||||||
| @@ -352,12 +355,14 @@ void BrowserList(const std::vector<std::string> &entrys, int &selection, | |||||||
|       RenderD7::Ftrace::End("app", "short_algo"); |       RenderD7::Ftrace::End("app", "short_algo"); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   RenderD7::CustomTextSize(tmp_txt); | ||||||
| } | } | ||||||
|  |  | ||||||
| void InputText(const std::string &label, std::string &text, | void InputText(const std::string &label, std::string &text, | ||||||
|                const std::string &hint) { |                const std::string &hint) { | ||||||
|   if (!UI7CtxValidate()) return; |   if (!UI7CtxValidate()) return; | ||||||
|   R7Vec2 cbs = R7Vec2(144, 18); |   float sv = (RenderD7::TextGetSize()*40)*0.9; | ||||||
|  |   R7Vec2 cbs = R7Vec2(144, sv); | ||||||
|   R7Vec2 txtdim = RenderD7::GetTextDimensions(label); |   R7Vec2 txtdim = RenderD7::GetTextDimensions(label); | ||||||
|   R7Vec2 inp = cbs + R7Vec2(txtdim.x + 5, 0); |   R7Vec2 inp = cbs + R7Vec2(txtdim.x + 5, 0); | ||||||
|   RD7Color bg = RD7Color_FrameBg; |   RD7Color bg = RD7Color_FrameBg; | ||||||
| @@ -394,19 +399,20 @@ bool BeginMenu(const std::string &title, R7Vec2 size, UI7MenuFlags flags) { | |||||||
|     size.y = 240; |     size.y = 240; | ||||||
|   } |   } | ||||||
|   RD7TextFlags txtflags = 0; |   RD7TextFlags txtflags = 0; | ||||||
|  |   float tbh = RenderD7::TextGetSize()*40; | ||||||
|   if (flags & UI7MenuFlags_NoTitlebar) titlebar = false; |   if (flags & UI7MenuFlags_NoTitlebar) titlebar = false; | ||||||
|   if (flags & UI7MenuFlags_TitleMid) txtflags = RD7TextFlags_AlignMid; |   if (flags & UI7MenuFlags_TitleMid) txtflags = RD7TextFlags_AlignMid; | ||||||
|   RenderD7::Draw2::RFS(R7Vec2(0, 0), size, |   RenderD7::Draw2::RFS(R7Vec2(0, 0), size, | ||||||
|                        RenderD7::StyleColor(RD7Color_Background)); |                        RenderD7::StyleColor(RD7Color_Background)); | ||||||
|   if (titlebar) { |   if (titlebar) { | ||||||
|     RenderD7::Draw2::RFS(R7Vec2(0, 0), R7Vec2(size.x, 20), |     RenderD7::Draw2::RFS(R7Vec2(0, 0), R7Vec2(size.x, tbh), | ||||||
|                          RenderD7::StyleColor(RD7Color_Header)); |                          RenderD7::StyleColor(RD7Color_Header)); | ||||||
|     RenderD7::TextColorByBg(RD7Color_Header); |     RenderD7::TextColorByBg(RD7Color_Header); | ||||||
|     RenderD7::Draw2::Text(R7Vec2(5, 2), id->title, txtflags); |     RenderD7::Draw2::Text(R7Vec2(5, 2), id->title, txtflags); | ||||||
|     RenderD7::UndoColorEdit(RD7Color_Text); |     RenderD7::UndoColorEdit(RD7Color_Text); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SetCursorPos(R7Vec2(5, 25)); |   SetCursorPos(R7Vec2(5, tbh+5)); | ||||||
|   return UI7CtxBeginMenu(title); |   return UI7CtxBeginMenu(title); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user