Changeset 912 for libcaca/trunk/caca
- Timestamp:
- Apr 26, 2006, 4:06:19 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_gl.c
r910 r912 65 65 float font_width, font_height; 66 66 float incx, incy; 67 int id[128 - 32]; 67 int id[(128 - 32)]; 68 int id_uni[8]; /* Hack, fixme*/ 68 69 unsigned char close; 69 70 unsigned char bit; … … 172 173 } 173 174 175 for(i = 0; i < 8; i++) 176 { 177 glGenTextures(1, (GLuint*)&dp->drv.p->id_uni[i]); 178 glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]); 179 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 180 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 181 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 182 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, empty_texture); 183 } 184 174 185 for(i = 32; i < 128; i++) 175 186 { … … 191 202 glutMainLoopEvent(); 192 203 #endif 193 glutPostRedisplay(); 194 } 204 glutSwapBuffers(); 205 206 } 207 /* CP437 hack */ 208 for(i = 0; i < 8; i++) 209 { 210 glDisable(GL_TEXTURE_2D); 211 glClear(GL_COLOR_BUFFER_BIT); 212 glColor3f(1, 1, 1); 213 glTranslatef(0.5,0.5,0); 214 215 if(i==0) /* 0x00002580*/ 216 { 217 glBegin(GL_QUADS); 218 glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,7); glVertex2f(0,7); 219 glEnd(); 220 } 221 else if(i==1) /* 0x00002584*/ 222 { 223 glBegin(GL_QUADS); 224 glVertex2f(0,7); glVertex2f(9,7); glVertex2f(9,15); glVertex2f(0,15); 225 glEnd(); 226 } 227 else if(i==2) /* 0x00002588*/ 228 { 229 glBegin(GL_QUADS); 230 glVertex2f(0,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(0,15); 231 glEnd(); 232 } 233 else if(i==3) /* 0x0000258c*/ 234 { 235 glBegin(GL_QUADS); 236 glVertex2f(0,0); glVertex2f(4,0); glVertex2f(4,15); glVertex2f(0,15); 237 glEnd(); 238 } 239 else if(i==4) /* 0x00002590*/ 240 { 241 glBegin(GL_QUADS); 242 glVertex2f(4,0); glVertex2f(9,0); glVertex2f(9,15); glVertex2f(4,15); 243 glEnd(); 244 } 245 else if(i>=5) /* 0x00002591*/ 246 { 247 int a, j, k = i-5; 248 for(j = dp->drv.p->font_height; j--; ) 249 for(a = dp->drv.p->font_width; a--; ) 250 { 251 if(((a + 2 * (j & 1)) & 3) > k) 252 continue; 253 254 glBegin(GL_POINTS); 255 glVertex2f(a, j); 256 glEnd(); 257 } 258 } 259 260 261 262 glEnable(GL_TEXTURE_2D); 263 glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[i]); 264 glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 265 0, dp->drv.p->height - 16, 16, 16, 0); 266 #ifdef HAVE_GLUTCHECKLOOP 267 glutCheckLoop(); 268 #else 269 glutMainLoopEvent(); 270 #endif 271 glutSwapBuffers(); 272 glutPostRedisplay(); 273 274 275 } 276 277 195 278 196 279 return 0; … … 283 366 glVertex2f(x, y + dp->drv.p->font_height); 284 367 glEnd(); 368 } 369 else if(cv!=' ') 370 { 371 switch(cv) 372 { 373 case 0x00002580: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[0]); break; 374 case 0x00002584: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[1]); break; 375 case 0x00002588: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[2]); break; 376 case 0x0000258c: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[3]); break; 377 case 0x00002590: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[4]); break; 378 case 0x00002591: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[5]); break; 379 case 0x00002592: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[6]); break; 380 case 0x00002593: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[7]); break; 381 default: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id['?' - 32]); break; 382 } 383 384 uint16_t fg = _cucul_argb32_to_rgb12fg(*attr); 385 glColor3b(((fg & 0xf00) >> 8) * 8, 386 ((fg & 0x0f0) >> 4) * 8, 387 (fg & 0x00f) * 8); 388 glBegin(GL_QUADS); 389 glTexCoord2f(0, dp->drv.p->sh); 390 glVertex2f(x, y); 391 glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh); 392 glVertex2f(x + dp->drv.p->font_width, y); 393 glTexCoord2f(dp->drv.p->sw, 0); 394 glVertex2f(x + dp->drv.p->font_width, 395 y + dp->drv.p->font_height); 396 glTexCoord2f(0, 0); 397 glVertex2f(x, y + dp->drv.p->font_height); 398 glEnd(); 399 285 400 } 286 401
Note: See TracChangeset
for help on using the changeset viewer.