chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / crt.h
index 002f67fe4d8e650d0deb65997a895cb140b8837e..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 ***
  *
 #define CRT_ATTR_BLINK    0x4
 #define CRT_ATTR_BOLD     0x8
 
+
+#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
@@ -52,10 +95,18 @@ typedef struct
 } CRT_Pos;
 
 
+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;
 
@@ -66,4 +117,10 @@ 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__ */