| 
									
										
										
										
											2019-03-28 15:30:29 +01:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibGUI/GWidget.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GFrame : public GWidget { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     explicit GFrame(GWidget* parent); | 
					
						
							|  |  |  |     virtual ~GFrame() override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     enum Shadow { Plain, Raised, Sunken }; | 
					
						
							| 
									
										
										
										
											2019-03-28 16:58:29 +01:00
										 |  |  |     enum Shape { NoFrame, Container, Panel, VerticalLine, HorizontalLine }; | 
					
						
							| 
									
										
										
										
											2019-03-28 15:30:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     int frame_thickness() const { return m_thickness; } | 
					
						
							|  |  |  |     void set_frame_thickness(int thickness) { m_thickness = thickness; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Shadow frame_shadow() const { return m_shadow; } | 
					
						
							|  |  |  |     void set_frame_shadow(Shadow shadow) { m_shadow = shadow; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Shape frame_shape() const { return m_shape; } | 
					
						
							|  |  |  |     void set_frame_shape(Shape shape) { m_shape = shape; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-28 16:14:26 +01:00
										 |  |  |     Rect frame_inner_rect_for_size(const Size& size) const { return { m_thickness, m_thickness, size.width() - m_thickness * 2, size.height() - m_thickness * 2 }; } | 
					
						
							|  |  |  |     Rect frame_inner_rect() const { return frame_inner_rect_for_size(size()); } | 
					
						
							| 
									
										
										
										
											2019-03-28 15:30:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual const char* class_name() const override { return "GFrame"; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  |     void paint_event(GPaintEvent&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     int m_thickness { 0 }; | 
					
						
							|  |  |  |     Shadow m_shadow { Plain }; | 
					
						
							|  |  |  |     Shape m_shape { NoFrame }; | 
					
						
							|  |  |  | }; |