~dannf/ubuntu/saucy/screen/lp1213278-from-debian

« back to all changes in this revision

Viewing changes to image.h

  • Committer: Bazaar Package Importer
  • Author(s): Nathaniel McCallum
  • Date: 2004-09-03 15:15:33 UTC
  • Revision ID: james.westby@ubuntu.com-20040903151533-px02yqlrchs4fv2t
Tags: upstream-4.0.2
ImportĀ upstreamĀ versionĀ 4.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 1993-2002
 
2
 *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
 
3
 *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
 
4
 * Copyright (c) 1987 Oliver Laumann
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2, or (at your option)
 
9
 * any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program (see the file COPYING); if not, write to the
 
18
 * Free Software Foundation, Inc.,
 
19
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
 
20
 *
 
21
 ****************************************************************
 
22
 * $Id: image.h,v 1.9 1994/05/31 12:31:54 mlschroe Exp $ FAU
 
23
 */
 
24
 
 
25
 
 
26
#undef IFFONT
 
27
#undef IFCOLOR
 
28
 
 
29
#ifdef FONT
 
30
# define IFFONT(x) x
 
31
#else
 
32
# define IFFONT(x)
 
33
#endif
 
34
 
 
35
#ifdef COLOR
 
36
# define IFCOLOR(x) x
 
37
#else
 
38
# define IFCOLOR(x)
 
39
#endif
 
40
 
 
41
#if defined(COLOR) && defined(COLORS16) && defined(COLORS256)
 
42
# define IFCOLORX(x) x
 
43
#else
 
44
# define IFCOLORX(x)
 
45
#endif
 
46
 
 
47
#ifdef DW_CHARS
 
48
# define IFDWCHAR(x) x
 
49
#else
 
50
# define IFDWCHAR(x)
 
51
#endif
 
52
 
 
53
struct mchar {
 
54
         unsigned char image;
 
55
         unsigned char attr;
 
56
IFFONT(  unsigned char font; )
 
57
IFCOLOR( unsigned char color; )
 
58
IFCOLORX(unsigned char colorx; )
 
59
IFDWCHAR(unsigned char mbcs; )
 
60
};
 
61
 
 
62
struct mline {
 
63
         unsigned char *image;
 
64
         unsigned char *attr;
 
65
IFFONT(  unsigned char *font; )
 
66
IFCOLOR( unsigned char *color; )
 
67
IFCOLORX(unsigned char *colorx; )
 
68
};
 
69
 
 
70
 
 
71
 
 
72
#define save_mline(ml, n) do {                                          \
 
73
         bcopy((char *)(ml)->image, (char *)mline_old.image, (n));      \
 
74
         bcopy((char *)(ml)->attr,  (char *)mline_old.attr,  (n));      \
 
75
IFFONT(  bcopy((char *)(ml)->font,  (char *)mline_old.font,  (n));    ) \
 
76
IFCOLOR( bcopy((char *)(ml)->color, (char *)mline_old.color, (n));    ) \
 
77
IFCOLORX(bcopy((char *)(ml)->colorx, (char *)mline_old.colorx, (n));  ) \
 
78
} while (0)
 
79
 
 
80
#define bcopy_mline(ml, xf, xt, n) do {                                        \
 
81
         bcopy((char *)(ml)->image + (xf), (char *)(ml)->image + (xt), (n));   \
 
82
         bcopy((char *)(ml)->attr  + (xf), (char *)(ml)->attr  + (xt), (n));   \
 
83
IFFONT(  bcopy((char *)(ml)->font  + (xf), (char *)(ml)->font  + (xt), (n)); ) \
 
84
IFCOLOR( bcopy((char *)(ml)->color + (xf), (char *)(ml)->color + (xt), (n)); ) \
 
85
IFCOLORX(bcopy((char *)(ml)->colorx + (xf), (char *)(ml)->colorx + (xt), (n));) \
 
86
} while (0)
 
87
 
 
88
#define clear_mline(ml, x, n) do {                                             \
 
89
         bclear((char *)(ml)->image + (x), (n));                               \
 
90
         if ((ml)->attr != null) bzero((char *)(ml)->attr  + (x), (n));        \
 
91
IFFONT(  if ((ml)->font != null) bzero((char *)(ml)->font  + (x), (n));      ) \
 
92
IFCOLOR( if ((ml)->color!= null) bzero((char *)(ml)->color + (x), (n));      ) \
 
93
IFCOLORX(if ((ml)->colorx!= null) bzero((char *)(ml)->colorx + (x), (n));    ) \
 
94
} while (0)
 
95
 
 
96
#define cmp_mline(ml1, ml2, x) (                                \
 
97
            (ml1)->image[x] == (ml2)->image[x]                  \
 
98
         && (ml1)->attr[x]  == (ml2)->attr[x]                   \
 
99
IFFONT(  && (ml1)->font[x]  == (ml2)->font[x]                 ) \
 
100
IFCOLOR( && (ml1)->color[x] == (ml2)->color[x]                ) \
 
101
IFCOLORX(&& (ml1)->colorx[x] == (ml2)->colorx[x]              ) \
 
102
)
 
103
 
 
104
#define cmp_mchar(mc1, mc2) (                                   \
 
105
            (mc1)->image == (mc2)->image                        \
 
106
         && (mc1)->attr  == (mc2)->attr                         \
 
107
IFFONT(  && (mc1)->font  == (mc2)->font                       ) \
 
108
IFCOLOR( && (mc1)->color == (mc2)->color                      ) \
 
109
IFCOLORX(&& (mc1)->colorx == (mc2)->colorx                    ) \
 
110
)
 
111
 
 
112
#define cmp_mchar_mline(mc, ml, x) (                            \
 
113
            (mc)->image == (ml)->image[x]                       \
 
114
         && (mc)->attr  == (ml)->attr[x]                        \
 
115
IFFONT(  && (mc)->font  == (ml)->font[x]                      ) \
 
116
IFCOLOR( && (mc)->color == (ml)->color[x]                     ) \
 
117
IFCOLORX(&& (mc)->colorx == (ml)->colorx[x]                   ) \
 
118
)
 
119
 
 
120
#define copy_mchar2mline(mc, ml, x) do {                        \
 
121
         (ml)->image[x] = (mc)->image;                          \
 
122
         (ml)->attr[x]  = (mc)->attr;                           \
 
123
IFFONT(  (ml)->font[x]  = (mc)->font;                         ) \
 
124
IFCOLOR( (ml)->color[x] = (mc)->color;                        ) \
 
125
IFCOLORX((ml)->colorx[x] = (mc)->colorx;                      ) \
 
126
} while (0)
 
127
 
 
128
#define copy_mline2mchar(mc, ml, x) do {                        \
 
129
         (mc)->image = (ml)->image[x];                          \
 
130
         (mc)->attr  = (ml)->attr[x];                           \
 
131
IFFONT(  (mc)->font  = (ml)->font[x];                         ) \
 
132
IFCOLOR( (mc)->color = (ml)->color[x];                        ) \
 
133
IFCOLORX((mc)->colorx = (ml)->colorx[x];                      ) \
 
134
IFDWCHAR((mc)->mbcs  = 0;                                     ) \
 
135
} while (0)
 
136
 
 
137
#ifdef COLOR
 
138
# ifdef COLORS16
 
139
#  ifdef COLORS256
 
140
#   define rend_getbg(mc) (((mc)->color & 0xf0) >> 4 | ((mc)->attr & A_BBG ? 0x100 : 0) | ((mc)->colorx & 0xf0))
 
141
#   define rend_setbg(mc, c) ((mc)->color = ((mc)->color & 0x0f) | (c << 4 & 0xf0), (mc)->colorx = ((mc)->colorx & 0x0f) | (c & 0xf0), (mc)->attr = ((mc)->attr | A_BBG) ^ (c & 0x100 ? 0 : A_BBG))
 
142
#   define rend_getfg(mc) (((mc)->color & 0x0f) | ((mc)->attr & A_BFG ? 0x100 : 0) | (((mc)->colorx & 0x0f) << 4))
 
143
#   define rend_setfg(mc, c) ((mc)->color = ((mc)->color & 0xf0) | (c & 0x0f), (mc)->colorx = ((mc)->colorx & 0xf0) | ((c & 0xf0) >> 4), (mc)->attr = ((mc)->attr | A_BFG) ^ (c & 0x100 ? 0 : A_BFG))
 
144
#   define rend_setdefault(mc) ((mc)->color = (mc)->colorx = 0, (mc)->attr &= ~(A_BBG|A_BFG))
 
145
#  else
 
146
#   define rend_getbg(mc) (((mc)->color & 0xf0) >> 4 | ((mc)->attr & A_BBG ? 0x100 : 0))
 
147
#   define rend_setbg(mc, c) ((mc)->color = ((mc)->color & 0x0f) | (c << 4 & 0xf0), (mc)->attr = ((mc)->attr | A_BBG) ^ (c & 0x100 ? 0 : A_BBG))
 
148
#   define rend_getfg(mc) (((mc)->color & 0x0f) | ((mc)->attr & A_BFG ? 0x100 : 0))
 
149
#   define rend_setfg(mc, c) ((mc)->color = ((mc)->color & 0xf0) | (c & 0x0f), (mc)->attr = ((mc)->attr | A_BFG) ^ (c & 0x100 ? 0 : A_BFG))
 
150
#   define rend_setdefault(mc) ((mc)->color = 0, (mc)->attr &= ~(A_BBG|A_BFG))
 
151
#  endif
 
152
#  define coli2e(c) ((((c) & 0x1f8) == 0x108 ? (c) ^ 0x108 : (c & 0xff)) ^ 9)
 
153
#  define cole2i(c) ((c) >= 8 && (c) < 16 ? (c) ^ 0x109 : (c) ^ 9)
 
154
# else
 
155
#  define rend_getbg(mc) (((mc)->color & 0xf0) >> 4)
 
156
#  define rend_setbg(mc, c) ((mc)->color = ((mc)->color & 0x0f) | (c << 4 & 0xf0))
 
157
#  define rend_getfg(mc) ((mc)->color & 0x0f)
 
158
#  define rend_setfg(mc, c) ((mc)->color = ((mc)->color & 0xf0) | (c & 0x0f))
 
159
#  define rend_setdefault(mc) ((mc)->color = 0)
 
160
#  define coli2e(c) ((c) ^ 9)
 
161
#  define cole2i(c) ((c) ^ 9)
 
162
# endif
 
163
#endif