chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / crt.h
index ca3fc00fc9d53797c31ea89811a73e7a2734cb02..410b390ff9e75eda4475eb63486d01b2f00aff14 100644 (file)
--- a/src/crt.h
+++ b/src/crt.h
 
 /*
  * $Log$
+ * Revision 1.8  2008/02/13 09:12:21  james
+ * *** empty log message ***
+ *
+ * Revision 1.7  2008/02/13 01:08:18  james
+ * *** empty log message ***
+ *
+ * Revision 1.6  2008/02/07 13:22:51  james
+ * *** empty log message ***
+ *
+ * Revision 1.5  2008/02/07 12:41:06  james
+ * *** empty log message ***
+ *
+ * Revision 1.4  2008/02/07 12:16:04  james
+ * *** empty log message ***
+ *
+ * Revision 1.3  2008/02/06 11:30:37  james
+ * *** empty log message ***
+ *
  * Revision 1.2  2008/02/04 20:23:55  james
  * *** empty log message ***
  *
 #define CRT_ATTR_BLINK    0x4
 #define CRT_ATTR_BOLD     0x8
 
-typedef struct {
-       uint8_t chr;
-       uint8_t attr;
+
+#define CRT_COLOR_BLACK                0x0
+#define CRT_COLOR_RED          0x1
+#define CRT_COLOR_GREEN                0x2
+#define CRT_COLOR_YELLOW       0x3
+#define CRT_COLOR_BLUE         0x4
+#define CRT_COLOR_MAGENTA      0x5
+#define CRT_COLOR_CYAN         0x6
+#define CRT_COLOR_WHITE                0x7
+#define CRT_COLOR_INTENSITY    0x8
+
+#define CRT_COLOR_FG_MASK      0xf0
+#define CRT_COLOR_FG_SHIFT     4
+
+#define CRT_COLOR_BG_MASK      0xf
+#define CRT_COLOR_BG_SHIFT     0
+
+#define CRT_COLOR_BG(a)                (((a) & CRT_COLOR_BG_MASK) >> CRT_COLOR_BG_SHIFT)
+#define CRT_COLOR_FG(a)                (((a) & CRT_COLOR_FG_MASK) >> CRT_COLOR_FG_SHIFT)
+
+#define CRT_MAKE_COLOR(f,b)    (((f) << CRT_COLOR_FG_SHIFT)|(b))
+
+#define CRT_BGCOLOR_NORMAL     CRT_COLOR_BLACK
+#define CRT_FGCOLOR_NORMAL     CRT_COLOR_WHITE
+
+#define CRT_COLOR_NORMAL       CRT_MAKE_COLOR(CRT_FGCOLOR_NORMAL,CRT_BGCOLOR_NORMAL)
+
+typedef struct
+{
+  uint8_t chr;
+  uint8_t attr;
+  uint8_t color;
 } CRT_CA;
 
-typedef struct {
-       int x;
-       int y;
+typedef struct
+{
+  int x;
+  int y;
 } CRT_Pos;
 
 
-typedef struct {
-       CRT_CA screen[CRT_CELS];
-       CRT_Pos pos;
-       int hide_cursor;
+typedef struct
+{
+  CRT_Pos s;
+  CRT_Pos e;
+  int dir;
+} CRT_ScrollHint;
+
+typedef struct
+{
+  CRT_CA screen[CRT_CELS];
+  CRT_Pos pos;
+  CRT_ScrollHint sh;
+  int hide_cursor;
 } CRT;
 
 
-static inline crt_ca_cmp(CRT_CA a,CRT_CA b) {
-       return memcmp(&a,&b,sizeof(a));
+static inline
+crt_ca_cmp (CRT_CA a, CRT_CA b)
+{
+  return memcmp (&a, &b, sizeof (a));
+}
+
+static inline
+crt_pos_cmp (CRT_Pos a, CRT_Pos b)
+{
+  return memcmp (&a, &b, sizeof (a));
 }
 
 #endif /* __CRT_H__ */