Emoji.cpp 618 B

123456789101112131415161718192021222324
  1. #include <AK/HashMap.h>
  2. #include <AK/String.h>
  3. #include <LibDraw/Emoji.h>
  4. #include <LibDraw/GraphicsBitmap.h>
  5. static HashMap<u32, RefPtr<GraphicsBitmap>> s_emojis;
  6. const GraphicsBitmap* Emoji::emoji_for_codepoint(u32 codepoint)
  7. {
  8. auto it = s_emojis.find(codepoint);
  9. if (it != s_emojis.end())
  10. return (*it).value.ptr();
  11. String path = String::format("/res/emoji/U+%X.png", codepoint);
  12. auto bitmap = GraphicsBitmap::load_from_file(path);
  13. if (!bitmap) {
  14. s_emojis.set(codepoint, nullptr);
  15. return nullptr;
  16. }
  17. s_emojis.set(codepoint, bitmap);
  18. return bitmap.ptr();
  19. }