From 0c4f89370d05056faa789aa9cabcccc4e509fb9f Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Sun, 19 Jul 2020 19:38:45 -0400 Subject: [PATCH] [2/4] get rid of HAVE_LCD_CHARCELLS HAVE_LCD_BITMAP is now redundant. lcd_bitmap is always-on in features.txt so manual and lang strings don't have to change Change-Id: I08eeb20de48099ffc2dc23782711af368c2ec794 --- apps/SOURCES | 6 - apps/features.txt | 4 - apps/filetypes.c | 7 - apps/gui/charcell/list.c | 112 -- apps/gui/icon.h | 15 +- apps/gui/line.c | 4 - apps/gui/list.c | 5 - apps/gui/skin_engine/skin_display.c | 1 - apps/gui/skin_engine/skin_parser.c | 8 - apps/gui/skin_engine/skin_render.c | 12 - apps/gui/skin_engine/skin_tokens.c | 173 --- apps/gui/skin_engine/wps_internals.h | 3 - apps/gui/splash.c | 17 - apps/gui/statusbar.c | 38 - apps/gui/usb_screen.c | 9 - apps/gui/viewport.h | 4 - apps/gui/wps.c | 22 - apps/gui/yesno.c | 5 - apps/logfdisp.c | 7 - apps/menus/main_menu.c | 28 +- apps/onplay.c | 8 - apps/player/icons.c | 110 -- apps/plugin.c | 11 - apps/plugin.h | 11 - apps/plugins/credits.c | 68 - apps/plugins/cube.c | 10 - apps/plugins/flipit.c | 75 -- apps/plugins/invadrox.c | 4 - apps/plugins/jackpot.c | 70 +- apps/plugins/lib/SOURCES | 4 - apps/plugins/lib/display_text.c | 4 - apps/plugins/lib/mylcd.h | 9 +- apps/plugins/lib/osd.h | 4 - apps/plugins/lib/playergfx.c | 526 -------- apps/plugins/lib/playergfx.h | 55 - apps/plugins/lib/simple_viewer.c | 5 - apps/plugins/logo.c | 17 - apps/plugins/lrcplayer.c | 53 - apps/plugins/metronome.c | 5 - apps/plugins/mosaique.c | 15 - apps/plugins/random_folder_advance_config.c | 2 - apps/plugins/rockblox.c | 38 +- apps/plugins/snow.c | 19 - apps/plugins/text_viewer/tv_display.c | 5 - apps/screen_access.c | 16 - apps/screen_access.h | 13 - apps/screens.c | 4 - apps/status.c | 28 - apps/status.h | 13 - apps/tree.c | 8 +- docs/PLUGIN_API | 130 +- firmware/SOURCES | 7 - firmware/drivers/lcd-charcell.c | 599 --------- firmware/drivers/lcd-charset-player.c | 1321 ------------------- firmware/drivers/lcd-scroll.c | 17 +- firmware/export/lcd-charcell.h | 68 - firmware/export/lcd.h | 40 - firmware/export/scroll_engine.h | 4 - firmware/panic.c | 6 +- firmware/scroll_engine.c | 4 +- firmware/target/hosted/sdl/button-sdl.c | 1 - firmware/target/hosted/sdl/lcd-charcells.c | 206 --- firmware/target/hosted/sdl/lcd-charcells.h | 34 - firmware/target/hosted/sdl/system-sdl.c | 2 - manual/advanced_topics/main.tex | 52 +- manual/appendix/wps_tags.tex | 85 +- manual/plugins/text_viewer.tex | 2 - tools/player_unifont.c | 780 ----------- uisimulator/common/SOURCES | 5 - uisimulator/common/backlight-sim.c | 2 +- uisimulator/common/font-player.c | 548 -------- uisimulator/common/font-player.h | 27 - uisimulator/common/lcd-common.c | 2 +- uisimulator/common/lcd-playersim.c | 119 -- uisimulator/common/lcd-playersim.h | 38 - uisimulator/common/sim_icons.c | 312 ----- uisimulator/common/stubs.c | 20 - 77 files changed, 117 insertions(+), 6004 deletions(-) delete mode 100644 apps/gui/charcell/list.c delete mode 100644 apps/player/icons.c delete mode 100644 apps/plugins/lib/playergfx.c delete mode 100644 apps/plugins/lib/playergfx.h delete mode 100644 firmware/drivers/lcd-charcell.c delete mode 100644 firmware/drivers/lcd-charset-player.c delete mode 100644 firmware/export/lcd-charcell.h delete mode 100644 firmware/target/hosted/sdl/lcd-charcells.c delete mode 100644 firmware/target/hosted/sdl/lcd-charcells.h delete mode 100644 tools/player_unifont.c delete mode 100644 uisimulator/common/font-player.c delete mode 100644 uisimulator/common/font-player.h delete mode 100644 uisimulator/common/lcd-playersim.c delete mode 100644 uisimulator/common/lcd-playersim.h delete mode 100644 uisimulator/common/sim_icons.c diff --git a/apps/SOURCES b/apps/SOURCES index bf01dbcac4..6a0b817834 100644 --- a/apps/SOURCES +++ b/apps/SOURCES @@ -83,8 +83,6 @@ gui/line.c #ifdef HAVE_LCD_BITMAP gui/bitmap/list.c gui/bitmap/list-skinned.c -#else -gui/charcell/list.c #endif gui/option_select.c #ifdef HAVE_PITCHCONTROL @@ -127,10 +125,6 @@ gui/skin_engine/skin_touchsupport.c gui/backdrop.c #endif -#ifdef HAVE_LCD_CHARCELLS -player/icons.c -player/keyboard.c -#endif #ifdef HAVE_LCD_BITMAP recorder/bmp.c recorder/icons.c diff --git a/apps/features.txt b/apps/features.txt index 7b50b4026c..1c942a7fe2 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -231,10 +231,6 @@ disk_storage remote_button_hold #endif -#if defined(HAVE_LCD_CHARCELLS) -lcd_charcell -#endif - #if defined(HAVE_LCD_FLIP) lcd_flip #endif diff --git a/apps/filetypes.c b/apps/filetypes.c index 16a00a423f..a30f012e53 100644 --- a/apps/filetypes.c +++ b/apps/filetypes.c @@ -605,13 +605,6 @@ int filetype_list_viewers(const char* current_file) { struct simplelist_info info; struct cb_data data = { current_file }; -#ifndef HAVE_LCD_BITMAP - if (viewer_count == 0) - { - splash(HZ*2, ID2P(LANG_NO_VIEWERS)); - return PLUGIN_OK; - } -#endif simplelist_info_init(&info, str(LANG_ONPLAY_OPEN_WITH), viewer_count, &data); info.action_callback = openwith_action_callback; info.get_name = openwith_get_name; diff --git a/apps/gui/charcell/list.c b/apps/gui/charcell/list.c deleted file mode 100644 index cbee8b0d9d..0000000000 --- a/apps/gui/charcell/list.c +++ /dev/null @@ -1,112 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Jonathan Gordon - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -/* This file contains the code to draw the list widget on BITMAP LCDs. */ - -#include "config.h" -#include "lcd.h" -#include "font.h" -#include "button.h" -#include "string.h" -#include "settings.h" -#include "kernel.h" -#include "system.h" -#include "file.h" - -#include "list.h" -#include "screen_access.h" -#include "scrollbar.h" -#include "lang.h" -#include "sound.h" -#include "misc.h" - -void gui_synclist_scroll_stop(struct gui_synclist *lists) -{ - (void)lists; - FOR_NB_SCREENS(i) - { - screens[i].scroll_stop(); - } -} - -void list_draw(struct screen *display, struct gui_synclist *gui_list) -{ - bool draw_icons = (gui_list->callback_get_item_icon != NULL); - bool selected; - int i; - int start, end; - - display->set_viewport(NULL); - - display->clear_display(); - start = 0; - end = display->getnblines(); - - struct line_desc desc = { - .height = -1, - .text_color = 1, - .line_color = 1, - .line_end_color = 1, - .style = STYLE_DEFAULT - }; - - for (i = start; i < end; i++) - { - unsigned const char *s; - char entry_buffer[MAX_PATH]; - unsigned char *entry_name; - int current_item = gui_list->start_item[display->screen_type] + i; - - /* When there are less items to display than the - * current available space on the screen, we stop*/ - if(current_item >= gui_list->nb_items) - break; - s = gui_list->callback_get_item_name(current_item, - gui_list->data, - entry_buffer, - sizeof(entry_buffer)); - entry_name = P2STR(s); - - if (gui_list->show_selection_marker && - current_item >= gui_list->selected_item && - current_item < gui_list->selected_item + gui_list->selected_size) - selected = true; /* The selected item must be displayed scrolling */ - else - selected = false; - - desc.nlines = gui_list->selected_size, - desc.line = gui_list->selected_size > 1 ? i : 0, - desc.scroll = selected ? true : gui_list->scroll_all; - - if (draw_icons) - put_line(display, 0, i, &desc, "$i$i$t", - selected ? Icon_Cursor : Icon_NOICON, - gui_list->callback_get_item_icon(current_item, gui_list->data), - entry_name); - else - put_line(display, 0, i, &desc, "$i$t", - selected ? Icon_Cursor : Icon_NOICON, - entry_name); - } - - display->update_viewport(); - display->update(); -} diff --git a/apps/gui/icon.h b/apps/gui/icon.h index e095ccfc4c..88449c61ca 100644 --- a/apps/gui/icon.h +++ b/apps/gui/icon.h @@ -89,10 +89,6 @@ extern void screen_put_cursorxy(struct screen * screen, int x, int y, bool on); */ extern void screen_put_iconxy(struct screen * screen, int x, int y, enum themable_icons icon); -#ifdef HAVE_LCD_CHARCELLS -# define screen_put_icon(s, x, y, i) screen_put_iconxy(s, x, y, i) -# define screen_put_icon_with_offset(s, x, y, w, h, i) screen_put_icon(s, x, y, i) -#else /* For both of these, the icon will be placed in the center of the rectangle */ /* as above, but x,y are letter position, NOT PIXEL */ extern void screen_put_icon(struct screen * screen, @@ -101,23 +97,14 @@ extern void screen_put_icon(struct screen * screen, extern void screen_put_icon_with_offset(struct screen * display, int x, int y, int off_x, int off_y, enum themable_icons icon); -#endif - void icons_init(void); -#ifdef HAVE_LCD_CHARCELLS -# define CURSOR_CHAR 0xe10c -# define get_icon_width(a) 1 -# define get_icon_height(a) 1 /* needs to be verified */ -#else int get_icon_width(enum screen_type screen_type); int get_icon_height(enum screen_type screen_type); int get_icon_format(enum screen_type screen_type); -#endif -#if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) \ - && !defined(HAVE_LCD_CHARCELLS) +#if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) int get_icon_format(enum screen_type screen_type); #else # define get_icon_format(a) FORMAT_MONO diff --git a/apps/gui/line.c b/apps/gui/line.c index 2b1bec2c6b..ea6bcea93b 100644 --- a/apps/gui/line.c +++ b/apps/gui/line.c @@ -41,11 +41,7 @@ #endif -#ifdef HAVE_LCD_CHARCELLS -#define style_line(d, x, y, l) -#else static void style_line(struct screen *display, int x, int y, struct line_desc *line); -#endif static void put_text(struct screen *display, int x, int y, struct line_desc *line, const char *text, bool prevent_scroll, int text_skip_pixels); diff --git a/apps/gui/list.c b/apps/gui/list.c index 8533f93275..ce444cc9c2 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c @@ -279,13 +279,8 @@ static void gui_list_put_selection_on_screen(struct gui_synclist * gui_list, int bottom = MAX(0, gui_list->nb_items - nb_lines); int new_start_item = gui_list->start_item[screen]; int difference = gui_list->selected_item - gui_list->start_item[screen]; -#ifdef HAVE_LCD_CHARCELLS - const int scroll_limit_up = 0; - const int scroll_limit_down = 1; -#else const int scroll_limit_up = (nb_lines < gui_list->selected_size+2 ? 0:1); const int scroll_limit_down = (scroll_limit_up+gui_list->selected_size); -#endif if (gui_list->show_selection_marker == false) { diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 501d3a305a..7ee349b346 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -662,7 +662,6 @@ bool skin_has_sbs(enum screen_type screen, struct wps_data *data) */ int skin_wait_for_action(enum skinnable_screens skin, int context, int timeout) { - (void)skin; /* silence charcell warning */ int button = ACTION_NONE; #ifdef HAVE_LCD_BITMAP /* when the peak meter is enabled we want to have a diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index dce88e9c58..de7c1db372 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -1815,14 +1815,6 @@ static void skin_data_reset(struct wps_data *wps_data) wps_data->peak_meter_enabled = false; wps_data->wps_sb_tag = false; wps_data->show_sb_on_wps = false; -#else /* HAVE_LCD_CHARCELLS */ - /* progress bars */ - int i; - for (i = 0; i < 8; i++) - { - wps_data->wps_progress_pat[i] = 0; - } - wps_data->full_line_progressbar = false; #endif wps_data->wps_loaded = false; } diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 4415619b7e..e14c882dd9 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c @@ -97,10 +97,6 @@ get_child(OFFSETTYPE(struct skin_element**) children, int child) static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, struct skin_element *element, struct skin_viewport* skin_vp) { -#ifndef HAVE_LCD_BITMAP - (void)skin_vp; /* silence warnings */ - (void)info; -#endif struct wps_token *token = (struct wps_token *)SKINOFFSETTOPTR(skin_buffer, element->data); #ifdef HAVE_LCD_BITMAP @@ -832,14 +828,6 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode) int old_refresh_mode = refresh_mode; skin_buffer = get_skin_buffer(gwps->data); -#ifdef HAVE_LCD_CHARCELLS - int i; - for (i = 0; i < 8; i++) - { - if (data->wps_progress_pat[i] == 0) - data->wps_progress_pat[i] = display->get_locked_pattern(); - } -#endif viewport = SKINOFFSETTOPTR(skin_buffer, data->tree); skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 75c3203066..50704fd66e 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -37,9 +37,6 @@ #include "cuesheet.h" #include "replaygain.h" #include "core_alloc.h" -#ifdef HAVE_LCD_CHARCELLS -#include "hwcompat.h" -#endif #include "abrepeat.h" #include "lang.h" #include "misc.h" @@ -577,148 +574,6 @@ static struct mp3entry* get_mp3entry_from_offset(int offset, char **filename) return pid3; } -#ifdef HAVE_LCD_CHARCELLS -static void format_player_progress(struct gui_wps *gwps) -{ - struct wps_state *state = skin_get_global_state(); - struct screen *display = gwps->display; - unsigned char progress_pattern[7]; - int pos = 0; - int i; - - int elapsed, length; - if (LIKELY(state->id3)) - { - elapsed = state->id3->elapsed; - length = state->id3->length; - } - else - { - elapsed = 0; - length = 0; - } - - if (length) - pos = 36 * (elapsed + state->ff_rewind_count) / length; - - for (i = 0; i < 7; i++, pos -= 5) - { - if (pos <= 0) - progress_pattern[i] = 0x1fu; - else if (pos >= 5) - progress_pattern[i] = 0x00u; - else - progress_pattern[i] = 0x1fu >> pos; - } - - display->define_pattern(gwps->data->wps_progress_pat[0], progress_pattern); -} - -static void format_player_fullbar(struct gui_wps *gwps, char* buf, int buf_size) -{ - static const unsigned char numbers[10][4] = { - {0x0e, 0x0a, 0x0a, 0x0e}, /* 0 */ - {0x04, 0x0c, 0x04, 0x04}, /* 1 */ - {0x0e, 0x02, 0x04, 0x0e}, /* 2 */ - {0x0e, 0x02, 0x06, 0x0e}, /* 3 */ - {0x08, 0x0c, 0x0e, 0x04}, /* 4 */ - {0x0e, 0x0c, 0x02, 0x0c}, /* 5 */ - {0x0e, 0x08, 0x0e, 0x0e}, /* 6 */ - {0x0e, 0x02, 0x04, 0x08}, /* 7 */ - {0x0e, 0x0e, 0x0a, 0x0e}, /* 8 */ - {0x0e, 0x0e, 0x02, 0x0e} /* 9 */ - }; - - struct wps_state *state = skin_get_global_state(); - struct screen *display = gwps->display; - struct wps_data *data = gwps->data; - unsigned char progress_pattern[7]; - char timestr[10]; - int time; - int time_idx = 0; - int pos = 0; - int pat_idx = 1; - int digit, i, j; - bool softchar; - - int elapsed, length; - if (LIKELY(state->id3)) - { - elapsed = state->id3->elapsed; - length = state->id3->length; - } - else - { - elapsed = 0; - length = 0; - } - - if (buf_size < 34) /* worst case: 11x UTF-8 char + \0 */ - return; - - time = elapsed + state->ff_rewind_count; - if (length) - pos = 55 * time / length; - - memset(timestr, 0, sizeof(timestr)); - format_time(timestr, sizeof(timestr)-2, time); - timestr[strlen(timestr)] = ':'; /* always safe */ - - for (i = 0; i < 11; i++, pos -= 5) - { - softchar = false; - memset(progress_pattern, 0, sizeof(progress_pattern)); - - if ((digit = timestr[time_idx])) - { - softchar = true; - digit -= '0'; - - if (timestr[time_idx + 1] == ':') /* ones, left aligned */ - { - memcpy(progress_pattern, numbers[digit], 4); - time_idx += 2; - } - else /* tens, shifted right */ - { - for (j = 0; j < 4; j++) - progress_pattern[j] = numbers[digit][j] >> 1; - - if (time_idx > 0) /* not the first group, add colon in front */ - { - progress_pattern[1] |= 0x10u; - progress_pattern[3] |= 0x10u; - } - time_idx++; - } - - if (pos >= 5) - progress_pattern[5] = progress_pattern[6] = 0x1fu; - } - - if (pos > 0 && pos < 5) - { - softchar = true; - progress_pattern[5] = progress_pattern[6] = (~0x1fu >> pos) & 0x1fu; - } - - if (softchar && pat_idx < 8) - { - display->define_pattern(data->wps_progress_pat[pat_idx], - progress_pattern); - buf = utf8encode(data->wps_progress_pat[pat_idx], buf); - pat_idx++; - } - else if (pos <= 0) - buf = utf8encode(' ', buf); - else - buf = utf8encode(0xe115, buf); /* 2/7 _ */ - } - *buf = '\0'; -} - -#endif /* HAVE_LCD_CHARCELLS */ - /* Don't inline this; it was broken out of get_token_value to reduce stack * usage. */ @@ -1351,34 +1206,6 @@ const char *get_token_value(struct gui_wps *gwps, return "-"; #endif -#ifdef HAVE_LCD_CHARCELLS - case SKIN_TOKEN_PROGRESSBAR: - { - char *end; - format_player_progress(gwps); - end = utf8encode(data->wps_progress_pat[0], buf); - *end = '\0'; - return buf; - } - - case SKIN_TOKEN_PLAYER_PROGRESSBAR: - if(is_new_player()) - { - /* we need 11 characters (full line) for - progress-bar */ - strlcpy(buf, " ", buf_size); - format_player_fullbar(gwps,buf,buf_size); - DEBUGF("bar='%s'\n",buf); - } - else - { - /* Tell the user if we have an OldPlayer */ - strlcpy(buf, " ", buf_size); - } - return buf; -#endif - - #ifdef HAVE_LCD_BITMAP /* peakmeter */ case SKIN_TOKEN_PEAKMETER_LEFT: diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h index e7996b0530..caf43b21cb 100644 --- a/apps/gui/skin_engine/wps_internals.h +++ b/apps/gui/skin_engine/wps_internals.h @@ -374,9 +374,6 @@ struct wps_data bool peak_meter_enabled; bool wps_sb_tag; bool show_sb_on_wps; -#else /*HAVE_LCD_CHARCELLS */ - unsigned short wps_progress_pat[8]; - bool full_line_progressbar; #endif bool wps_loaded; }; diff --git a/apps/gui/splash.c b/apps/gui/splash.c index 2608a2e02e..56df77d57a 100644 --- a/apps/gui/splash.c +++ b/apps/gui/splash.c @@ -38,12 +38,6 @@ #define RECT_SPACING 2 #define SPLASH_MEMORY_INTERVAL (HZ) -#else /* HAVE_LCD_CHARCELLS */ - -#define MAXLINES 2 -#define MAXBUFFER 64 -#define RECT_SPACING 0 - #endif @@ -68,12 +62,6 @@ static void splash_internal(struct screen * screen, const char *fmt, va_list ap) screen->set_viewport(&vp); screen->getstringsize(" ", &space_w, &h); -#else /* HAVE_LCD_CHARCELLS */ - vp.width = screen->lcdwidth; - vp.height = screen->lcdheight; - - space_w = h = 1; - screen->double_height (false); #endif y = h; @@ -178,9 +166,6 @@ static void splash_internal(struct screen * screen, const char *fmt, va_list ap) /* prepare putting the text */ y = RECT_SPACING; -#else /* HAVE_LCD_CHARCELLS */ - y = 0; /* vertical centering on 2 lines would be silly */ - screen->clear_display(); #endif /* print the message to screen */ @@ -188,8 +173,6 @@ static void splash_internal(struct screen * screen, const char *fmt, va_list ap) { #ifdef HAVE_LCD_BITMAP screen->putsxy(0, y, lines[i]); -#else - screen->puts(0, y, lines[i]); #endif } screen->update_viewport(); diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index 30dad95509..90d04a7930 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -191,12 +191,6 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw, struct vi if (!display) return; -#ifdef HAVE_LCD_CHARCELLS - int val; - (void)force_redraw; /* The Player always has "redraw" */ - (void)vp; -#endif /* HAVE_LCD_CHARCELLS */ - bar->info.battlevel = battery_level(); #ifdef HAVE_USB_POWER bar->info.usb_inserted = usb_inserted(); @@ -359,38 +353,6 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw, struct vi } #endif /* HAVE_LCD_BITMAP */ - -#ifdef HAVE_LCD_CHARCELLS - display->icon(ICON_BATTERY, bar->info.battery_state); - - if (bar->info.batt_charge_step > -1) - val = bar->info.batt_charge_step; - else - val = (bar->info.battlevel * 3 + 50) / 100; - display->icon(ICON_BATTERY_1, val >= 1); - display->icon(ICON_BATTERY_2, val >= 2); - display->icon(ICON_BATTERY_3, val >= 3); - - val = 10 * (bar->info.volume - sound_min(SOUND_VOLUME)) - / (sound_max(SOUND_VOLUME) - sound_min(SOUND_VOLUME)); - display->icon(ICON_VOLUME, true); - display->icon(ICON_VOLUME_1, val >= 1); - display->icon(ICON_VOLUME_2, val >= 3); - display->icon(ICON_VOLUME_3, val >= 5); - display->icon(ICON_VOLUME_4, val >= 7); - display->icon(ICON_VOLUME_5, val >= 9); - - display->icon(ICON_PLAY, current_playmode() == STATUS_PLAY); - display->icon(ICON_PAUSE, current_playmode() == STATUS_PAUSE); - - display->icon(ICON_REPEAT, global_settings.repeat_mode != REPEAT_OFF); - display->icon(ICON_1, global_settings.repeat_mode == REPEAT_ONE); - - display->icon(ICON_RECORD, record); - display->icon(ICON_AUDIO, audio); - display->icon(ICON_PARAM, param); - display->icon(ICON_USB, usb); -#endif /* HAVE_LCD_CHARCELLS */ } #ifdef HAVE_LCD_BITMAP diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c index 1b6f9c3b2a..dd1d97df3c 100644 --- a/apps/gui/usb_screen.c +++ b/apps/gui/usb_screen.c @@ -269,12 +269,7 @@ void gui_usb_screen_run(bool early_usb) * generic cleanup here */ screen->set_viewport(NULL); screen->scroll_stop(); -#ifdef HAVE_LCD_CHARCELLS - /* Quick fix. Viewports should really be enabled proper for charcell */ - viewport_set_defaults(&usb_screen_vps_ar[i].parent, i); -#else usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]); -#endif } /* update the UI before disabling fonts, this maximizes the propability @@ -327,10 +322,6 @@ void gui_usb_screen_run(bool early_usb) touchscreen_set_mode(old_mode); #endif -#ifdef HAVE_LCD_CHARCELLS - status_set_usb(false); -#endif /* HAVE_LCD_CHARCELLS */ - #ifdef HAVE_LCD_BITMAP if(!early_usb) { diff --git a/apps/gui/viewport.h b/apps/gui/viewport.h index ecbd325946..c4b90aa64c 100644 --- a/apps/gui/viewport.h +++ b/apps/gui/viewport.h @@ -69,10 +69,6 @@ bool viewport_point_within_vp(const struct viewport *vp, const int x, const int y); #endif -#else /* HAVE_LCD_CHARCELL */ -#define viewportmanager_theme_changed(a) -#define viewportmanager_theme_enable(...) -#define viewportmanager_theme_undo(...) #endif #endif /* __PCTOOL__ */ diff --git a/apps/gui/wps.c b/apps/gui/wps.c index a930edaded..b417f82922 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -232,11 +232,6 @@ static bool update_onvol_change(enum screen_type screen) { skin_update(WPS, screen, SKIN_REFRESH_NON_STATIC); -#ifdef HAVE_LCD_CHARCELLS - splashf(0, "Vol: %3d dB", - sound_val2phys(SOUND_VOLUME, global_settings.volume)); - return true; -#endif return false; } @@ -401,10 +396,6 @@ bool ffwd_rew(int button) #if (CONFIG_CODEC != SWCODEC) if (!skin_get_global_state()->paused) audio_resume(); -#endif -#ifdef HAVE_LCD_CHARCELLS - FOR_NB_SCREENS(i) - skin_update(WPS, i, SKIN_REFRESH_ALL); #endif exit = true; break; @@ -741,11 +732,6 @@ long gui_wps_show(void) long last_left = 0, last_right = 0; struct wps_state *state = skin_get_global_state(); -#ifdef HAVE_LCD_CHARCELLS - status_set_audio(true); - status_set_param(false); -#endif - #ifdef AB_REPEAT_ENABLE ab_repeat_init(); ab_reset_markers(); @@ -833,10 +819,6 @@ long gui_wps_show(void) break; case ACTION_WPS_BROWSE: -#ifdef HAVE_LCD_CHARCELLS - status_set_record(false); - status_set_audio(false); -#endif gwps_leave_wps(); return GO_TO_PREVIOUS_BROWSER; break; @@ -1146,10 +1128,6 @@ long gui_wps_show(void) } if (exit) { -#ifdef HAVE_LCD_CHARCELLS - status_set_record(false); - status_set_audio(false); -#endif #if CONFIG_CODEC != SWCODEC if (global_settings.fade_on_stop) fade(false, true); diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c index b754d5e477..45638b7076 100644 --- a/apps/gui/yesno.c +++ b/apps/gui/yesno.c @@ -160,12 +160,7 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message, yn[i].result_message[YESNO_NO]=no_message; yn[i].display=&screens[i]; yn[i].vp = &vp[i]; -#ifdef HAVE_LCD_CHARCELLS - /* Quick fix. Viewports should really be enabled proper for charcell */ - viewport_set_defaults(yn[i].vp, i); -#else viewportmanager_theme_enable(i, true, yn[i].vp); -#endif screens[i].scroll_stop(); gui_yesno_draw(&(yn[i])); } diff --git a/apps/logfdisp.c b/apps/logfdisp.c index 20d737e924..0c5f63e8dc 100644 --- a/apps/logfdisp.c +++ b/apps/logfdisp.c @@ -209,13 +209,6 @@ bool logfdisplay(void) return false; } -#else /* HAVE_LCD_BITMAP */ -bool logfdisplay(void) - -{ - /* TODO: implement a browser for charcell bitmaps */ - return false; -} #endif /* HAVE_LCD_BITMAP */ bool logfdump(void) diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index 7f94571226..5e9b935937 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c @@ -125,11 +125,7 @@ static int show_credits(void) return 0; } -#ifdef HAVE_LCD_CHARCELLS -#define SIZE_FMT "%s%s" -#else #define SIZE_FMT "%s %s" -#endif struct info_data { @@ -500,29 +496,7 @@ MAKE_MENU(info_menu, ID2P(LANG_SYSTEM), 0, Icon_System_menu, /***********************************/ /* MAIN MENU */ - -#ifdef HAVE_LCD_CHARCELLS -static int mainmenu_callback(int action, - const struct menu_item_ex *this_item, - struct gui_synclist *lists) -{ - (void)this_item; - (void)lists; - switch (action) - { - case ACTION_ENTER_MENUITEM: - status_set_param(true); - break; - case ACTION_EXIT_MENUITEM: - status_set_param(false); - break; - } - return action; -} -#else -#define mainmenu_callback NULL -#endif -MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback, +MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), NULL, Icon_Submenu_Entered, &sound_settings, &playback_settings, diff --git a/apps/onplay.c b/apps/onplay.c index f88953ce62..9226f32f4c 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -180,15 +180,7 @@ static int bookmark_menu_callback(int action, else if (!bookmark_is_bookmarkable_state() && !bookmark_exists()) return ACTION_EXIT_MENUITEM; break; -#ifdef HAVE_LCD_CHARCELLS - case ACTION_ENTER_MENUITEM: - status_set_param(true); - break; -#endif case ACTION_EXIT_MENUITEM: -#ifdef HAVE_LCD_CHARCELLS - status_set_param(false); -#endif settings_save(); break; } diff --git a/apps/player/icons.c b/apps/player/icons.c deleted file mode 100644 index dc804560f2..0000000000 --- a/apps/player/icons.c +++ /dev/null @@ -1,110 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 Jonathan Gordon - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include "lcd.h" -#include "icon.h" - -#ifdef HAVE_LCD_CHARCELLS -/* For the moment, charcell cant load custom maps... */ - -enum old_values{ - old_Icon_Queued = 'Q', - old_Icon_Moving = 'M', - old_Icon_Unknown = 0xe100, - old_Icon_Bookmark, - old_Icon_Plugin, - old_Icon_Folder, - old_Icon_Firmware, - old_Icon_Language, - old_Icon_Audio, - old_Icon_Wps, - old_Icon_Playlist, - old_Icon_Text, - old_Icon_Config, -}; - -static const unsigned short icons[Icon_Last_Themeable] = { - [0 ... Icon_Last_Themeable-1] = ' ', - - [Icon_Audio] = old_Icon_Audio, - [Icon_Folder] = old_Icon_Folder, - [Icon_Playlist] = old_Icon_Playlist, - [Icon_Cursor] = CURSOR_CHAR, - [Icon_Wps] = old_Icon_Wps, - [Icon_Firmware] = old_Icon_Firmware, - [Icon_Language] = old_Icon_Language, - [Icon_Config] = old_Icon_Config, - [Icon_Plugin] = old_Icon_Plugin, - [Icon_Bookmark] = old_Icon_Bookmark, - [Icon_Queued] = old_Icon_Queued, - [Icon_Moving] = old_Icon_Moving, - - /* - [Icon_Keyboard] = , - [Icon_Font] = , - [Icon_Preset] = , - [Icon_Reverse_Cursor] = , - [Icon_Questionmark] = , - [Icon_Menu_setting] = , - [Icon_Menu_functioncall] = , - [Icon_Submenu] = , - [Icon_Submenu_Entered] = , - [Icon_Recording] = , - [Icon_Voice] = , - [Icon_General_settings_menu] = , - [Icon_System_menu] = , - [Icon_Playback_menu] = , - [Icon_Display_menu] = , - [Icon_Remote_Display_menu] = , - [Icon_Radio_screen] = , - [Icon_file_view_menu] = , - [Icon_EQ] = , - [Icon_Rockbox] = , - */ -}; - -/* as above, but x,y are letter position, NOT PIXEL */ -extern void screen_put_iconxy(struct screen * screen, - int x, int y, enum themable_icons icon) -{ - if (icon <= Icon_NOICON) - screen->putchar(x, y, ' '); - else if (icon >= Icon_Last_Themeable) - screen->putchar(x, y, old_Icon_Unknown); - else - screen->putchar(x, y, icons[icon]); -} - -void screen_put_cursorxy(struct screen * display, int x, int y, bool on) -{ - screen_put_iconxy(display, x, y, on?Icon_Cursor:-1); - -} - -void icons_init(void) -{ -} - - - - - - -#endif diff --git a/apps/plugin.c b/apps/plugin.c index 959232ddb7..0ab73281ee 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -195,16 +195,6 @@ static const struct plugin_api rockbox_api = { lcd_putsf, lcd_puts_scroll, lcd_scroll_stop, -#ifdef HAVE_LCD_CHARCELLS - lcd_define_pattern, - lcd_get_locked_pattern, - lcd_unlock_pattern, - lcd_putc, - lcd_put_cursor, - lcd_remove_cursor, - lcd_icon, - lcd_double_height, -#else /* HAVE_LCD_BITMAP */ &lcd_static_framebuffer[0][0], lcd_set_viewport, lcd_set_framebuffer, @@ -270,7 +260,6 @@ static const struct plugin_api rockbox_api = { font_get_width, screen_clear_area, gui_scrollbar_draw, -#endif /* HAVE_LCD_BITMAP */ get_codepage_name, #ifdef HAVE_REMOTE_LCD diff --git a/apps/plugin.h b/apps/plugin.h index ecc662cb7f..8584d45fa7 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -205,16 +205,6 @@ struct plugin_api { void (*lcd_putsf)(int x, int y, const unsigned char *fmt, ...); bool (*lcd_puts_scroll)(int x, int y, const unsigned char* string); void (*lcd_scroll_stop)(void); -#ifdef HAVE_LCD_CHARCELLS - void (*lcd_define_pattern)(unsigned long ucs, const char *pattern); - unsigned long (*lcd_get_locked_pattern)(void); - void (*lcd_unlock_pattern)(unsigned long ucs); - void (*lcd_putc)(int x, int y, unsigned long ucs); - void (*lcd_put_cursor)(int x, int y, unsigned long ucs); - void (*lcd_remove_cursor)(void); - void (*lcd_icon)(int icon, bool enable); - void (*lcd_double_height)(bool on); -#else /* HAVE_LCD_BITMAP */ fb_data* lcd_framebuffer; void (*lcd_set_viewport)(struct viewport* vp); void (*lcd_set_framebuffer)(fb_data *fb); @@ -300,7 +290,6 @@ struct plugin_api { int width, int height, int items, int min_shown, int max_shown, unsigned flags); -#endif /* HAVE_LCD_BITMAP */ const char* (*get_codepage_name)(int cp); #ifdef HAVE_REMOTE_LCD diff --git a/apps/plugins/credits.c b/apps/plugins/credits.c index 6e993b5468..593b54277e 100644 --- a/apps/plugins/credits.c +++ b/apps/plugins/credits.c @@ -27,69 +27,6 @@ static const char* const credits[] = { #include "credits.raw" /* generated list of names from docs/CREDITS */ }; -#ifdef HAVE_LCD_CHARCELLS - -static void roll_credits(void) -{ - int numnames = sizeof(credits)/sizeof(char*); - int curr_name = 0; - int curr_len = rb->utf8length(credits[0]); - int curr_index = 0; - int curr_line = 0; - int name, len, new_len, line, x; - - while (1) - { - rb->lcd_clear_display(); - - name = curr_name; - x = -curr_index; - len = curr_len; - line = curr_line; - - while (x < 11) - { - int x2; - - if (x < 0) - rb->lcd_puts(0, line, - credits[name] + rb->utf8seek(credits[name], -x)); - else - rb->lcd_puts(x, line, credits[name]); - - if (++name >= numnames) - break; - - line ^= 1; - - x2 = x + len/2; - if ((unsigned)x2 < 11) - rb->lcd_putc(x2, line, '*'); - - new_len = rb->utf8length(credits[name]); - x += MAX(len/2 + 2, len - new_len/2 + 1); - len = new_len; - } - rb->lcd_update(); - - /* abort on keypress */ - if(rb->action_userabort(HZ/8)) - return; - - if (++curr_index >= curr_len) - { - if (++curr_name >= numnames) - break; - new_len = rb->utf8length(credits[curr_name]); - curr_index -= MAX(curr_len/2 + 2, curr_len - new_len/2 + 1); - curr_len = new_len; - curr_line ^= 1; - } - } -} - -#else - static bool stop_autoscroll(int action) { switch (action) @@ -362,8 +299,6 @@ static void roll_credits(void) } } -#endif - enum plugin_status plugin_start(const void* parameter) { (void)parameter; @@ -372,9 +307,6 @@ enum plugin_status plugin_start(const void* parameter) backlight_ignore_timeout(); rb->show_logo(); -#ifdef HAVE_LCD_CHARCELLS - rb->lcd_double_height(false); -#endif /* Show the logo for about 3 secs allowing the user to stop */ if(!rb->action_userabort(3*HZ)) diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c index 4cd314a035..29d2ba2fc1 100644 --- a/apps/plugins/cube.c +++ b/apps/plugins/cube.c @@ -22,7 +22,6 @@ ***************************************************************************/ #include "plugin.h" #include "fixedpoint.h" -#include "lib/playergfx.h" #include "lib/pluginlib_exit.h" #if LCD_DEPTH > 1 #include "lib/mylcd.h" /* MYLCD_CFG_RB_XLCD or MYLCD_CFG_PGFX */ @@ -746,8 +745,6 @@ static void cleanup(void) { #ifdef USEGSLIB grey_release(); -#elif defined HAVE_LCD_CHARCELLS - pgfx_release(); #endif } @@ -797,13 +794,6 @@ enum plugin_status plugin_start(const void* parameter) grey_setfont(FONT_SYSFIXED); #endif rb->lcd_setfont(FONT_SYSFIXED); -#else /* LCD_CHARCELLS */ - if (!pgfx_init(4, 2)) - { - rb->splash(HZ*2, "Old LCD :("); - return PLUGIN_OK; - } - pgfx_display(0, 0); #endif atexit(cleanup); diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c index fab409cc14..294bee8f5b 100644 --- a/apps/plugins/flipit.c +++ b/apps/plugins/flipit.c @@ -595,75 +595,6 @@ static void draw_info_panel(void) GRID_TOP + 4*(TK_HEIGHT+TK_SPACE) + 2, s ); } -#else /* HAVE_LCD_CHARCELLS */ - -static const unsigned char tk_pat[4][7] = { - { 0x0e, 0x11, 0x0e, 0x00, 0x0e, 0x11, 0x0e }, /* white - white */ - { 0x0e, 0x11, 0x0e, 0x00, 0x0e, 0x1f, 0x0e }, /* white - black */ - { 0x0e, 0x1f, 0x0e, 0x00, 0x0e, 0x11, 0x0e }, /* black - white */ - { 0x0e, 0x1f, 0x0e, 0x00, 0x0e, 0x1f, 0x0e } /* black - black */ -}; - -static unsigned char cur_pat[7]; -static unsigned long gfx_chars[5]; - -static void release_gfx(void) -{ - int i; - - for (i = 0; i < 5; i++) - if (gfx_chars[i]) - rb->lcd_unlock_pattern(gfx_chars[i]); -} - -static bool init_gfx(void) -{ - int i; - - for (i = 0; i < 5; i++) { - if ((gfx_chars[i] = rb->lcd_get_locked_pattern()) == 0) { - release_gfx(); - return false; - } - } - for (i = 0; i < 4; i++) - rb->lcd_define_pattern(gfx_chars[i], tk_pat[i]); - return true; -} - -/* draw a spot at the coordinates (x,y), range of p is 0-19 */ -static void draw_spot(int p) -{ - if ((p/5) & 1) - p -= 5; - - rb->lcd_putc (p%5, p/10, gfx_chars[2*spots[p]+spots[p+5]]); -} - -/* draw the cursor at the current cursor position */ -static void draw_cursor(void) -{ - if ((cursor_pos/5) & 1) { - rb->memcpy( cur_pat, tk_pat[2*spots[cursor_pos-5]+spots[cursor_pos]], 7 ); - cur_pat[4] ^= 0x15; - cur_pat[6] ^= 0x11; - } - else { - rb->memcpy( cur_pat, tk_pat[2*spots[cursor_pos]+spots[cursor_pos+5]], 7 ); - cur_pat[0] ^= 0x15; - cur_pat[2] ^= 0x11; - } - rb->lcd_define_pattern(gfx_chars[4], cur_pat); - rb->lcd_putc( cursor_pos%5, cursor_pos/10, gfx_chars[4] ); -} - -/* draw the info panel ... duh */ -static void draw_info_panel(void) -{ - rb->lcd_puts( 6, 0, "Flips" ); - rb->lcd_putsf( 6, 1, "%d", moves ); -} - #endif /* LCD */ /* clear the cursor where it is */ @@ -978,9 +909,6 @@ enum plugin_status plugin_start(const void* parameter) #endif rb->lcd_update(); -#else /* HAVE_LCD_CHARCELLS */ - if (!init_gfx()) - return PLUGIN_ERROR; #endif rb->button_get_w_tmo(HZ*3); @@ -995,8 +923,5 @@ enum plugin_status plugin_start(const void* parameter) rb->srand(*rb->current_tick); rc = flipit_loop(); -#ifdef HAVE_LCD_CHARCELLS - release_gfx(); -#endif return rc; } diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index 8cf4d67f3e..e7529895ac 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c @@ -66,10 +66,6 @@ /* Original graphics is only 1bpp so it should be portable * to most targets. But for now, only support the simple ones. */ -#ifndef HAVE_LCD_BITMAP - #error INVADROX: Unsupported LCD -#endif - #if (LCD_DEPTH < 2) #error INVADROX: Unsupported LCD #endif diff --git a/apps/plugins/jackpot.c b/apps/plugins/jackpot.c index b380e85180..26f8f47e8f 100644 --- a/apps/plugins/jackpot.c +++ b/apps/plugins/jackpot.c @@ -30,24 +30,7 @@ const struct button_mapping* plugin_contexts[]={pla_main_ctx}; #define NB_PICTURES 9 #define NB_SLOTS 3 -#ifdef HAVE_LCD_CHARCELLS -#define PICTURE_ROTATION_STEPS 7 -static unsigned char jackpot_slots_patterns[]={ - 0x00, 0x0A, 0x1F, 0x1F, 0x1F, 0x0e, 0x04, /* (+00)Heart */ - 0x00, 0x04, 0x0E, 0x1F, 0x1F, 0x04, 0x0E, /* (+07)Spade */ - 0x00, 0x04, 0x0E, 0x1F, 0x0E, 0x04, 0x00, /* (+14)Diamond */ - 0x00, 0x15, 0x0E, 0x1F, 0x0E, 0x15, 0x00, /* (+21)Club */ - 0x03, 0x04, 0x0e, 0x1F, 0x1F, 0x1F, 0x0e, /* (+28)Cherry */ - 0x00, 0x04, 0x04, 0x1F, 0x04, 0x0E, 0x1F, /* (+35)Cross */ - 0x04, 0x0E, 0x15, 0x04, 0x0A, 0x0A, 0x11, /* (+42)Man */ - 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, /* (+49)Square */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* (+56)Empty */ - 0x00, 0x0A, 0x1F, 0x1F, 0x1F, 0x0e, 0x04 /* (+63)Heart */ -}; -static unsigned long char_patterns[NB_SLOTS]; -#define SLEEP_TIME (HZ/24) -#else /* bitmaps LCDs */ - +#ifdef HAVE_LCD_BITMAP #define PICTURE_HEIGHT (BMPHEIGHT_jackpot_slots/(NB_PICTURES+1)) #if NB_SCREENS==1 #define PICTURE_ROTATION_STEPS PICTURE_HEIGHT @@ -72,7 +55,7 @@ const struct picture jackpot_pictures[]={ }; #define SLEEP_TIME (HZ/200) -#endif /* HAVE_LCD_CHARCELLS */ +#endif /* HAVE_LCD_BITMAP */ struct jackpot { @@ -92,29 +75,9 @@ struct jackpot int money; }; -#ifdef HAVE_LCD_CHARCELLS -static void patterns_init(struct screen* display) -{ - int i; - for(i=0;iget_locked_pattern(); -} - -static void patterns_deinit(struct screen* display) -{ - /* Restore the old pattern */ - int i; - for(i=0;iunlock_pattern(char_patterns[i]); -} -#endif /* HAVE_LCD_CHARCELLS */ - /*Call when the program exit*/ static void jackpot_exit(void) { -#ifdef HAVE_LCD_CHARCELLS - patterns_deinit(rb->screens[SCREEN_MAIN]); -#endif /* HAVE_LCD_CHARCELLS */ } static void jackpot_init(struct jackpot* game) @@ -168,47 +131,25 @@ static void jackpot_display_slot_machine(struct jackpot* game, struct screen* di char str[20]; int i; bool changes=false; -#ifdef HAVE_LCD_CHARCELLS - display->putchar(0, 0, '['); -#else const struct picture* picture= &(jackpot_pictures[display->screen_type]); int pos_x=(display->getwidth()-NB_SLOTS*(picture->width+1))/2; int pos_y=(display->getheight()-(picture->slide_height))/2; -#endif /* HAVE_LCD_CHARCELLS */ for(i=0;islot_state[i]*7)/PICTURE_ROTATION_STEPS; -#else int state_y= (picture->slide_height*game->slot_state[i])/PICTURE_ROTATION_STEPS; -#endif /* HAVE_LCD_CHARCELLS */ int previous_state_y=game->state_y[display->screen_type][i]; if(state_y==previous_state_y) continue;/*no need to update the picture as it's the same as previous displayed one*/ changes=true; game->state_y[display->screen_type][i]=state_y; -#ifdef HAVE_LCD_CHARCELLS - char* current_pattern=&(jackpot_slots_patterns[state_y]); - display->define_pattern(char_patterns[i], - current_pattern); - display->putchar(i+1, 0, char_patterns[i]); -#else vertical_picture_draw_part(display, picture, state_y, pos_x, pos_y); pos_x+=(picture->width+1); -#endif } if(changes){ -#ifdef HAVE_LCD_CHARCELLS - rb->snprintf(str,sizeof(str),"$%d", game->money); - display->putchar(++i, 0, ']'); - display->puts(++i, 0, str); -#else rb->snprintf(str,sizeof(str),"money : $%d", game->money); display->puts(0, 0, str); -#endif display->update(); } } @@ -216,9 +157,6 @@ static void jackpot_display_slot_machine(struct jackpot* game, struct screen* di static void jackpot_info_message(struct screen* display, char* message) { -#ifdef HAVE_LCD_CHARCELLS - display->puts_scroll(0,1,message); -#else int xpos, ypos; int message_height, message_width; display->getstringsize(message, &message_width, &message_height); @@ -228,7 +166,6 @@ static void jackpot_info_message(struct screen* display, char* message) message_height); display->putsxy(xpos,ypos,message); display->update(); -#endif /* HAVE_LCD_CHARCELLS */ } static void jackpot_print_turn_result(struct jackpot* game, @@ -299,9 +236,6 @@ enum plugin_status plugin_start(const void* parameter) (void)parameter; atexit(jackpot_exit); rb->srand(*rb->current_tick); -#ifdef HAVE_LCD_CHARCELLS - patterns_init(rb->screens[SCREEN_MAIN]); -#endif /* HAVE_LCD_CHARCELLS */ jackpot_init(&game); FOR_NB_SCREENS(i){ diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES index 82b9fba4a5..effc076eb7 100644 --- a/apps/plugins/lib/SOURCES +++ b/apps/plugins/lib/SOURCES @@ -33,10 +33,6 @@ overlay.c profile_plugin.c #endif -#ifdef HAVE_LCD_CHARCELLS -playergfx.c -#endif - #ifdef HAVE_LCD_BITMAP #ifdef CPU_ARM diff --git a/apps/plugins/lib/display_text.c b/apps/plugins/lib/display_text.c index 5d13fc678d..90712a649f 100644 --- a/apps/plugins/lib/display_text.c +++ b/apps/plugins/lib/display_text.c @@ -22,11 +22,7 @@ #include "plugin.h" #include "display_text.h" -#ifdef HAVE_LCD_CHARCELLS -#define MARGIN 0 -#else #define MARGIN 5 -#endif static bool wait_key_press(void) { diff --git a/apps/plugins/lib/mylcd.h b/apps/plugins/lib/mylcd.h index e363111c71..a543d60890 100644 --- a/apps/plugins/lib/mylcd.h +++ b/apps/plugins/lib/mylcd.h @@ -32,15 +32,10 @@ * targets. On color, mylcd_ub_update_XXXX refer to the proper update * functions, otherwise they are no-ops. * - * lib/playergfx.h or lib/grey.h should be included before including this + * lib/grey.h should be included before including this * header. For bitmap LCD's, defaults to rb->lcd_XXXX otherwise. */ -#if defined (HAVE_LCD_CHARCELLS) && defined(__PGFX_H__) -#define MYLCD_CFG_PGFX /* using PGFX */ -#define mylcd_(fn) pgfx_##fn -#define mylcd_ub_(fn) pgfx_##fn - -#elif defined (HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && defined(__GREY_H__) +#if defined (HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && defined(__GREY_H__) #define MYLCD_CFG_GREYLIB /* using greylib */ #define mylcd_(fn) grey_##fn #define myxlcd_(fn) grey_##fn diff --git a/apps/plugins/lib/osd.h b/apps/plugins/lib/osd.h index b5bf63d9fe..1c2752139a 100644 --- a/apps/plugins/lib/osd.h +++ b/apps/plugins/lib/osd.h @@ -23,10 +23,6 @@ #ifndef OSD_H #define OSD_H -#ifndef HAVE_LCD_BITMAP -#error OSD requires bitmapped LCD -#endif - /* At this time: assumes use of the default viewport for normal drawing */ /* Callback implemented by user. Paramters are OSD vp-relative coordinates */ diff --git a/apps/plugins/lib/playergfx.c b/apps/plugins/lib/playergfx.c deleted file mode 100644 index b2ba71351f..0000000000 --- a/apps/plugins/lib/playergfx.c +++ /dev/null @@ -1,526 +0,0 @@ -/*************************************************************************** -* __________ __ ___. -* Open \______ \ ____ ____ | | _\_ |__ _______ ___ -* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / -* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < -* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ -* \/ \/ \/ \/ \/ -* $Id$ -* -* Bitmap graphics on player LCD! -* -* Copyright (C) 2005 Jens Arnold -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -* KIND, either express or implied. -* -****************************************************************************/ - -#include "plugin.h" - -#include "playergfx.h" - -/*** globals ***/ - -static int char_width; -static int char_height; -static int pixel_height; -static int pixel_width; -static unsigned long gfx_chars[8]; -static unsigned char gfx_buffer[56]; -static int drawmode = DRMODE_SOLID; - -/*** Special functions ***/ - -/* library init */ -bool pgfx_init(int cwidth, int cheight) -{ - int i; - - if (((unsigned) cwidth * (unsigned) cheight) > 8 || (unsigned) cheight > 2) - return false; - - char_width = cwidth; - char_height = cheight; - pixel_height = 7 * char_height; - pixel_width = 5 * char_width; - - for (i = 0; i < cwidth * cheight; i++) - { - if ((gfx_chars[i] = rb->lcd_get_locked_pattern()) == 0) - { - pgfx_release(); - return false; - } - } - - return true; -} - -/* library deinit */ -void pgfx_release(void) -{ - int i; - - for (i = 0; i < 8; i++) - if (gfx_chars[i]) - rb->lcd_unlock_pattern(gfx_chars[i]); -} - -/* place the display */ -void pgfx_display(int cx, int cy) -{ - int i, j; - int width = MIN(char_width, 11 - cx); - int height = MIN(char_height, 2 - cy); - - for (i = 0; i < width; i++) - for (j = 0; j < height; j++) - rb->lcd_putc(cx + i, cy + j, gfx_chars[char_height * i + j]); -} - -void pgfx_display_block(int cx, int cy, int x, int y) -{ - rb->lcd_putc(cx, cy, gfx_chars[char_height * x + y]); -} - - -/*** Update functions ***/ - -void pgfx_update(void) -{ - int i; - - for (i = 0; i < char_width * char_height; i++) - rb->lcd_define_pattern(gfx_chars[i], gfx_buffer + 7 * i); - - rb->lcd_update(); -} - -/*** Parameter handling ***/ - -void pgfx_set_drawmode(int mode) -{ - drawmode = mode & (DRMODE_SOLID|DRMODE_INVERSEVID); -} - -int pgfx_get_drawmode(void) -{ - return drawmode; -} - -/*** Low-level drawing functions ***/ - -static void setpixel(int x, int y) -{ - gfx_buffer[pixel_height * (x/5) + y] |= 0x10 >> (x%5); -} - -static void clearpixel(int x, int y) -{ - gfx_buffer[pixel_height * (x/5) + y] &= ~(0x10 >> (x%5)); -} - -static void flippixel(int x, int y) -{ - gfx_buffer[pixel_height * (x/5) + y] ^= 0x10 >> (x%5); -} - -static void nopixel(int x, int y) -{ - (void)x; - (void)y; -} - -lcd_pixelfunc_type* pgfx_pixelfuncs[8] = { - flippixel, nopixel, setpixel, setpixel, - nopixel, clearpixel, nopixel, clearpixel -}; - -static void flipblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address ^= (bits & mask); -} - -static void bgblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address &= (bits | ~mask); -} - -static void fgblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address |= (bits & mask); -} - -static void solidblock(unsigned char *address, unsigned mask, unsigned bits) -{ - unsigned data = *(char *)address; - - bits ^= data; - *address = data ^ (bits & mask); -} - -static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address ^= (~bits & mask); -} - -static void bginvblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address &= ~(bits & mask); -} - -static void fginvblock(unsigned char *address, unsigned mask, unsigned bits) -{ - *address |= (~bits & mask); -} - -static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits) -{ - unsigned data = *(char *)address; - - bits = ~bits ^ data; - *address = data ^ (bits & mask); -} - -lcd_blockfunc_type* pgfx_blockfuncs[8] = { - flipblock, bgblock, fgblock, solidblock, - flipinvblock, bginvblock, fginvblock, solidinvblock -}; - -/*** Drawing functions ***/ - -/* Clear the whole display */ -void pgfx_clear_display(void) -{ - unsigned bits = (drawmode & DRMODE_INVERSEVID) ? 0x1F : 0; - - rb->memset(gfx_buffer, bits, char_width * pixel_height); -} - -/* Set a single pixel */ -void pgfx_drawpixel(int x, int y) -{ - if (((unsigned)x < (unsigned)pixel_width) - && ((unsigned)y < (unsigned)pixel_height)) - pgfx_pixelfuncs[drawmode](x, y); -} - -/* Draw a line */ -void pgfx_drawline(int x1, int y1, int x2, int y2) -{ - int numpixels; - int i; - int deltax, deltay; - int d, dinc1, dinc2; - int x, xinc1, xinc2; - int y, yinc1, yinc2; - lcd_pixelfunc_type *pfunc = pgfx_pixelfuncs[drawmode]; - - deltax = abs(x2 - x1); - deltay = abs(y2 - y1); - xinc2 = 1; - yinc2 = 1; - - if (deltax >= deltay) - { - numpixels = deltax; - d = 2 * deltay - deltax; - dinc1 = deltay * 2; - dinc2 = (deltay - deltax) * 2; - xinc1 = 1; - yinc1 = 0; - } - else - { - numpixels = deltay; - d = 2 * deltax - deltay; - dinc1 = deltax * 2; - dinc2 = (deltax - deltay) * 2; - xinc1 = 0; - yinc1 = 1; - } - numpixels++; /* include endpoints */ - - if (x1 > x2) - { - xinc1 = -xinc1; - xinc2 = -xinc2; - } - - if (y1 > y2) - { - yinc1 = -yinc1; - yinc2 = -yinc2; - } - - x = x1; - y = y1; - - for (i = 0; i < numpixels; i++) - { - if (((unsigned)x < (unsigned)pixel_width) - && ((unsigned)y < (unsigned)pixel_height)) - pfunc(x, y); - - if (d < 0) - { - d += dinc1; - x += xinc1; - y += yinc1; - } - else - { - d += dinc2; - x += xinc2; - y += yinc2; - } - } -} - -/* Draw a horizontal line (optimised) */ -void pgfx_hline(int x1, int x2, int y) -{ - int nx; - unsigned char *dst; - unsigned mask, mask_right; - lcd_blockfunc_type *bfunc; - - /* direction flip */ - if (x2 < x1) - { - nx = x1; - x1 = x2; - x2 = nx; - } - - /* nothing to draw? */ - if (((unsigned)y >= (unsigned)pixel_height) || (x1 >= pixel_width) - || (x2 < 0)) - return; - - /* clipping */ - if (x1 < 0) - x1 = 0; - if (x2 >= pixel_width) - x2 = pixel_width - 1; - - bfunc = pgfx_blockfuncs[drawmode]; - dst = &gfx_buffer[pixel_height * (x1/5) + y]; - nx = x2 - (x1 - (x1 % 5)); - mask = 0x1F >> (x1 % 5); - mask_right = 0x1F0 >> (nx % 5); - - for (; nx >= 5; nx -= 5) - { - bfunc(dst, mask, 0xFFu); - dst += pixel_height; - mask = 0x1F; - } - mask &= mask_right; - bfunc(dst, mask, 0x1F); -} - -/* Draw a vertical line (optimised) */ -void pgfx_vline(int x, int y1, int y2) -{ - int y; - unsigned char *dst, *dst_end; - unsigned mask; - lcd_blockfunc_type *bfunc; - - /* direction flip */ - if (y2 < y1) - { - y = y1; - y1 = y2; - y2 = y; - } - - /* nothing to draw? */ - if (((unsigned)x >= (unsigned)pixel_width) || (y1 >= pixel_height) - || (y2 < 0)) - return; - - /* clipping */ - if (y1 < 0) - y1 = 0; - if (y2 >= pixel_height) - y2 = pixel_height - 1; - - bfunc = pgfx_blockfuncs[drawmode]; - dst = &gfx_buffer[pixel_height * (x/5) + y1]; - mask = 0x10 >> (x % 5); - - dst_end = dst + y2 - y1; - do - bfunc(dst++, mask, 0x1F); - while (dst <= dst_end); -} - -/* Draw a rectangular box */ -void pgfx_drawrect(int x, int y, int width, int height) -{ - if ((width <= 0) || (height <= 0)) - return; - - int x2 = x + width - 1; - int y2 = y + height - 1; - - pgfx_vline(x, y, y2); - pgfx_vline(x2, y, y2); - pgfx_hline(x, x2, y); - pgfx_hline(x, x2, y2); -} - -/* Fill a rectangular area */ -void pgfx_fillrect(int x, int y, int width, int height) -{ - int nx; - unsigned char *dst, *dst_end; - unsigned mask, mask_right; - lcd_blockfunc_type *bfunc; - - /* nothing to draw? */ - if ((width <= 0) || (height <= 0) || (x >= pixel_width) - || (y >= pixel_height) || (x + width <= 0) || (y + height <= 0)) - return; - - /* clipping */ - if (x < 0) - { - width += x; - x = 0; - } - if (y < 0) - { - height += y; - y = 0; - } - if (x + width > pixel_width) - width = pixel_width - x; - if (y + height > pixel_height) - height = pixel_height - y; - - bfunc = pgfx_blockfuncs[drawmode]; - dst = &gfx_buffer[pixel_height * (x/5) + y]; - nx = width - 1 + (x % 5); - mask = 0x1F >> (x % 5); - mask_right = 0x1F0 >> (nx % 5); - - for (; nx >= 5; nx -= 5) - { - unsigned char *dst_col = dst; - - dst_end = dst_col + height; - do - bfunc(dst_col++, mask, 0x1F); - while (dst_col < dst_end); - - dst += pixel_height; - mask = 0x1F; - } - mask &= mask_right; - - dst_end = dst + height; - do - bfunc(dst++, mask, 0x1F); - while (dst < dst_end); -} - -/* About PlayerGFX internal bitmap format: - * - * A bitmap contains one bit for every pixel that defines if that pixel is - * black (1) or white (0). Bits within a byte are arranged horizontally, - * MSB at the left. - * The bytes are stored in row-major order, with byte 0 being top left, - * byte 1 2nd from left etc. Each row of bytes defines one pixel row. - * - * This approximates the (even more strange) internal hardware format. */ - -/* Draw a partial bitmap. stride is given in pixels */ -void pgfx_bitmap_part(const unsigned char *src, int src_x, int src_y, - int stride, int x, int y, int width, int height) -{ - int nx, shift; - unsigned char *dst, *dst_end; - unsigned mask, mask_right; - lcd_blockfunc_type *bfunc; - - /* nothing to draw? */ - if ((width <= 0) || (height <= 0) || (x >= pixel_width) - || (y >= pixel_height) || (x + width <= 0) || (y + height <= 0)) - return; - - /* clipping */ - if (x < 0) - { - width += x; - src_x -= x; - x = 0; - } - if (y < 0) - { - height += y; - src_y -= y; - y = 0; - } - if (x + width > pixel_width) - width = pixel_width - x; - if (y + height > pixel_height) - height = pixel_height - y; - - stride = (stride + 7) >> 3; /* convert to no. of bytes */ - - src += stride * src_y + (src_x >> 3); /* move starting point */ - dst = &gfx_buffer[pixel_height * (x/5) + y]; - shift = 3 + (x % 5) - (src_x & 7); - nx = width - 1 + (x % 5); - - bfunc = pgfx_blockfuncs[drawmode]; - mask = 0x1F >> (x % 5); - mask_right = 0x1F0 >> (nx % 5); - - dst_end = dst + height; - do - { - const unsigned char *src_row = src; - unsigned char *dst_row = dst++; - unsigned mask_row = mask; - unsigned data = *src_row++; - int extrabits = shift; - - for (x = nx; x >= 5; x -= 5) - { - if (extrabits < 0) - { - data = (data << 8) | *src_row++; - extrabits += 8; - } - bfunc(dst_row, mask_row, data >> extrabits); - extrabits -= 5; - dst_row += pixel_height; - mask_row = 0x1F; - } - if (extrabits < 0) - { - data = (data << 8) | *src_row; - extrabits += 8; - } - bfunc(dst_row, mask_row & mask_right, data >> extrabits); - - src += stride; - } - while (dst < dst_end); -} - -/* Draw a full bitmap */ -void pgfx_bitmap(const unsigned char *src, int x, int y, int width, int height) -{ - pgfx_bitmap_part(src, 0, 0, width, x, y, width, height); -} diff --git a/apps/plugins/lib/playergfx.h b/apps/plugins/lib/playergfx.h deleted file mode 100644 index 9f1305af12..0000000000 --- a/apps/plugins/lib/playergfx.h +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************** -* __________ __ ___. -* Open \______ \ ____ ____ | | _\_ |__ _______ ___ -* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / -* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < -* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ -* \/ \/ \/ \/ \/ -* $Id$ -* -* Bitmap graphics on player LCD! -* -* Copyright (C) 2005 Jens Arnold -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -* KIND, either express or implied. -* -****************************************************************************/ - -#ifndef __PGFX_H__ -#define __PGFX_H__ - -#include "plugin.h" - -#ifdef HAVE_LCD_CHARCELLS /* Player only :) */ - -bool pgfx_init(int cwidth, int cheight); -void pgfx_release(void); -void pgfx_display(int cx, int cy); -void pgfx_display_block(int cx, int cy, int x, int y); -void pgfx_update(void); - -void pgfx_set_drawmode(int mode); -int pgfx_get_drawmode(void); - -void pgfx_clear_display(void); -void pgfx_drawpixel(int x, int y); -void pgfx_drawline(int x1, int y1, int x2, int y2); -void pgfx_hline(int x1, int x2, int y); -void pgfx_vline(int x, int y1, int y2); -void pgfx_drawrect(int x, int y, int width, int height); -void pgfx_fillrect(int x, int y, int width, int height); -void pgfx_bitmap_part(const unsigned char *src, int src_x, int src_y, - int stride, int x, int y, int width, int height); -void pgfx_bitmap(const unsigned char *src, int x, int y, int width, int height); - -#define pgfx_mono_bitmap_part pgfx_bitmap_part -#define pgfx_mono_bitmap pgfx_bitmap - -#endif /* HAVE_LCD_CHARCELLS */ -#endif /* __PGFX_H__ */ diff --git a/apps/plugins/lib/simple_viewer.c b/apps/plugins/lib/simple_viewer.c index 6927d84a96..4c05ee68c5 100644 --- a/apps/plugins/lib/simple_viewer.c +++ b/apps/plugins/lib/simple_viewer.c @@ -64,17 +64,12 @@ static const char* get_next_line(const char *text, struct view_info *info) total = 0; while(*ptr) { -#ifdef HAVE_LCD_CHARCELLS - n = rb->utf8seek(ptr, 1); - w = 1; -#else unsigned short ch; n = ((intptr_t)rb->utf8decode(ptr, &ch) - (intptr_t)ptr); if (rb->is_diacritic(ch, NULL)) w = 0; else w = rb->font_get_width(info->pf, ch); -#endif if (isbrchr(ptr, n)) space = ptr+(isspace(*ptr) || total + w <= info->vp.width? n: 0); if (*ptr == '\n') diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c index e1c570b6a5..60bed3b826 100644 --- a/apps/plugins/logo.c +++ b/apps/plugins/logo.c @@ -19,7 +19,6 @@ * **************************************************************************/ #include "plugin.h" -#include "lib/playergfx.h" #include "lib/pluginlib_actions.h" /* this set the context to use with PLA */ @@ -81,19 +80,9 @@ enum plugin_status plugin_start(const void* parameter) { int y = (DISPLAY_HEIGHT / 2) - (LOGO_HEIGHT / 2); int dx; int dy; -#ifdef HAVE_LCD_CHARCELLS - int cpos = -1; - int old_cpos = -1; -#endif (void)parameter; -#ifdef HAVE_LCD_CHARCELLS - if (!pgfx_init(4, 2)) { - rb->splash(HZ*2, "Old LCD :("); - return PLUGIN_OK; - } -#endif rb->srand(*rb->current_tick); dx = rb->rand()%(2*RAND_SCALE+1) - RAND_SCALE; dy = rb->rand()%(2*RAND_SCALE+1) - RAND_SCALE; @@ -159,9 +148,6 @@ enum plugin_status plugin_start(const void* parameter) { switch (button) { case LP_QUIT: case LP_QUIT2: -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_OK; case LP_DEC_X: case LP_DEC_X_REPEAT: @@ -184,9 +170,6 @@ enum plugin_status plugin_start(const void* parameter) { default: if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_USB_CONNECTED; } break; diff --git a/apps/plugins/lrcplayer.c b/apps/plugins/lrcplayer.c index eb441eab8d..1b017942a9 100644 --- a/apps/plugins/lrcplayer.c +++ b/apps/plugins/lrcplayer.c @@ -144,11 +144,7 @@ static struct viewport vp_lyrics[NB_SCREENS]; #include "lib/pluginlib_actions.h" #define LST_SET_TIME (LST_SET_MSEC|LST_SET_SEC|LST_SET_MIN|LST_SET_HOUR) -#ifdef HAVE_LCD_CHARCELLS -#define LST_OFF_Y 0 -#else /* HAVE_LCD_BITMAP */ #define LST_OFF_Y 1 -#endif static int lrc_set_time(const char *title, const char *unit, long *pval, int step, int min, int max, int flags) { @@ -229,17 +225,11 @@ static int lrc_set_time(const char *title, const char *unit, long *pval, rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); rb->lcd_putsxy(x, y*(1+LST_OFF_Y), &buffer[p_start]); rb->lcd_set_drawmode(DRMODE_SOLID); -#else - rb->lcd_put_cursor(x+rb->utf8length(&buffer[p_start])-1, y, 0x7F); #endif } rb->lcd_update(); int button = pluginlib_getaction(TIMEOUT_BLOCK, lst_contexts, ARRAYLEN(lst_contexts)); int mult = 1; -#ifdef HAVE_LCD_CHARCELLS - if (pos_min != pos_max) - rb->lcd_remove_cursor(); -#endif switch (button) { case PLA_UP_REPEAT: @@ -452,9 +442,7 @@ static struct lrc_brpos *calc_brpos(struct lrc_line *lrc_line, int i) int word_count, word_width; const unsigned char *str; } -#ifndef HAVE_LCD_CHARCELLS sp, -#endif cr; lrc_buffer_used = (lrc_buffer_used+3)&~3; /* 4 bytes aligned */ @@ -514,19 +502,15 @@ static struct lrc_brpos *calc_brpos(struct lrc_line *lrc_line, int i) cr.nword = lrc_line->nword; lrc_word = lrc_line->words+cr.nword; cr.str = (lrc_word-1)->word; -#ifndef HAVE_LCD_CHARCELLS sp.word_count = 0; sp.word_width = 0; sp.nword = 0; sp.count = 0; sp.width = 0; -#endif do { cr.count = 0; cr.width = 0; -#ifndef HAVE_LCD_CHARCELLS sp.str = NULL; -#endif while (1) { @@ -541,10 +525,6 @@ static struct lrc_brpos *calc_brpos(struct lrc_line *lrc_line, int i) break; int c, w; -#ifdef HAVE_LCD_CHARCELLS - c = rb->utf8seek(cr.str, 1); - w = 1; -#else c = ((intptr_t)rb->utf8decode(cr.str, &ch) - (intptr_t)cr.str); if (rb->is_diacritic(ch, NULL)) w = 0; @@ -576,7 +556,6 @@ static struct lrc_brpos *calc_brpos(struct lrc_line *lrc_line, int i) } break; } -#endif cr.count += c; cr.width += w; lrc_word->count += c; @@ -1916,38 +1895,6 @@ static void display_lrcs(void) } if (!lrc_line && ypos < vp_lyrics[i].height) display->putsxy(0, ypos, "[end]"); -#else /* HAVE_LCD_CHARCELLS */ - struct lrc_line *lrc_line = lrc_center; - struct lrc_brpos *lrc_brpos = calc_brpos(lrc_line, i); - long elapsed = 0; - const char *str = get_lrc_str(lrc_line); - int x = vp_lyrics[i].width/2, y = 0; - - if (rin >= 0 && len > 0) - { - elapsed = rin * lrc_center->width / len; - while (elapsed > lrc_brpos->width) - { - elapsed -= lrc_brpos->width; - str = lrc_skip_space(str+lrc_brpos->count); - lrc_brpos++; - } - } - rb->strlcpy(temp_buf, str, lrc_brpos->count+1); - - x -= elapsed; - if (x < 0) - display->puts(0, y, temp_buf + rb->utf8seek(temp_buf, -x)); - else - display->puts(x, y, temp_buf); - x += rb->utf8length(temp_buf)+1; - lrc_line = lrc_line->next; - if (!lrc_line && x < vp_lyrics[i].width) - { - if (x < vp_lyrics[i].width/2) - x = vp_lyrics[i].width/2; - display->puts(x, y, "[end]"); - } #endif /* HAVE_LCD_BITMAP */ display->update_viewport(); display->set_viewport(NULL); diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c index 02217390cd..75947df618 100644 --- a/apps/plugins/metronome.c +++ b/apps/plugins/metronome.c @@ -1022,12 +1022,7 @@ static void play_tock(void) static void metronome_draw(struct screen* display, int state) { struct part *ps; -#ifndef HAVE_LCD_BITMAP - char beat1 = ' '; - char beat2 = ' '; -#else int textlen = display->lcdwidth / display->getcharwidth(); -#endif ps = part; display->clear_display(); #ifdef HAVE_LCD_BITMAP diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c index 68938a1f13..28ea9efd93 100644 --- a/apps/plugins/mosaique.c +++ b/apps/plugins/mosaique.c @@ -19,7 +19,6 @@ * **************************************************************************/ #include "plugin.h" -#include "lib/playergfx.h" #include "lib/mylcd.h" #include "lib/pluginlib_actions.h" @@ -59,14 +58,6 @@ enum plugin_status plugin_start(const void* parameter) int sy = 3; (void)parameter; -#ifdef HAVE_LCD_CHARCELLS - if (!pgfx_init(4, 2)) - { - rb->splash(HZ*2, "Old LCD :("); - return PLUGIN_OK; - } - pgfx_display(3, 0); -#endif mylcd_clear_display(); mylcd_set_drawmode(DRMODE_COMPLEMENT); while (1) { @@ -117,9 +108,6 @@ enum plugin_status plugin_start(const void* parameter) case MOSAIQUE_QUIT: case MOSAIQUE_QUIT2: mylcd_set_drawmode(DRMODE_SOLID); -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_OK; case MOSAIQUE_SPEED: @@ -142,9 +130,6 @@ enum plugin_status plugin_start(const void* parameter) if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { mylcd_set_drawmode(DRMODE_SOLID); -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_USB_CONNECTED; } break; diff --git a/apps/plugins/random_folder_advance_config.c b/apps/plugins/random_folder_advance_config.c index add1fc5724..68440e4602 100644 --- a/apps/plugins/random_folder_advance_config.c +++ b/apps/plugins/random_folder_advance_config.c @@ -229,9 +229,7 @@ static void generate(void) rb->splashf(HZ, "Couldnt open %s", RFA_FILE); return; } -#ifndef HAVE_LCD_CHARCELLS update_screen(true); -#endif lasttick = *rb->current_tick; if(!custom_dir()) diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c index 1732d61277..c7968c3e20 100644 --- a/apps/plugins/rockblox.c +++ b/apps/plugins/rockblox.c @@ -25,7 +25,6 @@ #include "lib/helper.h" #include "lib/highscore.h" #include "lib/playback_control.h" -#include "lib/playergfx.h" #include "lib/mylcd.h" @@ -770,17 +769,8 @@ extern const fb_data rockblox_background[]; -#else /* HAVE_LCD_CHARCELLS */ - -#define BOARD_HEIGHT 14 - -#define BLOCK_WIDTH 1 -#define BLOCK_HEIGHT 1 -#define BOARD_X 5 -#define BOARD_Y 0 -#define PREVIEW_X 15 -#define PREVIEW_Y 1 - +#else +#error "lcd screen size not defined!" #endif #ifndef HIGHSCORE_SPACE @@ -992,10 +982,6 @@ static void show_details (void) rb->lcd_putsxyf (LABEL_X, SCORE_Y, "%d", rockblox_status.score); rb->lcd_putsxyf (LEVEL_X, LEVEL_Y, "%d", rockblox_status.level); rb->lcd_putsxyf (LINES_X, LINES_Y, "%d", rockblox_status.lines); -#else /* HAVE_LCD_CHARCELLS */ - rb->lcd_putsf (5, 0, "L%d/%d", rockblox_status.level, - rockblox_status.lines); - rb->lcd_putsf (5, 1, "S%d", rockblox_status.score); #endif } @@ -1066,15 +1052,6 @@ static void init_rockblox (bool resume) #ifdef HAVE_LCD_BITMAP rb->lcd_bitmap (rockblox_background, 0, 0, LCD_WIDTH, LCD_HEIGHT); -#else /* HAVE_LCD_CHARCELLS */ - pgfx_display (0, 0); - pgfx_display_block (3, 0, 3, 1); - pgfx_display_block (4, 0, 3, 0); - rb->lcd_puts(4, 1, " "); - pgfx_clear_display(); - pgfx_fillrect (3, 0, 2, 14); - pgfx_fillrect (15, 7, 2, 7); - pgfx_update(); #endif if (!resume) { @@ -1200,8 +1177,6 @@ static void refresh_board (void) rb->lcd_hline (BOARD_X + i * BLOCK_WIDTH + 1, BOARD_X + (i + 1) * BLOCK_WIDTH - 1, BOARD_Y + (j + 1) * BLOCK_HEIGHT - 1); -#else /* HAVE_LCD_CHARCELLS */ - pgfx_drawpixel (BOARD_X + i, BOARD_Y + j); #endif } } @@ -1246,8 +1221,6 @@ static void refresh_board (void) rb->lcd_hline (BOARD_X + x * BLOCK_WIDTH + 1, BOARD_X + (x + 1) * BLOCK_WIDTH - 1, BOARD_Y + (y + 1) * BLOCK_HEIGHT - 1); -#else /* HAVE_LCD_CHARCELLS */ - pgfx_drawpixel (BOARD_X + x, BOARD_Y + y); #endif } @@ -1285,8 +1258,6 @@ static void refresh_board (void) rb->lcd_hline (BOARD_X + x * BLOCK_WIDTH + 1, BOARD_X + (x + 1) * BLOCK_WIDTH - 1, BOARD_Y + (y + 1) * BLOCK_HEIGHT - 1); -#else /* HAVE_LCD_CHARCELLS */ - pgfx_drawpixel (BOARD_X + x, BOARD_Y + y); #endif } @@ -1355,8 +1326,6 @@ static void draw_next_block (void) rb->lcd_hline (PREVIEW_X + rx * BLOCK_WIDTH + 1, PREVIEW_X + (rx + 1) * BLOCK_WIDTH - 1, PREVIEW_Y + (ry + 1) * BLOCK_HEIGHT - 1); -#else /* HAVE_LCD_CHARCELLS */ - pgfx_drawpixel (PREVIEW_X + rx, PREVIEW_Y + ry); #endif } @@ -1787,9 +1756,6 @@ enum plugin_status plugin_start (const void *parameter) } } -#ifndef HAVE_LCD_BITMAP - pgfx_release(); -#endif /* Save user's HighScore */ highscore_save(SCORE_FILE, highscores, NUM_SCORES); backlight_use_settings(); diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c index 74efb8ea00..f05d3c2a44 100644 --- a/apps/plugins/snow.c +++ b/apps/plugins/snow.c @@ -19,7 +19,6 @@ * **************************************************************************/ #include "plugin.h" -#include "lib/playergfx.h" #include "lib/mylcd.h" #include "lib/pluginlib_actions.h" @@ -143,11 +142,6 @@ static void snow_init(void) particles[i][0]=-1; particles[i][1]=-1; } -#ifdef HAVE_LCD_CHARCELLS - pgfx_display(0, 0); /* display three times */ - pgfx_display(4, 0); - pgfx_display(8, 0); -#endif mylcd_clear_display(); #ifdef HAVE_REMOTE_LCD rb->lcd_remote_clear_display(); @@ -159,13 +153,6 @@ enum plugin_status plugin_start(const void* parameter) int button; (void)(parameter); -#ifdef HAVE_LCD_CHARCELLS - if (!pgfx_init(4, 2)) - { - rb->splash(HZ*2, "Old LCD :("); - return PLUGIN_OK; - } -#endif #ifdef HAVE_LCD_COLOR rb->lcd_clear_display(); rb->lcd_set_foreground(LCD_WHITE); @@ -186,17 +173,11 @@ enum plugin_status plugin_start(const void* parameter) if ((button == SNOW_QUIT) || (button == SNOW_QUIT2)) { -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_OK; } else if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { -#ifdef HAVE_LCD_CHARCELLS - pgfx_release(); -#endif return PLUGIN_USB_CONNECTED; } } diff --git a/apps/plugins/text_viewer/tv_display.c b/apps/plugins/text_viewer/tv_display.c index 1f8499bed2..d6175b79cf 100644 --- a/apps/plugins/text_viewer/tv_display.c +++ b/apps/plugins/text_viewer/tv_display.c @@ -69,11 +69,6 @@ #define TV_SCROLLBAR_WIDTH rb->global_settings->scrollbar_width #define TV_SCROLLBAR_HEIGHT 4 - -#ifndef HAVE_LCD_BITMAP -#define TV_BOOKMARK_ICON 0xe101 -#endif - struct tv_rect { int x; int y; diff --git a/apps/screen_access.c b/apps/screen_access.c index a966d07876..cdb02a6546 100644 --- a/apps/screen_access.c +++ b/apps/screen_access.c @@ -237,15 +237,6 @@ struct screen screens[NB_SCREENS] = .scroll_step=&lcd_scroll_step, #endif /* HAVE_LCD_BITMAP */ -#ifdef HAVE_LCD_CHARCELLS - .double_height=&lcd_double_height, - .putchar=&lcd_putc, - .get_locked_pattern=&lcd_get_locked_pattern, - .define_pattern=&lcd_define_pattern, - .unlock_pattern=&lcd_unlock_pattern, - .icon=&lcd_icon, -#endif /* HAVE_LCD_CHARCELLS */ - .putsxy=&lcd_putsxy, .puts=&lcd_puts, .putsf=&lcd_putsf, @@ -333,13 +324,6 @@ struct screen screens[NB_SCREENS] = .scroll_step=&lcd_remote_scroll_step, #endif /* 1 */ -#if 0 /* no charcell remote LCDs so far */ - .double_height=&lcd_remote_double_height, - .putc=&lcd_remote_putc, - .get_locked_pattern=&lcd_remote_get_locked_pattern, - .define_pattern=&lcd_remote_define_pattern, - .icon=&lcd_remote_icon, -#endif /* 0 */ .putsxy=&lcd_remote_putsxy, .puts=&lcd_remote_puts, .putsf=&lcd_remote_putsf, diff --git a/apps/screen_access.h b/apps/screen_access.h index 6b90bc9313..eab84c9129 100644 --- a/apps/screen_access.h +++ b/apps/screen_access.h @@ -37,10 +37,6 @@ void screen_helper_setfont(int font); #define FOR_NB_SCREENS(i) for(int i = 0; i < NB_SCREENS; i++) -#ifdef HAVE_LCD_CHARCELLS -#define MAX_LINES_ON_SCREEN 2 -#endif - typedef void screen_bitmap_part_func(const void *src, int src_x, int src_y, int stride, int x, int y, int width, int height); typedef void screen_bitmap_func(const void *src, int x, int y, int width, @@ -110,15 +106,6 @@ struct screen void (*hline)(int x1, int x2, int y); #endif /* HAVE_LCD_BITMAP || HAVE_REMOTE_LCD */ -#ifdef HAVE_LCD_CHARCELLS /* no charcell remote LCDs so far */ - void (*double_height)(bool on); - /* name it putchar, not putc because putc is a c library function */ - void (*putchar)(int x, int y, unsigned long ucs); - void (*icon)(int icon, bool enable); - unsigned long (*get_locked_pattern)(void); - void (*define_pattern)(unsigned long ucs, const char *pattern); - void (*unlock_pattern)(unsigned long ucs); -#endif void (*putsxy)(int x, int y, const unsigned char *str); void (*puts)(int x, int y, const unsigned char *str); void (*putsf)(int x, int y, const unsigned char *str, ...); diff --git a/apps/screens.c b/apps/screens.c index 52e8cadc7e..ecd406037d 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -763,11 +763,7 @@ int view_runtime(void) struct gui_synclist lists; int action; gui_synclist_init(&lists, runtime_get_data, NULL, false, 2, NULL); -#if !defined(HAVE_LCD_CHARCELLS) gui_synclist_set_title(&lists, str(LANG_RUNNING_TIME), NOICON); -#else - gui_synclist_set_title(&lists, NULL, NOICON); -#endif if(global_settings.talk_menu) gui_synclist_set_voice_callback(&lists, runtime_speak_data); gui_synclist_set_icon_callback(&lists, NULL); diff --git a/apps/status.c b/apps/status.c index 485ca0aa34..57f2984402 100644 --- a/apps/status.c +++ b/apps/status.c @@ -79,31 +79,3 @@ int current_playmode(void) return STATUS_STOP; } - -#if defined(HAVE_LCD_CHARCELLS) -bool record = false; -bool audio = false; -bool param = false; -bool usb = false; - -void status_set_record(bool b) -{ - record = b; -} - -void status_set_audio(bool b) -{ - audio = b; -} - -void status_set_param(bool b) -{ - param = b; -} - -void status_set_usb(bool b) -{ - usb = b; -} - -#endif /* HAVE_LCD_CHARCELLS */ diff --git a/apps/status.h b/apps/status.h index c8ec7bb354..1add203a0c 100644 --- a/apps/status.h +++ b/apps/status.h @@ -21,13 +21,6 @@ #ifndef _STATUS_H #define _STATUS_H -#if defined(HAVE_LCD_CHARCELLS) -extern bool record; -extern bool audio; -extern bool param; -extern bool usb; -#endif - enum playmode { STATUS_PLAY, @@ -48,11 +41,5 @@ int current_playmode(void); #if (CONFIG_PLATFORM & PLATFORM_HOSTED) #include #endif -#ifdef HAVE_LCD_CHARCELLS -void status_set_record(bool b); -void status_set_audio(bool b); -void status_set_param(bool b); -void status_set_usb(bool b); -#endif /* HAVE_LCD_CHARCELLS */ #endif /* _STATUS_H */ diff --git a/apps/tree.c b/apps/tree.c index 9b6ce06af0..fb0d0a3ac5 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -299,10 +299,6 @@ void tree_gui_init(void) strcpy(tc.currdir, "/"); -#ifdef HAVE_LCD_CHARCELLS - FOR_NB_SCREENS(i) - screens[i].double_height(false); -#endif gui_synclist_init(&tree_lists, &tree_get_filename, &tc, false, 1, NULL); gui_synclist_set_voice_callback(&tree_lists, tree_voice_cb); gui_synclist_set_icon_callback(&tree_lists, @@ -710,14 +706,12 @@ static int dirbrowse(void) if ((*tc.dirfilter == SHOW_ID3DB && tc.dirlevel == 0) || ((*tc.dirfilter != SHOW_ID3DB && !strcmp(currdir,"/")))) { -#ifdef HAVE_LCD_BITMAP /* charcell doesnt have ACTION_TREE_PGLEFT so this isnt needed */ if (oldbutton == ACTION_TREE_PGLEFT) break; else -#endif return GO_TO_ROOT; } - + #ifdef HAVE_TAGCACHE if (id3db) tagtree_exit(&tc); diff --git a/docs/PLUGIN_API b/docs/PLUGIN_API index b2fb94ed7e..e7ab119f97 100644 --- a/docs/PLUGIN_API +++ b/docs/PLUGIN_API @@ -185,7 +185,7 @@ unsigned int battery_voltage(void) \description unsigned short *bidi_l2v( const unsigned char *str, int orientation ) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param str \param orientation \return @@ -353,7 +353,7 @@ bool button_hold(void) \description struct event_queue *button_queue - \conditions !defined(HAVE_LCD_CHARCELLS) )) && (defined(HAVE_LCD_ENABLE + \conditions defined(HAVE_LCD_BITMAP) )) && (defined(HAVE_LCD_ENABLE \return \description @@ -372,7 +372,7 @@ void cancel_cpu_boost(void) \description Unboosts the CPU for the current thread const unsigned char *font_get_bits( struct font *pf, unsigned short char_code ) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param pf \param char_code \return @@ -628,14 +628,14 @@ void flush_icache(void) \description struct font* font_get(int font) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param font \return the font structure for =font= \description If the requested font isn't loaded/compiled-in, decrement the font number and try again. \see [S[firmware/export/font.h]] int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param str \param w \param h @@ -644,14 +644,14 @@ int font_getstringsize(const unsigned char *str, int *w, int *h, int fontnumber) \description int font_get_width(struct font* pf, unsigned short char_code) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param pf \param char_code \return \description struct font* font_load(const char *path) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param path \return \description Load font =path= and returns a struct font pointer for it @@ -707,7 +707,7 @@ struct system_status *global_status \see [S[apps/settings.h]] void gui_scrollbar_draw(struct screen * screen, int x, int y, int width, int height, int items, int min_shown, int max_shown, unsigned flags) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param screen \param x \param y @@ -837,7 +837,7 @@ int kbd_input(char* buffer, int buflen) void lcd_bitmap(const fb_data *src, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \param src \param x \param y @@ -847,7 +847,7 @@ void lcd_bitmap(const fb_data *src, int x, int y, int width, int height) void lcd_bitmap_part(const fb_data *src, int src_x, int src_y, int stride, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \param src \param src_x \param src_y @@ -860,7 +860,7 @@ void lcd_bitmap_part(const fb_data *src, int src_x, int src_y, int stride, int x void lcd_bitmap_transparent(const fb_data *src, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH == 16) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH == 16) \param src \param x \param y @@ -870,7 +870,7 @@ void lcd_bitmap_transparent(const fb_data *src, int x, int y, int width, int hei void lcd_bitmap_transparent_part(const fb_data *src, int src_x, int src_y, int stride, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH == 16) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH == 16) \param src \param src_x \param src_y @@ -883,7 +883,7 @@ void lcd_bitmap_transparent_part(const fb_data *src, int src_x, int src_y, int s void lcd_blit_grey_phase(unsigned char *values, unsigned char *phases, int bx, int by, int bwidth, int bheight, int stride) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) )) && ((LCD_DEPTH < 4) && !defined(SIMULATOR + \conditions defined(HAVE_LCD_BITMAP) )) && ((LCD_DEPTH < 4) && !defined(SIMULATOR \param values \param phases \param bx @@ -895,7 +895,7 @@ void lcd_blit_grey_phase(unsigned char *values, unsigned char *phases, int bx, i void lcd_blit_mono(const unsigned char *data, int x, int by, int width, int bheight, int stride) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) )) && ((LCD_DEPTH < 4) && !defined(SIMULATOR + \conditions defined(HAVE_LCD_BITMAP) )) && ((LCD_DEPTH < 4) && !defined(SIMULATOR \param data \param x \param by @@ -906,7 +906,7 @@ void lcd_blit_mono(const unsigned char *data, int x, int by, int width, int bhei void lcd_blit_yuv(unsigned char * const src[3], int src_x, int src_y, int stride, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH == 16) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH == 16) \param src[3] \param src_x \param src_y @@ -921,22 +921,9 @@ void lcd_clear_display(void) \group lcd \description Clears the LCD and the framebuffer -void lcd_define_pattern(unsigned long ucs, const char *pattern) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param ucs - \param pattern is a 8x8 pixelbitmap - \description Define a custom pattern for index =ucs= - -void lcd_double_height(bool on) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param on - \description - void lcd_drawline(int x1, int y1, int x2, int y2) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x1 X top coordinate \param y1 Y top coordinate \param x2 X bottom coordinate @@ -945,14 +932,14 @@ void lcd_drawline(int x1, int y1, int x2, int y2) void lcd_drawpixel(int x, int y) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x \param y \description Draws a pixel at (=x=, =y=) within current drawing mode void lcd_drawrect(int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x \param y \param width @@ -961,7 +948,7 @@ void lcd_drawrect(int x, int y, int width, int height) void lcd_fillrect(int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x \param y \param width @@ -970,7 +957,7 @@ void lcd_fillrect(int x, int y, int width, int height) fb_data* lcd_framebuffer \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \return \description Pointer to the framebuffer \see [S[firmware/export/lcd.h]] @@ -985,55 +972,40 @@ int lcd_getstringsize(const unsigned char *str, int *w, int *h) fb_data* lcd_get_backdrop(void) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \return Pointer to framebuffer data \description Gets the current backdrop \see lcd_framebuffer unsigned lcd_get_background(void) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \return \description int lcd_get_drawmode(void) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \return current LCD drawing mode \description unsigned lcd_get_foreground(void) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \return \description -unsigned long lcd_get_locked_pattern(void) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \return - \description Get a locked pattern index - \see [S[firmware/drivers/lcd-player.c]] - void lcd_hline(int x1, int x2, int y) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x1 X start coordinate \param x2 X end coordinate \param y Y coordinate \description Draws a horizontal line at (=x1=, =y=) -> (=x2=, =y=) within current drawing mode -void lcd_icon(int icon, bool enable) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param icon - \param enable - \description - \see [S[firmware/drivers/lcd-player.c]] - void lcd_mono_bitmap(const unsigned char *src, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param src \param x \param y @@ -1043,7 +1015,7 @@ void lcd_mono_bitmap(const unsigned char *src, int x, int y, int width, int heig void lcd_mono_bitmap_part(const unsigned char *src, int src_x, int src_y, int stride, int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param src \param src_x \param src_y @@ -1054,14 +1026,6 @@ void lcd_mono_bitmap_part(const unsigned char *src, int src_x, int src_y, int st \param height \description -void lcd_putc(int x, int y, unsigned long ucs) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param x - \param y - \param ucs - \description Put character =ucs= at coordinates (=x=, =y=) - void lcd_puts(int x, int y, const unsigned char *string) \group lcd \param x Row X @@ -1083,15 +1047,6 @@ void lcd_puts_scroll(int x, int y, const unsigned char* string) \param string \description Puts scrolling string on the LCD at row =x= and column =y=. The scrolling style is STYLE_DEFAULT. -void lcd_put_cursor(int x, int y, unsigned long ucs) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param x - \param y - \param ucs - \description Put cursor at coordinates (=x=, =y=) - \see [S[firmware/export/lcd.h]] - void lcd_remote_bitmap(const fb_remote_data *src, int x, int y, int width, int height) \conditions (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) \param src @@ -1302,27 +1257,22 @@ void lcd_remote_vline(int x, int y1, int y2) \param y2 \description -void lcd_remove_cursor(void) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \description Remove the cursor from the screen - void lcd_setfont(int font) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param font \description Set default font void lcd_set_backdrop(fb_data* backdrop) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \param backdrop Pointer to backdrop image \description Set the backdrop to =backdrop= \see lcd_framebuffer void lcd_set_background(unsigned foreground) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \param foreground \description @@ -1333,19 +1283,19 @@ void lcd_set_contrast(int x) void lcd_set_drawmode(int mode) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param mode \description void lcd_set_foreground(unsigned foreground) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) && (LCD_DEPTH > 1) + \conditions defined(HAVE_LCD_BITMAP) && (LCD_DEPTH > 1) \param foreground \description void lcd_set_invert_display(bool yesno) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) )) && (defined(HAVE_LCD_INVERT + \conditions defined(HAVE_LCD_BITMAP) )) && (defined(HAVE_LCD_INVERT \param yesno \description @@ -1353,19 +1303,13 @@ void lcd_stop_scroll(void) \group lcd \description Stop all scrolling lines on the screen -void lcd_unlock_pattern(unsigned long ucs) - \group lcd - \conditions (defined(HAVE_LCD_CHARCELLS)) - \param ucs - \description Unlock pattern of index =ucs= - void lcd_update(void) \group lcd \description Pushes LCD framebuffer changes to the LCD void lcd_update_rect(int x, int y, int width, int height) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x measured in pixels \param y measured in pixels \param width measured in pixels @@ -1374,7 +1318,7 @@ void lcd_update_rect(int x, int y, int width, int height) void lcd_vline(int x, int y1, int y2) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param x X coordinate \param y1 Y start coordinate \param y2 Y end coordinate @@ -1382,7 +1326,7 @@ void lcd_vline(int x, int y1, int y2) void lcd_yuv_set_options(unsigned options) \group lcd - \conditions !defined(HAVE_LCD_CHARCELLS) )) && (LCD_DEPTH == 16) && (defined(TOSHIBA_GIGABEAT_F) || defined(SANSA_E200) || defined(SANSA_C200) || defined(IRIVER_H10) || defined(COWON_D2 + \conditions defined(HAVE_LCD_BITMAP) )) && (LCD_DEPTH == 16) && (defined(TOSHIBA_GIGABEAT_F) || defined(SANSA_E200) || defined(SANSA_C200) || defined(IRIVER_H10) || defined(COWON_D2 \param options \description @@ -1932,7 +1876,7 @@ struct screen* screens[NB_SCREENS] \description void screen_clear_area(struct screen * display, int xstart, int ystart, int width, int height) - \conditions !defined(HAVE_LCD_CHARCELLS) + \conditions defined(HAVE_LCD_BITMAP) \param display \param xstart \param ystart diff --git a/firmware/SOURCES b/firmware/SOURCES index 90c1f4011c..9cd1a5671c 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -52,8 +52,6 @@ target/hosted/sdl/button-sdl.c target/hosted/sdl/kernel-sdl.c #ifdef HAVE_LCD_BITMAP target/hosted/sdl/lcd-bitmap.c -#elif defined(HAVE_LCD_CHARCELLS) -target/hosted/sdl/lcd-charcells.c #endif #ifdef HAVE_REMOTE_LCD target/hosted/sdl/lcd-remote-bitmap.c @@ -255,11 +253,6 @@ common/vuprintf.c /* Display */ scroll_engine.c -#ifdef HAVE_LCD_CHARCELLS -drivers/lcd-charcell.c -drivers/lcd-charset-player.c -#endif /* HAVE_LCD_CHARCELLS */ - #ifdef HAVE_LCD_BITMAP arabjoin.c bidi.c diff --git a/firmware/drivers/lcd-charcell.c b/firmware/drivers/lcd-charcell.c deleted file mode 100644 index b1f0021ff7..0000000000 --- a/firmware/drivers/lcd-charcell.c +++ /dev/null @@ -1,599 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Jens Arnold - * Based on the work of Alan Korr, Kjell Ericson and others - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include -#include "config.h" -#include "hwcompat.h" -#include "stdarg.h" -#include "lcd.h" -#include "kernel.h" -#include "thread.h" -#include "string-extra.h" -#include -#include "debug.h" -#include "file.h" -#include "system.h" -#include "lcd-charcell.h" -#include "rbunicode.h" -#include "scroll_engine.h" - -/** definitions **/ - -#define VARIABLE_XCHARS 16 /* number of software user-definable characters */ -/* There must be mappings for this many characters in the 0xe000 unicode range - * in lcd-charset-.c */ - -#define NO_PATTERN (-1) - -static int find_xchar(unsigned long ucs); - -/** globals **/ - -unsigned char lcd_charbuffer[LCD_HEIGHT][LCD_WIDTH]; /* The "frame"buffer */ -static unsigned char lcd_substbuffer[LCD_HEIGHT][LCD_WIDTH]; -struct pattern_info lcd_patterns[MAX_HW_PATTERNS]; -struct cursor_info lcd_cursor; - -static unsigned char xfont_variable[VARIABLE_XCHARS][HW_PATTERN_SIZE]; -static bool xfont_variable_locked[VARIABLE_XCHARS]; -static int xspace; /* stores xhcar id of ' ' - often needed */ - -static struct viewport default_vp = - { - .x = 0, - .y = 0, - .width = LCD_WIDTH, - .height = LCD_HEIGHT, - }; - -static struct viewport* current_vp = &default_vp; - -/* LCD init */ -void lcd_init (void) -{ - lcd_init_device(); - lcd_charset_init(); - memset(lcd_patterns, 0, sizeof(lcd_patterns)); - xspace = find_xchar(' '); - memset(lcd_charbuffer, xchar_info[xspace].hw_char, sizeof(lcd_charbuffer)); - scroll_init(); -} - -/* Viewports */ - -void lcd_set_viewport(struct viewport* vp) -{ - if (vp == NULL) - current_vp = &default_vp; - else - current_vp = vp; - -#if defined(SIMULATOR) - /* Force the viewport to be within bounds. If this happens it should - * be considered an error - the viewport will not draw as it might be - * expected. - */ - if((unsigned) current_vp->x > (unsigned) LCD_WIDTH - || (unsigned) current_vp->y > (unsigned) LCD_HEIGHT - || current_vp->x + current_vp->width > LCD_WIDTH - || current_vp->y + current_vp->height > LCD_HEIGHT) - { -#if !defined(HAVE_VIEWPORT_CLIP) - DEBUGF("ERROR: " -#else - DEBUGF("NOTE: " -#endif - "set_viewport out of bounds: x: %d y: %d width: %d height:%d\n", - current_vp->x, current_vp->y, - current_vp->width, current_vp->height); - } - -#endif -} - -struct viewport *lcd_get_viewport(bool *is_default) -{ - *is_default = (current_vp == &default_vp); - return current_vp; -} - -void lcd_update_viewport(void) -{ - lcd_update(); -} - -void lcd_update_viewport_rect(int x, int y, int width, int height) -{ - (void) x; - (void) y; - (void) width; - (void) height; - lcd_update(); -} - -/** parameter handling **/ - -int lcd_getwidth(void) -{ - return current_vp->width; -} - -int lcd_getheight(void) -{ - return current_vp->height; -} - -int lcd_getstringsize(const unsigned char *str, int *w, int *h) -{ - int width = utf8length(str); - - if (w) - *w = width; - if (h) - *h = 1; - - return width; -} - -/** low-level functions **/ - -static int find_xchar(unsigned long ucs) -{ - int low = 0; - int high = xchar_info_size - 1; - - do - { - int probe = (low + high) >> 1; - - if (xchar_info[probe].ucs < ucs) - low = probe + 1; - else if (xchar_info[probe].ucs > ucs) - high = probe - 1; - else - return probe; - } - while (low <= high); - - /* Not found: return index of no-char symbol (last symbol, hardcoded). */ - return xchar_info_size - 1; -} - -static int glyph_to_pat(unsigned glyph) -{ - int i; - - for (i = 0; i < lcd_pattern_count; i++) - if (lcd_patterns[i].glyph == glyph) - return i; - - return NO_PATTERN; -} - -static void lcd_free_pat(int pat) -{ - int x, y; - - if (pat != NO_PATTERN) - { - for (x = 0; x < LCD_WIDTH; x++) - for (y = 0; y < LCD_HEIGHT; y++) - if (pat == lcd_charbuffer[y][x]) - lcd_charbuffer[y][x] = lcd_substbuffer[y][x]; - - if (lcd_cursor.enabled && pat == lcd_cursor.hw_char) - lcd_cursor.hw_char = lcd_cursor.subst_char; - - lcd_patterns[pat].count = 0; - } -} - -static int lcd_get_free_pat(int xchar) -{ - static int last_used_pat = 0; - - int pat = last_used_pat; /* start from last used pattern */ - int least_pat = pat; /* pattern with least priority */ - int least_priority = lcd_patterns[pat].priority; - int i; - - for (i = 0; i < lcd_pattern_count; i++) - { - if (++pat >= lcd_pattern_count) /* Keep 'pat' within limits */ - pat = 0; - - if (lcd_patterns[pat].count == 0) - { - last_used_pat = pat; - return pat; - } - if (lcd_patterns[pat].priority < least_priority) - { - least_priority = lcd_patterns[pat].priority; - least_pat = pat; - } - } - if (xchar_info[xchar].priority > least_priority) /* prioritized char */ - { - lcd_free_pat(least_pat); - last_used_pat = least_pat; - return least_pat; - } - return NO_PATTERN; -} - -static const unsigned char *glyph_to_pattern(unsigned glyph) -{ - if (glyph & 0x8000) - return xfont_variable[glyph & 0x7fff]; - else - return xfont_fixed[glyph]; -} - -static int map_xchar(int xchar, unsigned char *substitute) -{ - int pat; - unsigned glyph; - - if (xchar_info[xchar].priority > 0) /* soft char */ - { - glyph = xchar_info[xchar].glyph; - pat = glyph_to_pat(glyph); - - if (pat == NO_PATTERN) /* not yet mapped */ - { - pat = lcd_get_free_pat(xchar); /* try to map */ - - if (pat == NO_PATTERN) /* failed: just use substitute */ - return xchar_info[xchar].hw_char; - else - { /* define pattern */ - lcd_patterns[pat].priority = xchar_info[xchar].priority; - lcd_patterns[pat].glyph = glyph; - memcpy(lcd_patterns[pat].pattern, glyph_to_pattern(glyph), - HW_PATTERN_SIZE); - } - } - lcd_patterns[pat].count++; /* increase reference count */ - *substitute = xchar_info[xchar].hw_char; - return pat; - } - else /* hardware char */ - return xchar_info[xchar].hw_char; -} - -static void lcd_putxchar(int x, int y, int xchar) -{ - int lcd_char; - - /* Adjust for viewport */ - x += current_vp->x; - y += current_vp->y; - -#if defined(HAVE_VIEWPORT_CLIP) - if((unsigned)x > (unsigned)LCD_WIDTH || (unsigned)y > (unsigned)LCD_HEIGHT) - return; -#endif - - lcd_char = lcd_charbuffer[y][x]; - - if (lcd_char < lcd_pattern_count) /* old char was soft */ - lcd_patterns[lcd_char].count--; /* decrease old reference count */ - - lcd_charbuffer[y][x] = map_xchar(xchar, &lcd_substbuffer[y][x]); -} - -/** user-definable pattern handling **/ - -unsigned long lcd_get_locked_pattern(void) -{ - int i = 0; - - for (i = 0; i < VARIABLE_XCHARS; i++) - { - if (!xfont_variable_locked[i]) - { - xfont_variable_locked[i] = true; - return 0xe000 + i; /* hard-coded */ - } - } - return 0; -} - -void lcd_unlock_pattern(unsigned long ucs) -{ - int xchar = find_xchar(ucs); - unsigned glyph = xchar_info[xchar].glyph; - - if (glyph & 0x8000) /* variable extended char */ - { - lcd_free_pat(glyph_to_pat(glyph)); - xfont_variable_locked[glyph & 0x7fff] = false; - } -} - -void lcd_define_pattern(unsigned long ucs, const char *pattern) -{ - int xchar = find_xchar(ucs); - unsigned glyph = xchar_info[xchar].glyph; - int pat; - - if (glyph & 0x8000) /* variable extended char */ - { - memcpy(xfont_variable[glyph & 0x7fff], pattern, HW_PATTERN_SIZE); - pat = glyph_to_pat(glyph); - if (pat != NO_PATTERN) - memcpy(lcd_patterns[pat].pattern, pattern, HW_PATTERN_SIZE); - } -} - -/** output functions **/ - -/* Clear the whole display */ -void lcd_clear_display(void) -{ - int x, y; - struct viewport* old_vp = current_vp; - - lcd_scroll_stop(); - lcd_remove_cursor(); - - /* Set the default viewport - required for lcd_putxchar */ - current_vp = &default_vp; - - for (x = 0; x < LCD_WIDTH; x++) - for (y = 0; y < LCD_HEIGHT; y++) - lcd_putxchar(x, y, xspace); - - current_vp = old_vp; -} - -/* Clear the current viewport */ -void lcd_clear_viewport(void) -{ - int x, y; - - if (current_vp == &default_vp) - { - lcd_clear_display(); - } - else - { - /* Remove the cursor if it is within the current viewport */ - if (lcd_cursor.enabled && - (lcd_cursor.x >= current_vp->x) && - (lcd_cursor.x <= current_vp->x + current_vp->width) && - (lcd_cursor.y >= current_vp->y) && - (lcd_cursor.y <= current_vp->y + current_vp->height)) - { - lcd_remove_cursor(); - } - - for (x = 0; x < current_vp->width; x++) - for (y = 0; y < current_vp->height; y++) - lcd_putxchar(x, y, xspace); - - lcd_scroll_stop_viewport(current_vp); - } -} - -/* Put an unicode character at the given position */ -void lcd_putc(int x, int y, unsigned long ucs) -{ - if ((unsigned)x >= (unsigned)current_vp->width || - (unsigned)y >= (unsigned)current_vp->height) - return; - - lcd_putxchar(x, y, find_xchar(ucs)); -} - -/* Show cursor (alternating with existing character) at the given position */ -void lcd_put_cursor(int x, int y, unsigned long cursor_ucs) -{ - if ((unsigned)x >= (unsigned)current_vp->width || - (unsigned)y >= (unsigned)current_vp->height || - lcd_cursor.enabled) - return; - - lcd_cursor.enabled = true; - lcd_cursor.visible = false; - lcd_cursor.hw_char = map_xchar(find_xchar(cursor_ucs), &lcd_cursor.subst_char); - lcd_cursor.x = current_vp->x + x; - lcd_cursor.y = current_vp->y + y; - lcd_cursor.downcount = 0; - lcd_cursor.divider = MAX((HZ/2) / lcd_scroll_info.ticks, 1); -} - -/* Remove the cursor */ -void lcd_remove_cursor(void) -{ - if (lcd_cursor.enabled) - { - if (lcd_cursor.hw_char < lcd_pattern_count) /* soft char, unmap */ - lcd_patterns[lcd_cursor.hw_char].count--; - - lcd_cursor.enabled = lcd_cursor.visible = false; - } -} - -/* Put a string at a given position, skipping first ofs chars */ -static int lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) -{ - unsigned short ucs; - const unsigned char *utf8 = str; - - while (*utf8 && x < current_vp->width) - { - utf8 = utf8decode(utf8, &ucs); - - if (ofs > 0) - { - ofs--; - continue; - } - lcd_putxchar(x++, y, find_xchar(ucs)); - } - return x; -} - -/* Put a string at a given position */ -void lcd_putsxy(int x, int y, const unsigned char *str) -{ - if ((unsigned)y >= (unsigned)current_vp->height) - return; - - lcd_putsxyofs(x, y, 0, str); -} - -/* Formatting version of lcd_putsxy */ -void lcd_putsxyf(int x, int y, const unsigned char *fmt, ...) -{ - va_list ap; - char buf[256]; - va_start(ap, fmt); - vsnprintf(buf, sizeof (buf), fmt, ap); - va_end(ap); - lcd_putsxy(x, y, buf); -} - -/*** Line oriented text output ***/ - -/* Put a string at a given char position, skipping first offset chars */ -void lcd_putsofs(int x, int y, const unsigned char *str, int offset) -{ - if ((unsigned)y >= (unsigned)current_vp->height) - return; - - /* make sure scrolling is turned off on the line we are updating */ - lcd_scroll_stop_viewport_rect(current_vp, x, y, current_vp->width - x, 1); - - x = lcd_putsxyofs(x, y, offset, str); - while (x < current_vp->width) - lcd_putxchar(x++, y, xspace); -} - - -/* Put a string at a given char position */ -void lcd_puts(int x, int y, const unsigned char *str) -{ - lcd_putsofs(x, y, str, 0); -} - -/* Formatting version of lcd_puts */ -void lcd_putsf(int x, int y, const unsigned char *fmt, ...) -{ - va_list ap; - char buf[256]; - va_start(ap, fmt); - vsnprintf(buf, sizeof (buf), fmt, ap); - va_end(ap); - lcd_puts(x, y, buf); -} - -/** scrolling **/ - -bool lcd_puts_scroll_worker(int x, int y, const unsigned char *string, - int offset, - void (*scroll_func)(struct scrollinfo *), void *data) -{ - struct scrollinfo* s; - int len; - - if ((unsigned)y >= (unsigned)current_vp->height) - return false; - - /* remove any previously scrolling line at the same location */ - lcd_scroll_stop_viewport_rect(current_vp, x, y, current_vp->width - x, 1); - - if (lcd_scroll_info.lines >= LCD_SCROLLABLE_LINES) - return false; - - s = &lcd_scroll_info.scroll[lcd_scroll_info.lines]; - - s->start_tick = current_tick + lcd_scroll_info.delay; - - lcd_putsofs(x, y, string, offset); - len = utf8length(string); - - if (current_vp->width - x >= len) - return false; - /* prepare scroll line */ - strlcpy(s->linebuffer, string, sizeof s->linebuffer); - - /* scroll bidirectional or forward only depending on the string width */ - if (lcd_scroll_info.bidir_limit) - { - s->bidir = len < (current_vp->width) * - (100 + lcd_scroll_info.bidir_limit) / 100; - } - else - s->bidir = false; - - s->scroll_func = scroll_func; - s->userdata = data; - - s->vp = current_vp; - s->x = x; - s->y = y; - s->height = 1; - s->width = current_vp->width - x; - s->offset = offset; - s->backward = false; - lcd_scroll_info.lines++; - - return true; -} - -bool lcd_putsxy_scroll_func(int x, int y, const unsigned char *string, - void (*scroll_func)(struct scrollinfo *), - void *data, int x_offset) -{ - bool retval = false; - if (!scroll_func) - lcd_putsxyofs(x, y, x_offset, string); - else - retval = lcd_puts_scroll_worker(x, y, string, x_offset, scroll_func, data); - - return retval; -} - -static void lcd_scroll_fn(struct scrollinfo* s) -{ - /* with line == NULL when scrolling stops. This scroller - * maintains no userdata so there is nothing left to do */ - if (!s->line) - return; - lcd_putsxyofs(s->x, s->y, s->offset, s->line); - if (lcd_cursor.enabled) - { - if (--lcd_cursor.downcount <= 0) - { - lcd_cursor.downcount = lcd_cursor.divider; - lcd_cursor.visible = !lcd_cursor.visible; - } - } -} - -bool lcd_puts_scroll(int x, int y, const unsigned char *string) -{ - return lcd_puts_scroll_worker(x, y, string, 0, lcd_scroll_fn, NULL); -} diff --git a/firmware/drivers/lcd-charset-player.c b/firmware/drivers/lcd-charset-player.c deleted file mode 100644 index b1f6f6dae2..0000000000 --- a/firmware/drivers/lcd-charset-player.c +++ /dev/null @@ -1,1321 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Jens Arnold - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "config.h" -#include "hwcompat.h" - -#include "lcd-charcell.h" - -int lcd_pattern_count; /* actual number of user-definable hw patterns */ - -const struct xchar_info *xchar_info; -int xchar_info_size; /* number of entries */ - -enum { - /* Standard ascii */ - XF_BACKSLASH = 0, XF_CIRCUMFLEX, XF_GRAVEACCENT, XF_VERTICALBAR, - XF_TILDE, -#ifndef BOOTLOADER - /* Icons and special symbols */ - XF_ICON_UNKNOWN, XF_ICON_BOOKMARK, XF_ICON_PLUGIN, XF_ICON_FOLDER, - XF_ICON_FIRMWARE, XF_ICON_LANGUAGE, XF_ICON_AUDIO, XF_ICON_WPS, - XF_ICON_PLAYLIST, XF_ICON_TEXTFILE, XF_ICON_CONFIG, - - /* Latin1 */ - XF_INVEXCLAMATION, XF_CENTSIGN, XF_POUNDSIGN, XF_CURRENCY, - XF_LEFTDBLANGLEQUOT, XF_MACRON, XF_PLUSMINUS, XF_SUPER2, - XF_SUPER3, XF_MICRO, XF_MIDDLEDOT, XF_RIGHTDBLANGLEQUOT, - XF_ONEQUARTER, XF_ONEHALF, XF_THREEQUARTERS, XF_INVQUESTION, - XF_AGRAVE, XF_AACUTE, XF_ACIRCUMFLEX, XF_ATILDE, - XF_ADIERESIS, XF_ARING, XF_AELIGATURE, XF_CCEDILLA, - XF_EGRAVE, XF_EACUTE, XF_ECIRCUMFLEX, XF_EDIERESIS, - XF_IGRAVE, XF_IACUTE, XF_ICIRCUMFLEX, XF_IDIERESIS, - XF_ETH, XF_NTILDE, XF_OGRAVE, XF_OACUTE, - XF_OCIRCUMFLEX, XF_OTILDE, XF_ODIERESIS, XF_OSTROKE, - XF_UGRAVE, XF_UACUTE, XF_UCIRCUMFLEX, XF_UDIERESIS, - XF_YACUTE, XF_aGRAVE, XF_aACUTE, XF_aCIRCUMFLEX, - XF_aTILDE, XF_aDIERESIS, XF_aRING, XF_aeLIGATURE, - XF_cCEDILLA, XF_eGRAVE, XF_eACUTE, XF_eCIRCUMFLEX, - XF_eDIERESIS, XF_iGRAVE, XF_iACUTE, XF_iCIRCUMFLEX, - XF_iDIERESIS, XF_nTILDE, XF_oGRAVE, XF_oACUTE, - XF_oCIRCUMFLEX, XF_oTILDE, XF_oDIERESIS, XF_DIVISION, - XF_oSLASH, XF_uGRAVE, XF_uACUTE, XF_uCIRCUMFLEX, - XF_uDIERESIS, XF_yACUTE, XF_yDIERESIS, - - /* Latin extended A */ - XF_aBREVE, XF_aOGONEK, XF_cACUTE, XF_cCARON, - XF_dCARON, XF_dSTROKE, XF_eOGONEK, XF_eCARON, - XF_GBREVE, XF_gBREVE, XF_IDOT, XF_DOTLESSi, - XF_LSTROKE, XF_lSTROKE, XF_nACUTE, XF_nCARON, - XF_ODBLACUTE, XF_oDBLACUTE, XF_RCARON, XF_rCARON, - XF_sACUTE, XF_SCEDILLA, XF_sCEDILLA, XF_sCARON, - XF_tCEDILLA, XF_tCARON, XF_uRING, XF_UDBLACUTE, - XF_uDBLACUTE, XF_zACUTE, XF_zDOT, XF_zCARON, -#define XF_DSTROKE XF_ETH -#define XF_SACUTE XF_sACUTE -#define XF_SCARON XF_sCARON - - /* Greek */ - XF_GR_DELTA, XF_GR_THETA, XF_GR_LAMBDA, XF_GR_XI, - XF_GR_PSI, XF_GR_alpha, XF_GR_alphaTONOS, XF_GR_gamma, - XF_GR_epsilon, XF_GR_epsilonTONOS, XF_GR_zeta, XF_GR_eta, - XF_GR_etaTONOS, XF_GR_iota, XF_GR_lambda, XF_GR_xi, - XF_GR_rho, XF_GR_FINALsigma, XF_GR_sigma, XF_GR_upsilon, - XF_GR_upsilonTONOS, XF_GR_chi, XF_GR_psi, XF_GR_omega, - XF_GR_omegaTONOS, -#define XF_GR_ANOTELEIA XF_MIDDLEDOT -#define XF_GR_GAMMA XF_CYR_GHE -#define XF_GR_PI XF_CYR_PE -#define XF_GR_delta XF_CYR_be -#define XF_GR_iotaTONOS XF_iACUTE -#define XF_GR_iotaDIA XF_iDIERESIS -#define XF_GR_kappa XF_CYR_ka -#define XF_GR_mu XF_MICRO -#define XF_GR_pi XF_CYR_pe -#define XF_GR_omicronTONOS XF_oACUTE -#define XF_GR_tau XF_CYR_te - - /* Cyrillic */ - XF_CYR_BE, XF_CYR_GHE, XF_CYR_DE, XF_CYR_ZHE, - XF_CYR_ZE, XF_CYR_I, XF_CYR_SHORTI, XF_CYR_EL, - XF_CYR_PE, XF_CYR_TSE, XF_CYR_CHE, XF_CYR_SHA, - XF_CYR_SHCHA, XF_CYR_HARD, XF_CYR_YERU, XF_CYR_E, - XF_CYR_YU, XF_CYR_YA, XF_CYR_be, XF_CYR_ve, - XF_CYR_ghe, XF_CYR_de, XF_CYR_zhe, XF_CYR_ze, - XF_CYR_i, XF_CYR_SHORTi, XF_CYR_ka, XF_CYR_el, - XF_CYR_em, XF_CYR_en, XF_CYR_pe, XF_CYR_te, - XF_CYR_tse, XF_CYR_che, XF_CYR_sha, XF_CYR_shcha, - XF_CYR_hard, XF_CYR_yeru, XF_CYR_soft, XF_CYR_e, - XF_CYR_yu, XF_CYR_ya, -#define XF_CYR_IEGRAVE XF_EGRAVE -#define XF_CYR_IO XF_EDIERESIS -#define XF_CYR_YI XF_IDIERESIS -#define XF_CYR_ieGRAVE XF_eGRAVE -#define XF_CYR_io XF_eDIERESIS -#define XF_CYR_yi XF_iDIERESIS - -#endif -}; - -static const struct xchar_info xchar_info_newlcd[] = { - /* Standard ascii */ - { 0x20, 0, 0, 0x20 }, /* */ - { 0x21, 0, 0, 0x21 }, /* ! */ - { 0x22, 0, 0, 0x22 }, /* " */ - { 0x23, 0, 0, 0x23 }, /* # */ - { 0x24, 0, 0, 0x24 }, /* $ */ - { 0x25, 0, 0, 0x25 }, /* % */ - { 0x26, 0, 0, 0x26 }, /* & */ - { 0x27, 0, 0, 0x27 }, /* ' */ - { 0x28, 0, 0, 0x28 }, /* ( */ - { 0x29, 0, 0, 0x29 }, /* ) */ - { 0x2a, 0, 0, 0x2a }, /* * */ - { 0x2b, 0, 0, 0x2b }, /* + */ - { 0x2c, 0, 0, 0x2c }, /* , */ - { 0x2d, 0, 0, 0x2d }, /* - */ - { 0x2e, 0, 0, 0x2e }, /* . */ - { 0x2f, 0, 0, 0x2f }, /* / */ - { 0x30, 0, 0, 0x30 }, /* 0 */ - { 0x31, 0, 0, 0x31 }, /* 1 */ - { 0x32, 0, 0, 0x32 }, /* 2 */ - { 0x33, 0, 0, 0x33 }, /* 3 */ - { 0x34, 0, 0, 0x34 }, /* 4 */ - { 0x35, 0, 0, 0x35 }, /* 5 */ - { 0x36, 0, 0, 0x36 }, /* 6 */ - { 0x37, 0, 0, 0x37 }, /* 7 */ - { 0x38, 0, 0, 0x38 }, /* 8 */ - { 0x39, 0, 0, 0x39 }, /* 9 */ - { 0x3a, 0, 0, 0x3a }, /* : */ - { 0x3b, 0, 0, 0x3b }, /* ; */ - { 0x3c, 0, 0, 0x3c }, /* < */ - { 0x3d, 0, 0, 0x3d }, /* = */ - { 0x3e, 0, 0, 0x3e }, /* > */ - { 0x3f, 0, 0, 0x3f }, /* ? */ - { 0x40, 0, 0, 0x40 }, /* @ */ - { 0x41, 0, 0, 0x41 }, /* A */ - { 0x42, 0, 0, 0x42 }, /* B */ - { 0x43, 0, 0, 0x43 }, /* C */ - { 0x44, 0, 0, 0x44 }, /* D */ - { 0x45, 0, 0, 0x45 }, /* E */ - { 0x46, 0, 0, 0x46 }, /* F */ - { 0x47, 0, 0, 0x47 }, /* G */ - { 0x48, 0, 0, 0x48 }, /* H */ - { 0x49, 0, 0, 0x49 }, /* I */ - { 0x4a, 0, 0, 0x4a }, /* J */ - { 0x4b, 0, 0, 0x4b }, /* K */ - { 0x4c, 0, 0, 0x4c }, /* L */ - { 0x4d, 0, 0, 0x4d }, /* M */ - { 0x4e, 0, 0, 0x4e }, /* N */ - { 0x4f, 0, 0, 0x4f }, /* O */ - { 0x50, 0, 0, 0x50 }, /* P */ - { 0x51, 0, 0, 0x51 }, /* Q */ - { 0x52, 0, 0, 0x52 }, /* R */ - { 0x53, 0, 0, 0x53 }, /* S */ - { 0x54, 0, 0, 0x54 }, /* T */ - { 0x55, 0, 0, 0x55 }, /* U */ - { 0x56, 0, 0, 0x56 }, /* V */ - { 0x57, 0, 0, 0x57 }, /* W */ - { 0x58, 0, 0, 0x58 }, /* X */ - { 0x59, 0, 0, 0x59 }, /* Y */ - { 0x5a, 0, 0, 0x5a }, /* Z */ - { 0x5b, 0, 0, 0x5b }, /* [ */ - { 0x5c, 0, 0, 0x12 }, /* \ */ - { 0x5d, 0, 0, 0x5d }, /* ] */ - { 0x5e, 0, 0, 0x5e }, /* ^ */ - { 0x5f, 0, 0, 0x5f }, /* _ */ - { 0x60, 0, 0, 0x60 }, /* ` */ - { 0x61, 0, 0, 0x61 }, /* a */ - { 0x62, 0, 0, 0x62 }, /* b */ - { 0x63, 0, 0, 0x63 }, /* c */ - { 0x64, 0, 0, 0x64 }, /* d */ - { 0x65, 0, 0, 0x65 }, /* e */ - { 0x66, 0, 0, 0x66 }, /* f */ - { 0x67, 0, 0, 0x67 }, /* g */ - { 0x68, 0, 0, 0x68 }, /* h */ - { 0x69, 0, 0, 0x69 }, /* i */ - { 0x6a, 0, 0, 0x6a }, /* j */ - { 0x6b, 0, 0, 0x6b }, /* k */ - { 0x6c, 0, 0, 0x6c }, /* l */ - { 0x6d, 0, 0, 0x6d }, /* m */ - { 0x6e, 0, 0, 0x6e }, /* n */ - { 0x6f, 0, 0, 0x6f }, /* o */ - { 0x70, 0, 0, 0x70 }, /* p */ - { 0x71, 0, 0, 0x71 }, /* q */ - { 0x72, 0, 0, 0x72 }, /* r */ - { 0x73, 0, 0, 0x73 }, /* s */ - { 0x74, 0, 0, 0x74 }, /* t */ - { 0x75, 0, 0, 0x75 }, /* u */ - { 0x76, 0, 0, 0x76 }, /* v */ - { 0x77, 0, 0, 0x77 }, /* w */ - { 0x78, 0, 0, 0x78 }, /* x */ - { 0x79, 0, 0, 0x79 }, /* y */ - { 0x7a, 0, 0, 0x7a }, /* z */ - { 0x7b, 0, 0, 0x7b }, /* { */ - { 0x7c, 0, 0, 0x7c }, /* | */ - { 0x7d, 0, 0, 0x7d }, /* } */ - { 0x7e, 0, 0, 0xf0 }, /* ~ */ - { 0x7f, 0, 0, 0xfe }, /* (full grid) */ - -#ifndef BOOTLOADER /* bootloader only supports pure ASCII */ - /* Latin 1 */ - { 0xa0, 0, 0, 0x20 }, /* (non-breaking space) */ - { 0xa1, XF_INVEXCLAMATION, 1, 0x21 }, /* ¡ (inverted !) */ - { 0xa2, XF_CENTSIGN, 1, 0x63 }, /* ¢ (cent sign) */ - { 0xa3, XF_POUNDSIGN, 1, 0x4c }, /* £ (pound sign) */ - { 0xa4, XF_CURRENCY, 1, 0x6f }, /* ¤ (currency sign) */ - { 0xa5, 0, 0, 0x5c }, /* ¥ (yen sign) */ - - { 0xa7, 0, 0, 0x15 }, /* § (paragraph sign) */ - - { 0xab, 0, 0, 0x9e }, /* « (left double-angle quotation mark) */ - - { 0xad, 0, 0, 0x2d }, /* ­ (soft hyphen) */ - - { 0xaf, XF_MACRON, 1, 0x2d }, /* ¯ (macron) */ - - { 0xb1, 0, 0, 0x95 }, /* ± (plus-minus sign) */ - { 0xb2, 0, 0, 0x99 }, /* ³ (superscript 2) */ - { 0xb3, 0, 0, 0x9a }, /* ³ (superscript 3) */ - - { 0xb5, 0, 0, 0xe6 }, /* µ (micro sign) */ - { 0xb6, 0, 0, 0x14 }, /* ¶ (pilcrow sign) */ - { 0xb7, 0, 0, 0xa5 }, /* · (middle dot) */ - - { 0xbb, 0, 0, 0x9f }, /* » (right double-angle quotation mark) */ - { 0xbc, 0, 0, 0x9c }, /* ¼ (one quarter) */ - { 0xbd, 0, 0, 0x9b }, /* ½ (one half) */ - { 0xbe, 0, 0, 0x9d }, /* ¾ (three quarters) */ - { 0xbf, XF_INVQUESTION, 1, 0x3f }, /* ¿ (inverted ?) */ - { 0xc0, XF_AGRAVE, 1, 0x41 }, /* À (A grave) */ - { 0xc1, XF_AACUTE, 1, 0x41 }, /* Á (A acute) */ - { 0xc2, XF_ACIRCUMFLEX, 1, 0x41 }, /* Â (A circumflex) */ - { 0xc3, XF_ATILDE, 1, 0x41 }, /* Ã (A tilde) */ - { 0xc4, XF_ADIERESIS, 1, 0x41 }, /* Ä (A dieresis) */ - { 0xc5, XF_ARING, 1, 0x41 }, /* Å (A with ring above) */ - { 0xc6, XF_AELIGATURE, 1, 0x41 }, /* Æ (AE ligature) */ - { 0xc7, XF_CCEDILLA, 1, 0x43 }, /* Ç (C cedilla) */ - { 0xc8, XF_EGRAVE, 1, 0x45 }, /* È (E grave) */ - { 0xc9, XF_EACUTE, 1, 0x45 }, /* É (E acute) */ - { 0xca, XF_ECIRCUMFLEX, 1, 0x45 }, /* Ê (E circumflex) */ - { 0xcb, XF_EDIERESIS, 1, 0x45 }, /* Ë (E dieresis) */ - { 0xcc, XF_IGRAVE, 1, 0x49 }, /* Ì (I grave) */ - { 0xcd, XF_IACUTE, 1, 0x49 }, /* Í (I acute) */ - { 0xce, XF_ICIRCUMFLEX, 1, 0x49 }, /* Î (I circumflex) */ - { 0xcf, XF_IDIERESIS, 1, 0x49 }, /* Ï (I dieresis) */ - { 0xd0, XF_ETH, 1, 0x44 }, /* Ð (ETH) */ - { 0xd1, XF_NTILDE, 1, 0x4e }, /* Ñ (N tilde) */ - { 0xd2, XF_OGRAVE, 1, 0x4f }, /* Ò (O grave) */ - { 0xd3, XF_OACUTE, 1, 0x4f }, /* Ó (O acute) */ - { 0xd4, XF_OCIRCUMFLEX, 1, 0x4f }, /* Ô (O circumflex) */ - { 0xd5, XF_OTILDE, 1, 0x4f }, /* Õ (O tilde) */ - { 0xd6, XF_ODIERESIS, 1, 0x4f }, /* Ö (O dieresis) */ - { 0xd7, 0, 0, 0x96 }, /* × (multiplication sign) */ - { 0xd8, XF_OSTROKE, 1, 0x30 }, /* Ø (O stroke) */ - { 0xd9, XF_UGRAVE, 1, 0x55 }, /* Ù (U grave) */ - { 0xda, XF_UACUTE, 1, 0x55 }, /* Ú (U acute) */ - { 0xdb, XF_UCIRCUMFLEX, 1, 0x55 }, /* Û (U circumflex) */ - { 0xdc, XF_UDIERESIS, 1, 0x55 }, /* Ü (U dieresis) */ - { 0xdd, XF_YACUTE, 1, 0x59 }, /* Ý (Y acute) */ - - { 0xdf, 0, 0, 0xe1 }, /* ß (sharp s) */ - { 0xe0, XF_aGRAVE, 1, 0x61 }, /* à (a grave) */ - { 0xe1, XF_aACUTE, 1, 0x61 }, /* á (a acute) */ - { 0xe2, XF_aCIRCUMFLEX, 1, 0x61 }, /* â (a circumflex) */ - { 0xe3, XF_aTILDE, 1, 0x61 }, /* ã (a tilde) */ - { 0xe4, XF_aDIERESIS, 1, 0x61 }, /* ä (a dieresis) */ - { 0xe5, XF_aRING, 1, 0x61 }, /* å (a with ring above) */ - { 0xe6, XF_aeLIGATURE, 1, 0x61 }, /* æ (ae ligature) */ - { 0xe7, XF_cCEDILLA, 1, 0x63 }, /* ç (c cedilla) */ - { 0xe8, XF_eGRAVE, 1, 0x65 }, /* è (e grave) */ - { 0xe9, XF_eACUTE, 1, 0x65 }, /* é (e acute) */ - { 0xea, XF_eCIRCUMFLEX, 1, 0x65 }, /* ê (e circumflex) */ - { 0xeb, XF_eDIERESIS, 1, 0x65 }, /* ë (e dieresis) */ - { 0xec, XF_iGRAVE, 1, 0x69 }, /* ì (i grave) */ - { 0xed, XF_iACUTE, 1, 0x69 }, /* í (i acute) */ - { 0xee, XF_iCIRCUMFLEX, 1, 0x69 }, /* î (i circumflex) */ - { 0xef, XF_iDIERESIS, 1, 0x69 }, /* ï (i dieresis) */ - - { 0xf1, XF_nTILDE, 1, 0x6e }, /* ñ (n tilde) */ - { 0xf2, XF_oGRAVE, 1, 0x6f }, /* ò (o grave) */ - { 0xf3, XF_oACUTE, 1, 0x6f }, /* ó (o acute) */ - { 0xf4, XF_oCIRCUMFLEX, 1, 0x6f }, /* ô (o circumflex) */ - { 0xf5, XF_oTILDE, 1, 0x6f }, /* õ (o tilde) */ - { 0xf6, XF_oDIERESIS, 1, 0x6f }, /* ö (o dieresis) */ - { 0xf7, 0, 0, 0x97 }, /* ÷ (division sign) */ - { 0xf8, XF_oSLASH, 1, 0x6f }, /* ø (o slash) */ - { 0xf9, XF_uGRAVE, 1, 0x75 }, /* ù (u grave) */ - { 0xfa, XF_uACUTE, 1, 0x75 }, /* ú (u acute) */ - { 0xfb, XF_uCIRCUMFLEX, 1, 0x75 }, /* û (u circumflex) */ - { 0xfc, XF_uDIERESIS, 1, 0x75 }, /* ü (u dieresis) */ - { 0xfd, XF_yACUTE, 1, 0x79 }, /* ý (y acute) */ - - { 0xff, XF_yDIERESIS, 1, 0x79 }, /* ÿ (y dieresis) */ - - /* Latin extended A */ - { 0x0103, XF_aBREVE, 1, 0x61 }, /* a breve */ - { 0x0105, XF_aOGONEK, 1, 0x61 }, /* a ogonek */ - { 0x0107, XF_cACUTE, 1, 0x63 }, /* c acute */ - { 0x010d, XF_cCARON, 1, 0x63 }, /* c caron */ - { 0x010f, XF_dCARON, 1, 0x64 }, /* d caron */ - { 0x0110, XF_DSTROKE, 1, 0x44 }, /* D stroke */ - { 0x0111, XF_dSTROKE, 1, 0x64 }, /* d stroke */ - { 0x0119, XF_eOGONEK, 1, 0x65 }, /* e ogonek */ - { 0x011b, XF_eCARON, 1, 0x65 }, /* e caron */ - { 0x011e, XF_GBREVE, 1, 0x47 }, /* G breve */ - { 0x011f, XF_gBREVE, 1, 0x67 }, /* g breve */ - { 0x0130, XF_IDOT, 1, 0x49 }, /* I with dot above */ - { 0x0131, XF_DOTLESSi, 1, 0x69 }, /* dotless i */ - { 0x0141, XF_LSTROKE, 1, 0x4c }, /* L stroke */ - { 0x0142, XF_lSTROKE, 1, 0x6c }, /* l stroke */ - { 0x0144, XF_nACUTE, 1, 0x6e }, /* n acute */ - { 0x0148, XF_nCARON, 1, 0x6e }, /* n caron */ - { 0x0150, XF_ODBLACUTE, 1, 0x4f }, /* O double acute */ - { 0x0151, XF_oDBLACUTE, 1, 0x6f }, /* o double acute */ - { 0x0158, XF_RCARON, 1, 0x52 }, /* R caron */ - { 0x0159, XF_rCARON, 1, 0x72 }, /* r caron */ - { 0x015a, XF_SACUTE, 1, 0x53 }, /* S acute */ - { 0x015b, XF_sACUTE, 1, 0x73 }, /* s acute */ - { 0x015e, XF_SCEDILLA, 1, 0x53 }, /* S cedilla */ - { 0x015f, XF_sCEDILLA, 1, 0x73 }, /* s cedilla */ - { 0x0160, XF_SCARON, 1, 0x53 }, /* S caron */ - { 0x0161, XF_sCARON, 1, 0x73 }, /* s caron */ - { 0x0163, XF_tCEDILLA, 1, 0x74 }, /* t cedilla */ - { 0x0165, XF_tCARON, 1, 0x74 }, /* t caron */ - { 0x016f, XF_uRING, 1, 0x75 }, /* u with ring above */ - { 0x0170, XF_UDBLACUTE, 1, 0x55 }, /* U double acute */ - { 0x0171, XF_uDBLACUTE, 1, 0x75 }, /* u double acute */ - { 0x017a, XF_zACUTE, 1, 0x7a }, /* z acute */ - { 0x017c, XF_zDOT, 1, 0x7a }, /* z with dot above */ - { 0x017e, XF_zCARON, 1, 0x7a }, /* z caron */ - - /* Greek */ - { 0x037e, 0, 0, 0x3b }, /* greek question mark */ - - { 0x0386, 0, 0, 0x41 }, /* greek ALPHA with tonos */ - { 0x0387, 0, 0, 0xa5 }, /* greek ano teleia */ - { 0x0388, 0, 0, 0x45 }, /* greek EPSILON with tonos */ - { 0x0389, 0, 0, 0x48 }, /* greek ETA with tonos */ - { 0x038a, 0, 0, 0x49 }, /* greek IOTA with tonos */ - /* reserved */ - { 0x038c, 0, 0, 0x4f }, /* greek OMICRON with tonos */ - /* reserved */ - { 0x038e, 0, 0, 0x59 }, /* greek YPSILON with tonos */ - { 0x038f, 0, 0, 0xea }, /* greek OMEGA with tonos */ - { 0x0390, XF_GR_iotaTONOS, 1, 0x69 }, /* greek iota with dialytica + tonos */ - { 0x0391, 0, 0, 0x41 }, /* greek ALPHA */ - { 0x0392, 0, 0, 0x42 }, /* greek BETA */ - { 0x0393, XF_GR_GAMMA, 2, 0xb2 }, /* greek GAMMA */ - { 0x0394, XF_GR_DELTA, 2, 0x1f }, /* greek DELTA */ - { 0x0395, 0, 0, 0x45 }, /* greek EPSILON */ - { 0x0396, 0, 0, 0x5a }, /* greek ZETA */ - { 0x0397, 0, 0, 0x48 }, /* greek ETA */ - { 0x0398, XF_GR_THETA, 1, 0x30 }, /* greek THETA */ - { 0x0399, 0, 0, 0x49 }, /* greek IOTA */ - { 0x039a, 0, 0, 0x4b }, /* greek KAPPA */ - { 0x039b, XF_GR_LAMBDA, 2, 0x4c }, /* greek LAMBDA */ - { 0x039c, 0, 0, 0x4d }, /* greek MU */ - { 0x039d, 0, 0, 0x4e }, /* greek NU */ - { 0x039e, XF_GR_XI, 2, 0xd0 }, /* greek XI */ - { 0x039f, 0, 0, 0x4f }, /* greek OMICRON */ - { 0x03a0, XF_GR_PI, 1, 0x14 }, /* greek PI */ - { 0x03a1, 0, 0, 0x50 }, /* greek RHO */ - /* reserved */ - { 0x03a3, 0, 0, 0xe4 }, /* greek SIGMA */ - { 0x03a4, 0, 0, 0x54 }, /* greek TAU */ - { 0x03a5, 0, 0, 0x59 }, /* greek UPSILON */ - { 0x03a6, 0, 0, 0xe8 }, /* greek PHI */ - { 0x03a7, 0, 0, 0x58 }, /* greek CHI */ - { 0x03a8, XF_GR_PSI, 2, 0xc2 }, /* greek PSI */ - { 0x03a9, 0, 0, 0xea }, /* greek OMEGA */ - { 0x03aa, 0, 0, 0x49 }, /* greek IOTA with dialytica */ - { 0x03ab, 0, 0, 0x59 }, /* greek UPSILON with dialytica */ - { 0x03ac, XF_GR_alphaTONOS, 1, 0xe0 }, /* greek alpha with tonos */ - { 0x03ad, XF_GR_epsilonTONOS, 1, 0xee }, /* greek epsilon with tonos */ - { 0x03ae, XF_GR_etaTONOS, 1, 0x6e }, /* greek eta with tonos */ - { 0x03af, XF_GR_iotaTONOS, 1, 0x69 }, /* greek iota with tonos */ - { 0x03b0, XF_GR_upsilonTONOS, 1, 0x75 }, /* greek upsilon with dialytica + tonos */ - { 0x03b1, 0, 0, 0xe0 }, /* greek alpha */ - { 0x03b2, 0, 0, 0xe1 }, /* greek beta */ - { 0x03b3, 0, 0, 0xe2 }, /* greek gamma */ - { 0x03b4, 0, 0, 0xeb }, /* greek delta */ - { 0x03b5, XF_GR_epsilon, 1, 0xee }, /* greek epsilon */ - { 0x03b6, XF_GR_zeta, 1, 0x7a }, /* greek zeta */ - { 0x03b7, XF_GR_eta, 1, 0x6e }, /* greek eta */ - { 0x03b8, 0, 0, 0xe9 }, /* greek theta */ - { 0x03b9, XF_GR_iota, 1, 0x69 }, /* greek iota */ - { 0x03ba, XF_GR_kappa, 1, 0x6b }, /* greek kappa */ - { 0x03bb, XF_GR_lambda, 2, 0xca }, /* greek lambda */ - { 0x03bc, 0, 0, 0xe6 }, /* greek mu */ - { 0x03bd, 0, 0, 0x76 }, /* greek nu */ - { 0x03be, XF_GR_xi, 2, 0xd0 }, /* greek xi */ - { 0x03bf, 0, 0, 0x6f }, /* greek omicron */ - { 0x03c0, 0, 0, 0xe3 }, /* greek pi */ - { 0x03c1, XF_GR_rho, 1, 0x70 }, /* greek rho */ - { 0x03c2, XF_GR_FINALsigma, 1, 0x73 }, /* greek final sigma */ - { 0x03c3, 0, 0, 0xe5 }, /* greek sigma */ - { 0x03c4, 0, 0, 0xe7 }, /* greek tau */ - { 0x03c5, XF_GR_upsilon, 1, 0x75 }, /* greek upsilon */ - { 0x03c6, 0, 0, 0xed }, /* greek phi */ - { 0x03c7, XF_GR_chi, 1, 0x78 }, /* greek chi */ - { 0x03c8, XF_GR_psi, 2, 0xc2 }, /* greek psi */ - { 0x03c9, XF_GR_omega, 1, 0x77 }, /* greek omega */ - { 0x03ca, XF_GR_iotaDIA, 1, 0x69 }, /* greek iota with dialytica */ - { 0x03cb, XF_GR_upsilon, 1, 0x75 }, /* greek upsilon with dialytica */ - { 0x03cc, XF_GR_omicronTONOS, 1, 0x6f }, /* greek omicron with tonos */ - { 0x03cd, XF_GR_upsilonTONOS, 1, 0x75 }, /* greek upsilon with tonos */ - { 0x03ce, XF_GR_omegaTONOS, 1, 0x77 }, /* greek omega with tonos */ - - { 0x03f3, 0, 0, 0x6a }, /* greek yot */ - - /* Cyrillic */ - { 0x0400, XF_CYR_IEGRAVE,1, 0x45 }, /* cyrillic IE grave */ - { 0x0401, XF_CYR_IO, 1, 0x45 }, /* cyrillic IO */ - - { 0x0405, 0, 0, 0x53 }, /* cyrillic DZE */ - { 0x0406, 0, 0, 0x49 }, /* cyrillic byeloruss-ukr. I */ - { 0x0407, XF_CYR_YI, 1, 0x49 }, /* cyrillic YI */ - { 0x0408, 0, 0, 0x4a }, /* cyrillic JE */ - - { 0x0410, 0, 0, 0x41 }, /* cyrillic A */ - { 0x0411, XF_CYR_BE, 1, 0xeb }, /* cyrillic BE */ - { 0x0412, 0, 0, 0x42 }, /* cyrillic VE */ - { 0x0413, XF_CYR_GHE, 2, 0xb2 }, /* cyrillic GHE */ - { 0x0414, XF_CYR_DE, 2, 0x44 }, /* cyrillic DE */ - { 0x0415, 0, 0, 0x45 }, /* cyrillic IE */ - { 0x0416, XF_CYR_ZHE, 2, 0x2a }, /* cyrillic ZHE */ - { 0x0417, XF_CYR_ZE, 1, 0x33 }, /* cyrillic ZE */ - { 0x0418, XF_CYR_I, 1, 0x55 }, /* cyrillic I */ - { 0x0419, XF_CYR_SHORTI, 1, 0x55 }, /* cyrillic short I */ - { 0x041a, 0, 0, 0x4b }, /* cyrillic K */ - { 0x041b, XF_CYR_EL, 2, 0x4c }, /* cyrillic EL */ - { 0x041c, 0, 0, 0x4d }, /* cyrillic EM */ - { 0x041d, 0, 0, 0x48 }, /* cyrillic EN */ - { 0x041e, 0, 0, 0x4f }, /* cyrillic O */ - { 0x041f, XF_CYR_PE, 1, 0x14 }, /* cyrillic PE */ - { 0x0420, 0, 0, 0x50 }, /* cyrillic ER */ - { 0x0421, 0, 0, 0x43 }, /* cyrillic ES */ - { 0x0422, 0, 0, 0x54 }, /* cyrillic TE */ - { 0x0423, 0, 0, 0x59 }, /* cyrillic U */ - { 0x0424, 0, 0, 0xe8 }, /* cyrillic EF */ - { 0x0425, 0, 0, 0x58 }, /* cyrillic HA */ - { 0x0426, XF_CYR_TSE, 2, 0xd9 }, /* cyrillic TSE */ - { 0x0427, XF_CYR_CHE, 2, 0xd1 }, /* cyrillic CHE */ - { 0x0428, XF_CYR_SHA, 1, 0x57 }, /* cyrillic SHA */ - { 0x0429, XF_CYR_SHCHA, 1, 0x57 }, /* cyrillic SHCHA */ - { 0x042a, XF_CYR_HARD, 1, 0x62 }, /* cyrillic capital hard sign */ - { 0x042b, XF_CYR_YERU, 2, 0x1a }, /* cyrillic YERU */ - { 0x042c, 0, 0, 0x62 }, /* cyrillic capital soft sign */ - { 0x042d, XF_CYR_E, 2, 0xa6 }, /* cyrillic E */ - { 0x042e, XF_CYR_YU, 2, 0x1b }, /* cyrillic YU */ - { 0x042f, XF_CYR_YA, 2, 0xf3 }, /* cyrillic YA */ - { 0x0430, 0, 0, 0x61 }, /* cyrillic a */ - { 0x0431, 0, 0, 0xeb }, /* cyrillic be */ - { 0x0432, XF_CYR_ve, 1, 0xe1 }, /* cyrillic ve */ - { 0x0433, XF_CYR_ghe, 1, 0x72 }, /* cyrillic ghe */ - { 0x0434, XF_CYR_de, 2, 0x1f }, /* cyrillic de */ - { 0x0435, 0, 0, 0x65 }, /* cyrillic ie */ - { 0x0436, XF_CYR_zhe, 1, 0x2a }, /* cyrillic zhe */ - { 0x0437, XF_CYR_ze, 1, 0xae }, /* cyrillic ze */ - { 0x0438, XF_CYR_i, 1, 0x75 }, /* cyrillic i */ - { 0x0439, XF_CYR_SHORTi, 1, 0x75 }, /* cyrillic short i */ - { 0x043a, XF_CYR_ka, 1, 0x6b }, /* cyrillic ka */ - { 0x043b, XF_CYR_el, 2, 0xca }, /* cyrillic el */ - { 0x043c, XF_CYR_em, 1, 0x6d }, /* cyrillic em */ - { 0x043d, XF_CYR_en, 2, 0x48 }, /* cyrillic en */ - { 0x043e, 0, 0, 0x6f }, /* cyrillic o */ - { 0x043f, 0, 0, 0xe3 }, /* cyrillic pe */ - { 0x0440, 0, 0, 0x70 }, /* cyrillic er */ - { 0x0441, 0, 0, 0x63 }, /* cyrillic es */ - { 0x0442, 0, 0, 0xe7 }, /* cyrillic te */ - { 0x0443, 0, 0, 0x79 }, /* cyrillic u */ - { 0x0444, 0, 0, 0xed }, /* cyrillic ef */ - { 0x0445, 0, 0, 0x78 }, /* cyrillic ha */ - { 0x0446, XF_CYR_tse, 2, 0xd9 }, /* cyrillic tse */ - { 0x0447, XF_CYR_che, 2, 0xd1 }, /* cyrillic che */ - { 0x0448, XF_CYR_sha, 1, 0x77 }, /* cyrillic sha */ - { 0x0449, XF_CYR_shcha, 1, 0x77 }, /* cyrillic shcha */ - { 0x044a, XF_CYR_hard, 1, 0x62 }, /* cyrillic small hard sign */ - { 0x044b, XF_CYR_yeru, 2, 0x1a }, /* cyrillic yeru */ - { 0x044c, XF_CYR_soft, 1, 0x62 }, /* cyrillic small soft sign */ - { 0x044d, XF_CYR_e, 2, 0xa7 }, /* cyrillic e */ - { 0x044e, XF_CYR_yu, 2, 0x1b }, /* cyrillic yu */ - { 0x044f, XF_CYR_ya, 2, 0xfb }, /* cyrillic ya */ - { 0x0450, XF_CYR_ieGRAVE,1, 0x65 }, /* cyrillic ie grave */ - { 0x0451, XF_CYR_io, 1, 0x65 }, /* cyrillic io */ - - { 0x0455, 0, 0, 0x73 }, /* cyrillic dze */ - { 0x0456, 0, 0, 0x69 }, /* cyrillic byeloruss-ukr. i */ - { 0x0457, XF_CYR_yi, 1, 0x69 }, /* cyrillic yi */ - { 0x0458, 0, 0, 0x6a }, /* cyrillic je */ - - /* extra punctuation */ - { 0x2013, 0, 0, 0x2d }, /* en dash */ - { 0x2014, 0, 0, 0x2d }, /* em dash */ - - { 0x2018, 0, 0, 0x27 }, /* left single quotation mark */ - { 0x2019, 0, 0, 0x27 }, /* right single quotation mark */ - { 0x201a, 0, 0, 0x2c }, /* single low-9 quotation mark */ - { 0x201b, 0, 0, 0x27 }, /* single high-reversed-9 quotation mark */ - { 0x201c, 0, 0, 0x22 }, /* left double quotation mark */ - { 0x201d, 0, 0, 0x22 }, /* right double quotation mark */ - { 0x201e, 0, 0, 0x22 }, /* double low-9 quotation mark */ - { 0x201f, 0, 0, 0x22 }, /* double high-reversed-9 quotation mark */ - - { 0x2022, 0, 0, 0xa5 }, /* bullet */ - - { 0x2039, 0, 0, 0x3c }, /* single left-pointing angle quotation mark */ - { 0x203a, 0, 0, 0x3e }, /* single right-pointing angle quotation mark */ - - /* Runtime-definable characters */ - { 0xe000, 0x8000, 15, 0x20 }, /* variable character 0 */ - { 0xe001, 0x8001, 15, 0x20 }, /* variable character 1 */ - { 0xe002, 0x8002, 15, 0x20 }, /* variable character 2 */ - { 0xe003, 0x8003, 15, 0x20 }, /* variable character 3 */ - { 0xe004, 0x8004, 15, 0x20 }, /* variable character 4 */ - { 0xe005, 0x8005, 15, 0x20 }, /* variable character 5 */ - { 0xe006, 0x8006, 15, 0x20 }, /* variable character 6 */ - { 0xe007, 0x8007, 15, 0x20 }, /* variable character 7 */ - { 0xe008, 0x8008, 15, 0x20 }, /* variable character 8 */ - { 0xe009, 0x8009, 15, 0x20 }, /* variable character 9 */ - { 0xe00a, 0x800a, 15, 0x20 }, /* variable character 10 */ - { 0xe00b, 0x800b, 15, 0x20 }, /* variable character 11 */ - { 0xe00c, 0x800c, 15, 0x20 }, /* variable character 12 */ - { 0xe00d, 0x800d, 15, 0x20 }, /* variable character 13 */ - { 0xe00e, 0x800e, 15, 0x20 }, /* variable character 14 */ - { 0xe00f, 0x800f, 15, 0x20 }, /* variable character 15 */ - - /* Icons and special symbols */ - { 0xe100, XF_ICON_UNKNOWN, 14, 0x3f }, /* unknown icon (mirrored ?) */ - { 0xe101, XF_ICON_BOOKMARK, 14, 0x94 }, /* bookmark icon */ - { 0xe102, XF_ICON_PLUGIN, 14, 0x29 }, /* plugin icon */ - { 0xe103, XF_ICON_FOLDER, 14, 0x91 }, /* folder icon */ - { 0xe104, XF_ICON_FIRMWARE, 14, 0x78 }, /* firmware icon */ - { 0xe105, XF_ICON_LANGUAGE, 14, 0x2b }, /* language icon */ - { 0xe106, XF_ICON_AUDIO, 14, 0x13 }, /* audio icon (note) */ - { 0xe107, XF_ICON_WPS, 14, 0x94 }, /* wps icon */ - { 0xe108, XF_ICON_PLAYLIST, 14, 0xd0 }, /* playlist icon */ - { 0xe109, XF_ICON_TEXTFILE, 14, 0xd0 }, /* text file icon */ - { 0xe10a, XF_ICON_CONFIG, 14, 0xd0 }, /* config icon */ - { 0xe10b, 0, 0, 0x7f }, /* left arrow */ - { 0xe10c, 0, 0, 0x7e }, /* right arrow */ - { 0xe10d, 0, 0, 0x18 }, /* up arrow */ - { 0xe10e, 0, 0, 0x19 }, /* down arrow */ - { 0xe10f, 0, 0, 0x11 }, /* filled left arrow */ - { 0xe110, 0, 0, 0x10 }, /* filled right arrow */ - { 0xe111, 0, 0, 0x1f }, /* filled up arrow */ - { 0xe112, 0, 0, 0x1e }, /* filled down arrow */ - { 0xe113, 0, 0, 0x20 }, /* level 0/7 */ - { 0xe114, 0, 0, 0x80 }, /* level 1/7 */ - { 0xe115, 0, 0, 0x81 }, /* level 2/7 */ - { 0xe116, 0, 0, 0x82 }, /* level 3/7 */ - { 0xe117, 0, 0, 0x83 }, /* level 4/7 */ - { 0xe118, 0, 0, 0x84 }, /* level 5/7 */ - { 0xe119, 0, 0, 0x85 }, /* level 6/7 */ - { 0xe11a, 0, 0, 0x86 }, /* level 7/7 */ - - /* Halfwidth CJK punctuation and katakana - new LCD only */ - { 0xff61, 0, 0, 0xa1 }, /* hw ideographic full stop */ - { 0xff62, 0, 0, 0xa2 }, /* hw left corner bracket */ - { 0xff63, 0, 0, 0xa3 }, /* hw right corner bracket */ - { 0xff64, 0, 0, 0xa4 }, /* hw ideographic comma */ - { 0xff65, 0, 0, 0xa5 }, /* hw katakana middle dot */ - { 0xff66, 0, 0, 0xa6 }, /* hw katakana WO */ - { 0xff67, 0, 0, 0xa7 }, /* hw katakana a */ - { 0xff68, 0, 0, 0xa8 }, /* hw katakana i */ - { 0xff69, 0, 0, 0xa9 }, /* hw katakana u */ - { 0xff6a, 0, 0, 0xaa }, /* hw katakana e */ - { 0xff6b, 0, 0, 0xab }, /* hw katakana o */ - { 0xff6c, 0, 0, 0xac }, /* hw katakana ya */ - { 0xff6d, 0, 0, 0xad }, /* hw katakana yu */ - { 0xff6e, 0, 0, 0xae }, /* hw katakana yo */ - { 0xff6f, 0, 0, 0xaf }, /* hw katakana tu */ - { 0xff70, 0, 0, 0xb0 }, /* hw katakana-hiragana prolonged soundmark */ - { 0xff71, 0, 0, 0xb1 }, /* hw katakana A */ - { 0xff72, 0, 0, 0xb2 }, /* hw katakana I */ - { 0xff73, 0, 0, 0xb3 }, /* hw katakana U */ - { 0xff74, 0, 0, 0xb4 }, /* hw katakana E */ - { 0xff75, 0, 0, 0xb5 }, /* hw katakana O */ - { 0xff76, 0, 0, 0xb6 }, /* hw katakana KA */ - { 0xff77, 0, 0, 0xb7 }, /* hw katakana KI */ - { 0xff78, 0, 0, 0xb8 }, /* hw katakana KU */ - { 0xff79, 0, 0, 0xb9 }, /* hw katakana KE */ - { 0xff7a, 0, 0, 0xba }, /* hw katakana KO */ - { 0xff7b, 0, 0, 0xbb }, /* hw katakana SA */ - { 0xff7c, 0, 0, 0xbc }, /* hw katakana SI */ - { 0xff7d, 0, 0, 0xbd }, /* hw katakana SU */ - { 0xff7e, 0, 0, 0xbe }, /* hw katakana SE */ - { 0xff7f, 0, 0, 0xbf }, /* hw katakana SO */ - { 0xff80, 0, 0, 0xc0 }, /* hw katakana TA */ - { 0xff81, 0, 0, 0xc1 }, /* hw katakana TI */ - { 0xff82, 0, 0, 0xc2 }, /* hw katakana TU */ - { 0xff83, 0, 0, 0xc3 }, /* hw katakana TE */ - { 0xff84, 0, 0, 0xc4 }, /* hw katakana TO */ - { 0xff85, 0, 0, 0xc5 }, /* hw katakana NA */ - { 0xff86, 0, 0, 0xc6 }, /* hw katakana NI */ - { 0xff87, 0, 0, 0xc7 }, /* hw katakana NU */ - { 0xff88, 0, 0, 0xc8 }, /* hw katakana NE */ - { 0xff89, 0, 0, 0xc9 }, /* hw katakana NO */ - { 0xff8a, 0, 0, 0xca }, /* hw katakana HA */ - { 0xff8b, 0, 0, 0xcb }, /* hw katakana HI */ - { 0xff8c, 0, 0, 0xcc }, /* hw katakana HU */ - { 0xff8d, 0, 0, 0xcd }, /* hw katakana HE */ - { 0xff8e, 0, 0, 0xce }, /* hw katakana HO */ - { 0xff8f, 0, 0, 0xcf }, /* hw katakana MA */ - { 0xff90, 0, 0, 0xd0 }, /* hw katakana MI */ - { 0xff91, 0, 0, 0xd1 }, /* hw katakana MU */ - { 0xff92, 0, 0, 0xd2 }, /* hw katakana ME */ - { 0xff93, 0, 0, 0xd3 }, /* hw katakana MO */ - { 0xff94, 0, 0, 0xd4 }, /* hw katakana YA */ - { 0xff95, 0, 0, 0xd5 }, /* hw katakana YU */ - { 0xff96, 0, 0, 0xd6 }, /* hw katakana YO */ - { 0xff97, 0, 0, 0xd7 }, /* hw katakana RA */ - { 0xff98, 0, 0, 0xd8 }, /* hw katakana RI */ - { 0xff99, 0, 0, 0xd9 }, /* hw katakana RU */ - { 0xff9a, 0, 0, 0xda }, /* hw katakana RE */ - { 0xff9b, 0, 0, 0xdb }, /* hw katakana RO */ - { 0xff9c, 0, 0, 0xdc }, /* hw katakana WA */ - { 0xff9d, 0, 0, 0xdd }, /* hw katakana N */ - { 0xff9e, 0, 0, 0xde }, /* hw katakana voiced sound mark */ - { 0xff9f, 0, 0, 0xdf }, /* hw katakana semi-voiced sound mark */ -#endif /* !BOOTLOADER */ - - /* no-char symbol */ - { 0xfffd, 0, 0, 0x91 }, -}; - -static const struct xchar_info xchar_info_oldlcd[] = { - /* Standard ascii */ - { 0x20, 0, 0, 0x24 }, /* */ - { 0x21, 0, 0, 0x25 }, /* ! */ - { 0x22, 0, 0, 0x26 }, /* " */ - { 0x23, 0, 0, 0x27 }, /* # */ - { 0x24, 0, 0, 0x06 }, /* $ */ - { 0x25, 0, 0, 0x29 }, /* % */ - { 0x26, 0, 0, 0x2a }, /* & */ - { 0x27, 0, 0, 0x2b }, /* ' */ - { 0x28, 0, 0, 0x2c }, /* ( */ - { 0x29, 0, 0, 0x2d }, /* ) */ - { 0x2a, 0, 0, 0x2e }, /* * */ - { 0x2b, 0, 0, 0x2f }, /* + */ - { 0x2c, 0, 0, 0x30 }, /* , */ - { 0x2d, 0, 0, 0x31 }, /* - */ - { 0x2e, 0, 0, 0x32 }, /* . */ - { 0x2f, 0, 0, 0x33 }, /* / */ - { 0x30, 0, 0, 0x34 }, /* 0 */ - { 0x31, 0, 0, 0x35 }, /* 1 */ - { 0x32, 0, 0, 0x36 }, /* 2 */ - { 0x33, 0, 0, 0x37 }, /* 3 */ - { 0x34, 0, 0, 0x38 }, /* 4 */ - { 0x35, 0, 0, 0x39 }, /* 5 */ - { 0x36, 0, 0, 0x3a }, /* 6 */ - { 0x37, 0, 0, 0x3b }, /* 7 */ - { 0x38, 0, 0, 0x3c }, /* 8 */ - { 0x39, 0, 0, 0x3d }, /* 9 */ - { 0x3a, 0, 0, 0x3e }, /* : */ - { 0x3b, 0, 0, 0x3f }, /* ; */ - { 0x3c, 0, 0, 0x40 }, /* < */ - { 0x3d, 0, 0, 0x41 }, /* = */ - { 0x3e, 0, 0, 0x42 }, /* > */ - { 0x3f, 0, 0, 0x43 }, /* ? */ - { 0x40, 0, 0, 0x04 }, /* @ */ - { 0x41, 0, 0, 0x45 }, /* A */ - { 0x42, 0, 0, 0x46 }, /* B */ - { 0x43, 0, 0, 0x47 }, /* C */ - { 0x44, 0, 0, 0x48 }, /* D */ - { 0x45, 0, 0, 0x49 }, /* E */ - { 0x46, 0, 0, 0x4a }, /* F */ - { 0x47, 0, 0, 0x4b }, /* G */ - { 0x48, 0, 0, 0x4c }, /* H */ - { 0x49, 0, 0, 0x4d }, /* I */ - { 0x4a, 0, 0, 0x4e }, /* J */ - { 0x4b, 0, 0, 0x4f }, /* K */ - { 0x4c, 0, 0, 0x50 }, /* L */ - { 0x4d, 0, 0, 0x51 }, /* M */ - { 0x4e, 0, 0, 0x52 }, /* N */ - { 0x4f, 0, 0, 0x53 }, /* O */ - { 0x50, 0, 0, 0x54 }, /* P */ - { 0x51, 0, 0, 0x55 }, /* Q */ - { 0x52, 0, 0, 0x56 }, /* R */ - { 0x53, 0, 0, 0x57 }, /* S */ - { 0x54, 0, 0, 0x58 }, /* T */ - { 0x55, 0, 0, 0x59 }, /* U */ - { 0x56, 0, 0, 0x5a }, /* V */ - { 0x57, 0, 0, 0x5b }, /* W */ - { 0x58, 0, 0, 0x5c }, /* X */ - { 0x59, 0, 0, 0x5d }, /* Y */ - { 0x5a, 0, 0, 0x5e }, /* Z */ - { 0x5b, 0, 0, 0xa9 }, /* [ */ - { 0x5c, XF_BACKSLASH, 2, 0x33 }, /* \ */ - { 0x5d, 0, 0, 0xce }, /* ] */ - { 0x5e, XF_CIRCUMFLEX, 2, 0xee }, /* ^ */ - { 0x5f, 0, 0, 0x15 }, /* _ */ - { 0x60, XF_GRAVEACCENT, 2, 0x2b }, /* ` */ - { 0x61, 0, 0, 0x65 }, /* a */ - { 0x62, 0, 0, 0x66 }, /* b */ - { 0x63, 0, 0, 0x67 }, /* c */ - { 0x64, 0, 0, 0x68 }, /* d */ - { 0x65, 0, 0, 0x69 }, /* e */ - { 0x66, 0, 0, 0x6a }, /* f */ - { 0x67, 0, 0, 0x6b }, /* g */ - { 0x68, 0, 0, 0x6c }, /* h */ - { 0x69, 0, 0, 0x6d }, /* i */ - { 0x6a, 0, 0, 0x6e }, /* j */ - { 0x6b, 0, 0, 0x6f }, /* k */ - { 0x6c, 0, 0, 0x70 }, /* l */ - { 0x6d, 0, 0, 0x71 }, /* m */ - { 0x6e, 0, 0, 0x72 }, /* n */ - { 0x6f, 0, 0, 0x73 }, /* o */ - { 0x70, 0, 0, 0x74 }, /* p */ - { 0x71, 0, 0, 0x75 }, /* q */ - { 0x72, 0, 0, 0x76 }, /* r */ - { 0x73, 0, 0, 0x77 }, /* s */ - { 0x74, 0, 0, 0x78 }, /* t */ - { 0x75, 0, 0, 0x79 }, /* u */ - { 0x76, 0, 0, 0x7a }, /* v */ - { 0x77, 0, 0, 0x7b }, /* w */ - { 0x78, 0, 0, 0x7c }, /* x */ - { 0x79, 0, 0, 0x7d }, /* y */ - { 0x7a, 0, 0, 0x7e }, /* z */ - { 0x7b, 0, 0, 0x2c }, /* { (hard-coded ( ) */ - { 0x7c, XF_VERTICALBAR, 2, 0x25 }, /* | */ - { 0x7d, 0, 0, 0x2d }, /* } (hard-coded ) ) */ - { 0x7e, XF_TILDE, 2, 0x31 }, /* ~ */ - { 0x7f, 0, 0, 0x8b }, /* (full grid) */ - -#ifndef BOOTLOADER /* bootloader only supports pure ASCII */ - /* Latin 1 */ - { 0xa0, 0, 0, 0x24 }, /* (non-breaking space) */ - { 0xa1, 0, 0, 0x44 }, /* ¡ (inverted !) */ - { 0xa2, 0, 0, 0xa8 }, /* ¢ (cent sign) */ - { 0xa3, 0, 0, 0x05 }, /* £ (pound sign) */ - { 0xa4, 0, 0, 0x28 }, /* ¤ (currency sign) */ - { 0xa5, 0, 0, 0x07 }, /* ¥ (yen sign) */ - - { 0xa7, 0, 0, 0x63 }, /* § (paragraph sign) */ - - { 0xab, XF_LEFTDBLANGLEQUOT, 1, 0x40 }, /* « (left double-angle quotation mark) */ - - { 0xad, 0, 0, 0x31 }, /* ­ (soft hyphen) */ - - { 0xaf, 0, 0, 0xee }, /* ¯ (macron) */ - - { 0xb1, XF_PLUSMINUS, 1, 0x2f }, /* ± (plus-minus sign) */ - { 0xb2, XF_SUPER2, 1, 0x36 }, /* ³ (superscript 2) */ - { 0xb3, XF_SUPER3, 1, 0x37 }, /* ³ (superscript 3) */ - - { 0xb5, XF_MICRO, 1, 0x79 }, /* µ (micro sign) */ - { 0xb6, 0, 0, 0x1a }, /* ¶ (pilcrow sign) */ - { 0xb7, XF_MIDDLEDOT, 1, 0x32 }, /* · (middle dot) */ - - { 0xbb, XF_RIGHTDBLANGLEQUOT, 1, 0x42 }, /* » (right double-angle quotation mark) */ - { 0xbc, XF_ONEQUARTER, 1, 0x29 }, /* ¼ (one quarter) */ - { 0xbd, XF_ONEHALF, 1, 0x29 }, /* ½ (one half) */ - { 0xbe, XF_THREEQUARTERS, 1, 0x29 }, /* ¾ (three quarters) */ - { 0xbf, 0, 0, 0x64 }, /* ¿ (inverted ?) */ - { 0xc0, 0, 0, 0x8c }, /* À (A grave) */ - { 0xc1, 0, 0, 0x8d }, /* Á (A acute) */ - { 0xc2, 0, 0, 0x8e }, /* Â (A circumflex) */ - { 0xc3, 0, 0, 0x8f }, /* Ã (A tilde) */ - { 0xc4, 0, 0, 0x5f }, /* Ä (A dieresis) */ - { 0xc5, 0, 0, 0x12 }, /* Å (A with ring above) */ - { 0xc6, 0, 0, 0x20 }, /* Æ (AE ligature) */ - { 0xc7, 0, 0, 0x0d }, /* Ç (C cedilla) */ - { 0xc8, 0, 0, 0x90 }, /* È (E grave) */ - { 0xc9, 0, 0, 0x23 }, /* É (E acute) */ - { 0xca, 0, 0, 0x91 }, /* Ê (E circumflex) */ - { 0xcb, 0, 0, 0x92 }, /* Ë (E dieresis) */ - { 0xcc, 0, 0, 0x93 }, /* Ì (I grave) */ - { 0xcd, 0, 0, 0x94 }, /* Í (I acute) */ - { 0xce, XF_ICIRCUMFLEX, 1, 0x4d }, /* Î (I circumflex) */ - { 0xcf, XF_IDIERESIS, 1, 0x4d }, /* Ï (I dieresis) */ - { 0xd0, 0, 0, 0x95 }, /* Ð (ETH) */ - { 0xd1, 0, 0, 0x61 }, /* Ñ (N tilde) */ - { 0xd2, 0, 0, 0x96 }, /* Ò (O grave) */ - { 0xd3, 0, 0, 0x97 }, /* Ó (O acute) */ - { 0xd4, 0, 0, 0x98 }, /* Ô (O circumflex) */ - { 0xd5, 0, 0, 0x99 }, /* Õ (O tilde) */ - { 0xd6, 0, 0, 0x60 }, /* Ö (O dieresis) */ - { 0xd7, 0, 0, 0xde }, /* × (multiplication sign) */ - { 0xd8, 0, 0, 0x0f }, /* Ø (O stroke) */ - { 0xd9, 0, 0, 0x9a }, /* Ù (U grave) */ - { 0xda, 0, 0, 0x9b }, /* Ú (U acute) */ - { 0xdb, XF_UCIRCUMFLEX, 1, 0x59 }, /* Û (U circumflex) */ - { 0xdc, 0, 0, 0x62 }, /* Ü (U dieresis) */ - { 0xdd, XF_YACUTE, 1, 0x5d }, /* Ý (Y acute) */ - - { 0xdf, 0, 0, 0x22 }, /* ß (sharp s) */ - { 0xe0, 0, 0, 0x83 }, /* à (a grave) */ - { 0xe1, 0, 0, 0x9c }, /* á (a acute) */ - { 0xe2, 0, 0, 0x9d }, /* â (a circumflex) */ - { 0xe3, 0, 0, 0x9e }, /* ã (a tilde) */ - { 0xe4, 0, 0, 0x7f }, /* ä (a dieresis) */ - { 0xe5, 0, 0, 0x13 }, /* å (a with ring above) */ - { 0xe6, 0, 0, 0x21 }, /* æ (ae ligature */ - { 0xe7, 0, 0, 0x84 }, /* ç (c cedilla) */ - { 0xe8, 0, 0, 0x08 }, /* è (e grave) */ - { 0xe9, 0, 0, 0x09 }, /* é (e acute) */ - { 0xea, 0, 0, 0x9f }, /* ê (e circumflex) */ - { 0xeb, 0, 0, 0xa0 }, /* ë (e dieresis) */ - { 0xec, XF_iGRAVE, 1, 0x6d }, /* ì (i grave) */ - { 0xed, 0, 0, 0xa1 }, /* í (i acute) */ - { 0xee, 0, 0, 0xa2 }, /* î (i circumflex) */ - { 0xef, 0, 0, 0xa3 }, /* ï (i dieresis) */ - - { 0xf1, 0, 0, 0x81 }, /* ñ (n tilde) */ - { 0xf2, 0, 0, 0x0c }, /* ò (o grave) */ - { 0xf3, 0, 0, 0xa4 }, /* ó (o acute) */ - { 0xf4, 0, 0, 0xa5 }, /* ô (o circumflex) */ - { 0xf5, 0, 0, 0xa6 }, /* õ (o tilde) */ - { 0xf6, 0, 0, 0x80 }, /* ö (o dieresis) */ - { 0xf7, XF_DIVISION, 1, 0x2f }, /* ÷ (division sign) */ - { 0xf8, 0, 0, 0x10 }, /* ø (o slash) */ - { 0xf9, 0, 0, 0x0a }, /* ù (u grave) */ - { 0xfa, 0, 0, 0xa7 }, /* ú (u acute) */ - { 0xfb, XF_uCIRCUMFLEX, 1, 0x79 }, /* û (u circumflex) */ - { 0xfc, 0, 0, 0xa2 }, /* ü (u dieresis) */ - { 0xfd, 0, 0, 0xaf }, /* ý (y acute) */ - - { 0xff, XF_yDIERESIS, 1, 0x7d }, /* ÿ (y dieresis) */ - - /* Latin extended A */ - { 0x0103, 0, 0, 0xe9 }, /* a breve */ - { 0x0105, 0, 0, 0xb3 }, /* a ogonek */ - { 0x0107, 0, 0, 0xb1 }, /* c acute */ - { 0x010d, 0, 0, 0xab }, /* c caron */ - { 0x010f, 0, 0, 0xbc }, /* d caron */ - { 0x0110, 0, 0, 0x95 }, /* D stroke */ - { 0x0111, 0, 0, 0xb0 }, /* d stroke */ - { 0x0119, 0, 0, 0xb2 }, /* e ogonek */ - { 0x011b, 0, 0, 0xad }, /* e caron */ - { 0x011e, 0, 0, 0xc1 }, /* G breve */ - { 0x011f, 0, 0, 0xc2 }, /* g breve */ - { 0x0130, 0, 0, 0xc5 }, /* I with dot above */ - { 0x0131, 0, 0, 0xc6 }, /* dotless i */ - { 0x0141, XF_LSTROKE, 1, 0x50 }, /* L stroke */ - { 0x0142, 0, 0, 0xb8 }, /* l stroke */ - { 0x0144, 0, 0, 0xb7 }, /* n acute */ - { 0x0148, 0, 0, 0xba }, /* n caron */ - { 0x0150, 0, 0, 0xc8 }, /* O double acute */ - { 0x0151, 0, 0, 0xca }, /* o double acute */ - { 0x0158, XF_RCARON, 1, 0x56 }, /* R caron */ - { 0x0159, 0, 0, 0xaa }, /* r caron */ - { 0x015a, 0, 0, 0xb6 }, /* S acute */ - { 0x015b, 0, 0, 0xb6 }, /* s acute */ - { 0x015e, 0, 0, 0xc3 }, /* S cedilla */ - { 0x015f, 0, 0, 0xc4 }, /* s cedilla */ - { 0x0160, 0, 0, 0xac }, /* S caron */ - { 0x0161, 0, 0, 0xac }, /* s caron */ - { 0x0163, 0, 0, 0xd9 }, /* t cedilla */ - { 0x0165, 0, 0, 0xbb }, /* t caron */ - { 0x016f, 0, 0, 0xae }, /* u with ring above */ - { 0x0170, 0, 0, 0xc7 }, /* U double acute */ - { 0x0171, 0, 0, 0xc9 }, /* u double acute */ - { 0x017a, 0, 0, 0xb5 }, /* z acute */ - { 0x017c, 0, 0, 0xb4 }, /* z with dot above */ - { 0x017e, 0, 0, 0xbd }, /* z caron */ - - /* Greek */ - { 0x037e, 0, 0, 0x3f }, /* greek question mark */ - - { 0x0386, 0, 0, 0x45 }, /* greek ALPHA with tonos */ - { 0x0387, XF_GR_ANOTELEIA,1, 0x32 }, /* greek ano teleia */ - { 0x0388, 0, 0, 0x49 }, /* greek EPSILON with tonos */ - { 0x0389, 0, 0, 0x4c }, /* greek ETA with tonos */ - { 0x038a, 0, 0, 0x4d }, /* greek IOTA with tonos */ - /* reserved */ - { 0x038c, 0, 0, 0x53 }, /* greek OMICRON with tonos */ - /* reserved */ - { 0x038e, 0, 0, 0x5d }, /* greek YPSILON with tonos */ - { 0x038f, 0, 0, 0x19 }, /* greek OMEGA with tonos */ - { 0x0390, 0, 0, 0xa1 }, /* greek iota with dialytica + tonos */ - { 0x0391, 0, 0, 0x45 }, /* greek ALPHA */ - { 0x0392, 0, 0, 0x46 }, /* greek BETA */ - { 0x0393, 0, 0, 0x17 }, /* greek GAMMA */ - { 0x0394, 0, 0, 0x14 }, /* greek DELTA */ - { 0x0395, 0, 0, 0x49 }, /* greek EPSILON */ - { 0x0396, 0, 0, 0x5e }, /* greek ZETA */ - { 0x0397, 0, 0, 0x4c }, /* greek ETA */ - { 0x0398, 0, 0, 0x1d }, /* greek THETA */ - { 0x0399, 0, 0, 0x4d }, /* greek IOTA */ - { 0x039a, 0, 0, 0x4f }, /* greek KAPPA */ - { 0x039b, 0, 0, 0x18 }, /* greek LAMBDA */ - { 0x039c, 0, 0, 0x51 }, /* greek MU */ - { 0x039d, 0, 0, 0x52 }, /* greek NU */ - { 0x039e, 0, 0, 0x1e }, /* greek XI */ - { 0x039f, 0, 0, 0x53 }, /* greek OMICRON */ - { 0x03a0, 0, 0, 0x1a }, /* greek PI */ - { 0x03a1, 0, 0, 0x54 }, /* greek RHO */ - /* reserved */ - { 0x03a3, 0, 0, 0x1c }, /* greek SIGMA */ - { 0x03a4, 0, 0, 0x58 }, /* greek TAU */ - { 0x03a5, 0, 0, 0x5d }, /* greek UPSILON */ - { 0x03a6, 0, 0, 0x16 }, /* greek PHI */ - { 0x03a7, 0, 0, 0x5c }, /* greek CHI */ - { 0x03a8, 0, 0, 0x1b }, /* greek PSI */ - { 0x03a9, 0, 0, 0x19 }, /* greek OMEGA */ - { 0x03aa, 0, 0, 0x4d }, /* greek IOTA with dialytica */ - { 0x03ab, 0, 0, 0x5d }, /* greek UPSILON with dialytica */ - { 0x03ac, XF_GR_alphaTONOS, 1, 0x9c }, /* greek alpha with tonos */ - { 0x03ad, XF_GR_epsilonTONOS, 1, 0x69 }, /* greek epsilon with tonos */ - { 0x03ae, XF_GR_etaTONOS, 1, 0x72 }, /* greek eta with tonos */ - { 0x03af, 0, 0, 0xa1 }, /* greek iota with tonos */ - { 0x03b0, XF_GR_upsilonTONOS, 1, 0xa7 }, /* greek upsilon with dialytica + tonos */ - { 0x03b1, XF_GR_alpha, 1, 0x65 }, /* greek alpha */ - { 0x03b2, 0, 0, 0x22 }, /* greek beta */ - { 0x03b3, XF_GR_gamma, 1, 0x7d }, /* greek gamma */ - { 0x03b4, XF_GR_delta, 2, 0x14 }, /* greek delta */ - { 0x03b5, XF_GR_epsilon, 1, 0x69 }, /* greek epsilon */ - { 0x03b6, XF_GR_zeta, 1, 0x7e }, /* greek zeta */ - { 0x03b7, XF_GR_eta, 1, 0x72 }, /* greek eta */ - { 0x03b8, 0, 0, 0x1d }, /* greek theta */ - { 0x03b9, 0, 0, 0xc6 }, /* greek iota */ - { 0x03ba, XF_GR_kappa, 1, 0x6f }, /* greek kappa */ - { 0x03bb, XF_GR_lambda, 1, 0x18 }, /* greek lambda */ - { 0x03bc, XF_GR_mu, 1, 0x79 }, /* greek mu */ - { 0x03bd, 0, 0, 0x7a }, /* greek nu */ - { 0x03be, XF_GR_xi, 2, 0x1e }, /* greek xi */ - { 0x03bf, 0, 0, 0x73 }, /* greek omicron */ - { 0x03c0, XF_GR_pi, 1, 0x72 }, /* greek pi */ - { 0x03c1, XF_GR_rho, 1, 0x74 }, /* greek rho */ - { 0x03c2, XF_GR_FINALsigma, 1, 0x77 }, /* greek final sigma */ - { 0x03c3, XF_GR_sigma, 1, 0x73 }, /* greek sigma */ - { 0x03c4, XF_GR_tau, 1, 0x78 }, /* greek tau */ - { 0x03c5, XF_GR_upsilon, 1, 0x79 }, /* greel upsilon */ - { 0x03c6, 0, 0, 0x10 }, /* greek phi */ - { 0x03c7, XF_GR_chi, 1, 0x7c }, /* greek chi */ - { 0x03c8, XF_GR_psi, 1, 0x1b }, /* greek psi */ - { 0x03c9, XF_GR_omega, 1, 0x7b }, /* greek omega */ - { 0x03ca, 0, 0, 0xa3 }, /* greek iota with dialytica */ - { 0x03cb, XF_GR_upsilon, 1, 0x82 }, /* greek upsilon with dialytica */ - { 0x03cc, 0, 0, 0xa4 }, /* greek omicron with tonos */ - { 0x03cd, XF_GR_upsilonTONOS, 1, 0xa7 }, /* greek upsilon with tonos */ - { 0x03ce, XF_GR_omegaTONOS, 1, 0x7b }, /* greek omega with tonos */ - - { 0x03f3, 0, 0, 0x6e }, /* greek yot */ - - /* Cyrillic */ - { 0x0400, 0, 0, 0x90 }, /* cyrillic IE grave */ - { 0x0401, 0, 0, 0x92 }, /* cyrillic IO */ - - { 0x0405, 0, 0, 0x57 }, /* cyrillic DZE */ - { 0x0406, 0, 0, 0x4d }, /* cyrillic byeloruss-ukr. I */ - { 0x0407, XF_CYR_YI, 1, 0x4d }, /* cyrillic YI */ - { 0x0408, 0, 0, 0x4e }, /* cyrillic JE */ - - { 0x0410, 0, 0, 0x45 }, /* cyrillic A */ - { 0x0411, XF_CYR_BE, 1, 0x3a }, /* cyrillic BE */ - { 0x0412, 0, 0, 0x46 }, /* cyrillic VE */ - { 0x0413, 0, 0, 0x17 }, /* cyrillic GHE */ - { 0x0414, XF_CYR_DE, 1, 0x14 }, /* cyrillic DE */ - { 0x0415, 0, 0, 0x49 }, /* cyrillic IE */ - { 0x0416, XF_CYR_ZHE, 2, 0x2e }, /* cyrillic ZHE */ - { 0x0417, XF_CYR_ZE, 1, 0x37 }, /* cyrillic ZE */ - { 0x0418, XF_CYR_I, 1, 0x59 }, /* cyrillic I */ - { 0x0419, XF_CYR_SHORTI, 1, 0x9b }, /* cyrillic short I */ - { 0x041a, 0, 0, 0x4f }, /* cyrillic K */ - { 0x041b, XF_CYR_EL, 1, 0x18 }, /* cyrillic EL */ - { 0x041c, 0, 0, 0x51 }, /* cyrillic EM */ - { 0x041d, 0, 0, 0x4c }, /* cyrillic EN */ - { 0x041e, 0, 0, 0x53 }, /* cyrillic O */ - { 0x041f, 0, 0, 0x1a }, /* cyrillic PE */ - { 0x0420, 0, 0, 0x54 }, /* cyrillic ER */ - { 0x0421, 0, 0, 0x47 }, /* cyrillic ES */ - { 0x0422, 0, 0, 0x58 }, /* cyrillic TE */ - { 0x0423, 0, 0, 0x5d }, /* cyrillic U */ - { 0x0424, 0, 0, 0x16 }, /* cyrillic EF */ - { 0x0425, 0, 0, 0x5c }, /* cyrillic HA */ - { 0x0426, XF_CYR_TSE, 2, 0x5e }, /* cyrillic TSE */ - { 0x0427, XF_CYR_CHE, 2, 0x0e }, /* cyrillic CHE */ - { 0x0428, XF_CYR_SHA, 1, 0x5b }, /* cyrillic SHA */ - { 0x0429, XF_CYR_SHCHA, 1, 0x5b }, /* cyrillic SHCHA */ - { 0x042a, XF_CYR_HARD, 1, 0x66 }, /* cyrillic capital hard sign */ - { 0x042b, XF_CYR_YERU, 2, 0x66 }, /* cyrillic YERU */ - { 0x042c, 0, 0, 0x66 }, /* cyrillic capital soft sign */ - { 0x042d, XF_CYR_E, 2, 0x89 }, /* cyrillic E */ - { 0x042e, XF_CYR_YU, 2, 0x95 }, /* cyrillic YU */ - { 0x042f, XF_CYR_YA, 1, 0x0d }, /* cyrillic YA */ - { 0x0430, 0, 0, 0x65 }, /* cyrillic a */ - { 0x0431, XF_CYR_be, 1, 0x97 }, /* cyrillic be */ - { 0x0432, XF_CYR_ve, 1, 0x22 }, /* cyrillic ve */ - { 0x0433, XF_CYR_ghe, 1, 0x76 }, /* cyrillic ghe */ - { 0x0434, XF_CYR_de, 2, 0x14 }, /* cyrillic de */ - { 0x0435, 0, 0, 0x69 }, /* cyrillic ie */ - { 0x0436, XF_CYR_zhe, 1, 0x2e }, /* cyrillic zhe */ - { 0x0437, XF_CYR_ze, 1, 0x37 }, /* cyrillic ze */ - { 0x0438, XF_CYR_i, 1, 0x79 }, /* cyrillic i */ - { 0x0439, XF_CYR_SHORTi, 1, 0xa7 }, /* cyrillic short i */ - { 0x043a, XF_CYR_ka, 1, 0x6f }, /* cyrillic ka */ - { 0x043b, XF_CYR_el, 1, 0x18 }, /* cyrillic el */ - { 0x043c, XF_CYR_em, 1, 0x71 }, /* cyrillic em */ - { 0x043d, XF_CYR_en, 2, 0x4c }, /* cyrillic en */ - { 0x043e, 0, 0, 0x73 }, /* cyrillic o */ - { 0x043f, XF_CYR_pe, 1, 0x72 }, /* cyrillic pe */ - { 0x0440, 0, 0, 0x74 }, /* cyrillic er */ - { 0x0441, 0, 0, 0x67 }, /* cyrillic es */ - { 0x0442, XF_CYR_te, 1, 0x78 }, /* cyrillic te */ - { 0x0443, 0, 0, 0x7d }, /* cyrillic u */ - { 0x0444, 0, 0, 0x10 }, /* cyrillic ef */ - { 0x0445, 0, 0, 0x7c }, /* cyrillic ha */ - { 0x0446, XF_CYR_tse, 2, 0x7e }, /* cyrillic tse */ - { 0x0447, XF_CYR_che, 2, 0x0e }, /* cyrillic che */ - { 0x0448, XF_CYR_sha, 1, 0x7b }, /* cyrillic sha */ - { 0x0449, XF_CYR_shcha, 1, 0x7b }, /* cyrillic shcha */ - { 0x044a, XF_CYR_hard, 1, 0x66 }, /* cyrillic small hard sign */ - { 0x044b, XF_CYR_yeru, 2, 0x66 }, /* cyrillic yeru */ - { 0x044c, XF_CYR_soft, 1, 0x66 }, /* cyrillic small soft sign */ - { 0x044d, XF_CYR_e, 2, 0x89 }, /* cyrillic e */ - { 0x044e, XF_CYR_yu, 2, 0x95 }, /* cyrillic yu */ - { 0x044f, XF_CYR_ya, 2, 0x84 }, /* cyrillic ya */ - { 0x0450, 0, 0, 0x08 }, /* cyrillic ie grave */ - { 0x0451, 0, 0, 0xa0 }, /* cyrillic io */ - - { 0x0455, 0, 0, 0x77 }, /* cyrillic dze */ - { 0x0456, 0, 0, 0x6d }, /* cyrillic byeloruss-ukr. i */ - { 0x0457, 0, 0, 0xa3 }, /* cyrillic yi */ - { 0x0458, 0, 0, 0x6e }, /* cyrillic je */ - - /* extra punctuation */ - { 0x2013, 0, 0, 0x31 }, /* en dash */ - { 0x2014, 0, 0, 0x31 }, /* em dash */ - - { 0x2018, 0, 0, 0x2b }, /* left single quotation mark */ - { 0x2019, 0, 0, 0x2b }, /* right single quotation mark */ - { 0x201a, 0, 0, 0x30 }, /* single low-9 quotation mark */ - { 0x201b, 0, 0, 0x2b }, /* single high-reversed-9 quotation mark */ - { 0x201c, 0, 0, 0x26 }, /* left double quotation mark */ - { 0x201d, 0, 0, 0x26 }, /* right double quotation mark */ - { 0x201e, 0, 0, 0x26 }, /* double low-9 quotation mark */ - { 0x201f, 0, 0, 0x26 }, /* double high-reversed-9 quotation mark */ - - { 0x2022, XF_MIDDLEDOT, 1, 0x32 }, /* bullet */ - - { 0x2039, 0, 0, 0x40 }, /* single left-pointing angle quotation mark */ - { 0x203a, 0, 0, 0x42 }, /* single right-pointing angle quotation mark */ - - /* Runtime-definable characters */ - { 0xe000, 0x8000, 15, 0x24 }, /* variable character 0 */ - { 0xe001, 0x8001, 15, 0x24 }, /* variable character 1 */ - { 0xe002, 0x8002, 15, 0x24 }, /* variable character 2 */ - { 0xe003, 0x8003, 15, 0x24 }, /* variable character 3 */ - { 0xe004, 0x8004, 15, 0x24 }, /* variable character 4 */ - { 0xe005, 0x8005, 15, 0x24 }, /* variable character 5 */ - { 0xe006, 0x8006, 15, 0x24 }, /* variable character 6 */ - { 0xe007, 0x8007, 15, 0x24 }, /* variable character 7 */ - { 0xe008, 0x8008, 15, 0x24 }, /* variable character 8 */ - { 0xe009, 0x8009, 15, 0x24 }, /* variable character 9 */ - { 0xe00a, 0x800a, 15, 0x24 }, /* variable character 10 */ - { 0xe00b, 0x800b, 15, 0x24 }, /* variable character 11 */ - { 0xe00c, 0x800c, 15, 0x24 }, /* variable character 12 */ - { 0xe00d, 0x800d, 15, 0x24 }, /* variable character 13 */ - { 0xe00e, 0x800e, 15, 0x24 }, /* variable character 14 */ - { 0xe00f, 0x800f, 15, 0x24 }, /* variable character 15 */ - - /* Icons and special symbols */ - { 0xe100, XF_ICON_UNKNOWN, 14, 0x43 }, /* unknown icon (mirrored ?) */ - { 0xe101, XF_ICON_BOOKMARK, 14, 0xd4 }, /* bookmark icon */ - { 0xe102, XF_ICON_PLUGIN, 14, 0x2d }, /* plugin icon */ - { 0xe103, XF_ICON_FOLDER, 14, 0x34 }, /* folder icon */ - { 0xe104, XF_ICON_FIRMWARE, 14, 0x7c }, /* firmware icon */ - { 0xe105, XF_ICON_LANGUAGE, 14, 0x2f }, /* language icon */ - { 0xe106, 0, 0, 0xfc }, /* audio icon (note) */ - { 0xe107, XF_ICON_WPS, 14, 0xd4 }, /* wps icon */ - { 0xe108, XF_ICON_PLAYLIST, 14, 0xfa }, /* playlist icon */ - { 0xe109, XF_ICON_TEXTFILE, 14, 0xfa }, /* text file icon */ - { 0xe10a, XF_ICON_CONFIG, 14, 0xfa }, /* config icon */ - { 0xe10b, 0, 0, 0x88 }, /* left arrow */ - { 0xe10c, 0, 0, 0x89 }, /* right arrow */ - { 0xe10d, 0, 0, 0x86 }, /* up arrow */ - { 0xe10e, 0, 0, 0x87 }, /* down arrow */ - { 0xe10f, 0, 0, 0x88 }, /* filled left arrow */ - { 0xe110, 0, 0, 0x89 }, /* filled right arrow */ - { 0xe111, 0, 0, 0x86 }, /* filled up arrow */ - { 0xe112, 0, 0, 0x87 }, /* filled down arrow */ - { 0xe113, 0, 0, 0x24 }, /* level 0/7 */ - { 0xe114, 0, 0, 0x15 }, /* level 1/7 */ - { 0xe115, 0, 0, 0xdf }, /* level 2/7 */ - { 0xe116, 0, 0, 0xe0 }, /* level 3/7 */ - { 0xe117, 0, 0, 0xe1 }, /* level 4/7 */ - { 0xe118, 0, 0, 0xe2 }, /* level 5/7 */ - { 0xe119, 0, 0, 0xe3 }, /* level 6/7 */ - { 0xe11a, 0, 0, 0xec }, /* level 7/7 */ -#endif /* !BOOTLOADER */ - - /* no-char symbol */ - { 0xfffd, 0, 0, 0xd8 }, -}; - -const unsigned char xfont_fixed[][HW_PATTERN_SIZE] = { - /* Standard ascii */ - [XF_BACKSLASH] = { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00}, /* \ */ - [XF_CIRCUMFLEX] = { 0x04, 0x0a, 0x11, 0x00, 0x00, 0x00, 0x00}, /* ^ */ - [XF_GRAVEACCENT] = { 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00}, /* ` */ - [XF_VERTICALBAR] = { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, /* | */ - [XF_TILDE] = { 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00}, /* ~ */ - -#ifndef BOOTLOADER /* bootloader only supports pure ASCII */ - /* Icons and special symbols */ - [XF_ICON_UNKNOWN] = { 0x0c, 0x12, 0x12, 0x08, 0x08, 0x00, 0x08}, - [XF_ICON_BOOKMARK] = { 0x00, 0x03, 0x07, 0x0e, 0x1c, 0x08, 0x00}, - [XF_ICON_PLUGIN] = { 0x04, 0x1e, 0x07, 0x1f, 0x05, 0x01, 0x06}, - [XF_ICON_FOLDER] = { 0x0c, 0x13, 0x11, 0x11, 0x11, 0x11, 0x1f}, - [XF_ICON_FIRMWARE] = { 0x1f, 0x11, 0x1b, 0x15, 0x1b, 0x11, 0x1f}, - [XF_ICON_LANGUAGE] = { 0x00, 0x1f, 0x15, 0x1f, 0x15, 0x1f, 0x00}, - [XF_ICON_AUDIO] = { 0x03, 0x05, 0x09, 0x09, 0x0b, 0x1b, 0x18}, - [XF_ICON_WPS] = { 0x01, 0x01, 0x02, 0x02, 0x14, 0x0c, 0x04}, - [XF_ICON_PLAYLIST] = { 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17}, - [XF_ICON_TEXTFILE] = { 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f}, - [XF_ICON_CONFIG] = { 0x0b, 0x10, 0x0b, 0x00, 0x1f, 0x00, 0x1f}, - /* Latin 1 */ - [XF_INVEXCLAMATION]= { 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04}, /* ¡ */ - [XF_CENTSIGN] = { 0x04, 0x04, 0x0f, 0x10, 0x10, 0x0f, 0x04}, /* ¢ */ - [XF_POUNDSIGN] = { 0x06, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x1f}, /* £ */ - [XF_CURRENCY] = { 0x00, 0x11, 0x0e, 0x0a, 0x0e, 0x11, 0x00}, /* ¤ */ - [XF_LEFTDBLANGLEQUOT] = { 0x00, 0x05, 0x0a, 0x14, 0x0a, 0x05, 0x00}, /* « */ - [XF_MACRON] = { 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* ¯ */ - [XF_PLUSMINUS] = { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00, 0x1f}, /* ± */ - [XF_SUPER2] = { 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x00, 0x00}, /* ³ */ - [XF_SUPER3] = { 0x1c, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x00}, /* ³ */ - [XF_MICRO] = { 0x00, 0x09, 0x09, 0x09, 0x0f, 0x08, 0x10}, /* µ */ - [XF_MIDDLEDOT] = { 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00}, /* · */ - [XF_RIGHTDBLANGLEQUOT] = { 0x00, 0x14, 0x0a, 0x05, 0x0a, 0x14, 0x00}, /* » */ - [XF_ONEQUARTER] = { 0x11, 0x12, 0x14, 0x09, 0x13, 0x07, 0x01}, /* ¼ */ - [XF_ONEHALF] = { 0x11, 0x12, 0x17, 0x09, 0x17, 0x04, 0x07}, /* ½ */ - [XF_THREEQUARTERS] = { 0x18, 0x09, 0x1a, 0x0d, 0x1b, 0x17, 0x01}, /* ¾ */ - [XF_INVQUESTION] = { 0x04, 0x00, 0x04, 0x08, 0x10, 0x11, 0x0e}, /* ¿ */ - [XF_AGRAVE] = { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11}, /* À */ - [XF_AACUTE] = { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11}, /* Á */ - [XF_ACIRCUMFLEX] = { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x11, 0x11}, /* Â */ - [XF_ATILDE] = { 0x0d, 0x12, 0x0e, 0x11, 0x1f, 0x11, 0x11}, /* Ã */ - [XF_ADIERESIS] = { 0x0a, 0x00, 0x04, 0x0a, 0x11, 0x1f, 0x11}, /* Ä */ - [XF_ARING] = { 0x04, 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x11}, /* Å */ - [XF_AELIGATURE] = { 0x0f, 0x14, 0x14, 0x1f, 0x14, 0x14, 0x17}, /* Æ */ - [XF_CCEDILLA] = { 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x02, 0x0e}, /* Ç */ - [XF_EGRAVE] = { 0x08, 0x04, 0x1f, 0x10, 0x1e, 0x10, 0x1f}, /* È */ - [XF_EACUTE] = { 0x02, 0x04, 0x1f, 0x10, 0x1c, 0x10, 0x1f}, /* É */ - [XF_ECIRCUMFLEX] = { 0x04, 0x0a, 0x1f, 0x10, 0x1c, 0x10, 0x1f}, /* Ê */ - [XF_EDIERESIS] = { 0x0a, 0x00, 0x1f, 0x10, 0x1c, 0x10, 0x1f}, /* Ë */ - [XF_IGRAVE] = { 0x08, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e}, /* Ì */ - [XF_IACUTE] = { 0x02, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e}, /* Í */ - [XF_ICIRCUMFLEX] = { 0x04, 0x0a, 0x0e, 0x04, 0x04, 0x04, 0x0e}, /* Î */ - [XF_IDIERESIS] = { 0x0a, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0e}, /* Ï */ - [XF_ETH] = { 0x0c, 0x0a, 0x09, 0x1d, 0x09, 0x0a, 0x0c}, /* Ð */ - [XF_NTILDE] = { 0x0d, 0x12, 0x00, 0x19, 0x15, 0x13, 0x11}, /* Ñ */ - [XF_OGRAVE] = { 0x08, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e}, /* Ò */ - [XF_OACUTE] = { 0x02, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e}, /* Ó */ - [XF_OCIRCUMFLEX] = { 0x04, 0x0a, 0x0e, 0x11, 0x11, 0x11, 0x0e}, /* Ô */ - [XF_OTILDE] = { 0x0d, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e}, /* Õ */ - [XF_ODIERESIS] = { 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e}, /* Ö */ - [XF_OSTROKE] = { 0x01, 0x0e, 0x13, 0x15, 0x19, 0x0e, 0x10}, /* Ø */ - [XF_UGRAVE] = { 0x08, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e}, /* Ù */ - [XF_UACUTE] = { 0x02, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e}, /* Ú */ - [XF_UCIRCUMFLEX] = { 0x04, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e}, /* Û */ - [XF_UDIERESIS] = { 0x0a, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0e}, /* Ü */ - [XF_YACUTE] = { 0x02, 0x04, 0x11, 0x11, 0x0a, 0x04, 0x04}, /* Ý */ - [XF_aGRAVE] = { 0x08, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* à */ - [XF_aACUTE] = { 0x02, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* á */ - [XF_aCIRCUMFLEX] = { 0x04, 0x0a, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* â */ - [XF_aTILDE] = { 0x0d, 0x12, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* ã */ - [XF_aDIERESIS] = { 0x0a, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* ä */ - [XF_aRING] = { 0x04, 0x0a, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, /* å */ - [XF_aeLIGATURE] = { 0x00, 0x00, 0x1a, 0x05, 0x0f, 0x14, 0x0f}, /* æ */ - [XF_cCEDILLA] = { 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x02, 0x04}, /* ç */ - [XF_eGRAVE] = { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e}, /* è */ - [XF_eACUTE] = { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e}, /* é */ - [XF_eCIRCUMFLEX] = { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x10, 0x0e}, /* ê */ - [XF_eDIERESIS] = { 0x0a, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e}, /* ë */ - [XF_iGRAVE] = { 0x08, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e}, /* ì */ - [XF_iACUTE] = { 0x02, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e}, /* í */ - [XF_iCIRCUMFLEX] = { 0x04, 0x0a, 0x00, 0x0c, 0x04, 0x04, 0x0e}, /* î */ - [XF_iDIERESIS] = { 0x0a, 0x00, 0x00, 0x0c, 0x04, 0x04, 0x0e}, /* ï */ - [XF_nTILDE] = { 0x0d, 0x12, 0x00, 0x16, 0x19, 0x11, 0x11}, /* ñ */ - [XF_oGRAVE] = { 0x08, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e}, /* ò */ - [XF_oACUTE] = { 0x02, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e}, /* ó */ - [XF_oCIRCUMFLEX] = { 0x04, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e}, /* ô */ - [XF_oTILDE] = { 0x0d, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e}, /* õ */ - [XF_oDIERESIS] = { 0x00, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e}, /* ö */ - [XF_DIVISION] = { 0x00, 0x04, 0x00, 0x1f, 0x00, 0x04, 0x00}, /* ÷ */ - [XF_oSLASH] = { 0x00, 0x02, 0x0e, 0x15, 0x15, 0x0e, 0x08}, /* ø */ - [XF_uGRAVE] = { 0x08, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d}, /* ù */ - [XF_uACUTE] = { 0x02, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d}, /* ú */ - [XF_uCIRCUMFLEX] = { 0x04, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d}, /* û */ - [XF_uDIERESIS] = { 0x00, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d}, /* ü */ - [XF_yACUTE] = { 0x02, 0x04, 0x11, 0x11, 0x0f, 0x01, 0x0e}, /* ý */ - [XF_yDIERESIS] = { 0x0a, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x0e}, /* ÿ */ - /* Latin extended A */ - [XF_aBREVE] = { 0x09, 0x06, 0x0e, 0x01, 0x0f, 0x11, 0x0f}, - [XF_aOGONEK] = { 0x0e, 0x01, 0x0f, 0x11, 0x0f, 0x02, 0x03}, - [XF_cACUTE] = { 0x02, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f}, - [XF_cCARON] = { 0x0a, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f}, - [XF_dCARON] = { 0x05, 0x05, 0x0c, 0x14, 0x14, 0x14, 0x0c}, - [XF_dSTROKE] = { 0x02, 0x0f, 0x02, 0x0e, 0x12, 0x12, 0x0e}, - [XF_eOGONEK] = { 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x04, 0x06}, - [XF_eCARON] = { 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e}, - [XF_GBREVE] = { 0x1f, 0x00, 0x0e, 0x10, 0x17, 0x11, 0x0e}, - [XF_gBREVE] = { 0x1f, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e}, - [XF_IDOT] = { 0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0e}, - [XF_DOTLESSi] = { 0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e}, - [XF_LSTROKE] = { 0x10, 0x10, 0x14, 0x18, 0x10, 0x10, 0x1f}, - [XF_lSTROKE] = { 0x0c, 0x04, 0x06, 0x0c, 0x04, 0x04, 0x0e}, - [XF_nACUTE] = { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11}, - [XF_nCARON] = { 0x0a, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11}, - [XF_ODBLACUTE] = { 0x09, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e}, - [XF_oDBLACUTE] = { 0x09, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e}, - [XF_RCARON] = { 0x0a, 0x04, 0x1e, 0x11, 0x1e, 0x12, 0x11}, - [XF_rCARON] = { 0x0a, 0x04, 0x0b, 0x0c, 0x08, 0x08, 0x08}, - [XF_sACUTE] = { 0x02, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e}, - [XF_SCEDILLA] = { 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x0c}, - [XF_sCEDILLA] = { 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04}, - [XF_sCARON] = { 0x0a, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e}, - [XF_tCEDILLA] = { 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03, 0x06}, - [XF_tCARON] = { 0x09, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x06}, - [XF_uRING] = { 0x04, 0x0a, 0x04, 0x11, 0x11, 0x13, 0x0d}, - [XF_UDBLACUTE] = { 0x05, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e}, - [XF_uDBLACUTE] = { 0x09, 0x12, 0x00, 0x11, 0x11, 0x13, 0x0d}, - [XF_zACUTE] = { 0x02, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f}, - [XF_zDOT] = { 0x04, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f}, - [XF_zCARON] = { 0x0a, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f}, - /* Greek */ - [XF_GR_DELTA] = { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x1f}, - [XF_GR_THETA] = { 0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x0e}, - [XF_GR_LAMBDA] = { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x11}, - [XF_GR_XI] = { 0x1f, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x1f}, - [XF_GR_PSI] = { 0x15, 0x15, 0x15, 0x15, 0x0e, 0x04, 0x04}, - [XF_GR_alpha] = { 0x00, 0x00, 0x09, 0x15, 0x12, 0x12, 0x0d}, - [XF_GR_alphaTONOS] = { 0x02, 0x04, 0x09, 0x15, 0x12, 0x12, 0x0d}, - [XF_GR_gamma] = { 0x00, 0x11, 0x0a, 0x0a, 0x04, 0x04, 0x08}, - [XF_GR_epsilon] = { 0x00, 0x00, 0x0f, 0x10, 0x0e, 0x10, 0x0f}, - [XF_GR_epsilonTONOS] = { 0x02, 0x04, 0x0f, 0x10, 0x0e, 0x10, 0x0f}, - [XF_GR_zeta] = { 0x1e, 0x08, 0x10, 0x10, 0x0e, 0x01, 0x06}, - [XF_GR_eta] = { 0x00, 0x16, 0x19, 0x11, 0x11, 0x11, 0x01}, - [XF_GR_etaTONOS] = { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x01}, - [XF_GR_iota] = { 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x02}, - [XF_GR_lambda] = { 0x88, 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11}, - [XF_GR_xi] = { 0x0c, 0x10, 0x0c, 0x10, 0x0e, 0x01, 0x06}, - [XF_GR_rho] = { 0x00, 0x0e, 0x11, 0x11, 0x19, 0x16, 0x10}, - [XF_GR_FINALsigma] = { 0x00, 0x0e, 0x10, 0x10, 0x0e, 0x01, 0x06}, - [XF_GR_sigma] = { 0x00, 0x00, 0x0f, 0x14, 0x12, 0x11, 0x0e}, - [XF_GR_upsilon] = { 0x00, 0x00, 0x11, 0x09, 0x09, 0x09, 0x06}, - [XF_GR_upsilonTONOS] = { 0x02, 0x04, 0x11, 0x09, 0x09, 0x09, 0x06}, - [XF_GR_chi] = { 0x00, 0x12, 0x0a, 0x04, 0x04, 0x0a, 0x09}, - [XF_GR_psi] = { 0x00, 0x15, 0x15, 0x15, 0x0e, 0x04, 0x04}, - [XF_GR_omega] = { 0x00, 0x00, 0x0a, 0x11, 0x15, 0x15, 0x0a}, - [XF_GR_omegaTONOS] = { 0x02, 0x04, 0x0a, 0x11, 0x15, 0x15, 0x0a}, - /* Cyrillic */ - [XF_CYR_BE] = { 0x1f, 0x10, 0x10, 0x1e, 0x11, 0x11, 0x1e}, - [XF_CYR_GHE] = { 0x1f, 0x11, 0x10, 0x10, 0x10, 0x10, 0x10}, - [XF_CYR_DE] = { 0x07, 0x09, 0x09, 0x09, 0x09, 0x1f, 0x11}, - [XF_CYR_ZHE] = { 0x15, 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x15}, - [XF_CYR_ZE] = { 0x0e, 0x11, 0x01, 0x0e, 0x01, 0x11, 0x0e}, - [XF_CYR_I] = { 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11}, - [XF_CYR_SHORTI] = { 0x0a, 0x04, 0x11, 0x13, 0x15, 0x19, 0x11}, - [XF_CYR_EL] = { 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x11}, - [XF_CYR_PE] = { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, - [XF_CYR_TSE] = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x01}, - [XF_CYR_CHE] = { 0x11, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01}, - [XF_CYR_SHA] = { 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f}, - [XF_CYR_SHCHA] = { 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f, 0x01}, - [XF_CYR_HARD] = { 0x18, 0x08, 0x0e, 0x09, 0x09, 0x09, 0x0e}, - [XF_CYR_YERU] = { 0x11, 0x11, 0x19, 0x15, 0x15, 0x15, 0x19}, - [XF_CYR_E] = { 0x0e, 0x11, 0x01, 0x07, 0x01, 0x11, 0x0e}, - [XF_CYR_YU] = { 0x12, 0x15, 0x15, 0x1d, 0x15, 0x15, 0x12}, - [XF_CYR_YA] = { 0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11}, - [XF_CYR_be] = { 0x0f, 0x10, 0x0e, 0x11, 0x11, 0x11, 0x0e}, - [XF_CYR_ve] = { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x11, 0x1e}, - [XF_CYR_ghe] = { 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10}, - [XF_CYR_de] = { 0x00, 0x00, 0x06, 0x0a, 0x0a, 0x1f, 0x11}, - [XF_CYR_zhe] = { 0x00, 0x00, 0x15, 0x0e, 0x04, 0x0e, 0x15}, - [XF_CYR_ze] = { 0x00, 0x00, 0x1e, 0x01, 0x0e, 0x01, 0x1e}, - [XF_CYR_i] = { 0x00, 0x00, 0x11, 0x13, 0x15, 0x19, 0x11}, - [XF_CYR_SHORTi] = { 0x0a, 0x04, 0x00, 0x11, 0x13, 0x15, 0x19}, - [XF_CYR_ka] = { 0x00, 0x00, 0x11, 0x12, 0x1c, 0x12, 0x11}, - [XF_CYR_el] = { 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x11}, - [XF_CYR_em] = { 0x00, 0x00, 0x11, 0x1b, 0x15, 0x11, 0x11}, - [XF_CYR_en] = { 0x00, 0x00, 0x11, 0x11, 0x1f, 0x11, 0x11}, - [XF_CYR_pe] = { 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11}, - [XF_CYR_te] = { 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x02}, - [XF_CYR_tse] = { 0x00, 0x00, 0x11, 0x11, 0x11, 0x1f, 0x01}, - [XF_CYR_che] = { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x01}, - [XF_CYR_sha] = { 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x1f}, - [XF_CYR_shcha] = { 0x00, 0x00, 0x15, 0x15, 0x15, 0x1f, 0x01}, - [XF_CYR_hard] = { 0x00, 0x00, 0x18, 0x0e, 0x09, 0x09, 0x0e}, - [XF_CYR_yeru] = { 0x00, 0x00, 0x11, 0x19, 0x15, 0x15, 0x19}, - [XF_CYR_soft] = { 0x00, 0x00, 0x08, 0x0e, 0x09, 0x09, 0x0e}, - [XF_CYR_e] = { 0x00, 0x00, 0x0e, 0x11, 0x03, 0x11, 0x0e}, - [XF_CYR_yu] = { 0x00, 0x00, 0x12, 0x15, 0x1d, 0x15, 0x12}, - [XF_CYR_ya] = { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x09, 0x11}, -#endif /* !BOOTLOADER */ -}; - -void lcd_charset_init(void) -{ - if (is_new_player()) - { - lcd_pattern_count = 8; - xchar_info = xchar_info_newlcd; - xchar_info_size = sizeof(xchar_info_newlcd)/sizeof(struct xchar_info); - } - else /* old lcd */ - { - lcd_pattern_count = 4; - xchar_info = xchar_info_oldlcd; - xchar_info_size = sizeof(xchar_info_oldlcd)/sizeof(struct xchar_info); - } -} diff --git a/firmware/drivers/lcd-scroll.c b/firmware/drivers/lcd-scroll.c index 0e17303bd3..7916556dfb 100644 --- a/firmware/drivers/lcd-scroll.c +++ b/firmware/drivers/lcd-scroll.c @@ -42,10 +42,6 @@ struct scroll_screen_info LCDFN(scroll_info) = #ifdef HAVE_LCD_BITMAP .step = 6, #endif -#ifdef HAVE_LCD_CHARCELLS - .jump_scroll_delay = HZ/4, - .jump_scroll = 0, -#endif }; @@ -121,17 +117,6 @@ void LCDFN(bidir_scroll)(int percent) LCDFN(scroll_info).bidir_limit = percent; } -#ifdef HAVE_LCD_CHARCELLS -void LCDFN(jump_scroll)(int mode) /* 0=off, 1=once, ..., JUMP_SCROLL_ALWAYS */ -{ - LCDFN(scroll_info).jump_scroll = mode; -} - -void LCDFN(jump_scroll_delay)(int ms) -{ - LCDFN(scroll_info).jump_scroll_delay = ms / (HZ / 10); -} -#endif /* This renders the scrolling line described by s immediatly. * This can be called to update a scrolling line if the text has changed @@ -201,7 +186,7 @@ bool LCDFN(scroll_now)(struct scrollinfo *s) return ended; } -#if !defined(BOOTLOADER) || defined(HAVE_REMOTE_LCD) || defined(HAVE_LCD_CHARCELLS) +#if !defined(BOOTLOADER) || defined(HAVE_REMOTE_LCD) static void LCDFN(scroll_worker)(void) { int index; diff --git a/firmware/export/lcd-charcell.h b/firmware/export/lcd-charcell.h deleted file mode 100644 index 8dace07d8e..0000000000 --- a/firmware/export/lcd-charcell.h +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Jens Arnold - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "config.h" - -/* target dependent - to be adjusted for other charcell targets */ -#define HW_PATTERN_SIZE 7 /* number of bytes per pattern */ -#define MAX_HW_PATTERNS 8 /* max. number of user-definable hw patterns */ - -struct cursor_info { - unsigned char hw_char; - unsigned char subst_char; - bool enabled; - bool visible; - int x; - int y; - int divider; - int downcount; -}; - -/* map unicode characters to hardware or extended lcd characters */ -struct xchar_info { - unsigned short ucs; - unsigned short glyph; - /* 0x0000..0x7fff: fixed extended characters - * 0x8000..0xffff: variable extended characters - * Dontcare if priority == 0 */ - unsigned char priority; - unsigned char hw_char; /* direct or substitute */ -}; - -/* track usage of user-definable characters */ -struct pattern_info { - short count; - unsigned short glyph; - unsigned char priority; - unsigned char pattern[HW_PATTERN_SIZE]; -}; - -extern int lcd_pattern_count; /* actual number of user-definable hw patterns */ - -extern unsigned char lcd_charbuffer[LCD_HEIGHT][LCD_WIDTH]; -extern struct pattern_info lcd_patterns[MAX_HW_PATTERNS]; -extern struct cursor_info lcd_cursor; - -extern const struct xchar_info *xchar_info; -extern int xchar_info_size; /* number of entries */ -extern const unsigned char xfont_fixed[][HW_PATTERN_SIZE]; - -void lcd_charset_init(void); diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 80ef45a573..0975df4c79 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -144,9 +144,6 @@ typedef unsigned long fb_data; #endif #define FB_DATA_SZ 4 #endif /* LCD_DEPTH */ - -#else /* LCD_CHARCELLS */ -typedef unsigned char fb_data; #endif #if defined(HAVE_LCD_MODES) @@ -226,43 +223,6 @@ extern void lcd_remote_update_rect(int x, int y, int width, int height); #endif /* HAVE_REMOTE_LCD */ #endif /* HAVE_LCD_BITMAP */ -#ifdef HAVE_LCD_CHARCELLS - -/* Icon definitions for lcd_icon() */ -enum -{ - ICON_BATTERY = 0, - ICON_BATTERY_1, - ICON_BATTERY_2, - ICON_BATTERY_3, - ICON_USB, - ICON_PLAY, - ICON_RECORD, - ICON_PAUSE, - ICON_AUDIO, - ICON_REPEAT, - ICON_1, - ICON_VOLUME, - ICON_VOLUME_1, - ICON_VOLUME_2, - ICON_VOLUME_3, - ICON_VOLUME_4, - ICON_VOLUME_5, - ICON_PARAM -}; - -void lcd_icon(int icon, bool enable); -void lcd_double_height(bool on); -void lcd_define_pattern(unsigned long ucs, const char *pattern); -unsigned long lcd_get_locked_pattern(void); -void lcd_unlock_pattern(unsigned long ucs); -void lcd_put_cursor(int x, int y, unsigned long cursor_ucs); -void lcd_remove_cursor(void); -#define JUMP_SCROLL_ALWAYS 5 -extern void lcd_jump_scroll(int mode); /* 0=off, 1=once, ..., ALWAYS */ -extern void lcd_jump_scroll_delay(int ms); -#endif /* HAVE_LCD_CHARCELLS */ - /* Bitmap formats */ enum { diff --git a/firmware/export/scroll_engine.h b/firmware/export/scroll_engine.h index 1326812265..051e367506 100644 --- a/firmware/export/scroll_engine.h +++ b/firmware/export/scroll_engine.h @@ -95,10 +95,6 @@ struct scroll_screen_info long ticks; /* # of ticks between updates*/ long delay; /* ticks delay before start */ int bidir_limit; /* percent */ -#ifdef HAVE_LCD_CHARCELLS - long jump_scroll_delay; /* delay between jump scroll jumps */ - int jump_scroll; /* 0=off, 1=once, ..., JUMP_SCROLL_ALWAYS */ -#endif #if defined(HAVE_LCD_BITMAP) || defined(HAVE_REMOTE_LCD) int step; /* pixels per scroll step */ #endif diff --git a/firmware/panic.c b/firmware/panic.c index 90e727d5e4..358be42924 100644 --- a/firmware/panic.c +++ b/firmware/panic.c @@ -86,11 +86,7 @@ void panicf( const char *fmt, ...) lcd_set_viewport(NULL); -#ifdef HAVE_LCD_CHARCELLS - lcd_double_height(false); - lcd_puts(0, 0, "*PANIC*"); - lcd_puts(0, 1, panic_buf); -#elif defined(HAVE_LCD_BITMAP) +#if defined(HAVE_LCD_BITMAP) int y = 1; #if LCD_DEPTH > 1 diff --git a/firmware/scroll_engine.c b/firmware/scroll_engine.c index aacaa496e7..b584345a9a 100644 --- a/firmware/scroll_engine.c +++ b/firmware/scroll_engine.c @@ -185,12 +185,12 @@ static void scroll_thread(void) while (1) { sleep(lcd_scroll_info.ticks); -#if !defined(BOOTLOADER) || defined(HAVE_LCD_CHARCELLS) +#if !defined(BOOTLOADER) #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) if (lcd_active()) #endif lcd_scroll_worker(); -#endif /*!BOOTLOADER\HAVE_LCD_CHARCELLS*/ +#endif /* !BOOTLOADER */ } } #endif /* HAVE_REMOTE_LCD */ diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c index 8c716bc7b9..beb84ee77f 100644 --- a/firmware/target/hosted/sdl/button-sdl.c +++ b/firmware/target/hosted/sdl/button-sdl.c @@ -22,7 +22,6 @@ #include #include /* EXIT_SUCCESS */ #include "sim-ui-defines.h" -#include "lcd-charcells.h" #ifdef HAVE_REMOTE_LCD #include "lcd-remote.h" #endif diff --git a/firmware/target/hosted/sdl/lcd-charcells.c b/firmware/target/hosted/sdl/lcd-charcells.c deleted file mode 100644 index 1020e7269a..0000000000 --- a/firmware/target/hosted/sdl/lcd-charcells.c +++ /dev/null @@ -1,206 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 Dan Everton - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include -#include -#include -#include "system.h" -#include "debug.h" -#include "lcd.h" -#include "lcd-charcell.h" -#include "screendump.h" -#include "general.h" - -#include "lcd-playersim.h" -#include "sim-ui-defines.h" -#include "lcd-sdl.h" - -/* can't include file.h here */ -#ifndef MAX_PATH -#define MAX_PATH 260 -#endif - -/* extern functions, needed for screendump() */ -extern int sim_creat(const char *name, mode_t mode); - -SDL_Surface* lcd_surface; - -SDL_Color lcd_bl_color_dark = {RED_CMP(LCD_BL_DARKCOLOR), - GREEN_CMP(LCD_BL_DARKCOLOR), - BLUE_CMP(LCD_BL_DARKCOLOR), 0}; -SDL_Color lcd_bl_color_bright = {RED_CMP(LCD_BL_BRIGHTCOLOR), - GREEN_CMP(LCD_BL_BRIGHTCOLOR), - BLUE_CMP(LCD_BL_BRIGHTCOLOR), 0}; -SDL_Color lcd_color_dark = {RED_CMP(LCD_DARKCOLOR), - GREEN_CMP(LCD_DARKCOLOR), - BLUE_CMP(LCD_DARKCOLOR), 0}; -SDL_Color lcd_color_bright = {RED_CMP(LCD_BRIGHTCOLOR), - GREEN_CMP(LCD_BRIGHTCOLOR), - BLUE_CMP(LCD_BRIGHTCOLOR), 0}; - - -static unsigned long get_lcd_pixel(int x, int y) -{ - return sim_lcd_framebuffer[y][x]; -} - -void sim_lcd_update_rect(int x_start, int y_start, int width, int height) -{ - sdl_update_rect(lcd_surface, x_start, y_start, width, height, - SIM_LCD_WIDTH, SIM_LCD_HEIGHT, get_lcd_pixel); - sdl_gui_update(lcd_surface, x_start, y_start, width, height, - SIM_LCD_WIDTH, SIM_LCD_HEIGHT, - background ? UI_LCD_POSX : 0, background ? UI_LCD_POSY : 0); -} - -void lcd_update(void) -{ - int x, y; - - for (y = 0; y < lcd_pattern_count; y++) - if (lcd_patterns[y].count > 0) - sim_lcd_define_pattern(y, lcd_patterns[y].pattern); - - for (y = 0; y < LCD_HEIGHT; y++) - for (x = 0; x < LCD_WIDTH; x++) - lcd_print_char(x, y, lcd_charbuffer[y][x]); - - if (lcd_cursor.visible) - lcd_print_char(lcd_cursor.x, lcd_cursor.y, lcd_cursor.hw_char); - - sim_lcd_update_rect(0, ICON_HEIGHT, SIM_LCD_WIDTH, - LCD_HEIGHT*CHAR_HEIGHT*CHAR_PIXEL); -} - -#ifdef HAVE_BACKLIGHT -void sim_backlight(int value) -{ - if (value > 0) { - sdl_set_gradient(lcd_surface, &lcd_bl_color_bright, - &lcd_bl_color_dark, 0, (1<>8)&0xff -#define LE32_CONST(x) (x)&0xff, ((x)>>8)&0xff, ((x)>>16)&0xff, ((x)>>24)&0xff - -static const unsigned char bmpheader[] = -{ - 0x42, 0x4d, /* 'BM' */ - LE32_CONST(BMP_TOTALSIZE), /* Total file size */ - 0x00, 0x00, 0x00, 0x00, /* Reserved */ - LE32_CONST(BMP_HEADERSIZE), /* Offset to start of pixel data */ - - 0x28, 0x00, 0x00, 0x00, /* Size of (2nd) header */ - LE32_CONST(SIM_LCD_WIDTH), /* Width in pixels */ - LE32_CONST(SIM_LCD_HEIGHT), /* Height in pixels */ - 0x01, 0x00, /* Number of planes (always 1) */ - LE16_CONST(BMP_BPP), /* Bits per pixel 1/4/8/16/24 */ - LE32_CONST(BMP_COMPRESSION),/* Compression mode */ - LE32_CONST(BMP_DATASIZE), /* Size of bitmap data */ - 0xc4, 0x0e, 0x00, 0x00, /* Horizontal resolution (pixels/meter) */ - 0xc4, 0x0e, 0x00, 0x00, /* Vertical resolution (pixels/meter) */ - LE32_CONST(BMP_NUMCOLORS), /* Number of used colours */ - LE32_CONST(BMP_NUMCOLORS), /* Number of important colours */ - - BMP_COLOR(LCD_BL_BRIGHTCOLOR), - BMP_COLOR(LCD_BL_DARKCOLOR) -}; - -void screen_dump(void) -{ - int fd; - char filename[MAX_PATH]; - int x, y; - static unsigned char line[BMP_LINESIZE]; - - create_numbered_filename(filename, "", "dump_", ".bmp", 4 - IF_CNFN_NUM_(, NULL)); - DEBUGF("screen_dump\n"); - - fd = sim_creat(filename, 0666); - if (fd < 0) - return; - - if(write(fd, bmpheader, sizeof(bmpheader)) != sizeof(bmpheader)) - { - close(fd); - return; - } - SDL_LockSurface(lcd_surface); - - /* BMP image goes bottom up */ - for (y = SIM_LCD_HEIGHT - 1; y >= 0; y--) - { - Uint8 *src = (Uint8 *)lcd_surface->pixels - + y * SIM_LCD_WIDTH * (int)display_zoom * (int)display_zoom; - unsigned char *dst = line; - unsigned dst_mask = 0x80; - - memset(line, 0, sizeof(line)); - for (x = SIM_LCD_WIDTH; x > 0; x--) - { - if (*src) - *dst |= dst_mask; - src += (int)display_zoom; - dst_mask >>= 1; - if (dst_mask == 0) - { - dst++; - dst_mask = 0x80; - } - } - if(write(fd, line, sizeof(line)) != sizeof(line)) - { - close(fd); - return; - } - } - SDL_UnlockSurface(lcd_surface); - close(fd); -} diff --git a/firmware/target/hosted/sdl/lcd-charcells.h b/firmware/target/hosted/sdl/lcd-charcells.h deleted file mode 100644 index 890594f766..0000000000 --- a/firmware/target/hosted/sdl/lcd-charcells.h +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 Dan Everton - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#ifndef __LCDCHARCELL_H__ -#define __LCDCHARCELL_H__ - -#include "lcd.h" -#include "SDL.h" - -#ifdef HAVE_LCD_CHARCELLS -void sim_lcd_init(void); -void screen_dump(void); -#endif - -#endif /* #ifndef __LCDCHARCELL_H__ */ - diff --git a/firmware/target/hosted/sdl/system-sdl.c b/firmware/target/hosted/sdl/system-sdl.c index 37580ede7d..6aaab6e8a5 100644 --- a/firmware/target/hosted/sdl/system-sdl.c +++ b/firmware/target/hosted/sdl/system-sdl.c @@ -35,8 +35,6 @@ #include "lcd-sdl.h" #ifdef HAVE_LCD_BITMAP #include "lcd-bitmap.h" -#elif defined(HAVE_LCD_CHARCELLS) -#include "lcd-charcells.h" #endif #ifdef HAVE_REMOTE_LCD #include "lcd-remote-bitmap.h" diff --git a/manual/advanced_topics/main.tex b/manual/advanced_topics/main.tex index 786c109772..00b1688e11 100755 --- a/manual/advanced_topics/main.tex +++ b/manual/advanced_topics/main.tex @@ -168,32 +168,30 @@ file find the instructions on the Rockbox website: the \fname{/.rockbox/backdrops} directory. }% -\nopt{lcd_charcell}{ - \subsection{UI Viewport} - By default, the UI is drawn on the whole screen. This can be changed so that - the UI is confined to a specific area of the screen, by use of a UI - viewport. This is done by adding the following line to the - \fname{.cfg} file for a theme:\\* +\subsection{UI Viewport} +By default, the UI is drawn on the whole screen. This can be changed so that +the UI is confined to a specific area of the screen, by use of a UI +viewport. This is done by adding the following line to the +\fname{.cfg} file for a theme:\\* - \nopt{lcd_non-mono}{\config{ui viewport: X,Y,[width],[height],[font]}} +\nopt{lcd_non-mono}{\config{ui viewport: X,Y,[width],[height],[font]}} +\nopt{lcd_color}{\opt{lcd_non-mono}{ + \config{ui viewport: X,Y,[width],[height],[font],[fgshade],[bgshade]}}} +\opt{lcd_color}{ + \config{ui viewport: X,Y,[width],[height],[font],[fgcolour],[bgcolour]}} +\\* + +\opt{HAVE_REMOTE_LCD}{ + The dimensions of the menu that is displayed on the remote control of your + \dap\ can be set in the same way. The line to be added to the theme + \fname{.cfg} is the following:\\* + + \nopt{lcd_non-mono}{\config{remote ui viewport: X,Y,[width],[height],[font]}} \nopt{lcd_color}{\opt{lcd_non-mono}{ - \config{ui viewport: X,Y,[width],[height],[font],[fgshade],[bgshade]}}} + \config{remote ui viewport: X,Y,[width],[height],[font],[fgshade],[bgshade]}}} \opt{lcd_color}{ - \config{ui viewport: X,Y,[width],[height],[font],[fgcolour],[bgcolour]}} - \\* - - \opt{HAVE_REMOTE_LCD}{ - The dimensions of the menu that is displayed on the remote control of your - \dap\ can be set in the same way. The line to be added to the theme - \fname{.cfg} is the following:\\* - - \nopt{lcd_non-mono}{\config{remote ui viewport: X,Y,[width],[height],[font]}} - \nopt{lcd_color}{\opt{lcd_non-mono}{ - \config{remote ui viewport: X,Y,[width],[height],[font],[fgshade],[bgshade]}}} - \opt{lcd_color}{ - \config{remote ui viewport: X,Y,[width],[height],[font],[fgcolour],[bgcolour]}} - \\* - } + \config{remote ui viewport: X,Y,[width],[height],[font],[fgcolour],[bgcolour]}} +\\* Only the first two parameters \emph{have} to be specified, the others can be omitted using `$-$' as a placeholder. The syntax is very similar to WPS @@ -202,7 +200,6 @@ file find the instructions on the Rockbox website: \nopt{lcd_non-mono}{\input{advanced_topics/viewports/mono-uivp-syntax.tex}} \nopt{lcd_color}{\opt{lcd_non-mono}{\input{advanced_topics/viewports/grayscale-uivp-syntax.tex}}} \opt{lcd_color}{\input{advanced_topics/viewports/colour-uivp-syntax.tex}} -} \section{\label{ref:ConfiguringtheWPS}Configuring the Theme} @@ -265,7 +262,6 @@ are discussed below. } } -\nopt{lcd_charcell}{ \subsubsection{\label{ref:Viewports}Viewports} By default, a viewport filling the whole screen contains all the elements @@ -279,7 +275,7 @@ be defined. A viewport is a rectangular window on the screen% \opt{lcd_non-mono}{ with its own foreground/background \opt{lcd_color}{colours}\nopt{lcd_color}{shades}}. This window also has variable dimensions. To -define a viewport a line starting \config{{\%V(\dots}} has to be +define a viewport a line starting \config{{\%V(\dots)}} has to be present in the theme file. The full syntax will be explained later in this section. All elements placed before the line defining a viewport are displayed in the default viewport. Elements @@ -293,6 +289,7 @@ cannot be layered \emph{transparently} over one another. Subsequent viewports will be drawn over any other viewports already drawn onto that area of the screen. + \nopt{lcd_non-mono}{\input{advanced_topics/viewports/mono-vp-syntax.tex}} \nopt{lcd_color}{\opt{lcd_non-mono}{\input{advanced_topics/viewports/grayscale-vp-syntax.tex}}} \opt{lcd_color}{\input{advanced_topics/viewports/colour-vp-syntax.tex}} @@ -318,11 +315,10 @@ Mode can be the following: the end colour\\} \end{rbtabular} } - \subsubsection{Conditional Viewports} Any viewport can be displayed either permanently or conditionally. -Defining a viewport as \config{{\%V(\dots}} +Defining a viewport as \config{{\%V(\dots)}} will display it permanently. \begin{itemize} diff --git a/manual/appendix/wps_tags.tex b/manual/appendix/wps_tags.tex index 1aec7bae99..1a0661c008 100644 --- a/manual/appendix/wps_tags.tex +++ b/manual/appendix/wps_tags.tex @@ -53,61 +53,58 @@ conditionals to show alternate information in preference to assuming. These tags, when written with a capital ``I'' (e.g. \config{\%Ia} or \config{\%Ic}), show the information for the next song to be played. -\nopt{lcd_charcell}{ - \section{Viewports} - \begin{tagmap} - \nopt{lcd_non-mono}{% - \config{\%V(x,y,[width],\tabnlindent[height],[font])} - & See section \ref{ref:Viewports}\\} +\section{Viewports} + \begin{tagmap} + \nopt{lcd_non-mono}{% + \config{\%V(x,y,[width],\tabnlindent[height],[font])} + & See section \ref{ref:Viewports}\\} - \nopt{lcd_color}{\opt{lcd_non-mono}{% - \config{\%V(x,y,[width],\tabnlindent[height],[font])}\newline - \config{\%Vf([fgshade])}\newline - \config{\%Vb([bgshade])} - & See section \ref{ref:Viewports}\\}} + \nopt{lcd_color}{\opt{lcd_non-mono}{% + \config{\%V(x,y,[width],\tabnlindent[height],[font])}\newline + \config{\%Vf([fgshade])}\newline + \config{\%Vb([bgshade])} + & See section \ref{ref:Viewports}\\}} - \opt{lcd_color}{% - \config{\%V(x,y,[width],\tabnlindent[height],[font])}\newline - \config{\%Vf([fgcolour])}\newline - \config{\%Vb([bgcolour])}\newline - \config{\%Vg(start,end \tabnlindent[,text])} - & See section \ref{ref:Viewports}\\} + \opt{lcd_color}{% + \config{\%V(x,y,[width],\tabnlindent[height],[font])}\newline + \config{\%Vf([fgcolour])}\newline + \config{\%Vb([bgcolour])}\newline + \config{\%Vg(start,end \tabnlindent[,text])} + & See section \ref{ref:Viewports}\\} - \opt{lcd_non-mono}{% - \config{\%Vs(mode[,param])} - & See section \ref{ref:Viewports}\\} - - \config{\%Vl('identifier',\newline\dots)} & Preloads a viewport for later + \opt{lcd_non-mono}{% + \config{\%Vs(mode[,param])} + & See section \ref{ref:Viewports}\\} + \config{\%Vl('identifier',\newline\dots)} & Preloads a viewport for later display. `identifier' is a single lowercase letter (a-z) and the `\dots' parameters use the same logic as the \%V tag explained above.\\ - \config{\%Vd('identifier')} & Display the `identifier' viewport. E.g. - \config{\%?C<\%Vd(a)|\%Vd(b)>} - will show viewport `a' if album art is found, and `b' if it isn't.\\ + \config{\%Vd('identifier')} & Display the `identifier' viewport. E.g. + \config{\%?C<\%Vd(a)|\%Vd(b)>} + will show viewport `a' if album art is found, and `b' if it isn't.\\ - \config{\%Vi('label',\dots)} & - Declare a Custom UI Viewport. The `\dots' parameters use the same logic as - the \config{\%V} tag explained above. See section \ref{ref:Viewports}.\\ + \config{\%Vi('label',\dots)} & + Declare a Custom UI Viewport. The `\dots' parameters use the same logic as + the \config{\%V} tag explained above. See section \ref{ref:Viewports}.\\ - \config{\%VI('label')} & Set the Info Viewport to use the viewport called - label, as declared with the previous tag.\\ + \config{\%VI('label')} & Set the Info Viewport to use the viewport called + label, as declared with the previous tag.\\ - \config{\%VB} & Draw this viewport on the backdrop layer.\\ - \end{tagmap} + \config{\%VB} & Draw this viewport on the backdrop layer.\\ + \end{tagmap} - \section{Additional Fonts} - \begin{tagmap} - \config{\%Fl('id',filename)} & See section \ref{ref:multifont}.\\ - \end{tagmap} +\section{Additional Fonts} + \begin{tagmap} + \config{\%Fl('id',filename)} & See section \ref{ref:multifont}.\\ + \end{tagmap} - \section{Misc Coloring Tags} - \begin{tagmap} - \config{\%dr(x,y,width,height,[color1,color2])} & Color a rectangle. \\ - \end{tagmap} - width and height can be ``$-$'' to fill the viewport. If no color is - specified the viewports foreground color will be used. If two - colors are specified it will do a gradient fill. -} +\section{Misc Coloring Tags} + \begin{tagmap} + \config{\%dr(x,y,width,height,[color1,color2])} & Color a rectangle. \\ + \end{tagmap} + width and height can be ``$-$'' to fill the viewport. If no color is + specified the viewports foreground color will be used. If two + colors are specified it will do a gradient fill. \section{Power Related Information} \begin{tagmap} diff --git a/manual/plugins/text_viewer.tex b/manual/plugins/text_viewer.tex index 60b38e7a7e..fe369d1c90 100644 --- a/manual/plugins/text_viewer.tex +++ b/manual/plugins/text_viewer.tex @@ -196,8 +196,6 @@ by using \emph{Open with} from the \emph{Context Menu} \item[Viewer Options] Change settings for the current file. \begin{description} \item[Encoding] Set the codepage in the text viewer. -% ToDo: wrap some of the following settings into a \opt{lcd_bitmap} to exlude -% ones that don't work on charcell - as soon as the plugin itself does Available settings: \setting{ISO-8859-1} (Latin 1). \setting{ISO-8859-7} (Greek), diff --git a/tools/player_unifont.c b/tools/player_unifont.c deleted file mode 100644 index 693919dbff..0000000000 --- a/tools/player_unifont.c +++ /dev/null @@ -1,780 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Jens Arnold - * Based on the work of Kjell Ericson - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include -#include -#include -#include -#include "lcd-charcell.h" - -#define CHAR_WIDTH 8 -#define CHAR_HEIGHT 8 -#define BITMAP_WIDTH (CHAR_WIDTH*(16+3)) -#define SIZE 2 - -#define CHAR_BG_STD 0xc0c0c0 -#define CHAR_BG_ALT 0x808080 -#define CHAR_FG_STD 0x000000 -#define CHAR_FG_ALT 0xf00000 - -static unsigned char font_player_newlcd[256][7] = { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */ - { 0x00, 0x10, 0x1c, 0x1f, 0x1c, 0x10, 0x00 }, /* 10 */ - { 0x00, 0x01, 0x07, 0x1f, 0x07, 0x01, 0x00 }, /* 11 */ - { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 }, /* 12 */ - { 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x0a }, /* 13 */ - { 0x0f, 0x1d, 0x1d, 0x0d, 0x05, 0x05, 0x05 }, /* 14 */ - { 0x07, 0x08, 0x0e, 0x11, 0x0e, 0x02, 0x1c }, /* 15 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00 }, /* 16 */ - { 0x01, 0x01, 0x05, 0x09, 0x1f, 0x08, 0x04 }, /* 17 */ - { 0x04, 0x0e, 0x15, 0x04, 0x04, 0x04, 0x04 }, /* 18 */ - { 0x04, 0x04, 0x04, 0x04, 0x15, 0x0e, 0x04 }, /* 19 */ - { 0x11, 0x19, 0x1d, 0x1f, 0x1d, 0x19, 0x11 }, /* 1a */ - { 0x11, 0x13, 0x17, 0x1f, 0x17, 0x13, 0x11 }, /* 1b */ - { 0x10, 0x14, 0x12, 0x1f, 0x12, 0x14, 0x10 }, /* 1c */ - { 0x01, 0x05, 0x09, 0x1f, 0x09, 0x05, 0x01 }, /* 1d */ - { 0x00, 0x1f, 0x0e, 0x0e, 0x04, 0x04, 0x00 }, /* 1e */ - { 0x00, 0x04, 0x04, 0x0e, 0x0e, 0x1f, 0x00 }, /* 1f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */ - { 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 }, /* 21 */ - { 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00 }, /* 22 */ - { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 23 */ - { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 24 */ - { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 25 */ - { 0x0c, 0x12, 0x14, 0x08, 0x15, 0x12, 0x0d }, /* 26 */ - { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 27 */ - { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 28 */ - { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 29 */ - { 0x00, 0x04, 0x15, 0x0e, 0x15, 0x04, 0x00 }, /* 2a */ - { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2b */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 2c */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 2d */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 2e */ - { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 2f */ - { 0x0e, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0e }, /* 30 */ - { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 31 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 32 */ - { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 33 */ - { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 34 */ - { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 35 */ - { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 36 */ - { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 37 */ - { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 38 */ - { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 39 */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3a */ - { 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x04, 0x08 }, /* 3b */ - { 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 }, /* 3c */ - { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 3d */ - { 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 }, /* 3e */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 3f */ - { 0x0e, 0x11, 0x01, 0x0d, 0x15, 0x15, 0x0e }, /* 40 */ - { 0x0e, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 41 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 42 */ - { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 43 */ - { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 44 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 45 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 46 */ - { 0x0e, 0x11, 0x10, 0x17, 0x11, 0x11, 0x0f }, /* 47 */ - { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 48 */ - { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 49 */ - { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4a */ - { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4b */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 4c */ - { 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 }, /* 4d */ - { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 4e */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 4f */ - { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 50 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 51 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 52 */ - { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 53 */ - { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 54 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 55 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 56 */ - { 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a }, /* 57 */ - { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 58 */ - { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 59 */ - { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5a */ - { 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e }, /* 5b */ - { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 5c */ - { 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e }, /* 5d */ - { 0x04, 0x0a, 0x11, 0x00, 0x00, 0x00, 0x00 }, /* 5e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 5f */ - { 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, /* 60 */ - { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 61 */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e }, /* 62 */ - { 0x00, 0x00, 0x0e, 0x10, 0x10, 0x11, 0x0e }, /* 63 */ - { 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f }, /* 64 */ - { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 65 */ - { 0x06, 0x09, 0x08, 0x1c, 0x08, 0x08, 0x08 }, /* 66 */ - { 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* 67 */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 68 */ - { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 69 */ - { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6a */ - { 0x10, 0x10, 0x12, 0x14, 0x18, 0x14, 0x12 }, /* 6b */ - { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 6c */ - { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x11, 0x11 }, /* 6d */ - { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6e */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 6f */ - { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 70 */ - { 0x00, 0x00, 0x0d, 0x13, 0x0f, 0x01, 0x01 }, /* 71 */ - { 0x00, 0x00, 0x16, 0x19, 0x10, 0x10, 0x10 }, /* 72 */ - { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 73 */ - { 0x08, 0x08, 0x1c, 0x08, 0x08, 0x09, 0x06 }, /* 74 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 75 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 76 */ - { 0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0a }, /* 77 */ - { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 78 */ - { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 79 */ - { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7a */ - { 0x02, 0x04, 0x04, 0x08, 0x04, 0x04, 0x02 }, /* 7b */ - { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 7c */ - { 0x08, 0x04, 0x04, 0x02, 0x04, 0x04, 0x08 }, /* 7d */ - { 0x00, 0x04, 0x02, 0x1f, 0x02, 0x04, 0x00 }, /* 7e */ - { 0x00, 0x04, 0x08, 0x1f, 0x08, 0x04, 0x00 }, /* 7f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 80 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* 81 */ - { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* 82 */ - { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* 83 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 84 */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 85 */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 86 */ - { 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 }, /* 87 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 }, /* 88 */ - { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }, /* 89 */ - { 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d }, /* 8a */ - { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 8b */ - { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 8c */ - { 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* 8d */ - { 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }, /* 8e */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00 }, /* 8f */ - { 0x00, 0x0e, 0x1f, 0x1f, 0x1f, 0x0e, 0x00 }, /* 90 */ - { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* 91 */ - { 0x1f, 0x1b, 0x13, 0x1b, 0x1b, 0x11, 0x1f }, /* 92 */ - { 0x1f, 0x11, 0x1d, 0x1b, 0x17, 0x11, 0x1f }, /* 93 */ - { 0x00, 0x00, 0x07, 0x04, 0x04, 0x14, 0x08 }, /* 94 */ - { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00, 0x1f }, /* 95 */ - { 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x00 }, /* 96 */ - { 0x00, 0x04, 0x00, 0x1f, 0x00, 0x04, 0x00 }, /* 97 */ - { 0x1f, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 98 */ - { 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x00, 0x00 }, /* 99 */ - { 0x1c, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x00 }, /* 9a */ - { 0x11, 0x12, 0x17, 0x09, 0x17, 0x04, 0x07 }, /* 9b */ - { 0x11, 0x12, 0x14, 0x09, 0x13, 0x07, 0x01 }, /* 9c */ - { 0x18, 0x09, 0x1a, 0x0d, 0x1b, 0x17, 0x01 }, /* 9d */ - { 0x00, 0x05, 0x0a, 0x14, 0x0a, 0x05, 0x00 }, /* 9e */ - { 0x00, 0x14, 0x0a, 0x05, 0x0a, 0x14, 0x00 }, /* 9f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */ - { 0x00, 0x00, 0x00, 0x00, 0x1c, 0x14, 0x1c }, /* a1 */ - { 0x07, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00 }, /* a2 */ - { 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x1c }, /* a3 */ - { 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04 }, /* a4 */ - { 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00 }, /* a5 */ - { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x02, 0x04 }, /* a6 */ - { 0x00, 0x00, 0x1f, 0x01, 0x06, 0x04, 0x08 }, /* a7 */ - { 0x00, 0x00, 0x02, 0x04, 0x0c, 0x14, 0x04 }, /* a8 */ - { 0x00, 0x00, 0x04, 0x1f, 0x11, 0x01, 0x06 }, /* a9 */ - { 0x00, 0x00, 0x00, 0x1f, 0x04, 0x04, 0x1f }, /* aa */ - { 0x00, 0x00, 0x02, 0x1f, 0x06, 0x0a, 0x12 }, /* ab */ - { 0x00, 0x00, 0x08, 0x1f, 0x09, 0x0a, 0x08 }, /* ac */ - { 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x1f }, /* ad */ - { 0x00, 0x00, 0x1e, 0x02, 0x1e, 0x02, 0x1e }, /* ae */ - { 0x00, 0x00, 0x00, 0x15, 0x15, 0x01, 0x06 }, /* af */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* b0 */ - { 0x1f, 0x01, 0x05, 0x06, 0x04, 0x04, 0x08 }, /* b1 */ - { 0x01, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04 }, /* b2 */ - { 0x04, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* b3 */ - { 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x1f }, /* b4 */ - { 0x02, 0x1f, 0x02, 0x06, 0x0a, 0x12, 0x02 }, /* b5 */ - { 0x08, 0x1f, 0x09, 0x09, 0x09, 0x09, 0x12 }, /* b6 */ - { 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x04, 0x04 }, /* b7 */ - { 0x00, 0x0f, 0x09, 0x11, 0x01, 0x02, 0x0c }, /* b8 */ - { 0x08, 0x0f, 0x12, 0x02, 0x02, 0x02, 0x04 }, /* b9 */ - { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x1f }, /* ba */ - { 0x0a, 0x1f, 0x0a, 0x02, 0x02, 0x02, 0x04 }, /* bb */ - { 0x00, 0x18, 0x00, 0x18, 0x01, 0x02, 0x1c }, /* bc */ - { 0x00, 0x1f, 0x01, 0x02, 0x04, 0x0a, 0x11 }, /* bd */ - { 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08, 0x07 }, /* be */ - { 0x00, 0x11, 0x11, 0x09, 0x01, 0x02, 0x0c }, /* bf */ - { 0x00, 0x0f, 0x09, 0x15, 0x03, 0x02, 0x0c }, /* c0 */ - { 0x02, 0x1c, 0x04, 0x1f, 0x04, 0x04, 0x08 }, /* c1 */ - { 0x00, 0x15, 0x15, 0x15, 0x01, 0x02, 0x04 }, /* c2 */ - { 0x0e, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x08 }, /* c3 */ - { 0x08, 0x08, 0x08, 0x0c, 0x0a, 0x08, 0x08 }, /* c4 */ - { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x08, 0x10 }, /* c5 */ - { 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c6 */ - { 0x00, 0x1f, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* c7 */ - { 0x04, 0x1f, 0x02, 0x04, 0x0e, 0x15, 0x04 }, /* c8 */ - { 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* c9 */ - { 0x00, 0x04, 0x02, 0x11, 0x11, 0x11, 0x11 }, /* ca */ - { 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x0f }, /* cb */ - { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x02, 0x0c }, /* cc */ - { 0x00, 0x08, 0x14, 0x02, 0x01, 0x01, 0x00 }, /* cd */ - { 0x04, 0x1f, 0x04, 0x04, 0x15, 0x15, 0x04 }, /* ce */ - { 0x00, 0x1f, 0x01, 0x01, 0x0a, 0x04, 0x02 }, /* cf */ - { 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x01 }, /* d0 */ - { 0x00, 0x04, 0x08, 0x10, 0x11, 0x1f, 0x01 }, /* d1 */ - { 0x00, 0x01, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* d2 */ - { 0x00, 0x1f, 0x08, 0x1f, 0x08, 0x08, 0x07 }, /* d3 */ - { 0x08, 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08 }, /* d4 */ - { 0x00, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x1f }, /* d5 */ - { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x01, 0x1f }, /* d6 */ - { 0x0e, 0x00, 0x1f, 0x01, 0x01, 0x02, 0x04 }, /* d7 */ - { 0x12, 0x12, 0x12, 0x12, 0x12, 0x04, 0x08 }, /* d8 */ - { 0x00, 0x04, 0x14, 0x14, 0x15, 0x15, 0x16 }, /* d9 */ - { 0x00, 0x10, 0x10, 0x11, 0x12, 0x14, 0x18 }, /* da */ - { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* db */ - { 0x00, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* dc */ - { 0x00, 0x18, 0x00, 0x01, 0x01, 0x02, 0x1c }, /* dd */ - { 0x04, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* de */ - { 0x1c, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x00 }, /* df */ - { 0x00, 0x00, 0x09, 0x15, 0x12, 0x12, 0x0d }, /* e0 */ - { 0x00, 0x0e, 0x11, 0x1e, 0x11, 0x1e, 0x10 }, /* e1 */ - { 0x00, 0x11, 0x0a, 0x0a, 0x04, 0x04, 0x08 }, /* e2 */ - { 0x00, 0x00, 0x1f, 0x0a, 0x0a, 0x0a, 0x13 }, /* e3 */ - { 0x1f, 0x10, 0x08, 0x04, 0x08, 0x10, 0x1f }, /* e4 */ - { 0x00, 0x00, 0x0f, 0x14, 0x12, 0x11, 0x0e }, /* e5 */ - { 0x00, 0x09, 0x09, 0x09, 0x0f, 0x08, 0x10 }, /* e6 */ - { 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x03 }, /* e7 */ - { 0x1f, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x1f }, /* e8 */ - { 0x00, 0x0e, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* e9 */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0a, 0x1b }, /* ea */ - { 0x0f, 0x10, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* eb */ - { 0x00, 0x00, 0x00, 0x00, 0x0b, 0x15, 0x1a }, /* ec */ - { 0x02, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x08 }, /* ed */ - { 0x00, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x00 }, /* ee */ - { 0x06, 0x09, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* ef */ - { 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00 }, /* f0 */ - { 0x00, 0x08, 0x15, 0x0a, 0x15, 0x02, 0x00 }, /* f1 */ - { 0x08, 0x0f, 0x12, 0x0f, 0x0a, 0x1f, 0x02 }, /* f2 */ - { 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x11 }, /* f3 */ - { 0x04, 0x15, 0x15, 0x04, 0x04, 0x0a, 0x11 }, /* f4 */ - { 0x04, 0x04, 0x1d, 0x06, 0x0e, 0x15, 0x04 }, /* f5 */ - { 0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x04 }, /* f6 */ - { 0x04, 0x0a, 0x11, 0x0e, 0x04, 0x0e, 0x1f }, /* f7 */ - { 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x1f }, /* f8 */ - { 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f }, /* f9 */ - { 0x00, 0x01, 0x1e, 0x04, 0x1f, 0x04, 0x04 }, /* fa */ - { 0x00, 0x00, 0x1f, 0x08, 0x0f, 0x09, 0x11 }, /* fb */ - { 0x00, 0x00, 0x1f, 0x15, 0x1f, 0x11, 0x11 }, /* fc */ - { 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a }, /* fd */ - { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* fe */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ff */ -}; -static unsigned char font_player_oldlcd[256][7] = { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */ - { 0x0e, 0x11, 0x17, 0x15, 0x17, 0x10, 0x0e }, /* 04 */ - { 0x06, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x1f }, /* 05 */ - { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 06 */ - { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 07 */ - { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 08 */ - { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 09 */ - { 0x08, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 0a */ - { 0x08, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* 0b */ - { 0x08, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 0c */ - { 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x02, 0x0e }, /* 0d */ - { 0x10, 0x10, 0x17, 0x14, 0x1e, 0x04, 0x04 }, /* 0e */ - { 0x01, 0x0e, 0x13, 0x15, 0x19, 0x0e, 0x10 }, /* 0f */ - { 0x00, 0x02, 0x0e, 0x15, 0x15, 0x0e, 0x08 }, /* 10 */ - { 0x1c, 0x10, 0x17, 0x1d, 0x07, 0x06, 0x05 }, /* 11 */ - { 0x04, 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x11 }, /* 12 */ - { 0x04, 0x0a, 0x04, 0x01, 0x0f, 0x11, 0x0f }, /* 13 */ - { 0x00, 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x1f }, /* 14 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 15 */ - { 0x0e, 0x04, 0x1f, 0x15, 0x1f, 0x04, 0x0e }, /* 16 */ - { 0x1f, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10 }, /* 17 */ - { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x11 }, /* 18 */ - { 0x0e, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x1b }, /* 19 */ - { 0x1f, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a }, /* 1a */ - { 0x15, 0x15, 0x15, 0x15, 0x0e, 0x04, 0x04 }, /* 1b */ - { 0x1f, 0x08, 0x04, 0x02, 0x04, 0x08, 0x1f }, /* 1c */ - { 0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* 1d */ - { 0x1f, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x1f }, /* 1e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 1f */ - { 0x0f, 0x14, 0x14, 0x1f, 0x14, 0x14, 0x17 }, /* 20 */ - { 0x00, 0x00, 0x1a, 0x05, 0x0f, 0x14, 0x0f }, /* 21 */ - { 0x0c, 0x12, 0x16, 0x11, 0x11, 0x16, 0x10 }, /* 22 */ - { 0x02, 0x04, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 23 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 24 */ - { 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04 }, /* 25 */ - { 0x1b, 0x09, 0x12, 0x00, 0x00, 0x00, 0x00 }, /* 26 */ - { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 27 */ - { 0x00, 0x11, 0x0e, 0x0a, 0x0e, 0x11, 0x00 }, /* 28 */ - { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 29 */ - { 0x08, 0x14, 0x14, 0x09, 0x15, 0x12, 0x0d }, /* 2a */ - { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 2b */ - { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 2c */ - { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 2d */ - { 0x04, 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x04 }, /* 2e */ - { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2f */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 30 */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 31 */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 32 */ - { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 33 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 34 */ - { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 35 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 36 */ - { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 37 */ - { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 38 */ - { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 39 */ - { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 3a */ - { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 3b */ - { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 3c */ - { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 3d */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3e */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x04, 0x08 }, /* 3f */ - { 0x03, 0x06, 0x0c, 0x18, 0x0c, 0x06, 0x03 }, /* 40 */ - { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 41 */ - { 0x18, 0x0c, 0x06, 0x03, 0x06, 0x0c, 0x18 }, /* 42 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 43 */ - { 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 44 */ - { 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 45 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 46 */ - { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 47 */ - { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 48 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 49 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 4a */ - { 0x0e, 0x10, 0x10, 0x17, 0x11, 0x11, 0x0e }, /* 4b */ - { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 4c */ - { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 4d */ - { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4e */ - { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4f */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 50 */ - { 0x11, 0x1b, 0x15, 0x11, 0x11, 0x11, 0x11 }, /* 51 */ - { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 52 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 53 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 54 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 55 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 56 */ - { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 57 */ - { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 58 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 59 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 5a */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 5b */ - { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 5c */ - { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 5d */ - { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5e */ - { 0x0a, 0x00, 0x04, 0x0a, 0x11, 0x1f, 0x11 }, /* 5f */ - { 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 60 */ - { 0x0d, 0x12, 0x00, 0x19, 0x15, 0x13, 0x11 }, /* 61 */ - { 0x0a, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 62 */ - { 0x0e, 0x10, 0x0e, 0x11, 0x0e, 0x01, 0x0e }, /* 63 */ - { 0x04, 0x00, 0x04, 0x08, 0x10, 0x11, 0x0e }, /* 64 */ - { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 65 */ - { 0x10, 0x10, 0x1e, 0x11, 0x11, 0x11, 0x1e }, /* 66 */ - { 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* 67 */ - { 0x01, 0x01, 0x0f, 0x11, 0x11, 0x11, 0x0f }, /* 68 */ - { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0f }, /* 69 */ - { 0x03, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x04 }, /* 6a */ - { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* 6b */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6c */ - { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 6d */ - { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6e */ - { 0x08, 0x08, 0x09, 0x0a, 0x0c, 0x0a, 0x09 }, /* 6f */ - { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 70 */ - { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x15, 0x15 }, /* 71 */ - { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 72 */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 73 */ - { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 74 */ - { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x01 }, /* 75 */ - { 0x00, 0x00, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* 76 */ - { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 77 */ - { 0x04, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03 }, /* 78 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 79 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 7a */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 7b */ - { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 7c */ - { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 7d */ - { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7e */ - { 0x0a, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 7f */ - { 0x00, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 80 */ - { 0x0d, 0x12, 0x00, 0x16, 0x19, 0x11, 0x11 }, /* 81 */ - { 0x00, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 82 */ - { 0x08, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 83 */ - { 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x02, 0x04 }, /* 84 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }, /* 85 */ - { 0x00, 0x00, 0x04, 0x0e, 0x1f, 0x00, 0x00 }, /* 86 */ - { 0x00, 0x00, 0x1f, 0x0e, 0x04, 0x00, 0x00 }, /* 87 */ - { 0x02, 0x06, 0x0e, 0x1e, 0x0e, 0x06, 0x02 }, /* 88 */ - { 0x08, 0x0c, 0x0e, 0x0f, 0x0e, 0x0c, 0x08 }, /* 89 */ - { 0x1c, 0x1f, 0x13, 0x10, 0x10, 0x10, 0x10 }, /* 8a */ - { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* 8b */ - { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8c */ - { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8d */ - { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8e */ - { 0x0d, 0x12, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8f */ - { 0x08, 0x04, 0x1f, 0x10, 0x1e, 0x10, 0x1f }, /* 90 */ - { 0x04, 0x0a, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 91 */ - { 0x0a, 0x00, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 92 */ - { 0x08, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 93 */ - { 0x02, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 94 */ - { 0x0c, 0x0a, 0x09, 0x1d, 0x09, 0x0a, 0x0c }, /* 95 */ - { 0x08, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 96 */ - { 0x02, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 97 */ - { 0x04, 0x0a, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 98 */ - { 0x0d, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 99 */ - { 0x08, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9a */ - { 0x02, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9b */ - { 0x02, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9c */ - { 0x04, 0x0a, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9d */ - { 0x0d, 0x12, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9e */ - { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 9f */ - { 0x0a, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* a0 */ - { 0x02, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a1 */ - { 0x04, 0x0a, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a2 */ - { 0x0a, 0x00, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a3 */ - { 0x02, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a4 */ - { 0x04, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a5 */ - { 0x0d, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a6 */ - { 0x02, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* a7 */ - { 0x04, 0x04, 0x0f, 0x10, 0x10, 0x0f, 0x04 }, /* a8 */ - { 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03 }, /* a9 */ - { 0x0a, 0x04, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* aa */ - { 0x0a, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* ab */ - { 0x0a, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* ac */ - { 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* ad */ - { 0x04, 0x0a, 0x04, 0x11, 0x11, 0x13, 0x0d }, /* ae */ - { 0x02, 0x04, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* af */ - { 0x02, 0x0f, 0x02, 0x0e, 0x12, 0x12, 0x0e }, /* b0 */ - { 0x02, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* b1 */ - { 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x04, 0x06 }, /* b2 */ - { 0x0e, 0x01, 0x0f, 0x11, 0x0f, 0x02, 0x03 }, /* b3 */ - { 0x04, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b4 */ - { 0x02, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b5 */ - { 0x02, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* b6 */ - { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* b7 */ - { 0x0c, 0x04, 0x06, 0x0c, 0x04, 0x04, 0x0e }, /* b8 */ - { 0x04, 0x0e, 0x1f, 0x1f, 0x1b, 0x04, 0x0e }, /* b9 */ - { 0x0a, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* ba */ - { 0x09, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x06 }, /* bb */ - { 0x05, 0x05, 0x0c, 0x14, 0x14, 0x14, 0x0c }, /* bc */ - { 0x0a, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* bd */ - { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* be */ - { 0x0f, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, /* bf */ - { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c0 */ - { 0x1f, 0x00, 0x0e, 0x10, 0x17, 0x11, 0x0e }, /* c1 */ - { 0x1f, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* c2 */ - { 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x0c }, /* c3 */ - { 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04 }, /* c4 */ - { 0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* c5 */ - { 0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* c6 */ - { 0x05, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* c7 */ - { 0x09, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* c8 */ - { 0x09, 0x12, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* c9 */ - { 0x09, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* ca */ - { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0f }, /* cb */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x01, 0x1e }, /* cc */ - { 0x00, 0x1b, 0x1f, 0x1f, 0x0e, 0x04, 0x00 }, /* cd */ - { 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18 }, /* ce */ - { 0x0e, 0x11, 0x04, 0x0a, 0x1b, 0x1f, 0x00 }, /* cf */ - { 0x0a, 0x15, 0x04, 0x07, 0x00, 0x11, 0x0a }, /* d0 */ - { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* d1 */ - { 0x01, 0x03, 0x1d, 0x11, 0x1d, 0x03, 0x01 }, /* d2 */ - { 0x0e, 0x11, 0x11, 0x1f, 0x1b, 0x1b, 0x1f }, /* d3 */ - { 0x00, 0x01, 0x02, 0x0a, 0x04, 0x04, 0x00 }, /* d4 */ - { 0x04, 0x0e, 0x1f, 0x00, 0x1f, 0x0e, 0x04 }, /* d5 */ - { 0x02, 0x02, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* d6 */ - { 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b }, /* d7 */ - { 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b }, /* d8 */ - { 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03, 0x06 }, /* d9 */ - { 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b }, /* da */ - { 0x00, 0x04, 0x0e, 0x1f, 0x0e, 0x04, 0x00 }, /* db */ - { 0x00, 0x00, 0x1f, 0x1b, 0x15, 0x11, 0x1f }, /* dc */ - { 0x0e, 0x0e, 0x04, 0x1f, 0x0e, 0x0e, 0x0a }, /* dd */ - { 0x00, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x0a }, /* de */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* df */ - { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* e0 */ - { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* e1 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e2 */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e3 */ - { 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04 }, /* e4 */ - { 0x04, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x04 }, /* e5 */ - { 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x04, 0x1f }, /* e6 */ - { 0x00, 0x07, 0x03, 0x05, 0x08, 0x10, 0x00 }, /* e7 */ - { 0x00, 0x10, 0x08, 0x05, 0x03, 0x07, 0x00 }, /* e8 */ - { 0x09, 0x06, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* e9 */ - { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ea */ - { 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04 }, /* eb */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ec */ - { 0x1f, 0x18, 0x14, 0x12, 0x15, 0x18, 0x1f }, /* ed */ - { 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ee */ - { 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ef */ - { 0x00, 0x03, 0x07, 0x0c, 0x18, 0x1c, 0x1c }, /* f0 */ - { 0x1c, 0x10, 0x1c, 0x07, 0x1c, 0x04, 0x07 }, /* f1 */ - { 0x00, 0x1e, 0x03, 0x09, 0x19, 0x09, 0x1d }, /* f2 */ - { 0x1e, 0x01, 0x19, 0x05, 0x09, 0x1d, 0x01 }, /* f3 */ - { 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00 }, /* f4 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f }, /* f5 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e }, /* f6 */ - { 0x04, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00 }, /* f7 */ - { 0x07, 0x03, 0x05, 0x08, 0x10, 0x10, 0x0f }, /* f8 */ - { 0x04, 0x0e, 0x1f, 0x11, 0x11, 0x15, 0x1f }, /* f9 */ - { 0x1f, 0x03, 0x1a, 0x02, 0x1a, 0x02, 0x1e }, /* fa */ - { 0x00, 0x0e, 0x1f, 0x11, 0x1f, 0x0e, 0x00 }, /* fb */ - { 0x03, 0x05, 0x09, 0x09, 0x0b, 0x1b, 0x18 }, /* fc */ - { 0x1f, 0x03, 0x05, 0x09, 0x15, 0x03, 0x1f }, /* fd */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c, 0x1c }, /* fe */ - { 0x1c, 0x1c, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ff */ -}; - -static unsigned char (*font_player)[256][7]; - -static unsigned bitmap[BITMAP_WIDTH][CHAR_HEIGHT]; -static bool show_subst, show_hardware; -static bool newlcd; - -bool is_new_player(void) -{ - return newlcd; -} - -static void draw_pattern(int fg, int bg, int x, const unsigned char *pattern) -{ - int x2, y2; - - for (y2 = 0; y2 < 7; y2++) - { - unsigned data = pattern[y2]; - - for (x2 = 0; x2 < 5; x2++) - bitmap[x+x2][y2] = (data & (0x10 >> x2)) ? fg : bg; - } -} - -static void draw_hexdigit(int x, int digit) -{ - int x2, y2; - - draw_pattern(CHAR_FG_STD, CHAR_BG_STD, x + 1, - font_player_newlcd[digit+(digit<10?'0':'A'-10)]); - - for (y2 = 0; y2 < CHAR_HEIGHT; y2++) - for (x2 = 0; x2 < CHAR_WIDTH; x2++) - bitmap[x+x2][y2] ^= 0xffffff; -} - -static void flush_bitmap(FILE *fp) -{ - int x, y; - - for (y = 0; y < CHAR_HEIGHT; y++) - { - int i, z; - - for (i = 0; i < SIZE; i++) - { - for (x = 0; x < BITMAP_WIDTH; x++) - { - unsigned int col = bitmap[x][y]; - - for (z = 0; z < SIZE; z++) - { - fprintf(fp, "%d %d %d ", (col >> 16) & 255, - (col >> 8) & 255, (col) & 255); - } - } - fprintf(fp, "\n"); - } - } -} - - -int main(int argc, char **argv) -{ - int x, y; - int i, lines, block, oldblock; - int loop; - char *filename; - FILE *fp; - - printf("This tool will generate gif-pictures that reflect the current " - "unicode charset of the Player.\n"); - - for (loop = 0; loop < 6; loop++) - { - switch (loop) - { - case 0: - font_player = &font_player_oldlcd; - newlcd = false; - lcd_charset_init(); - filename = "lcd_old.gif"; - show_subst = false; - show_hardware = false; - break; - case 1: - font_player = &font_player_newlcd; - newlcd = true; - lcd_charset_init(); - filename = "lcd_new.gif"; - show_subst = false; - show_hardware = false; - break; - case 2: - font_player = &font_player_oldlcd; - newlcd = false; - lcd_charset_init(); - filename = "lcd_old_subst.gif"; - show_subst = true; - show_hardware = false; - break; - case 3: - font_player = &font_player_newlcd; - newlcd = true; - lcd_charset_init(); - filename = "lcd_new_subst.gif"; - show_subst = true; - show_hardware = false; - break; - case 4: - font_player = &font_player_oldlcd; - xchar_info = NULL; - xchar_info_size = 256; - filename = "lcd_old_hw.gif"; - show_subst = true; - show_hardware = true; - break; - case 5: - font_player = &font_player_newlcd; - xchar_info = NULL; - xchar_info_size = 256; - filename = "lcd_new_hw.gif"; - show_subst = true; - show_hardware = true; - break; - default: - printf("Not in loop!\n"); - exit(0); - } - fp = fopen("tmp.pnm", "wb"); - if (!fp) - { - printf("Error opening %s!\n", filename); - exit(0); - } - if (show_hardware) - { - /* hardware mapping is always 16 lines */ - lines = 16; - } - else - { - /* count lines */ - for (lines = 0, oldblock = -1, i = 0; i < xchar_info_size; i++) - { - block = xchar_info[i].ucs >> 4; - if (block != oldblock) - { - lines++; - oldblock = block; - } - } - } - fprintf(fp, "P3\n#PNM showing a picture of the Player unicode charset\n"); - fprintf(fp, "%d %d\n255\n", BITMAP_WIDTH*SIZE, CHAR_HEIGHT*SIZE*(lines+1)); - - memset(bitmap, 255, sizeof(bitmap)); - for (x = 0; x < 16; x++) - { - draw_hexdigit(3*CHAR_WIDTH + x * CHAR_WIDTH, x); - } - - for (oldblock = -1, i = 0; i < xchar_info_size; i++) - { - block = show_hardware ? (i >> 4) : (xchar_info[i].ucs >> 4); - if (block != oldblock) - { - flush_bitmap(fp); - memset(bitmap, 255, sizeof(bitmap)); - draw_hexdigit(0, (block >> 8) & 0xf); - draw_hexdigit(CHAR_WIDTH, (block >> 4) & 0xf); - draw_hexdigit(2*CHAR_WIDTH, block & 0xf); - oldblock = block; - } - if (show_hardware) - { - draw_pattern(CHAR_FG_STD, CHAR_BG_STD, - 3*CHAR_WIDTH+1 + (i & 0xf) * CHAR_WIDTH, - (*font_player)[i]); - } - else - { - if (xchar_info[i].priority == 0) - { - draw_pattern(CHAR_FG_STD, CHAR_BG_STD, - 3*CHAR_WIDTH+1 - + (xchar_info[i].ucs & 0xf) * CHAR_WIDTH, - (*font_player)[xchar_info[i].hw_char]); - } - else - { - if (show_subst) - { - draw_pattern(CHAR_FG_ALT, CHAR_BG_STD, - 3*CHAR_WIDTH+1 - + (xchar_info[i].ucs & 0xf) * CHAR_WIDTH, - (*font_player)[xchar_info[i].hw_char]); - } - else - { - if ((xchar_info[i].glyph & 0x8000) == 0) - draw_pattern(CHAR_FG_ALT, CHAR_BG_STD, - 3*CHAR_WIDTH+1 - + (xchar_info[i].ucs & 0xf) * CHAR_WIDTH, - xfont_fixed[xchar_info[i].glyph]); - else - draw_pattern(CHAR_FG_STD, CHAR_BG_ALT, - 3*CHAR_WIDTH+1 - + (xchar_info[i].ucs & 0xf) * CHAR_WIDTH, - font_player_newlcd[' ']); - } - } - } - } - flush_bitmap(fp); - fclose(fp); - { - char buffer[200]; - - sprintf(buffer, "convert tmp.pnm %s", filename); - system(buffer); - remove("tmp.pnm"); - } - } -} diff --git a/uisimulator/common/SOURCES b/uisimulator/common/SOURCES index 9833753236..6d15a04c41 100644 --- a/uisimulator/common/SOURCES +++ b/uisimulator/common/SOURCES @@ -1,11 +1,6 @@ #ifdef SIMULATOR lcd-common.c -#ifdef HAVE_LCD_CHARCELLS -font-player.c -lcd-playersim.c -sim_icons.c -#endif sim_tasks.c fmradio.c backlight-sim.c diff --git a/uisimulator/common/backlight-sim.c b/uisimulator/common/backlight-sim.c index 0d6440b7f3..7acdee84ae 100644 --- a/uisimulator/common/backlight-sim.c +++ b/uisimulator/common/backlight-sim.c @@ -27,7 +27,7 @@ #ifdef HAVE_LCD_SLEEP extern void lcd_awake(void); #endif -/* in uisimulator/sdl/lcd-bitmap.c and lcd-charcell.c */ +/* in uisimulator/sdl/lcd-bitmap.c */ extern void sim_backlight(int value); bool backlight_hw_init(void) diff --git a/uisimulator/common/font-player.c b/uisimulator/common/font-player.c deleted file mode 100644 index f08a98348f..0000000000 --- a/uisimulator/common/font-player.c +++ /dev/null @@ -1,548 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "font-player.h" -#include "hwcompat.h" - -static unsigned char font_player_newlcd[256][7] = { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */ - { 0x00, 0x10, 0x1c, 0x1f, 0x1c, 0x10, 0x00 }, /* 10 */ - { 0x00, 0x01, 0x07, 0x1f, 0x07, 0x01, 0x00 }, /* 11 */ - { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 }, /* 12 */ - { 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x0a }, /* 13 */ - { 0x0f, 0x1d, 0x1d, 0x0d, 0x05, 0x05, 0x05 }, /* 14 */ - { 0x07, 0x08, 0x0e, 0x11, 0x0e, 0x02, 0x1c }, /* 15 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00 }, /* 16 */ - { 0x01, 0x01, 0x05, 0x09, 0x1f, 0x08, 0x04 }, /* 17 */ - { 0x04, 0x0e, 0x15, 0x04, 0x04, 0x04, 0x04 }, /* 18 */ - { 0x04, 0x04, 0x04, 0x04, 0x15, 0x0e, 0x04 }, /* 19 */ - { 0x11, 0x19, 0x1d, 0x1f, 0x1d, 0x19, 0x11 }, /* 1a */ - { 0x11, 0x13, 0x17, 0x1f, 0x17, 0x13, 0x11 }, /* 1b */ - { 0x10, 0x14, 0x12, 0x1f, 0x12, 0x14, 0x10 }, /* 1c */ - { 0x01, 0x05, 0x09, 0x1f, 0x09, 0x05, 0x01 }, /* 1d */ - { 0x00, 0x1f, 0x0e, 0x0e, 0x04, 0x04, 0x00 }, /* 1e */ - { 0x00, 0x04, 0x04, 0x0e, 0x0e, 0x1f, 0x00 }, /* 1f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */ - { 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 }, /* 21 */ - { 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00 }, /* 22 */ - { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 23 */ - { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 24 */ - { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 25 */ - { 0x0c, 0x12, 0x14, 0x08, 0x15, 0x12, 0x0d }, /* 26 */ - { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 27 */ - { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 28 */ - { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 29 */ - { 0x00, 0x04, 0x15, 0x0e, 0x15, 0x04, 0x00 }, /* 2a */ - { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2b */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 2c */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 2d */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 2e */ - { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 2f */ - { 0x0e, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0e }, /* 30 */ - { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 31 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 32 */ - { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 33 */ - { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 34 */ - { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 35 */ - { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 36 */ - { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 37 */ - { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 38 */ - { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 39 */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3a */ - { 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x04, 0x08 }, /* 3b */ - { 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 }, /* 3c */ - { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 3d */ - { 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 }, /* 3e */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 3f */ - { 0x0e, 0x11, 0x01, 0x0d, 0x15, 0x15, 0x0e }, /* 40 */ - { 0x0e, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 41 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 42 */ - { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 43 */ - { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 44 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 45 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 46 */ - { 0x0e, 0x11, 0x10, 0x17, 0x11, 0x11, 0x0f }, /* 47 */ - { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 48 */ - { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 49 */ - { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4a */ - { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4b */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 4c */ - { 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 }, /* 4d */ - { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 4e */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 4f */ - { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 50 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 51 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 52 */ - { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 53 */ - { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 54 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 55 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 56 */ - { 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a }, /* 57 */ - { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 58 */ - { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 59 */ - { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5a */ - { 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e }, /* 5b */ - { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 5c */ - { 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e }, /* 5d */ - { 0x04, 0x0a, 0x11, 0x00, 0x00, 0x00, 0x00 }, /* 5e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 5f */ - { 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, /* 60 */ - { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 61 */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e }, /* 62 */ - { 0x00, 0x00, 0x0e, 0x10, 0x10, 0x11, 0x0e }, /* 63 */ - { 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f }, /* 64 */ - { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 65 */ - { 0x06, 0x09, 0x08, 0x1c, 0x08, 0x08, 0x08 }, /* 66 */ - { 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* 67 */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 68 */ - { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 69 */ - { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6a */ - { 0x10, 0x10, 0x12, 0x14, 0x18, 0x14, 0x12 }, /* 6b */ - { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 6c */ - { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x11, 0x11 }, /* 6d */ - { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6e */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 6f */ - { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 70 */ - { 0x00, 0x00, 0x0d, 0x13, 0x0f, 0x01, 0x01 }, /* 71 */ - { 0x00, 0x00, 0x16, 0x19, 0x10, 0x10, 0x10 }, /* 72 */ - { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 73 */ - { 0x08, 0x08, 0x1c, 0x08, 0x08, 0x09, 0x06 }, /* 74 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 75 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 76 */ - { 0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0a }, /* 77 */ - { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 78 */ - { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 79 */ - { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7a */ - { 0x02, 0x04, 0x04, 0x08, 0x04, 0x04, 0x02 }, /* 7b */ - { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 7c */ - { 0x08, 0x04, 0x04, 0x02, 0x04, 0x04, 0x08 }, /* 7d */ - { 0x00, 0x04, 0x02, 0x1f, 0x02, 0x04, 0x00 }, /* 7e */ - { 0x00, 0x04, 0x08, 0x1f, 0x08, 0x04, 0x00 }, /* 7f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 80 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* 81 */ - { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* 82 */ - { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* 83 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 84 */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 85 */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 86 */ - { 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 }, /* 87 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 }, /* 88 */ - { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }, /* 89 */ - { 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d }, /* 8a */ - { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 8b */ - { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 8c */ - { 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* 8d */ - { 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }, /* 8e */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00 }, /* 8f */ - { 0x00, 0x0e, 0x1f, 0x1f, 0x1f, 0x0e, 0x00 }, /* 90 */ - { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* 91 */ - { 0x1f, 0x1b, 0x13, 0x1b, 0x1b, 0x11, 0x1f }, /* 92 */ - { 0x1f, 0x11, 0x1d, 0x1b, 0x17, 0x11, 0x1f }, /* 93 */ - { 0x00, 0x00, 0x07, 0x04, 0x04, 0x14, 0x08 }, /* 94 */ - { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00, 0x1f }, /* 95 */ - { 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x00 }, /* 96 */ - { 0x00, 0x04, 0x00, 0x1f, 0x00, 0x04, 0x00 }, /* 97 */ - { 0x1f, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 98 */ - { 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x00, 0x00 }, /* 99 */ - { 0x1c, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x00 }, /* 9a */ - { 0x11, 0x12, 0x17, 0x09, 0x17, 0x04, 0x07 }, /* 9b */ - { 0x11, 0x12, 0x14, 0x09, 0x13, 0x07, 0x01 }, /* 9c */ - { 0x18, 0x09, 0x1a, 0x0d, 0x1b, 0x17, 0x01 }, /* 9d */ - { 0x00, 0x05, 0x0a, 0x14, 0x0a, 0x05, 0x00 }, /* 9e */ - { 0x00, 0x14, 0x0a, 0x05, 0x0a, 0x14, 0x00 }, /* 9f */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */ - { 0x00, 0x00, 0x00, 0x00, 0x1c, 0x14, 0x1c }, /* a1 */ - { 0x07, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00 }, /* a2 */ - { 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x1c }, /* a3 */ - { 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04 }, /* a4 */ - { 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00 }, /* a5 */ - { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x02, 0x04 }, /* a6 */ - { 0x00, 0x00, 0x1f, 0x01, 0x06, 0x04, 0x08 }, /* a7 */ - { 0x00, 0x00, 0x02, 0x04, 0x0c, 0x14, 0x04 }, /* a8 */ - { 0x00, 0x00, 0x04, 0x1f, 0x11, 0x01, 0x06 }, /* a9 */ - { 0x00, 0x00, 0x00, 0x1f, 0x04, 0x04, 0x1f }, /* aa */ - { 0x00, 0x00, 0x02, 0x1f, 0x06, 0x0a, 0x12 }, /* ab */ - { 0x00, 0x00, 0x08, 0x1f, 0x09, 0x0a, 0x08 }, /* ac */ - { 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x1f }, /* ad */ - { 0x00, 0x00, 0x1e, 0x02, 0x1e, 0x02, 0x1e }, /* ae */ - { 0x00, 0x00, 0x00, 0x15, 0x15, 0x01, 0x06 }, /* af */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* b0 */ - { 0x1f, 0x01, 0x05, 0x06, 0x04, 0x04, 0x08 }, /* b1 */ - { 0x01, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04 }, /* b2 */ - { 0x04, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* b3 */ - { 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x1f }, /* b4 */ - { 0x02, 0x1f, 0x02, 0x06, 0x0a, 0x12, 0x02 }, /* b5 */ - { 0x08, 0x1f, 0x09, 0x09, 0x09, 0x09, 0x12 }, /* b6 */ - { 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x04, 0x04 }, /* b7 */ - { 0x00, 0x0f, 0x09, 0x11, 0x01, 0x02, 0x0c }, /* b8 */ - { 0x08, 0x0f, 0x12, 0x02, 0x02, 0x02, 0x04 }, /* b9 */ - { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x1f }, /* ba */ - { 0x0a, 0x1f, 0x0a, 0x02, 0x02, 0x02, 0x04 }, /* bb */ - { 0x00, 0x18, 0x00, 0x18, 0x01, 0x02, 0x1c }, /* bc */ - { 0x00, 0x1f, 0x01, 0x02, 0x04, 0x0a, 0x11 }, /* bd */ - { 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08, 0x07 }, /* be */ - { 0x00, 0x11, 0x11, 0x09, 0x01, 0x02, 0x0c }, /* bf */ - { 0x00, 0x0f, 0x09, 0x15, 0x03, 0x02, 0x0c }, /* c0 */ - { 0x02, 0x1c, 0x04, 0x1f, 0x04, 0x04, 0x08 }, /* c1 */ - { 0x00, 0x15, 0x15, 0x15, 0x01, 0x02, 0x04 }, /* c2 */ - { 0x0e, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x08 }, /* c3 */ - { 0x08, 0x08, 0x08, 0x0c, 0x0a, 0x08, 0x08 }, /* c4 */ - { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x08, 0x10 }, /* c5 */ - { 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c6 */ - { 0x00, 0x1f, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* c7 */ - { 0x04, 0x1f, 0x02, 0x04, 0x0e, 0x15, 0x04 }, /* c8 */ - { 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* c9 */ - { 0x00, 0x04, 0x02, 0x11, 0x11, 0x11, 0x11 }, /* ca */ - { 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x0f }, /* cb */ - { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x02, 0x0c }, /* cc */ - { 0x00, 0x08, 0x14, 0x02, 0x01, 0x01, 0x00 }, /* cd */ - { 0x04, 0x1f, 0x04, 0x04, 0x15, 0x15, 0x04 }, /* ce */ - { 0x00, 0x1f, 0x01, 0x01, 0x0a, 0x04, 0x02 }, /* cf */ - { 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x01 }, /* d0 */ - { 0x00, 0x04, 0x08, 0x10, 0x11, 0x1f, 0x01 }, /* d1 */ - { 0x00, 0x01, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* d2 */ - { 0x00, 0x1f, 0x08, 0x1f, 0x08, 0x08, 0x07 }, /* d3 */ - { 0x08, 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08 }, /* d4 */ - { 0x00, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x1f }, /* d5 */ - { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x01, 0x1f }, /* d6 */ - { 0x0e, 0x00, 0x1f, 0x01, 0x01, 0x02, 0x04 }, /* d7 */ - { 0x12, 0x12, 0x12, 0x12, 0x12, 0x04, 0x08 }, /* d8 */ - { 0x00, 0x04, 0x14, 0x14, 0x15, 0x15, 0x16 }, /* d9 */ - { 0x00, 0x10, 0x10, 0x11, 0x12, 0x14, 0x18 }, /* da */ - { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* db */ - { 0x00, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* dc */ - { 0x00, 0x18, 0x00, 0x01, 0x01, 0x02, 0x1c }, /* dd */ - { 0x04, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* de */ - { 0x1c, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x00 }, /* df */ - { 0x00, 0x00, 0x09, 0x15, 0x12, 0x12, 0x0d }, /* e0 */ - { 0x00, 0x0e, 0x11, 0x1e, 0x11, 0x1e, 0x10 }, /* e1 */ - { 0x00, 0x11, 0x0a, 0x0a, 0x04, 0x04, 0x08 }, /* e2 */ - { 0x00, 0x00, 0x1f, 0x0a, 0x0a, 0x0a, 0x13 }, /* e3 */ - { 0x1f, 0x10, 0x08, 0x04, 0x08, 0x10, 0x1f }, /* e4 */ - { 0x00, 0x00, 0x0f, 0x14, 0x12, 0x11, 0x0e }, /* e5 */ - { 0x00, 0x09, 0x09, 0x09, 0x0f, 0x08, 0x10 }, /* e6 */ - { 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x03 }, /* e7 */ - { 0x1f, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x1f }, /* e8 */ - { 0x00, 0x0e, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* e9 */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0a, 0x1b }, /* ea */ - { 0x0f, 0x10, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* eb */ - { 0x00, 0x00, 0x00, 0x00, 0x0b, 0x15, 0x1a }, /* ec */ - { 0x02, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x08 }, /* ed */ - { 0x00, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x00 }, /* ee */ - { 0x06, 0x09, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* ef */ - { 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00 }, /* f0 */ - { 0x00, 0x08, 0x15, 0x0a, 0x15, 0x02, 0x00 }, /* f1 */ - { 0x08, 0x0f, 0x12, 0x0f, 0x0a, 0x1f, 0x02 }, /* f2 */ - { 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x11 }, /* f3 */ - { 0x04, 0x15, 0x15, 0x04, 0x04, 0x0a, 0x11 }, /* f4 */ - { 0x04, 0x04, 0x1d, 0x06, 0x0e, 0x15, 0x04 }, /* f5 */ - { 0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x04 }, /* f6 */ - { 0x04, 0x0a, 0x11, 0x0e, 0x04, 0x0e, 0x1f }, /* f7 */ - { 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x1f }, /* f8 */ - { 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f }, /* f9 */ - { 0x00, 0x01, 0x1e, 0x04, 0x1f, 0x04, 0x04 }, /* fa */ - { 0x00, 0x00, 0x1f, 0x08, 0x0f, 0x09, 0x11 }, /* fb */ - { 0x00, 0x00, 0x1f, 0x15, 0x1f, 0x11, 0x11 }, /* fc */ - { 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a }, /* fd */ - { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* fe */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ff */ -}; -static unsigned char font_player_oldlcd[256][7] = { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */ - { 0x0e, 0x11, 0x17, 0x15, 0x17, 0x10, 0x0e }, /* 04 */ - { 0x06, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x1f }, /* 05 */ - { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 06 */ - { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 07 */ - { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 08 */ - { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 09 */ - { 0x08, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 0a */ - { 0x08, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* 0b */ - { 0x08, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 0c */ - { 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x02, 0x0e }, /* 0d */ - { 0x10, 0x10, 0x17, 0x14, 0x1e, 0x04, 0x04 }, /* 0e */ - { 0x01, 0x0e, 0x13, 0x15, 0x19, 0x0e, 0x10 }, /* 0f */ - { 0x00, 0x02, 0x0e, 0x15, 0x15, 0x0e, 0x08 }, /* 10 */ - { 0x1c, 0x10, 0x17, 0x1d, 0x07, 0x06, 0x05 }, /* 11 */ - { 0x04, 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x11 }, /* 12 */ - { 0x04, 0x0a, 0x04, 0x01, 0x0f, 0x11, 0x0f }, /* 13 */ - { 0x00, 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x1f }, /* 14 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 15 */ - { 0x0e, 0x04, 0x1f, 0x15, 0x1f, 0x04, 0x0e }, /* 16 */ - { 0x1f, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10 }, /* 17 */ - { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x11 }, /* 18 */ - { 0x0e, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x1b }, /* 19 */ - { 0x1f, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a }, /* 1a */ - { 0x15, 0x15, 0x15, 0x15, 0x0e, 0x04, 0x04 }, /* 1b */ - { 0x1f, 0x08, 0x04, 0x02, 0x04, 0x08, 0x1f }, /* 1c */ - { 0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* 1d */ - { 0x1f, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x1f }, /* 1e */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 1f */ - { 0x0f, 0x14, 0x14, 0x1f, 0x14, 0x14, 0x17 }, /* 20 */ - { 0x00, 0x00, 0x1a, 0x05, 0x0f, 0x14, 0x0f }, /* 21 */ - { 0x0c, 0x12, 0x16, 0x11, 0x11, 0x16, 0x10 }, /* 22 */ - { 0x02, 0x04, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 23 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 24 */ - { 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04 }, /* 25 */ - { 0x1b, 0x09, 0x12, 0x00, 0x00, 0x00, 0x00 }, /* 26 */ - { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 27 */ - { 0x00, 0x11, 0x0e, 0x0a, 0x0e, 0x11, 0x00 }, /* 28 */ - { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 29 */ - { 0x08, 0x14, 0x14, 0x09, 0x15, 0x12, 0x0d }, /* 2a */ - { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 2b */ - { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 2c */ - { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 2d */ - { 0x04, 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x04 }, /* 2e */ - { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2f */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 30 */ - { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 31 */ - { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 32 */ - { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 33 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 34 */ - { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 35 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 36 */ - { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 37 */ - { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 38 */ - { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 39 */ - { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 3a */ - { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 3b */ - { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 3c */ - { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 3d */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3e */ - { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x04, 0x08 }, /* 3f */ - { 0x03, 0x06, 0x0c, 0x18, 0x0c, 0x06, 0x03 }, /* 40 */ - { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 41 */ - { 0x18, 0x0c, 0x06, 0x03, 0x06, 0x0c, 0x18 }, /* 42 */ - { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 43 */ - { 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 44 */ - { 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 45 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 46 */ - { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 47 */ - { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 48 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 49 */ - { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 4a */ - { 0x0e, 0x10, 0x10, 0x17, 0x11, 0x11, 0x0e }, /* 4b */ - { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 4c */ - { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 4d */ - { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4e */ - { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4f */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 50 */ - { 0x11, 0x1b, 0x15, 0x11, 0x11, 0x11, 0x11 }, /* 51 */ - { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 52 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 53 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 54 */ - { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 55 */ - { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 56 */ - { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 57 */ - { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 58 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 59 */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 5a */ - { 0x11, 0x11, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 5b */ - { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 5c */ - { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 5d */ - { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5e */ - { 0x0a, 0x00, 0x04, 0x0a, 0x11, 0x1f, 0x11 }, /* 5f */ - { 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 60 */ - { 0x0d, 0x12, 0x00, 0x19, 0x15, 0x13, 0x11 }, /* 61 */ - { 0x0a, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 62 */ - { 0x0e, 0x10, 0x0e, 0x11, 0x0e, 0x01, 0x0e }, /* 63 */ - { 0x04, 0x00, 0x04, 0x08, 0x10, 0x11, 0x0e }, /* 64 */ - { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 65 */ - { 0x10, 0x10, 0x1e, 0x11, 0x11, 0x11, 0x1e }, /* 66 */ - { 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* 67 */ - { 0x01, 0x01, 0x0f, 0x11, 0x11, 0x11, 0x0f }, /* 68 */ - { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0f }, /* 69 */ - { 0x03, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x04 }, /* 6a */ - { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* 6b */ - { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6c */ - { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 6d */ - { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6e */ - { 0x08, 0x08, 0x09, 0x0a, 0x0c, 0x0a, 0x09 }, /* 6f */ - { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 70 */ - { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x15, 0x15 }, /* 71 */ - { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 72 */ - { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 73 */ - { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 74 */ - { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x01 }, /* 75 */ - { 0x00, 0x00, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* 76 */ - { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 77 */ - { 0x04, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03 }, /* 78 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 79 */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 7a */ - { 0x00, 0x00, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 7b */ - { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 7c */ - { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 7d */ - { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7e */ - { 0x0a, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 7f */ - { 0x00, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 80 */ - { 0x0d, 0x12, 0x00, 0x16, 0x19, 0x11, 0x11 }, /* 81 */ - { 0x00, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 82 */ - { 0x08, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 83 */ - { 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x02, 0x04 }, /* 84 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }, /* 85 */ - { 0x00, 0x00, 0x04, 0x0e, 0x1f, 0x00, 0x00 }, /* 86 */ - { 0x00, 0x00, 0x1f, 0x0e, 0x04, 0x00, 0x00 }, /* 87 */ - { 0x02, 0x06, 0x0e, 0x1e, 0x0e, 0x06, 0x02 }, /* 88 */ - { 0x08, 0x0c, 0x0e, 0x0f, 0x0e, 0x0c, 0x08 }, /* 89 */ - { 0x1c, 0x1f, 0x13, 0x10, 0x10, 0x10, 0x10 }, /* 8a */ - { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* 8b */ - { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8c */ - { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8d */ - { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8e */ - { 0x0d, 0x12, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8f */ - { 0x08, 0x04, 0x1f, 0x10, 0x1e, 0x10, 0x1f }, /* 90 */ - { 0x04, 0x0a, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 91 */ - { 0x0a, 0x00, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 92 */ - { 0x08, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 93 */ - { 0x02, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 94 */ - { 0x0c, 0x0a, 0x09, 0x1d, 0x09, 0x0a, 0x0c }, /* 95 */ - { 0x08, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 96 */ - { 0x02, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 97 */ - { 0x04, 0x0a, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 98 */ - { 0x0d, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 99 */ - { 0x08, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9a */ - { 0x02, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9b */ - { 0x02, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9c */ - { 0x04, 0x0a, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9d */ - { 0x0d, 0x12, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9e */ - { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 9f */ - { 0x0a, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* a0 */ - { 0x02, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a1 */ - { 0x04, 0x0a, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a2 */ - { 0x0a, 0x00, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a3 */ - { 0x02, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a4 */ - { 0x04, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a5 */ - { 0x0d, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a6 */ - { 0x02, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* a7 */ - { 0x04, 0x04, 0x0f, 0x10, 0x10, 0x0f, 0x04 }, /* a8 */ - { 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03 }, /* a9 */ - { 0x0a, 0x04, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* aa */ - { 0x0a, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* ab */ - { 0x0a, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* ac */ - { 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* ad */ - { 0x04, 0x0a, 0x04, 0x11, 0x11, 0x13, 0x0d }, /* ae */ - { 0x02, 0x04, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* af */ - { 0x02, 0x0f, 0x02, 0x0e, 0x12, 0x12, 0x0e }, /* b0 */ - { 0x02, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* b1 */ - { 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x04, 0x06 }, /* b2 */ - { 0x0e, 0x01, 0x0f, 0x11, 0x0f, 0x02, 0x03 }, /* b3 */ - { 0x04, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b4 */ - { 0x02, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b5 */ - { 0x02, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* b6 */ - { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* b7 */ - { 0x0c, 0x04, 0x06, 0x0c, 0x04, 0x04, 0x0e }, /* b8 */ - { 0x04, 0x0e, 0x1f, 0x1f, 0x1b, 0x04, 0x0e }, /* b9 */ - { 0x0a, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* ba */ - { 0x09, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x06 }, /* bb */ - { 0x05, 0x05, 0x0c, 0x14, 0x14, 0x14, 0x0c }, /* bc */ - { 0x0a, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* bd */ - { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* be */ - { 0x0f, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, /* bf */ - { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c0 */ - { 0x1f, 0x00, 0x0e, 0x10, 0x17, 0x11, 0x0e }, /* c1 */ - { 0x1f, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* c2 */ - { 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x0c }, /* c3 */ - { 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04 }, /* c4 */ - { 0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* c5 */ - { 0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* c6 */ - { 0x05, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* c7 */ - { 0x09, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* c8 */ - { 0x09, 0x12, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* c9 */ - { 0x09, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* ca */ - { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0f }, /* cb */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x01, 0x1e }, /* cc */ - { 0x00, 0x1b, 0x1f, 0x1f, 0x0e, 0x04, 0x00 }, /* cd */ - { 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18 }, /* ce */ - { 0x0e, 0x11, 0x04, 0x0a, 0x1b, 0x1f, 0x00 }, /* cf */ - { 0x0a, 0x15, 0x04, 0x07, 0x00, 0x11, 0x0a }, /* d0 */ - { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* d1 */ - { 0x01, 0x03, 0x1d, 0x11, 0x1d, 0x03, 0x01 }, /* d2 */ - { 0x0e, 0x11, 0x11, 0x1f, 0x1b, 0x1b, 0x1f }, /* d3 */ - { 0x00, 0x01, 0x02, 0x0a, 0x04, 0x04, 0x00 }, /* d4 */ - { 0x04, 0x0e, 0x1f, 0x00, 0x1f, 0x0e, 0x04 }, /* d5 */ - { 0x02, 0x02, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* d6 */ - { 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b }, /* d7 */ - { 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b }, /* d8 */ - { 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03, 0x06 }, /* d9 */ - { 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b }, /* da */ - { 0x00, 0x04, 0x0e, 0x1f, 0x0e, 0x04, 0x00 }, /* db */ - { 0x00, 0x00, 0x1f, 0x1b, 0x15, 0x11, 0x1f }, /* dc */ - { 0x0e, 0x0e, 0x04, 0x1f, 0x0e, 0x0e, 0x0a }, /* dd */ - { 0x00, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x0a }, /* de */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* df */ - { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* e0 */ - { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* e1 */ - { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e2 */ - { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e3 */ - { 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04 }, /* e4 */ - { 0x04, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x04 }, /* e5 */ - { 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x04, 0x1f }, /* e6 */ - { 0x00, 0x07, 0x03, 0x05, 0x08, 0x10, 0x00 }, /* e7 */ - { 0x00, 0x10, 0x08, 0x05, 0x03, 0x07, 0x00 }, /* e8 */ - { 0x09, 0x06, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* e9 */ - { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ea */ - { 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04 }, /* eb */ - { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ec */ - { 0x1f, 0x18, 0x14, 0x12, 0x15, 0x18, 0x1f }, /* ed */ - { 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ee */ - { 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ef */ - { 0x00, 0x03, 0x07, 0x0c, 0x18, 0x1c, 0x1c }, /* f0 */ - { 0x1c, 0x10, 0x1c, 0x07, 0x1c, 0x04, 0x07 }, /* f1 */ - { 0x00, 0x1e, 0x03, 0x09, 0x19, 0x09, 0x1d }, /* f2 */ - { 0x1e, 0x01, 0x19, 0x05, 0x09, 0x1d, 0x01 }, /* f3 */ - { 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00 }, /* f4 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f }, /* f5 */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e }, /* f6 */ - { 0x04, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00 }, /* f7 */ - { 0x07, 0x03, 0x05, 0x08, 0x10, 0x10, 0x0f }, /* f8 */ - { 0x04, 0x0e, 0x1f, 0x11, 0x11, 0x15, 0x1f }, /* f9 */ - { 0x1f, 0x03, 0x1a, 0x02, 0x1a, 0x02, 0x1e }, /* fa */ - { 0x00, 0x0e, 0x1f, 0x11, 0x1f, 0x0e, 0x00 }, /* fb */ - { 0x03, 0x05, 0x09, 0x09, 0x0b, 0x1b, 0x18 }, /* fc */ - { 0x1f, 0x03, 0x05, 0x09, 0x15, 0x03, 0x1f }, /* fd */ - { 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c, 0x1c }, /* fe */ - { 0x1c, 0x1c, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ff */ -}; - -unsigned char (*font_player)[256][7] = &font_player_newlcd; - -void font_init(void) -{ - if (is_new_player()) - font_player = &font_player_newlcd; - else - font_player = &font_player_oldlcd; -} diff --git a/uisimulator/common/font-player.h b/uisimulator/common/font-player.h deleted file mode 100644 index bfa88d7321..0000000000 --- a/uisimulator/common/font-player.h +++ /dev/null @@ -1,27 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#ifndef __FONT_PLAYER_H__ -#define __FONT_PLAYER_H__ - -extern unsigned char (*font_player)[256][7]; - -void font_init(void); - -#endif /* __FONT_PLAYER_H__ */ diff --git a/uisimulator/common/lcd-common.c b/uisimulator/common/lcd-common.c index 0c8e0dcad5..97cc17638e 100644 --- a/uisimulator/common/lcd-common.c +++ b/uisimulator/common/lcd-common.c @@ -27,7 +27,7 @@ #include "system.h" #include "lcd.h" #if defined(HAVE_TRANSFLECTIVE_LCD) && defined(HAVE_LCD_SLEEP) -/* in uisimulator/sdl/lcd-bitmap.c and lcd-charcell.c */ +/* in uisimulator/sdl/lcd-bitmap.c */ extern void sim_backlight(int value); #endif diff --git a/uisimulator/common/lcd-playersim.c b/uisimulator/common/lcd-playersim.c deleted file mode 100644 index 14efded5d4..0000000000 --- a/uisimulator/common/lcd-playersim.c +++ /dev/null @@ -1,119 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Alan Korr - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include "config.h" -#include "hwcompat.h" - -#include "lcd.h" -#include "lcd-charcell.h" -#include "kernel.h" -#include "thread.h" -#include -#include -#include "debug.h" -#include "system.h" - -#include "font-player.h" -#include "lcd-playersim.h" - -/*** definitions ***/ - -bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH]; - -static int double_height = 1; - -void lcd_print_icon(int x, int icon_line, bool enable, char **icon) -{ - int row = 0, col = 0; /* shut up gcc */ - int y = (ICON_HEIGHT+(CHAR_HEIGHT*2+2)*CHAR_PIXEL) * icon_line; - - y += BORDER_MARGIN; - x += BORDER_MARGIN; - - for (; icon[row]; row++) - { - for (col = 0; icon[row][col]; col++) - { - switch (icon[row][col]) - { - case '*': - sim_lcd_framebuffer[y+row][x+col] = enable; - break; - - case ' ': - sim_lcd_framebuffer[y+row][x+col] = false; - break; - } - } - } - sim_lcd_update_rect(x, y, col, row); - /* icon drawing updates immediately */ -} - -void lcd_print_char(int x, int y, unsigned char ch) -{ - int xpos = x * CHAR_WIDTH*CHAR_PIXEL; - int ypos = y * CHAR_HEIGHT*CHAR_PIXEL + ICON_HEIGHT; - int row, col, r, c; - - if (double_height > 1 && y == 1) - return; /* only one row available if text is double height */ - - for (row = 0; row < 7; row ++) - { - unsigned fontbitmap = (*font_player)[ch][row]; - int height = (row == 3) ? 1 : double_height; - - y = ypos + row * CHAR_PIXEL * double_height; - for (col = 0; col < 5; col++) - { - bool fontbit = fontbitmap & (0x10 >> col); - - x = xpos + col * CHAR_PIXEL; - for (r = 0; r < height * CHAR_PIXEL; r++) - for (c = 0; c < CHAR_PIXEL; c++) - sim_lcd_framebuffer[y+r][x+c] = fontbit; - } - } - if (double_height > 1) - { - y = ypos + 15*CHAR_PIXEL; - for (r = 0; r < CHAR_PIXEL; r++) - for (c = 0; c < 5*CHAR_PIXEL; c++) - sim_lcd_framebuffer[y+r][xpos+c] = false; - } -} - -void lcd_double_height(bool on) -{ - int newval = (is_new_player() && on) ? 2 : 1; - - if (newval != double_height) - { - double_height = newval; - lcd_update(); - } -} - -void sim_lcd_define_pattern(int pat, const char *pattern) -{ - if (pat < lcd_pattern_count) - memcpy((*font_player)[pat], pattern, 7); -} diff --git a/uisimulator/common/lcd-playersim.h b/uisimulator/common/lcd-playersim.h deleted file mode 100644 index 63e8b80eba..0000000000 --- a/uisimulator/common/lcd-playersim.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Kjell Ericson - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#define ICON_HEIGHT 12 -#define CHAR_HEIGHT 8 - -#ifdef CHAR_WIDTH - #undef CHAR_WIDTH -#endif - -#define CHAR_WIDTH 6 -#define CHAR_PIXEL 2 -#define BORDER_MARGIN 1 - -extern bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH]; - -void lcd_print_icon(int x, int icon_line, bool enable, char **icon); -void lcd_print_char(int x, int y, unsigned char ch); -void sim_lcd_update_rect(int x, int y, int width, int height); -void sim_lcd_define_pattern(int pat, const char *pattern); diff --git a/uisimulator/common/sim_icons.c b/uisimulator/common/sim_icons.c deleted file mode 100644 index b72f6003e8..0000000000 --- a/uisimulator/common/sim_icons.c +++ /dev/null @@ -1,312 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 Mats Lidell - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include -#include "config.h" - -#include -#include -#include -#include - -extern void lcd_print_icon(int x, int icon_line, bool enable, char **icon); - -static char* icon_battery_bit[]= -{ - "-----", - " ", - "*****", - "*****", - "*****", - "*****", - "*****", - "*****", - " ", - "-----", - NULL -}; - -static char* icon_battery[]= -{ - "********************* ", - "* * ", - "* ----- ----- ----- * ", - "* ----- ----- ----- ***", - "* ----- ----- ----- * *", - "* ----- ----- ----- * *", - "* ----- ----- ----- ***", - "* ----- ----- ----- * ", - "* * ", - "********************* ", - NULL -}; - -static char* icon_volume[]= -{ - " ", - " ", - " ", - " ", - "* * * ", - "* * * ", - " * * *** * ", - " * * * * * ", - " * * * * ", - " * *** * ", - NULL -}; - -static char* icon_volume_1[]= -{ - " ", - " ", - " ", - " ", - "**", - "**", - "**", - "**", - "**", - "**", - NULL -}; - -static char* icon_volume_2[]= -{ - " ", - " ", - " ", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - NULL -}; - -static char* icon_volume_3[]= -{ - " ", - " ", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - NULL -}; - -static char* icon_volume_4[]= -{ - " ", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - NULL -}; - -static char* icon_volume_5[]= -{ - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - "**", - NULL -}; - -static char* icon_pause[]= -{ - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - " **** **** ", - NULL -}; - -static char* icon_play[]= -{ - "** ", - "***** ", - "******* ", - "********* ", - "*********** ", - "********* ", - "******* ", - "***** ", - "** ", - " ", - NULL -}; - -static char* icon_record[]= -{ - " *** ", - " ***** ", - " ******* ", - " ********* ", - " ********* ", - " ********* ", - " ******* ", - " ***** ", - " *** ", - " ", - NULL -}; - -static char* icon_usb[]= -{ - " ********* ", - " ** ** ", - " * ", - " ** * ** ", - "***********************", - " ** * ** ", - " * ", - " ** ** ", - " ******** ", - " ** ", - NULL -}; - -static char* icon_audio[]= -{ - " *************************** ", - " ** ** ", - "* ** * * **** * *** *", - "* * * * * * * * * * *", - "* * * * * * * * * * *", - "* ****** * * * * * * * *", - "* * * * * * * * * * *", - "* * * *** **** * *** *", - " ** ** ", - " *************************** ", - NULL -}; - -static char* icon_param[]= -{ - " ********************************* ", - " ** ** ", - "* **** ** **** ** ** ** *", - "* * * * * * * * * ** ** *", - "* * * * * * * * * * * * * *", - "* **** ****** **** ****** * * * * *", - "* * * * * * * * * * * *", - "* * * * * * * * * * * *", - " ** ** ", - " ********************************* ", - NULL -}; - -static char* icon_repeat[]= -{ - " ", - " *************", - " * ", - " * ", - "* ", - "* ", - "* ** ", - " * **** ", - " * ****** ", - " *************", - NULL -}; - -static char* icon_repeat2[]= -{ - " ", - " *", - " **", - "***", - " *", - " *", - " *", - " *", - " *", - " *", - NULL -}; - - -struct icon_info -{ - char** bitmap; - int xpos; - int row; -}; - -#define ICON_VOLUME_POS 102 -#define ICON_VOLUME_SIZE 14 -#define ICON_VOLUME_X_SIZE 2 - -static struct icon_info icons [] = -{ - - {icon_battery, 0, 0}, - {icon_battery_bit, 2, 0}, - {icon_battery_bit, 8, 0}, - {icon_battery_bit, 14, 0}, - {icon_usb, 0, 1}, - {icon_play, 36, 0}, - {icon_record, 48, 0}, - {icon_pause, 60, 0}, - {icon_audio, 37, 1}, - {icon_repeat, 74, 0}, - {icon_repeat2, 94, 0}, - {icon_volume, ICON_VOLUME_POS, 0}, - {icon_volume_1, ICON_VOLUME_POS+ICON_VOLUME_SIZE, 0}, - {icon_volume_2, ICON_VOLUME_POS+ICON_VOLUME_SIZE+(1*ICON_VOLUME_X_SIZE)+1, 0}, - {icon_volume_3, ICON_VOLUME_POS+ICON_VOLUME_SIZE+(2*ICON_VOLUME_X_SIZE)+2, 0}, - {icon_volume_4, ICON_VOLUME_POS+ICON_VOLUME_SIZE+(3*ICON_VOLUME_X_SIZE)+3, 0}, - {icon_volume_5, ICON_VOLUME_POS+ICON_VOLUME_SIZE+(4*ICON_VOLUME_X_SIZE)+4, 0}, - {icon_param, 90, 1} -}; - -void -lcd_icon(int icon, bool enable) -{ - lcd_print_icon(icons[icon].xpos, icons[icon].row, enable, - icons[icon].bitmap); -} - diff --git a/uisimulator/common/stubs.c b/uisimulator/common/stubs.c index 0ad78fdb7c..9374a97d66 100644 --- a/uisimulator/common/stubs.c +++ b/uisimulator/common/stubs.c @@ -304,26 +304,6 @@ void mpeg_set_pitch(int pitch) (void)pitch; } -#ifdef HAVE_LCD_CHARCELLS -void lcd_clearrect (int x, int y, int nx, int ny) -{ - /* Reprint char if you want to change anything */ - (void)x; - (void)y; - (void)nx; - (void)ny; -} - -void lcd_fillrect (int x, int y, int nx, int ny) -{ - /* Reprint char if you want to change display anything */ - (void)x; - (void)y; - (void)nx; - (void)ny; -} -#endif - void cpu_sleep(bool enabled) { (void)enabled;