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

编辑器/阅读器

开发平台:

C/C++

  1. #ifndef __READER_CORE_H__
  2. #define __READER_CORE_H__ 1
  3. #include <reader_types.h>
  4. //be compatible with a bool conversion in PALIB
  5. #ifndef __cplusplus
  6. #ifdef WIN32
  7. enum {false, true};
  8. #endif
  9. #endif
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #ifndef __GNUC__
  14. #define  __attribute__(x)  /*NOTHING*/
  15. #endif
  16. #include <stdio.h>
  17. #include <string.h>
  18. #include <stdlib.h>
  19. #include <errno.h>
  20. //---palib api support
  21. #ifdef WIN32
  22. #include <windows.h>
  23. #ifdef PAFS
  24. #include <PA_FS_sim.h>
  25. #endif
  26. #include <pa_timer_sim.h>
  27. #include <pa_draw_sim.h>
  28. #endif
  29. #ifdef NDS
  30. #include <PA9.h>                // PAlib include
  31. #endif
  32. #ifdef FAT
  33. #include <fsal.h>
  34. #endif
  35. //debug options
  36. #define TRACE_FILENAME 0
  37. #define ENABLE_CONSOLE 0
  38. #include <reader_util.h>
  39. #include <reader_mmi.h>
  40. #include <reader_gui.h>
  41. #include <reader_sav.h>
  42. #include <reader_file.h>
  43. #include <reader_color.h>
  44. #include <reader_str_res.h>
  45. #include <reader_about.h>
  46. #include <reader_time.h>
  47. #include <reader_option.h>
  48. #include <reader_path.h>
  49. #include <reader_misc_dev.h>
  50. #include <all_gfx.h>
  51. //error status code
  52. enum {
  53.   ERR_OPEN_FILE = -1,
  54.   ERR_FILE_FORMAT = -2,
  55.   ERR_CHDIR = -3,
  56.   ERR_SET_CURSOR_BY_NAME = -4
  57. };
  58. enum {
  59.   TEXT_OUT_ALIGN_RIGHT = 1
  60. };
  61. //output a unicode string to screen s
  62. //return how many wide chars are outputed
  63. int reader_textout_ex(screen_t s, int x, int y, unsigned short *str, int n, int fs, color_t color, unsigned int flag);
  64. #define reader_textout(s, x, y, str, n, sz) reader_textout_ex(s, x, y, str, n, sz, reader_text_color, 0)
  65. //initialize the reader text with a well processed file
  66. //dirname: directory name in utf-16
  67. //filename: file name in utf-16
  68. int reader_init(unsigned short *dirname, unsigned short *filename);
  69. //initialize the reader text with a error message
  70. void reader_init_content(unsigned short *text, int size);
  71. int get_chr_width(unsigned short c, int fs);
  72. int reader_get_layout(void);
  73. //if reformat is 1 means refresh text immediately
  74. void reader_set_layout(int compact, int reformat);
  75. void reader_set_font_size(int fs, int reformat);
  76. int reader_get_font_size(void);
  77. //switch between font 14*14 and 16*16
  78. //return new font size
  79. int reader_switch_font_size(void);
  80. //get max line number according to the font size
  81. int reader_get_max_line(int fs);
  82. unsigned short *reader_get_current_content(int *size);
  83. typedef struct _font_tag {
  84.   unsigned char width;
  85.   //though 14*14 using only 14*16bits, 
  86.   //however, keep all ascii font the same unsigned short[16] type for convenience
  87.   //wasted 2 * 2 * 256 = 1K memory
  88.   unsigned short matrix[16]; 
  89. } font_t;
  90. extern page_t reader_pages[MAX_PAGE];
  91. extern int reader_total_pages;
  92. extern int reader_last_page_lines;
  93. extern int reader_last_line_chars;
  94. //code tables
  95. extern unsigned short uni_table[];
  96. extern gbk2uni_item_t gbk2uni_table[];
  97. //font tables
  98. extern unsigned short chn_font_matrix_14[][14];
  99. extern unsigned short chn_font_matrix_16[][16];
  100. extern font_t asc_font_14[256];
  101. extern font_t asc_font_16[256];
  102. //---common util macro
  103. #define _dim(a) (sizeof(a) / sizeof((a)[0]))
  104. //---trace function---
  105. #ifdef WIN32
  106. #include <assert.h>
  107. #include <stdio.h>
  108. extern HWND reader_hwnd;
  109. void msg_box(char *msg);
  110. //must trace
  111. #define READER_TRACEM(x) printf x
  112. #define READER_TRACEWM(x) wprintf x
  113. #ifdef READER_ENABLE_TRACE
  114. #define READER_TRACE(x) printf x
  115. #define READER_TRACEW(x) wprintf x
  116. #else
  117. #define READER_TRACE(x)
  118. #define READER_TRACEW(x)
  119. #endif // #ifdef READER_ENABLE_TRACE
  120. #else
  121. //disable assert on ds device
  122. #define assert(exp)     ((void)0)
  123. #define READER_TRACE(x)
  124. #define READER_TRACEM(x)
  125. #define READER_TRACEW(x)
  126. #define READER_TRACEWM(x)
  127. #endif // #ifdef WIN32s
  128. #ifdef __cplusplus
  129. }
  130. #endif
  131. #endif