mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 13:02:45 +00:00 
			
		
		
		
	 0dc9af5f7e
			
		
	
	
		0dc9af5f7e
		
	
	
	
	
		
			
			Also run it across the whole tree to get everything using the One True Style. We don't yet run this in an automated fashion as it's a little slow, but there is a snippet to do so in makeall.sh.
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <AK/OwnPtr.h>
 | |
| #include <AK/RetainPtr.h>
 | |
| #include <LibCore/CObject.h>
 | |
| #include <LibCore/CTimer.h>
 | |
| #include <SharedGraphics/DisjointRectSet.h>
 | |
| #include <SharedGraphics/GraphicsBitmap.h>
 | |
| 
 | |
| class Painter;
 | |
| class WSCursor;
 | |
| 
 | |
| enum class WallpaperMode
 | |
| {
 | |
|     Simple,
 | |
|     Tile,
 | |
|     Center,
 | |
|     Scaled,
 | |
|     Unchecked
 | |
| };
 | |
| 
 | |
| class WSCompositor final : public CObject {
 | |
| public:
 | |
|     static WSCompositor& the();
 | |
| 
 | |
|     void compose();
 | |
|     void invalidate();
 | |
|     void invalidate(const Rect&);
 | |
| 
 | |
|     void set_resolution(int width, int height);
 | |
| 
 | |
|     bool set_wallpaper(const String& path, Function<void(bool)>&& callback);
 | |
|     String wallpaper_path() const { return m_wallpaper_path; }
 | |
| 
 | |
|     void invalidate_cursor();
 | |
|     Rect current_cursor_rect() const;
 | |
| 
 | |
| private:
 | |
|     virtual const char* class_name() const override { return "WSCompositor"; }
 | |
| 
 | |
|     WSCompositor();
 | |
|     void flip_buffers();
 | |
|     void flush(const Rect&);
 | |
|     void draw_cursor();
 | |
|     void draw_geometry_label();
 | |
|     void draw_menubar();
 | |
|     void finish_setting_wallpaper(const String& path, Retained<GraphicsBitmap>&&);
 | |
| 
 | |
|     unsigned m_compose_count { 0 };
 | |
|     unsigned m_flush_count { 0 };
 | |
|     CTimer m_compose_timer;
 | |
|     CTimer m_immediate_compose_timer;
 | |
|     bool m_flash_flush { false };
 | |
|     bool m_buffers_are_flipped { false };
 | |
| 
 | |
|     RetainPtr<GraphicsBitmap> m_front_bitmap;
 | |
|     RetainPtr<GraphicsBitmap> m_back_bitmap;
 | |
|     OwnPtr<Painter> m_back_painter;
 | |
|     OwnPtr<Painter> m_front_painter;
 | |
| 
 | |
|     DisjointRectSet m_dirty_rects;
 | |
| 
 | |
|     Rect m_last_cursor_rect;
 | |
|     Rect m_last_geometry_label_rect;
 | |
| 
 | |
|     String m_wallpaper_path;
 | |
|     WallpaperMode m_wallpaper_mode { WallpaperMode::Unchecked };
 | |
|     RetainPtr<GraphicsBitmap> m_wallpaper;
 | |
| };
 |