[Refactor] Separate MenuBar bg and text rendering.
This commit is contained in:
parent
3fbacd4a99
commit
404f65867d
@ -52,17 +52,20 @@ void Editor::render(const RenderContext& context, int x, int y_screen, int y_gl,
|
|||||||
int content_y = y_screen + menu_bar_height;
|
int content_y = y_screen + menu_bar_height;
|
||||||
int content_height = height - menu_bar_height;
|
int content_height = height - menu_bar_height;
|
||||||
|
|
||||||
/*
|
/* Pass 1: Main Bar Background.*/
|
||||||
* Render editor in two passes to ensure the dropdown
|
context.ui_renderer->begin_shapes();
|
||||||
* menu appears on top of the main text view.
|
_menu_bar->render_bar_bg(context.ui_renderer, x, y_screen, width);
|
||||||
*/
|
context.ui_renderer->flush_shapes();
|
||||||
/* Pass 1: Main Content. */
|
|
||||||
context.ui_renderer->begin_text();
|
/* Pass 2: Main text view. */
|
||||||
_menu_bar->render_bar(context.ui_renderer, x, y_screen, width);
|
|
||||||
_view->render(context.ui_renderer, x, content_y, width, content_height, context.show_cursor);
|
_view->render(context.ui_renderer, x, content_y, width, content_height, context.show_cursor);
|
||||||
|
|
||||||
|
/* Pass 3: Menu bar text and dropdown. */
|
||||||
|
context.ui_renderer->begin_text();
|
||||||
|
_menu_bar->render_bar_text(context.ui_renderer, x, y_screen, width);
|
||||||
context.ui_renderer->flush_text();
|
context.ui_renderer->flush_text();
|
||||||
|
|
||||||
/* Pass 2: Dropdown Menu. */
|
/* Pass 4: Dropdown menu. */
|
||||||
context.ui_renderer->begin_text();
|
context.ui_renderer->begin_text();
|
||||||
_menu_bar->render_dropdown(context.ui_renderer, x, y_screen, width);
|
_menu_bar->render_dropdown(context.ui_renderer, x, y_screen, width);
|
||||||
context.ui_renderer->flush_text();
|
context.ui_renderer->flush_text();
|
||||||
|
|||||||
@ -72,25 +72,20 @@ void MenuBar::handle_event(SDL_Event* event, int window_x, int window_y) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuBar::render_bar(UIRenderer* ui_renderer, int x, int y, int width) {
|
void MenuBar::render_bar_bg(UIRenderer* ui_renderer, int x, int y, int width) {
|
||||||
const Color bg_color = { 0.15f, 0.17f, 0.19f };
|
const Color bg_color = { 0.15f, 0.17f, 0.19f };
|
||||||
const Color text_color = { 0.9f, 0.9f, 0.9f };
|
|
||||||
|
|
||||||
ui_renderer->begin_shapes();
|
|
||||||
ui_renderer->begin_text();
|
|
||||||
|
|
||||||
ui_renderer->draw_rect(x, y, width, _height, bg_color);
|
ui_renderer->draw_rect(x, y, width, _height, bg_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MenuBar::render_bar_text(UIRenderer *ui_renderer, int x, int y, int width) {
|
||||||
|
const Color text_color = { 0.9f, 0.9f, 0.9f };
|
||||||
|
|
||||||
int menu_x = x;
|
int menu_x = x;
|
||||||
for(size_t i = 0; i < _menus.size(); ++i) {
|
for(size_t i = 0; i < _menus.size(); ++i) {
|
||||||
int menu_width = 60;
|
int menu_width = 60;
|
||||||
ui_renderer->render_text(_menus[i].label.c_str(), menu_x+10, y+20, text_color);
|
ui_renderer->render_text(_menus[i].label.c_str(), menu_x+10, y+20, text_color);
|
||||||
|
|
||||||
menu_x += menu_width;
|
menu_x += menu_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_renderer->flush_shapes();
|
|
||||||
ui_renderer->flush_text();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuBar::render_dropdown(UIRenderer* ui_renderer, int x, int y, int width ) {
|
void MenuBar::render_dropdown(UIRenderer* ui_renderer, int x, int y, int width ) {
|
||||||
|
|||||||
@ -28,7 +28,8 @@ public:
|
|||||||
std::function<void()> action);
|
std::function<void()> action);
|
||||||
|
|
||||||
void handle_event(SDL_Event* event, int window_x, int window_y);
|
void handle_event(SDL_Event* event, int window_x, int window_y);
|
||||||
void render_bar(UIRenderer* ui_renderer, int x, int y, int width);
|
void render_bar_bg(UIRenderer* ui_renderer, int x, int y, int width);
|
||||||
|
void render_bar_text(UIRenderer* ui_renderer, int x, int y, int width);
|
||||||
void render_dropdown(UIRenderer* ui_renderer, int x, int y, int width);
|
void render_dropdown(UIRenderer* ui_renderer, int x, int y, int width);
|
||||||
|
|
||||||
int get_height(void) const;
|
int get_height(void) const;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user