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

编辑器/阅读器

开发平台:

C/C++

  1. #include <PA9.h>  // PAlib include
  2. #include <reader_core.h>
  3. #include <string.h>
  4. color_t reader_text_color;
  5. color_t reader_bg_color;
  6. #ifdef USE_DOUBLE_FRAME_BUFFER
  7. color_t vram_double[2][READER_SCREEN_WIDTH][READER_SCREEN_HEIGHT];
  8. #endif
  9. //input (x, y) is in logical coordinate
  10. //logical (x, y) -> device (255-y, x)
  11. void reader_setpixel(screen_t screen, int x, int y, color_t color) {
  12. #ifdef USE_DOUBLE_FRAME_BUFFER
  13.   {
  14.   int y1 = READER_SCREEN_HEIGHT - 1 - y;
  15.   //save in [y][x] order for device to use the locality
  16.   vram_double[screen][x][y1] = color;
  17.   }
  18. #else
  19.   PA_Put16bitPixel(screen, READER_SCREEN_HEIGHT - 1 - y, x, color);
  20. #endif
  21. }
  22. void fill_screen(screen_t screen, color_t color) {
  23. #ifdef USE_DOUBLE_FRAME_BUFFER
  24.   int i;
  25.   for (i = 0; i < READER_SCREEN_WIDTH*READER_SCREEN_HEIGHT; i++) {
  26.     *((color_t *)vram_double[screen]+i) = color;
  27.   }
  28. #else
  29.   int x, y;
  30.   for (x = 0; x < READER_SCREEN_WIDTH; x ++) {
  31.     for (y = 0; y < READER_SCREEN_HEIGHT; y ++) {
  32.       reader_setpixel(screen, x, y, color);
  33.     }
  34.   }
  35. #endif
  36. }
  37. #ifdef USE_DOUBLE_FRAME_BUFFER
  38. void trigger_screen_update(screen_t screen) {
  39.   DMA_Copy(vram_double[screen], (void*)(PA_DrawBg[screen]), READER_SCREEN_WIDTH*READER_SCREEN_HEIGHT, DMA_16NOW);
  40. }
  41. #endif
  42. void fill_screen_bitmap(screen_t screen, color_t *bmpbuf) {
  43. #ifdef USE_DOUBLE_FRAME_BUFFER
  44.   DMA_Copy(bmpbuf, (void *)vram_double[screen], READER_SCREEN_WIDTH*READER_SCREEN_HEIGHT, DMA_16NOW);
  45. #endif
  46. }