diff --git a/programs/src/desktop/apps/filemanager/filemanager_internal.hpp b/programs/src/desktop/apps/filemanager/filemanager_internal.hpp index 0f0b5c5..c84f1dc 100644 --- a/programs/src/desktop/apps/filemanager/filemanager_internal.hpp +++ b/programs/src/desktop/apps/filemanager/filemanager_internal.hpp @@ -60,9 +60,9 @@ struct FileManagerState { // Apps view bool at_apps_view; - int app_map[16]; // entry index -> external_apps[] index - SvgIcon app_icons_lg[16]; // 48x48 icons for grid view - SvgIcon app_icons_sm[16]; // 16x16 icons for list view + int app_map[64]; // entry index -> external_apps[] index + SvgIcon app_icons_lg[64]; // 48x48 icons for grid view + SvgIcon app_icons_sm[64]; // 16x16 icons for list view int app_icon_count; }; diff --git a/programs/src/desktop/apps/filemanager/filesystem.cpp b/programs/src/desktop/apps/filemanager/filesystem.cpp index 060acc3..7a844e6 100644 --- a/programs/src/desktop/apps/filemanager/filesystem.cpp +++ b/programs/src/desktop/apps/filemanager/filesystem.cpp @@ -245,7 +245,7 @@ void filemanager_read_apps(FileManagerState* fm) { /* TODO: Fix crash if 16-app ceiling is removed and remove ceiling */ - for (int i = 0; i < count && fm->entry_count < 16; i++) { + for (int i = 0; i < count && fm->entry_count < 64; i++) { const char* raw = entries[i]; // Strip "apps/" prefix if (raw[0] == 'a' && raw[1] == 'p' && raw[2] == 'p' && raw[3] == 's' && raw[4] == '/') diff --git a/programs/src/login/login.hpp b/programs/src/login/login.hpp index 52d8c23..d4fb469 100644 --- a/programs/src/login/login.hpp +++ b/programs/src/login/login.hpp @@ -102,8 +102,6 @@ inline constexpr int FIELD_GAP = 12; inline constexpr int POWER_BTN_W = 104; inline constexpr int POWER_BTN_GAP = 8; inline constexpr int FOOTER_PAD = 16; -inline constexpr int PASSWORD_MASK_CODEPOINT = 0x2022; - struct LoginLayout { gui::Rect card; gui::Rect titlebar; diff --git a/programs/src/login/login_render.cpp b/programs/src/login/login_render.cpp index 097b7f6..7a85397 100644 --- a/programs/src/login/login_render.cpp +++ b/programs/src/login/login_render.cpp @@ -53,69 +53,8 @@ void draw_text_slice(Framebuffer& fb, int x, int y, const char* text, else draw_text(fb, x, y, tmp, fg); } -struct PasswordMaskGlyph { - bool initialized; - bool use_system_font; - int width, height; - int xoff, yoff; - int ascent; - int line_height; - uint8_t* bitmap; -}; - -PasswordMaskGlyph& password_mask_glyph() { - static PasswordMaskGlyph glyph = {}; - if (glyph.initialized) return glyph; - - glyph.initialized = true; - if (!fonts::system_font || !fonts::system_font->valid) return glyph; - - GlyphCache* gc = fonts::system_font->get_cache(fonts::UI_SIZE); - glyph.ascent = gc->ascent; - glyph.line_height = gc->line_height; - - int x0, y0, x1, y1; - stbtt_GetCodepointBitmapBox(&fonts::system_font->info, PASSWORD_MASK_CODEPOINT, - gc->scale, gc->scale, &x0, &y0, &x1, &y1); - glyph.width = x1 - x0; - glyph.height = y1 - y0; - glyph.xoff = x0; - glyph.yoff = y0; - - if (glyph.width > 0 && glyph.height > 0) { - glyph.bitmap = (uint8_t*)montauk::malloc(glyph.width * glyph.height); - if (glyph.bitmap) { - stbtt_MakeCodepointBitmap(&fonts::system_font->info, glyph.bitmap, - glyph.width, glyph.height, glyph.width, - gc->scale, gc->scale, PASSWORD_MASK_CODEPOINT); - glyph.use_system_font = true; - } - } - - return glyph; -} - void draw_password_mask_char(Framebuffer& fb, int x, int y, Color fg, bool highlight = false, Color bg = colors::TRANSPARENT) { - PasswordMaskGlyph& glyph = password_mask_glyph(); - int advance = password_mask_advance(); - - if (glyph.use_system_font && glyph.bitmap) { - if (highlight) fb.fill_rect(x, y, advance, glyph.line_height, bg); - int baseline = y + glyph.ascent; - int gx = x + glyph.xoff; - int gy = baseline + glyph.yoff; - for (int row = 0; row < glyph.height; row++) { - for (int col = 0; col < glyph.width; col++) { - uint8_t alpha = glyph.bitmap[row * glyph.width + col]; - if (!alpha) continue; - Color c = {fg.r, fg.g, fg.b, alpha}; - fb.put_pixel_alpha(gx + col, gy + row, c); - } - } - return; - } - if (highlight) draw_text_bg(fb, x, y, "*", fg, bg); else draw_text(fb, x, y, "*", fg); } diff --git a/programs/src/login/login_shared.cpp b/programs/src/login/login_shared.cpp index a73f90d..7e1001f 100644 --- a/programs/src/login/login_shared.cpp +++ b/programs/src/login/login_shared.cpp @@ -145,17 +145,6 @@ void delete_field_selection(char* buf, int* len, FieldEditState* edit) { } int password_mask_advance() { - if (fonts::system_font && fonts::system_font->valid) { - GlyphCache* gc = fonts::system_font->get_cache(fonts::UI_SIZE); - int advance = 0; - int lsb = 0; - stbtt_GetCodepointHMetrics(&fonts::system_font->info, - PASSWORD_MASK_CODEPOINT, - &advance, &lsb); - (void)lsb; - int scaled = (int)(advance * gc->scale); - if (scaled > 0) return scaled; - } return text_width("*"); }