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.55 by root, Thu Apr 20 08:11:56 2006 UTC vs.
Revision 1.59 by root, Sun Apr 23 04:41:33 2006 UTC

33 typedef signed char int8_t; 33 typedef signed char int8_t;
34 typedef signed short int16_t; 34 typedef signed short int16_t;
35 typedef signed int int32_t; 35 typedef signed int int32_t;
36#endif 36#endif
37 37
38#include "glext.h"
39
38#define FOW_DARKNESS 32 40#define FOW_DARKNESS 32
39 41
40#define MAP_EXTEND_X 32 42#define MAP_EXTEND_X 32
41#define MAP_EXTEND_Y 512 43#define MAP_EXTEND_Y 512
44
45#define MIN_FONT_HEIGHT 8 * PANGO_SCALE
42 46
43typedef Mix_Chunk *CFClient__MixChunk; 47typedef Mix_Chunk *CFClient__MixChunk;
44typedef Mix_Music *CFClient__MixMusic; 48typedef Mix_Music *CFClient__MixMusic;
45 49
46static PangoContext *context; 50static PangoContext *context;
62layout_update (CFClient__Layout self) 66layout_update (CFClient__Layout self)
63{ 67{
64 /* use a random scale factor to account for unknown descenders, 0.8 works 68 /* use a random scale factor to account for unknown descenders, 0.8 works
65 * reasonably well with bitstream vera 69 * reasonably well with bitstream vera
66 */ 70 */
67 PangoFontDescription *font = pango_context_get_font_description (context); 71 PangoFontDescription *font = pango_layout_get_font_description (self->pl);
68 72
69 int height = self->base_height * (PANGO_SCALE * 8 / 10); 73 int height = self->base_height * (PANGO_SCALE * 8 / 10);
74
75 if (height < MIN_FONT_HEIGHT)
76 height = MIN_FONT_HEIGHT;
70 77
71 if (pango_font_description_get_size (font) != height) 78 if (pango_font_description_get_size (font) != height)
72 { 79 {
80 font = pango_font_description_copy (font);
73 pango_font_description_set_absolute_size (font, height); 81 pango_font_description_set_absolute_size (font, height);
74 pango_layout_context_changed (self->pl); 82 pango_layout_set_font_description (self->pl, font);
75 } 83 }
76} 84}
77 85
78static void 86static void
79layout_get_pixel_size (CFClient__Layout self, int *w, int *h) 87layout_get_pixel_size (CFClient__Layout self, int *w, int *h)
237 break; 245 break;
238 246
239 row->col[x - row->c0].darkness = -1; 247 row->col[x - row->c0].darkness = -1;
240 } 248 }
241 } 249 }
250}
251
252static void
253music_finished ()
254{
255 SDL_UserEvent ev;
256
257 ev.type = SDL_USEREVENT;
258 ev.code = 0;
259 ev.data1 = 0;
260 ev.data2 = 0;
261
262 SDL_PushEvent ((SDL_Event *)&ev);
242} 263}
243 264
244MODULE = CFClient PACKAGE = CFClient 265MODULE = CFClient PACKAGE = CFClient
245 266
246PROTOTYPES: ENABLE 267PROTOTYPES: ENABLE
463 } 484 }
464} 485}
465 486
466int 487int
467Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512) 488Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512)
489 POSTCALL:
490 Mix_HookMusicFinished (music_finished);
468 491
469void 492void
470Mix_CloseAudio () 493Mix_CloseAudio ()
471 494
472int 495int
504{ 527{
505 int count; 528 int count;
506 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)file, 0, 0, &count); 529 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)file, 0, 0, &count);
507 PangoFontDescription *font = pango_fc_font_description_from_pattern (pattern, 0); 530 PangoFontDescription *font = pango_fc_font_description_from_pattern (pattern, 0);
508 FcPatternDestroy (pattern); 531 FcPatternDestroy (pattern);
532 pango_font_description_set_absolute_size (font, MIN_FONT_HEIGHT);
509 pango_context_set_font_description (context, font); 533 pango_context_set_font_description (context, font);
510} 534}
511 535
512void 536void
513load_image_inline (SV *image_) 537load_image_inline (SV *image_)
615 CODE: 639 CODE:
616 New (0, RETVAL, 1, struct cf_layout); 640 New (0, RETVAL, 1, struct cf_layout);
617 RETVAL->base_height = base_height; 641 RETVAL->base_height = base_height;
618 RETVAL->pl = pango_layout_new (context); 642 RETVAL->pl = pango_layout_new (context);
619 pango_layout_set_wrap (RETVAL->pl, PANGO_WRAP_WORD_CHAR); 643 pango_layout_set_wrap (RETVAL->pl, PANGO_WRAP_WORD_CHAR);
644 pango_layout_set_font_description (RETVAL->pl,
645 pango_font_description_copy (
646 pango_context_get_font_description (context)));
620 OUTPUT: 647 OUTPUT:
621 RETVAL 648 RETVAL
622 649
623void 650void
624DESTROY (CFClient::Layout self) 651DESTROY (CFClient::Layout self)
1308 const_iv (GL_TEXTURE_WRAP_T), 1335 const_iv (GL_TEXTURE_WRAP_T),
1309 const_iv (GL_CLAMP), 1336 const_iv (GL_CLAMP),
1310 const_iv (GL_REPEAT), 1337 const_iv (GL_REPEAT),
1311 const_iv (GL_NEAREST), 1338 const_iv (GL_NEAREST),
1312 const_iv (GL_LINEAR), 1339 const_iv (GL_LINEAR),
1340 const_iv (GL_NEAREST_MIPMAP_NEAREST),
1341 const_iv (GL_LINEAR_MIPMAP_NEAREST),
1342 const_iv (GL_NEAREST_MIPMAP_LINEAR),
1343 const_iv (GL_LINEAR_MIPMAP_LINEAR),
1344 const_iv (GL_GENERATE_MIPMAP),
1345 const_iv (GL_LINEAR),
1313 const_iv (GL_MODULATE), 1346 const_iv (GL_MODULATE),
1314 const_iv (GL_REPLACE), 1347 const_iv (GL_REPLACE),
1315 const_iv (GL_COLOR_BUFFER_BIT), 1348 const_iv (GL_COLOR_BUFFER_BIT),
1316 const_iv (GL_PROJECTION), 1349 const_iv (GL_PROJECTION),
1317 const_iv (GL_MODELVIEW), 1350 const_iv (GL_MODELVIEW),

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines