Changeset 724
- Timestamp:
- Apr 6, 2006, 3:41:56 PM (15 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 1 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_conio.c
r689 r724 99 99 { 100 100 char *screen = kk->drv.p->screen; 101 uint 8_t *attr = kk->qq->attr;101 uint32_t *attr = kk->qq->attr; 102 102 uint32_t *chars = kk->qq->chars; 103 103 int n; … … 106 106 { 107 107 *screen++ = _cucul_utf32_to_cp437(*chars++); 108 *screen++ = *attr++;108 *screen++ = _cucul_rgba32_to_ansi8(*attr++); 109 109 } 110 110 # if defined(SCREENUPDATE_IN_PC_H) -
libcaca/trunk/caca/driver_gl.c
r700 r724 246 246 for(y = 0; y < kk->drv.p->height; y += kk->drv.p->font_height) 247 247 { 248 uint 8_t *attr = kk->qq->attr + line * kk->qq->width;248 uint32_t *attr = kk->qq->attr + line * kk->qq->width; 249 249 250 250 for(x = 0; x < kk->drv.p->width; x += kk->drv.p->font_width) 251 251 { 252 252 glDisable(GL_TEXTURE_2D); 253 glColor4bv(gl_bgpal[ attr[0] >> 4]);253 glColor4bv(gl_bgpal[_cucul_rgba32_to_ansi4bg(*attr++)]); 254 254 glBegin(GL_QUADS); 255 255 glVertex2f(x, y); … … 259 259 glVertex2f(x, y + kk->drv.p->font_height); 260 260 glEnd(); 261 262 attr++;263 261 } 264 262 … … 274 272 for(y = 0; y < kk->drv.p->height; y += kk->drv.p->font_height) 275 273 { 276 uint 8_t *attr = kk->qq->attr + line * kk->qq->width;274 uint32_t *attr = kk->qq->attr + line * kk->qq->width; 277 275 uint32_t *chars = kk->qq->chars + line * kk->qq->width; 278 276 … … 284 282 { 285 283 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[c - 32]); 286 glColor4bv(gl_bgpal[ attr[0] & 0xf]);284 glColor4bv(gl_bgpal[_cucul_rgba32_to_ansi4fg(*attr)]); 287 285 glBegin(GL_QUADS); 288 286 glTexCoord2f(0, kk->drv.p->sh); -
libcaca/trunk/caca/driver_ncurses.c
r689 r724 191 191 { 192 192 int x, y; 193 uint 8_t *attr = kk->qq->attr;193 uint32_t *attr = kk->qq->attr; 194 194 uint32_t *chars = kk->qq->chars; 195 195 for(y = 0; y < (int)kk->qq->height; y++) … … 198 198 for(x = kk->qq->width; x--; ) 199 199 { 200 attrset(kk->drv.p->attr[ *attr++]);200 attrset(kk->drv.p->attr[_cucul_rgba32_to_ansi8(*attr++)]); 201 201 ncurses_write_utf32(*chars++); 202 202 } -
libcaca/trunk/caca/driver_raw.c
r702 r724 56 56 static void raw_display(caca_t *kk) 57 57 { 58 uint 8_t *attr = kk->qq->attr;58 uint32_t *attr = kk->qq->attr; 59 59 uint32_t *chars = kk->qq->chars; 60 60 uint32_t w, h; … … 71 71 { 72 72 uint32_t c = *chars++; 73 uint 8_t a = *attr++;73 uint32_t a = *attr++; 74 74 75 fprintf(stdout, "%c%c%c%c%c", (c >> 24), (c >> 16) & 0xff, 76 (c >> 8) & 0xff, c & 0xff, a); 75 fprintf(stdout, "%c%c%c%c%c%c%c%c", 76 (c >> 24), (c >> 16) & 0xff, (c >> 8) & 0xff, c & 0xff, 77 (a >> 24), (a >> 16) & 0xff, (a >> 8) & 0xff, a & 0xff); 77 78 } 78 79 -
libcaca/trunk/caca/driver_slang.c
r689 r724 203 203 { 204 204 int x, y; 205 uint 8_t *attr = kk->qq->attr;205 uint32_t *attr = kk->qq->attr; 206 206 uint32_t *chars = kk->qq->chars; 207 207 for(y = 0; y < (int)kk->qq->height; y++) … … 213 213 214 214 #if defined(OPTIMISE_SLANG_PALETTE) 215 uint8_t fgcolor = *attr & 0xf;216 uint8_t bgcolor = *attr >> 4;215 uint8_t fgcolor = _cucul_rgba32_to_ansi4fg(*attr); 216 uint8_t bgcolor = _cucul_rgba32_to_ansi4bg(*attr); 217 217 218 218 /* If foreground == background, just don't use this colour … … 220 220 if(fgcolor != bgcolor) 221 221 { 222 SLsmg_set_color(slang_assoc[ *attr++]);222 SLsmg_set_color(slang_assoc[_cucul_rgba32_to_ansi8(*attr++)]); 223 223 slang_write_utf32(c); 224 224 } … … 237 237 } 238 238 #else 239 SLsmg_set_color( *attr++);239 SLsmg_set_color(_cucul_rgba32_to_ansi8(*attr++)); 240 240 slang_write_utf32(c); 241 241 #endif -
libcaca/trunk/caca/driver_vga.c
r689 r724 117 117 { 118 118 char *screen = (char *)(intptr_t)0x000b8000; 119 uint 8_t *attr = kk->qq->attr;119 uint32_t *attr = kk->qq->attr; 120 120 uint32_t *chars = kk->qq->chars; 121 121 int n; … … 124 124 { 125 125 *screen++ = _cucul_utf32_to_cp437(*chars++); 126 *screen++ = *attr++;126 *screen++ = _cucul_rgba32_to_ansi8(*attr++); 127 127 } 128 128 } -
libcaca/trunk/caca/driver_win32.c
r689 r724 211 211 212 212 kk->drv.p->buffer[i].Attributes = 213 win32_fg_palette[ kk->qq->attr[i] & 0xf]214 | win32_bg_palette[ kk->qq->attr[i] >> 4];213 win32_fg_palette[_cucul_rgba32_to_ansi4fg(kk->qq->attr[i])] 214 | win32_bg_palette[_cucul_rgba32_to_ansi4bg(kk->qq->attr[i])]; 215 215 } 216 216 -
libcaca/trunk/caca/driver_x11.c
r689 r724 260 260 for(x = 0; x < kk->qq->width; x += len) 261 261 { 262 uint8_t *attr = kk->qq->attr + x + y * kk->qq->width; 262 uint32_t *attr = kk->qq->attr + x + y * kk->qq->width; 263 uint8_t bg = _cucul_rgba32_to_ansi4bg(*attr); 263 264 264 265 len = 1; 265 266 while(x + len < kk->qq->width 266 && (attr[len] >> 4) == (attr[0] >> 4))267 && _cucul_rgba32_to_ansi4bg(attr[len]) == bg) 267 268 len++; 268 269 269 270 XSetForeground(kk->drv.p->dpy, kk->drv.p->gc, 270 kk->drv.p->colors[ attr[0] >> 4]);271 kk->drv.p->colors[_cucul_rgba32_to_ansi4bg(*attr)]); 271 272 XFillRectangle(kk->drv.p->dpy, kk->drv.p->pixmap, kk->drv.p->gc, 272 273 x * kk->drv.p->font_width, y * kk->drv.p->font_height, … … 284 285 for(x = 0; x < kk->qq->width; x++, chars++) 285 286 { 286 uint 8_t *attr = kk->qq->attr + x + y * kk->qq->width;287 uint32_t *attr = kk->qq->attr + x + y * kk->qq->width; 287 288 288 289 /* Skip spaces */ … … 291 292 292 293 XSetForeground(kk->drv.p->dpy, kk->drv.p->gc, 293 kk->drv.p->colors[ *attr & 0xf]);294 kk->drv.p->colors[_cucul_rgba32_to_ansi4fg(*attr)]); 294 295 295 296 /* Plain ASCII, no problem. */ -
libcaca/trunk/cucul/Makefile.am
r673 r724 12 12 transform.c \ 13 13 charset.c \ 14 colour.c \ 14 15 math.c \ 15 16 line.c \ -
libcaca/trunk/cucul/canvas.c
r723 r724 82 82 83 83 qq->chars[x + y * qq->width] = c; 84 qq->attr[x + y * qq->width] = (qq->bgcolor << 4) | qq->fgcolor;84 qq->attr[x + y * qq->width] = (qq->bgcolor << 16) | qq->fgcolor; 85 85 } 86 86 … … 98 98 void cucul_putstr(cucul_t *qq, int x, int y, char const *s) 99 99 { 100 uint32_t *chars; 101 uint8_t *attr; 100 uint32_t *chars, *attr; 102 101 unsigned int len; 103 102 … … 125 124 { 126 125 *chars++ = _cucul_utf8_to_utf32(s); 127 *attr++ = (qq->bgcolor << 4) | qq->fgcolor;126 *attr++ = (qq->bgcolor << 16) | qq->fgcolor; 128 127 129 128 s = _cucul_skip_utf8(s, 1); … … 240 239 memcpy(dst->attr + (j + y) * dst->width + starti + x, 241 240 src->attr + j * src->width + starti, 242 (endi - starti) * 1);241 (endi - starti) * 4); 243 242 } 244 243 } … … 256 255 257 256 qq->chars[x + y * qq->width] = c; 258 qq->attr[x + y * qq->width] = (qq->bgcolor << 4) | qq->fgcolor;259 } 260 257 qq->attr[x + y * qq->width] = (qq->bgcolor << 16) | qq->fgcolor; 258 } 259 -
libcaca/trunk/cucul/cucul.c
r722 r724 22 22 23 23 #if !defined(__KERNEL__) 24 # include <stdio.h> 24 25 # include <stdlib.h> 25 26 # include <string.h> … … 94 95 return NULL; 95 96 96 if(size != 12 + width * height * 5+ 4)97 if(size != 12 + width * height * 8 + 4) 97 98 return NULL; 98 99 … … 108 109 for(n = height * width; n--; ) 109 110 { 110 qq->chars[n] = ((uint32_t)buf[12 + 5 * n] << 24) 111 | ((uint32_t)buf[13 + 5 * n] << 16) 112 | ((uint32_t)buf[14 + 5 * n] << 8) 113 | (uint32_t)buf[15 + 5 * n]; 114 qq->attr[n] = buf[16 + 5 * n]; 111 qq->chars[n] = ((uint32_t)buf[12 + 8 * n] << 24) 112 | ((uint32_t)buf[13 + 8 * n] << 16) 113 | ((uint32_t)buf[14 + 8 * n] << 8) 114 | (uint32_t)buf[15 + 8 * n]; 115 qq->attr[n] = ((uint32_t)buf[16 + 8 * n] << 24) 116 | ((uint32_t)buf[17 + 8 * n] << 16) 117 | ((uint32_t)buf[18 + 8 * n] << 8) 118 | (uint32_t)buf[19 + 8 * n]; 115 119 } 116 120 … … 300 304 { 301 305 qq->chars = realloc(qq->chars, new_size * sizeof(uint32_t)); 302 qq->attr = realloc(qq->attr, new_size * sizeof(uint 8_t));306 qq->attr = realloc(qq->attr, new_size * sizeof(uint32_t)); 303 307 } 304 308 … … 326 330 qq->chars[y * width + old_width + x] = (uint32_t)' '; 327 331 memset(qq->attr + y * width + old_width, 0, 328 width - old_width);332 (width - old_width) * 4); 329 333 } 330 334 } … … 352 356 qq->chars[old_height * width + x] = (uint32_t)' '; 353 357 memset(qq->attr + old_height * width, 0, 354 (height - old_height) * width );358 (height - old_height) * width * 4); 355 359 } 356 360 … … 359 363 { 360 364 qq->chars = realloc(qq->chars, new_size * sizeof(uint32_t)); 361 qq->attr = realloc(qq->attr, new_size * sizeof(uint 8_t));365 qq->attr = realloc(qq->attr, new_size * sizeof(uint32_t)); 362 366 } 363 367 -
libcaca/trunk/cucul/cucul_internals.h
r711 r724 38 38 39 39 uint32_t *chars; 40 uint 8_t *attr;40 uint32_t *attr; 41 41 char *empty_line, *scratch_line; 42 42 … … 62 62 extern uint32_t _cucul_cp437_to_utf32(uint8_t); 63 63 64 /* Colour functions */ 65 uint8_t _cucul_rgba32_to_ansi8(uint32_t); 66 uint8_t _cucul_rgba32_to_ansi4fg(uint32_t); 67 uint8_t _cucul_rgba32_to_ansi4bg(uint32_t); 68 64 69 /* Export functions */ 65 70 extern void _cucul_get_ansi(cucul_t *, struct cucul_export *); -
libcaca/trunk/cucul/export_ansi.c
r672 r724 59 59 for(y = 0; y < qq->height; y++) 60 60 { 61 uint 8_t *lineattr = qq->attr + y * qq->width;61 uint32_t *lineattr = qq->attr + y * qq->width; 62 62 uint32_t *linechar = qq->chars + y * qq->width; 63 63 … … 67 67 for(x = 0; x < qq->width; x++) 68 68 { 69 uint8_t fg = palette[lineattr[x] & 0x0f];70 uint8_t bg = palette[lineattr[x] >> 4];69 uint8_t fg = _cucul_rgba32_to_ansi4fg(lineattr[x]); 70 uint8_t bg = _cucul_rgba32_to_ansi4bg(lineattr[x]); 71 71 uint32_t c = linechar[x]; 72 72 -
libcaca/trunk/cucul/export_html.c
r672 r724 73 73 for(y = 0; y < qq->height; y++) 74 74 { 75 uint 8_t *lineattr = qq->attr + y * qq->width;75 uint32_t *lineattr = qq->attr + y * qq->width; 76 76 uint32_t *linechar = qq->chars + y * qq->width; 77 77 78 78 for(x = 0; x < qq->width; x += len) 79 79 { 80 cur += sprintf(cur, "<span class='b%02x'>", lineattr[x]); 80 cur += sprintf(cur, "<span class='b%02x'>", 81 _cucul_rgba32_to_ansi8(lineattr[x])); 81 82 82 83 for(len = 0; … … 142 143 for(y = 0; y < qq->height; y++) 143 144 { 144 uint 8_t *lineattr = qq->attr + y * qq->width;145 uint32_t *lineattr = qq->attr + y * qq->width; 145 146 uint32_t *linechar = qq->chars + y * qq->width; 146 147 … … 157 158 len++; 158 159 159 cur += sprintf(cur, "<td bgcolor=#%06x", palette[lineattr[x] >> 4]); 160 cur += sprintf(cur, "<td bgcolor=#%06x", 161 _cucul_rgba32_to_ansi4bg(lineattr[x])); 160 162 161 163 if(len > 1) … … 163 165 164 166 cur += sprintf(cur, "><font color=#%06x>", 165 palette[lineattr[x] & 0x0f]);167 _cucul_rgba32_to_ansi4fg(lineattr[x])); 166 168 167 169 for(i = 0; i < len; i++) -
libcaca/trunk/cucul/export_irc.c
r672 r724 63 63 for(y = 0; y < qq->height; y++) 64 64 { 65 uint 8_t *lineattr = qq->attr + y * qq->width;65 uint32_t *lineattr = qq->attr + y * qq->width; 66 66 uint32_t *linechar = qq->chars + y * qq->width; 67 67 … … 71 71 for(x = 0; x < qq->width; x++) 72 72 { 73 uint8_t fg = palette[ lineattr[x] & 0x0f];74 uint8_t bg = palette[ lineattr[x] >> 4];73 uint8_t fg = palette[_cucul_rgba32_to_ansi4fg(lineattr[x])]; 74 uint8_t bg = palette[_cucul_rgba32_to_ansi4bg(lineattr[x])]; 75 75 uint32_t c = linechar[x]; 76 76 -
libcaca/trunk/cucul/export_ps.c
r672 r724 86 86 for(y = qq->height; y--; ) 87 87 { 88 uint 8_t *lineattr = qq->attr + y * qq->width;88 uint32_t *lineattr = qq->attr + y * qq->width; 89 89 90 90 for(x = 0; x < qq->width; x++) 91 91 { 92 92 cur += sprintf(cur, "1 0 translate\n %s csquare\n", 93 palette[*lineattr++ >> 4]);93 _cucul_rgba32_to_ansi4bg(*lineattr++)); 94 94 } 95 95 … … 102 102 for(y = qq->height; y--; ) 103 103 { 104 uint 8_t *lineattr = qq->attr + (qq->height - y - 1) * qq->width;104 uint32_t *lineattr = qq->attr + (qq->height - y - 1) * qq->width; 105 105 uint32_t *linechar = qq->chars + (qq->height - y - 1) * qq->width; 106 106 … … 112 112 cur += sprintf(cur, "%d %d moveto\n", (x + 1) * 6, y * 10); 113 113 cur += sprintf(cur, "%s setrgbcolor\n", 114 palette[*lineattr++ & 0x0f]);114 _cucul_rgba32_to_ansi4fg(*lineattr++)); 115 115 116 116 if(c < 0x00000020) -
libcaca/trunk/cucul/export_svg.c
r672 r724 83 83 for(y = 0; y < qq->height; y++) 84 84 { 85 uint 8_t *lineattr = qq->attr + y * qq->width;85 uint32_t *lineattr = qq->attr + y * qq->width; 86 86 87 87 for(x = 0; x < qq->width; x++) … … 89 89 cur += sprintf(cur, "<rect class=\"b%02x\" x=\"%d\" y=\"%d\"" 90 90 " width=\"6\" height=\"10\"/>\n", 91 *lineattr++, x * 6, y * 10); 91 _cucul_rgba32_to_ansi8(*lineattr++), 92 x * 6, y * 10); 92 93 } 93 94 } … … 96 97 for(y = 0; y < qq->height; y++) 97 98 { 98 uint 8_t *lineattr = qq->attr + y * qq->width;99 uint32_t *lineattr = qq->attr + y * qq->width; 99 100 uint32_t *linechar = qq->chars + y * qq->width; 100 101 … … 104 105 105 106 cur += sprintf(cur, "<text class=\"f%02x\" x=\"%d\" y=\"%d\">", 106 *lineattr++, x * 6, (y * 10) + 10); 107 _cucul_rgba32_to_ansi8(*lineattr++), 108 x * 6, (y * 10) + 10); 107 109 if(c < 0x00000020) 108 110 cur += sprintf(cur, "?"); -
libcaca/trunk/cucul/transform.c
r696 r724 39 39 void cucul_invert(cucul_t *qq) 40 40 { 41 uint 8_t *attr = qq->attr;41 uint32_t *attr = qq->attr; 42 42 unsigned int i; 43 43 44 44 for(i = qq->height * qq->width; i--; ) 45 45 { 46 *attr = ~*attr;46 *attr = *attr ^ 0x000f000f; 47 47 attr++; 48 48 } … … 64 64 uint32_t *cleft = qq->chars + y * qq->width; 65 65 uint32_t *cright = cleft + qq->width - 1; 66 uint 8_t *aleft = qq->attr + y * qq->width;67 uint 8_t *aright = aleft + qq->width - 1;66 uint32_t *aleft = qq->attr + y * qq->width; 67 uint32_t *aright = aleft + qq->width - 1; 68 68 69 69 while(cleft < cright) 70 70 { 71 71 uint32_t ch; 72 uint 8_t attr;72 uint32_t attr; 73 73 74 74 /* Swap attributes */ … … 101 101 uint32_t *ctop = qq->chars + x; 102 102 uint32_t *cbottom = ctop + qq->width * (qq->height - 1); 103 uint 8_t *atop = qq->attr + x;104 uint 8_t *abottom = atop + qq->width * (qq->height - 1);103 uint32_t *atop = qq->attr + x; 104 uint32_t *abottom = atop + qq->width * (qq->height - 1); 105 105 106 106 while(ctop < cbottom) 107 107 { 108 108 uint32_t ch; 109 uint 8_t attr;109 uint32_t attr; 110 110 111 111 /* Swap attributes */ … … 136 136 uint32_t *cbegin = qq->chars; 137 137 uint32_t *cend = cbegin + qq->width * qq->height - 1; 138 uint 8_t *abegin = qq->attr;139 uint 8_t *aend = abegin + qq->width * qq->height - 1;138 uint32_t *abegin = qq->attr; 139 uint32_t *aend = abegin + qq->width * qq->height - 1; 140 140 141 141 while(cbegin < cend) 142 142 { 143 143 uint32_t ch; 144 uint 8_t attr;144 uint32_t attr; 145 145 146 146 /* Swap attributes */ -
libcaca/trunk/src/cacaserver.c
r721 r724 215 215 | ((uint32_t)buf[10] << 8) | (uint32_t)buf[11]; 216 216 217 size = 12 + width * height * 5+ 4;217 size = 12 + width * height * 8 + 4; 218 218 buf = server->input = realloc(server->input, size); 219 219 read(0, buf + 12, size - 12);
Note: See TracChangeset
for help on using the changeset viewer.