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

Comparing deliantra/Deliantra-Client/Client.xs (file contents):
Revision 1.224 by root, Sat Aug 11 11:21:46 2007 UTC vs.
Revision 1.225 by root, Sat Aug 11 12:07:54 2007 UTC

150typedef struct cf_layout { 150typedef struct cf_layout {
151 PangoLayout *pl; 151 PangoLayout *pl;
152 float r, g, b, a; // default color for rgba mode 152 float r, g, b, a; // default color for rgba mode
153 int base_height; 153 int base_height;
154 CFPlus__Font font; 154 CFPlus__Font font;
155 rc_t *rc;
155} *CFPlus__Layout; 156} *CFPlus__Layout;
156 157
157static CFPlus__Font default_font; 158static CFPlus__Font default_font;
158static PangoContext *opengl_context; 159static PangoContext *opengl_context;
159static PangoFontMap *opengl_fontmap; 160static PangoFontMap *opengl_fontmap;
1036 RETVAL->g = 1.; 1037 RETVAL->g = 1.;
1037 RETVAL->b = 1.; 1038 RETVAL->b = 1.;
1038 RETVAL->a = 1.; 1039 RETVAL->a = 1.;
1039 RETVAL->base_height = MIN_FONT_HEIGHT; 1040 RETVAL->base_height = MIN_FONT_HEIGHT;
1040 RETVAL->font = 0; 1041 RETVAL->font = 0;
1042 RETVAL->rc = rc_alloc ();
1041 1043
1042 pango_layout_set_wrap (RETVAL->pl, PANGO_WRAP_WORD_CHAR); 1044 pango_layout_set_wrap (RETVAL->pl, PANGO_WRAP_WORD_CHAR);
1043 layout_update_font (RETVAL); 1045 layout_update_font (RETVAL);
1044 OUTPUT: 1046 OUTPUT:
1045 RETVAL 1047 RETVAL
1046 1048
1047void 1049void
1048DESTROY (CFPlus::Layout self) 1050DESTROY (CFPlus::Layout self)
1049 CODE: 1051 CODE:
1050 g_object_unref (self->pl); 1052 g_object_unref (self->pl);
1053 rc_free (self->rc);
1051 Safefree (self); 1054 Safefree (self);
1052 1055
1053void 1056void
1054set_text (CFPlus::Layout self, SV *text_) 1057set_text (CFPlus::Layout self, SV *text_)
1055 CODE: 1058 CODE:
1307 } 1310 }
1308} 1311}
1309 1312
1310void 1313void
1311render (CFPlus::Layout self, float x, float y, int flags = 0) 1314render (CFPlus::Layout self, float x, float y, int flags = 0)
1312 PPCODE: 1315 CODE:
1316 rc_clear (self->rc);
1313 pango_opengl_render_layout_subpixel ( 1317 pango_opengl_render_layout_subpixel (
1314 self->pl, 1318 self->pl,
1319 self->rc,
1315 x * PANGO_SCALE, y * PANGO_SCALE, 1320 x * PANGO_SCALE, y * PANGO_SCALE,
1316 self->r, self->g, self->b, self->a, 1321 self->r, self->g, self->b, self->a,
1317 flags 1322 flags
1318 ); 1323 );
1324 // we assume that context_change actually clears/frees stuff
1325 // and does not do any recomputation...
1326 pango_layout_context_changed (self->pl);
1327
1328void
1329draw (CFPlus::Layout self)
1330 CODE:
1331{
1332 glEnable (GL_TEXTURE_2D);
1333 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
1334 glEnable (GL_BLEND);
1335 gl_BlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
1336 GL_ONE , GL_ONE_MINUS_SRC_ALPHA);
1337 glEnable (GL_ALPHA_TEST);
1338 glAlphaFunc (GL_GREATER, 7.f / 255.f);
1339
1340 rc_draw (self->rc);
1341
1342 glDisable (GL_ALPHA_TEST);
1343 glDisable (GL_BLEND);
1344 glDisable (GL_TEXTURE_2D);
1345}
1319 1346
1320MODULE = CFPlus PACKAGE = CFPlus::Texture 1347MODULE = CFPlus PACKAGE = CFPlus::Texture
1321 1348
1322PROTOTYPES: ENABLE 1349PROTOTYPES: ENABLE
1323 1350

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines