Changeset 557 for libcaca/trunk/caca
- Timestamp:
- Mar 8, 2006, 11:29:00 PM (15 years ago)
- Location:
- libcaca/trunk/caca
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_conio.c
r553 r557 104 104 for(n = kk->qq->height * kk->qq->width; n--; ) 105 105 { 106 *screen++ = *chars++ & 0x7f; 106 uint32_t c = *chars++; 107 108 if(c > 0x00000020 && c < 0x00000080) 109 *screen++ = (char)c; 110 else 111 *screen++ = ' '; 112 107 113 *screen++ = *attr++; 108 114 } -
libcaca/trunk/caca/driver_gl.c
r553 r557 79 79 float font_width, font_height; 80 80 float incx, incy; 81 int id[ 94];81 int id[128 - 32]; 82 82 unsigned char bit; 83 83 unsigned char mouse_changed, mouse_clicked; … … 165 165 glEnable(GL_TEXTURE_2D); 166 166 167 for(i = 0; i < 94; i++)168 { 169 glGenTextures(1, (GLuint*)&kk->drv.p->id[i ]);170 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[i ]);167 for(i = 32; i < 128; i++) 168 { 169 glGenTextures(1, (GLuint*)&kk->drv.p->id[i - 32]); 170 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[i - 32]); 171 171 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 172 172 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); … … 175 175 } 176 176 177 for(i = 0; i < 94; i++)177 for(i = 32; i < 128; i++) 178 178 { 179 179 glDisable(GL_TEXTURE_2D); … … 182 182 glColor3f(1, 1, 1); 183 183 glRasterPos2f(0, 15); 184 glutBitmapCharacter(GLUT_BITMAP_9_BY_15, i + 32);184 glutBitmapCharacter(GLUT_BITMAP_9_BY_15, i); 185 185 186 186 glEnable(GL_TEXTURE_2D); 187 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[i ]);187 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[i - 32]); 188 188 glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 189 189 0, kk->drv.p->height - 16, 16, 16, 0); … … 237 237 glVertex2f(x, y); 238 238 glVertex2f(x + kk->drv.p->font_width, y); 239 glVertex2f(x + kk->drv.p->font_width, y + kk->drv.p->font_height); 239 glVertex2f(x + kk->drv.p->font_width, 240 y + kk->drv.p->font_height); 240 241 glVertex2f(x, y + kk->drv.p->font_height); 241 242 glEnd(); … … 260 261 for(x = 0; x < kk->drv.p->width; x += kk->drv.p->font_width) 261 262 { 262 if(*chars != (uint32_t)' ') 263 uint32_t c = *chars++; 264 265 if(c > 0x00000020 && c < 0x00000080) 263 266 { 264 char ch = *chars & 0x7f; 265 266 /* FIXME: check ch bounds */ 267 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[ch - 32]); 267 glBindTexture(GL_TEXTURE_2D, kk->drv.p->id[c - 32]); 268 268 glColor4bv(gl_bgpal[attr[0] & 0xf]); 269 269 glBegin(GL_QUADS); … … 280 280 281 281 attr++; 282 chars++;283 282 } 284 283 line++; -
libcaca/trunk/caca/driver_ncurses.c
r553 r557 193 193 for(x = kk->qq->width; x--; ) 194 194 { 195 uint32_t c = *chars++; 196 195 197 attrset(kk->drv.p->attr[*attr++]); 196 addch(*chars++ & 0x7f); 198 if(c > 0x00000020 && c < 0x00000080) 199 addch((char)c); 200 else 201 addch(' '); 197 202 } 198 203 } -
libcaca/trunk/caca/driver_slang.c
r553 r557 204 204 for(x = kk->qq->width; x--; ) 205 205 { 206 uint32_t c = *chars++; 207 206 208 #if defined(OPTIMISE_SLANG_PALETTE) 209 uint8_t fgcolor = *attr & 0xf; 210 uint8_t bgcolor = *attr >> 4; 211 207 212 /* If foreground == background, just don't use this colour 208 213 * pair, and print a space instead of the real character. */ 209 uint8_t fgcolor = *attr & 0xf;210 uint8_t bgcolor = *attr >> 4;211 214 if(fgcolor != bgcolor) 212 215 { 213 216 SLsmg_set_color(slang_assoc[*attr++]); 214 SLsmg_write_char(*chars++ & 0x7f); 217 if(c > 0x00000020 && 0x00000080) 218 SLsmg_write_char((char)c); 219 else 220 SLsmg_write_char(' '); 215 221 } 216 222 else … … 225 231 SLsmg_set_color(slang_assoc[fgcolor + 16 * bgcolor]); 226 232 SLsmg_write_char(' '); 227 chars++;228 233 attr++; 229 234 } 230 235 #else 231 236 SLsmg_set_color(*attr++); 232 SLsmg_write_char(*chars++ & 0x7f); 237 if(c > 0x00000020 && 0x00000080) 238 SLsmg_write_char((char)c); 239 else 240 SLsmg_write_char(' '); 233 241 #endif 234 242 } -
libcaca/trunk/caca/driver_win32.c
r553 r557 199 199 for(i = 0; i < kk->qq->width * kk->qq->height; i++) 200 200 { 201 kk->drv.p->buffer[i].Char.AsciiChar = kk->qq->chars[i] & 0x7f; 201 uint32_t c = kk->qq->chars[i]; 202 203 if(c > 0x00000020 && c < 0x00000080) 204 kk->drv.p->buffer[i].Char.AsciiChar = (char)c; 205 else 206 kk->drv.p->buffer[i].Char.AsciiChar = ' '; 207 202 208 kk->drv.p->buffer[i].Attributes = 203 209 win32_fg_palette[kk->qq->attr[i] & 0xf] -
libcaca/trunk/caca/driver_x11.c
r553 r557 272 272 for(y = 0; y < kk->qq->height; y++) 273 273 { 274 unsigned int yoff = (y + 1) * kk->drv.p->font_height 275 - kk->drv.p->font_offset; 276 274 277 for(x = 0; x < kk->qq->width; x += len) 275 278 { … … 281 284 282 285 /* Skip spaces */ 283 if(chars[0] == ' ')286 if(chars[0] <= 0x00000020 || chars[0] >= 0x00000080) 284 287 continue; 285 288 286 buffer[0] = chars[0] & 0x7f;289 buffer[0] = (char)chars[0]; 287 290 288 291 while(x + len < kk->qq->width 289 292 && (attr[len] & 0xf) == (attr[0] & 0xf)) 290 293 { 291 buffer[len] = chars[len] & 0x7f; 294 if(chars[len] > 0x00000020 && chars[len] < 0x00000080) 295 buffer[len] = (char)chars[len]; 296 else 297 buffer[len] = ' '; 292 298 len++; 293 299 } 294 300 295 XSetForeground(kk->drv.p->dpy, kk->drv.p->gc, kk->drv.p->colors[attr[0] & 0xf]); 301 XSetForeground(kk->drv.p->dpy, kk->drv.p->gc, 302 kk->drv.p->colors[attr[0] & 0xf]); 296 303 XDrawString(kk->drv.p->dpy, kk->drv.p->pixmap, kk->drv.p->gc, 297 x * kk->drv.p->font_width, 298 (y + 1) * kk->drv.p->font_height - kk->drv.p->font_offset, 299 buffer, len); 300 } 301 } 302 303 XCopyArea(kk->drv.p->dpy, kk->drv.p->pixmap, kk->drv.p->window, kk->drv.p->gc, 0, 0, 304 x * kk->drv.p->font_width, yoff, buffer, len); 305 } 306 } 307 308 XCopyArea(kk->drv.p->dpy, kk->drv.p->pixmap, kk->drv.p->window, 309 kk->drv.p->gc, 0, 0, 304 310 kk->qq->width * kk->drv.p->font_width, 305 311 kk->qq->height * kk->drv.p->font_height,
Note: See TracChangeset
for help on using the changeset viewer.