[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_height = height - menu_bar_height;
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Render editor in two passes to ensure the dropdown
 | 
			
		||||
   * menu appears on top of the main text view.
 | 
			
		||||
   */
 | 
			
		||||
  /* Pass 1: Main Content. */
 | 
			
		||||
  context.ui_renderer->begin_text();
 | 
			
		||||
  _menu_bar->render_bar(context.ui_renderer, x, y_screen, width);
 | 
			
		||||
  /* Pass 1: Main Bar Background.*/
 | 
			
		||||
  context.ui_renderer->begin_shapes();
 | 
			
		||||
  _menu_bar->render_bar_bg(context.ui_renderer, x, y_screen, width);
 | 
			
		||||
  context.ui_renderer->flush_shapes();
 | 
			
		||||
 | 
			
		||||
  /* Pass 2: Main text view. */
 | 
			
		||||
  _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();
 | 
			
		||||
 | 
			
		||||
  /* Pass 2: Dropdown Menu. */
 | 
			
		||||
  /* Pass 4: Dropdown menu. */
 | 
			
		||||
  context.ui_renderer->begin_text();
 | 
			
		||||
  _menu_bar->render_dropdown(context.ui_renderer, x, y_screen, width);
 | 
			
		||||
  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 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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
  for(size_t i = 0; i < _menus.size(); ++i) {
 | 
			
		||||
    int menu_width = 60;
 | 
			
		||||
    ui_renderer->render_text(_menus[i].label.c_str(), menu_x+10, y+20, text_color);
 | 
			
		||||
 | 
			
		||||
    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 ) {
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,8 @@ public:
 | 
			
		||||
                     std::function<void()> action);
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
 | 
			
		||||
  int get_height(void) const;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user