60 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| #include <ftxui/dom/node.hpp>      // for Render
 | |
| #include <ftxui/component/component.hpp>
 | |
| #include <ftxui/component/mouse.hpp>
 | |
| #include <ftxui/dom/canvas.hpp>
 | |
| #include <ftxui/screen/screen.hpp>
 | |
| #include <ftxui/dom/canvas.hpp>
 | |
| #include <ftxui/screen/screen.hpp>
 | |
| #include <ftxui/dom/canvas.hpp>
 | |
| #include <SFML/Graphics/Color.hpp>
 | |
| #include <locale>
 | |
| #include <codecvt>
 | |
| #include "color.hpp"
 | |
| #include "point.hpp"
 | |
| 
 | |
| const int UI_PANEL_BORDER_PX=5;
 | |
| 
 | |
| using ftxui::Renderer, ftxui::Component, ftxui::Element, ftxui::Screen;
 | |
| 
 | |
| class Panel {
 | |
| public:
 | |
|   int x;
 | |
|   int y;
 | |
|   int width;
 | |
|   int height;
 | |
|   bool has_border = false;
 | |
|   bool must_clear = true;
 | |
|   bool grid = false;
 | |
|   sf::Color default_bg = ColorValue::BLACK;
 | |
|   sf::Color default_fg = ColorValue::LIGHT_LIGHT;
 | |
|   sf::Color border_color = ColorValue::MID;
 | |
|   int border_px = UI_PANEL_BORDER_PX;
 | |
| 
 | |
|   bool $dirty = true;
 | |
|   Component $component = nullptr;
 | |
|   Screen $screen;
 | |
|   std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> $converter;
 | |
|   std::wstring $screenout;
 | |
| 
 | |
|   Panel(int x, int y, int width, int height, bool is_grid=false) :
 | |
|     x(x),
 | |
|     y(y),
 | |
|     width(width),
 | |
|     height(height),
 | |
|     grid(is_grid),
 | |
|     $screen(Screen(width, height))
 | |
|   {
 | |
|     must_clear = !is_grid;
 | |
|   };
 | |
| 
 | |
|   void resize(int width, int height);
 | |
|   void set_renderer(Component renderer);
 | |
|   void add(Component child);
 | |
|   void render();
 | |
|   void mouse_click(ftxui::Mouse::Button btn, Point pos);
 | |
|   void mouse_release(ftxui::Mouse::Button btn, Point pos);
 | |
|   void key_press(ftxui::Event event);
 | |
|   const std::wstring &to_string();
 | |
|   const Screen &screen();
 | |
| };
 | 
