mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +00:00 
			
		
		
		
	Libraries: Create top level directory for libraries.
Things were getting a little crowded in the project root, so this patch moves the Lib*/ directories into Libraries/.
This commit is contained in:
		
							parent
							
								
									63814ffebf
								
							
						
					
					
						commit
						04b9dc2d30
					
				
					 328 changed files with 36 additions and 36 deletions
				
			
		
							
								
								
									
										62
									
								
								Libraries/LibGUI/GFontDatabase.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								Libraries/LibGUI/GFontDatabase.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | |||
| #include <LibCore/CDirIterator.h> | ||||
| #include <LibGUI/GFontDatabase.h> | ||||
| #include <SharedGraphics/Font.h> | ||||
| #include <dirent.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| 
 | ||||
| static GFontDatabase* s_the; | ||||
| 
 | ||||
| GFontDatabase& GFontDatabase::the() | ||||
| { | ||||
|     if (!s_the) | ||||
|         s_the = new GFontDatabase; | ||||
|     return *s_the; | ||||
| } | ||||
| 
 | ||||
| GFontDatabase::GFontDatabase() | ||||
| { | ||||
|     CDirIterator di("/res/fonts", CDirIterator::SkipDots); | ||||
|     if (di.has_error()) { | ||||
|         fprintf(stderr, "CDirIterator: %s\n", di.error_string()); | ||||
|         exit(1); | ||||
|     } | ||||
|     while (di.has_next()) { | ||||
|         String name = di.next_path(); | ||||
|         auto path = String::format("/res/fonts/%s", name.characters()); | ||||
|         if (auto font = Font::load_from_file(path)) { | ||||
|             Metadata metadata; | ||||
|             metadata.path = path; | ||||
|             metadata.glyph_height = font->glyph_height(); | ||||
|             metadata.is_fixed_width = font->is_fixed_width(); | ||||
|             m_name_to_metadata.set(font->name(), move(metadata)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| GFontDatabase::~GFontDatabase() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| void GFontDatabase::for_each_font(Function<void(const StringView&)> callback) | ||||
| { | ||||
|     for (auto& it : m_name_to_metadata) { | ||||
|         callback(it.key); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void GFontDatabase::for_each_fixed_width_font(Function<void(const StringView&)> callback) | ||||
| { | ||||
|     for (auto& it : m_name_to_metadata) { | ||||
|         if (it.value.is_fixed_width) | ||||
|             callback(it.key); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| RefPtr<Font> GFontDatabase::get_by_name(const StringView& name) | ||||
| { | ||||
|     auto it = m_name_to_metadata.find(name); | ||||
|     if (it == m_name_to_metadata.end()) | ||||
|         return nullptr; | ||||
|     return Font::load_from_file((*it).value.path); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling