ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/pango-render.c
(Generate patch)

Comparing deliantra/Deliantra-Client/pango-render.c (file contents):
Revision 1.8 by root, Sat Aug 11 11:32:29 2007 UTC vs.
Revision 1.9 by root, Sat Aug 11 11:41:24 2007 UTC

273 gl->g = g; 273 gl->g = g;
274 gl->b = b; 274 gl->b = b;
275 gl->a = a; 275 gl->a = a;
276 gl->flags = flags; 276 gl->flags = flags;
277 277
278 glEnable (GL_TEXTURE_2D);
279 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
280 glEnable (GL_BLEND);
281 gl_BlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
282 GL_ONE , GL_ONE_MINUS_SRC_ALPHA);
283 glEnable (GL_ALPHA_TEST);
284 glAlphaFunc (GL_GREATER, 0.01f);
285
278 pango_renderer_draw_layout (renderer, layout, x, y); 286 pango_renderer_draw_layout (renderer, layout, x, y);
287
288 rc_draw (gl->rc);
289
290 glDisable (GL_ALPHA_TEST);
291 glDisable (GL_BLEND);
292 glDisable (GL_TEXTURE_2D);
279 293
280 rc_free (gl->rc); 294 rc_free (gl->rc);
281} 295}
282 296
283void 297void
301} 315}
302 316
303static void 317static void
304prepare_run (PangoRenderer *renderer, PangoLayoutRun *run) 318prepare_run (PangoRenderer *renderer, PangoLayoutRun *run)
305{ 319{
306 PangoOpenGLRenderer *glrenderer = (PangoOpenGLRenderer *)renderer; 320 PangoOpenGLRenderer *gl = (PangoOpenGLRenderer *)renderer;
307 PangoColor *fg = 0; 321 PangoColor *fg = 0;
308 GSList *l; 322 GSList *l;
309 unsigned char r, g, b, a; 323 unsigned char r, g, b, a;
310 324
311 renderer->underline = PANGO_UNDERLINE_NONE; 325 renderer->underline = PANGO_UNDERLINE_NONE;
312 renderer->strikethrough = FALSE; 326 renderer->strikethrough = FALSE;
313 327
314 glrenderer->key.mode = GL_QUADS; 328 gl->key.mode = GL_QUADS;
315 glrenderer->key.format = GL_T2F_V3F; 329 gl->key.format = GL_T2F_V3F;
316 glrenderer->key.texname = 0; 330 gl->key.texname = 0;
317 331
318 for (l = run->item->analysis.extra_attrs; l; l = l->next) 332 for (l = run->item->analysis.extra_attrs; l; l = l->next)
319 { 333 {
320 PangoAttribute *attr = l->data; 334 PangoAttribute *attr = l->data;
321 335
344 g = fg->green * (255.f / 65535.f); 358 g = fg->green * (255.f / 65535.f);
345 b = fg->blue * (255.f / 65535.f); 359 b = fg->blue * (255.f / 65535.f);
346 } 360 }
347 else 361 else
348 { 362 {
349 r = glrenderer->r * 255.f; 363 r = gl->r * 255.f;
350 g = glrenderer->g * 255.f; 364 g = gl->g * 255.f;
351 b = glrenderer->b * 255.f; 365 b = gl->b * 255.f;
352 } 366 }
353 367
354 a = glrenderer->a * 255.f; 368 a = gl->a * 255.f;
355 369
356 if (glrenderer->flags & FLAG_INVERSE) 370 if (gl->flags & FLAG_INVERSE)
357 { 371 {
358 r ^= 0xffU; 372 r ^= 0xffU;
359 g ^= 0xffU; 373 g ^= 0xffU;
360 b ^= 0xffU; 374 b ^= 0xffU;
361 } 375 }
362 376
363 glrenderer->key.r = r; 377 gl->key.r = r;
364 glrenderer->key.g = g; 378 gl->key.g = g;
365 glrenderer->key.b = b; 379 gl->key.b = b;
366 glrenderer->key.a = a; 380 gl->key.a = a;
367} 381}
368 382
369static void 383static void
370draw_begin (PangoRenderer *renderer_) 384draw_begin (PangoRenderer *renderer_)
371{ 385{
372 PangoOpenGLRenderer *renderer = (PangoOpenGLRenderer *)renderer_; 386 PangoOpenGLRenderer *renderer = (PangoOpenGLRenderer *)renderer_;
373
374 glEnable (GL_TEXTURE_2D);
375 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
376 glEnable (GL_BLEND);
377 gl_BlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
378 GL_ONE , GL_ONE_MINUS_SRC_ALPHA);
379 glEnable (GL_ALPHA_TEST);
380 glAlphaFunc (GL_GREATER, 0.01f);
381} 387}
382 388
383static void 389static void
384draw_end (PangoRenderer *renderer_) 390draw_end (PangoRenderer *renderer_)
385{ 391{
386 PangoOpenGLRenderer *renderer = (PangoOpenGLRenderer *)renderer_; 392 PangoOpenGLRenderer *renderer = (PangoOpenGLRenderer *)renderer_;
387
388 rc_draw (renderer->rc);
389
390 glDisable (GL_ALPHA_TEST);
391 glDisable (GL_BLEND);
392 glDisable (GL_TEXTURE_2D);
393} 393}
394 394
395static void 395static void
396pango_opengl_renderer_class_init (PangoOpenGLRendererClass *klass) 396pango_opengl_renderer_class_init (PangoOpenGLRendererClass *klass)
397{ 397{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines