reader_color.c
上传用户:holyzs
上传日期:2022-06-29
资源大小:2335k
文件大小:4k
源码类别:

编辑器/阅读器

开发平台:

C/C++

  1. #include <reader_core.h>
  2. enum {
  3.   FONT_R,
  4.   FONT_G,
  5.   FONT_B,
  6.   BG_R,
  7.   BG_G,
  8.   BG_B
  9. };
  10. enum {
  11.   DEF_FONT_R = 3,
  12.   DEF_FONT_G = 3,
  13.   DEF_FONT_B = 3,
  14.   DEF_BG_R = 25,
  15.   DEF_BG_G = 25,
  16.   DEF_BG_B = 25,
  17.   N_COLOR_OPTIONS = 6,
  18.   MAX_COLOR_VAL = 31
  19. };
  20. reader_color_context_t reader_color_context, reader_color_context_bak;
  21. reader_color_context_t reader_color_context_def = {DEF_FONT_R, DEF_FONT_G, DEF_FONT_B, DEF_BG_R, DEF_BG_G, DEF_BG_B};
  22. static int cursor;
  23. static color_t demo_bg_color, demo_text_color;
  24. void reader_color_show_window(screen_t screen) {
  25.   int text_pos_y[] = {20, 140, 230};
  26.   int bar_pos_y[] = {50, 70, 90, 170, 190, 210};
  27.   color_t colors[] = {READER_COLOR_RED, READER_COLOR_GREEN, READER_COLOR_BLUE};
  28.   unsigned char *strs[] = {font_color_str, bg_color_str, user_action_prompt};
  29.   int i, j;
  30.   color_t bc, cc;
  31.   unsigned char cv;
  32.   unsigned short buf[2];
  33.   reader_mmi_fill_screen(screen, READER_COLOR_BLACK);
  34.   reader_caption(screen, READER_STR(color_conf_prompt));
  35.   //draw static text
  36.   for (i = 0; i < 3; i++) {
  37.     unsigned short *p = READER_STR(strs[i]);
  38.     reader_textout_ex(screen, 0, text_pos_y[i], p, reader_wcslen(p), DEFAULT_FONT_SIZE, READER_COLOR_WHITE, 0);
  39.   }
  40.   //draw colorful test text
  41.   reader_rectangle(screen, 64, 110, 128, 126, demo_bg_color, 1);
  42.   reader_textout_ex(screen, 64, 110, READER_STR(test_str), reader_wcslen(READER_STR(test_str)), DEFAULT_FONT_SIZE, demo_text_color, 0);
  43.   //draw color bars
  44.   for (i = 0; i < N_COLOR_OPTIONS; i++) {
  45.     cv = reader_color_context[i];
  46.     if (i != cursor) {
  47.       bc = colors[i % 3];
  48.       cc = READER_COLOR_WHITE;
  49.     } else {
  50.       cc = colors[i % 3];
  51.       bc = READER_COLOR_WHITE;
  52.     }
  53.     reader_rectangle(screen, 10, bar_pos_y[i], 138, bar_pos_y[i] + 4, bc, 1);
  54.     reader_rectangle(screen, 10 + cv * 4, bar_pos_y[i], 14 + cv * 4, bar_pos_y[i] + 4, cc, 1);
  55.     j = reader_itoa(cv, buf);
  56.     reader_textout_ex(screen, 148, bar_pos_y[i] - 6, buf, j, DEFAULT_FONT_SIZE, colors[i % 3], 0);
  57.   }
  58.   reader_mmi_trigger_screen_update(screen);
  59. }
  60. void reader_color_set() {
  61.   reader_text_color = READER_RGB(reader_color_context[FONT_R], reader_color_context[FONT_G], reader_color_context[FONT_B]);
  62.   reader_bg_color = READER_RGB(reader_color_context[BG_R], reader_color_context[BG_G], reader_color_context[BG_B]);
  63. }
  64. void reader_color_select_ready() {
  65.   cursor = 0;
  66.   demo_text_color = reader_text_color;
  67.   demo_bg_color = reader_bg_color;
  68.   memcpy(reader_color_context_bak, reader_color_context, sizeof(reader_color_context));
  69. }
  70. void reader_color_select_cancel() {
  71.   memcpy(reader_color_context, reader_color_context_bak, sizeof(reader_color_context));
  72. }
  73. int reader_color_cursor_up(void) {
  74.   if (cursor == 0) {
  75.     return 1;
  76.   }
  77.   cursor --;
  78.   return 0;
  79. }
  80. int reader_color_cursor_down(void) {
  81.   if (cursor == N_COLOR_OPTIONS - 1) {
  82.     return 1;
  83.   }
  84.   cursor ++;
  85.   return 0;
  86. }
  87. int reader_color_inc(void) {
  88.   unsigned char v = reader_color_context[cursor];
  89.   if (v < MAX_COLOR_VAL) {
  90.     v ++;
  91.     reader_color_context[cursor] = v;
  92.     if (cursor >= 0 && cursor < 3) {
  93.       demo_text_color = READER_RGB(reader_color_context[FONT_R], reader_color_context[FONT_G], reader_color_context[FONT_B]);
  94.     } else {
  95.       demo_bg_color = READER_RGB(reader_color_context[BG_R], reader_color_context[BG_G], reader_color_context[BG_B]);
  96.     }
  97.     return 0;
  98.   }
  99.   return 1;
  100. }
  101. int reader_color_dec(void) {
  102.   unsigned char v = reader_color_context[cursor];
  103.   if (v > 0) {
  104.     v --;
  105.     reader_color_context[cursor] = v;
  106.     if (cursor >= 0 && cursor < 3) {
  107.       demo_text_color = READER_RGB(reader_color_context[FONT_R], reader_color_context[FONT_G], reader_color_context[FONT_B]);
  108.     } else {
  109.       demo_bg_color = READER_RGB(reader_color_context[BG_R], reader_color_context[BG_G], reader_color_context[BG_B]);
  110.     }
  111.     return 0;
  112.   }
  113.   return 1;
  114. }
  115. int reader_color_set_default(void) {
  116.   if (0 == memcmp(reader_color_context_def, reader_color_context, sizeof(reader_color_context))) {
  117.     return 1;
  118.   }
  119.   memcpy(reader_color_context, reader_color_context_def, sizeof(reader_color_context));
  120.   demo_text_color = READER_RGB(reader_color_context[FONT_R], reader_color_context[FONT_G], reader_color_context[FONT_B]);
  121.   demo_bg_color = READER_RGB(reader_color_context[BG_R], reader_color_context[BG_G], reader_color_context[BG_B]);
  122.   return 0;
  123. }