Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef __TEXTCON_H
  2. #define __TEXTCON_H
  3.  
  4. #include<menuet/sem.h>
  5.  
  6. #define COLOR_CONV_B_2_D        { \
  7.  0x000000, \
  8.  0x000080, \
  9.  0x800000, \
  10.  0x008080, \
  11.  0x800000, \
  12.  0x808000, \
  13.  0x404040, \
  14.  0x808080, \
  15.  0x606060, \
  16.  0x0000FF, \
  17.  0x00FF00, \
  18.  0x00FFFF, \
  19.  0xFF0000, \
  20.  0xFFFF00, \
  21.  0x00FFFF, \
  22.  0xFFFFFF, \
  23. }
  24.  
  25. #define CHAR_SIZE_X             5
  26. #define CHAR_SIZE_Y             8
  27.  
  28. #define NR_CHARS_X              80
  29. #define NR_CHARS_Y              25
  30.  
  31. #define CON_AT_X                10
  32. #define CON_AT_Y                25
  33.  
  34. typedef struct
  35. {
  36.  unsigned char c_char;
  37.  unsigned char c_back;
  38.  unsigned char c_color;
  39. } char_info_t __attribute__((packed));
  40.  
  41. typedef struct
  42. {
  43.  int esc[4];
  44. } esc_info_t;
  45.  
  46. typedef struct
  47. {
  48.  unsigned char text_color,back_color;
  49.  char_info_t char_table[NR_CHARS_X][NR_CHARS_Y];
  50.  int id;
  51.  int cur_x,cur_y;
  52.  int cur_visible;
  53.  unsigned char cur_color;
  54.  esc_info_t esc_seq;
  55.  DECLARE_SEMAPHORE_S(io_lock);
  56. } console_t;
  57.  
  58. #define MAX_CONSOLES            4
  59.  
  60. extern console_t * consoles[MAX_CONSOLES];
  61. extern console_t * visible_console;
  62.  
  63. void init_consoles(void);
  64. void lcon_clrscr(console_t * con);
  65. void lcon_flush_console(console_t * con);
  66. void lcon_flushxy(console_t * con,int x,int y);
  67. void lcon_scroll(console_t * con,int update);
  68. void lcon_putch(console_t * con,char c);
  69. void lcon_gotoxy(console_t * con,int x,int y);
  70. void lcon_set_text_color(console_t * con,int color);
  71. void lcon_set_back_color(console_t * con,int color);
  72. void lcon_switch_to_console(int i);
  73. unsigned char lcon_getcxy(console_t * con,int x,int y);
  74. void lcon_putcxy(console_t * con,int x,int y,unsigned char c);
  75.  
  76. #define _lcon_clrscr()          lcon_clrscr(visible_console)
  77. #define _lcon_flush_console()   lcon_flush_console(visible_console)
  78. #define _lcon_flushxy(x,y)      lcon_flushxy(visible_console,(x),(y))
  79. #define _lcon_scroll()          lcon_scroll(visible_console,1)
  80. #define _lcon_putch(c)          lcon_putch(visible_console,(char)(c))
  81. #define _lcon_gotoxy(x,y)       lcon_gotoxy(visible_console,(x),(y))
  82. #define _lcon_set_text_color(c) lcon_set_text_color(visible_console,(c)&(1+2+4+8))
  83. #define _lcon_set_back_color(c) lcon_set_back_color(visible_console,(c)&(1+2+4+8))
  84. #define _lcon_switch(i)         lcon_switch_to_console((i))
  85. #define _lcon_getcxy(x,y)       lcon_getcxy(visible_console,(x),(y))
  86. #define _lcon_putcxy(x,y,c)     lcon_putcxy(visible_console,(x),(y),(c))
  87.  
  88. console_t * create_private_console(void);
  89. void free_private_console(console_t * con);
  90.  
  91. #endif
  92.