Sfoglia il codice sorgente

LibGfx: Add FontDatabase::for_each_typeface_with_family_name()

Some clients (e.g LibWeb) want to look up typefaces by name. Since we
already store typefaces in a HashMap keyed by family name, let's also
have a nice & fast API that takes advantage of this.
Andreas Kling 1 anno fa
parent
commit
2cd89531f9

+ 9 - 0
Userland/Libraries/LibGfx/Font/FontDatabase.cpp

@@ -260,4 +260,13 @@ void FontDatabase::for_each_typeface(Function<void(Typeface const&)> callback)
     }
 }
 
+void FontDatabase::for_each_typeface_with_family_name(String const& family_name, Function<void(Typeface const&)> callback)
+{
+    auto it = m_private->typefaces.find(family_name.bytes_as_string_view());
+    if (it == m_private->typefaces.end())
+        return;
+    for (auto const& typeface : it->value)
+        callback(*typeface);
+}
+
 }

+ 1 - 0
Userland/Libraries/LibGfx/Font/FontDatabase.h

@@ -55,6 +55,7 @@ public:
     void for_each_fixed_width_font(Function<void(Gfx::Font const&)>);
 
     void for_each_typeface(Function<void(Typeface const&)>);
+    void for_each_typeface_with_family_name(String const& family_name, Function<void(Typeface const&)>);
 
     void load_all_fonts_from_path(DeprecatedString const&);