--- deliantra/Deliantra-Client/Client.xs 2007/12/26 21:03:21 1.242 +++ deliantra/Deliantra-Client/Client.xs 2007/12/28 16:09:03 1.250 @@ -48,6 +48,13 @@ #include +#if !(defined (PANGO_VERSION_CHECK) && PANGO_VERSION_CHECK (1, 15, 2)) +# define pango_layout_get_line_readonly pango_layout_get_line_readonly +# define pango_layout_get_lines_readonly pango_layout_get_lines_readonly +# define pango_layout_iter_get_line_readonly pango_layout_iter_get_line_readonly +# define pango_layout_iter_get_run_readonly pango_layout_iter_get_run_readonly +#endif + #ifndef _WIN32 # include # include @@ -661,6 +668,10 @@ opengl_fontmap = pango_opengl_font_map_new (); pango_opengl_font_map_set_default_substitute ((PangoOpenGLFontMap *)opengl_fontmap, substitute_func, 0, 0); opengl_context = pango_opengl_font_map_create_context ((PangoOpenGLFontMap *)opengl_fontmap); +#if defined (PANGO_VERSION_CHECK) && PANGO_VERSION_CHECK (1, 15, 2) + pango_context_set_language (opengl_context, pango_language_from_string ("en")); + /*pango_context_set_base_dir (opengl_context, PANGO_DIRECTION_WEAK_LTR);*/ +#endif } char * @@ -702,7 +713,7 @@ if (m && m != (SDL_Rect **)-1) while (*m) { - if ((*m)->w >= 800 && (*m)->h >= 600) + if ((*m)->w >= 800 && (*m)->h >= 480) { AV *av = newAV (); av_push (av, newSViv ((*m)->w)); @@ -1167,7 +1178,7 @@ do { - PangoLayoutRun *run = pango_layout_iter_get_run (iter); + PangoLayoutRun *run = pango_layout_iter_get_run_readonly (iter); if (run && shape_attr_p (run)) { @@ -1281,7 +1292,7 @@ CODE: { PangoRectangle rect; - PangoLayoutLine *line = pango_layout_get_line (self->pl, 0); + PangoLayoutLine *line = pango_layout_get_line_readonly (self->pl, 0); pango_layout_line_get_pixel_extents (line, 0, &rect); RETVAL = PANGO_DESCENT (rect); } @@ -1319,10 +1330,12 @@ int line, x; pango_layout_index_to_line_x (self->pl, index, trailing, &line, &x); +#if !(defined (PANGO_VERSION_CHECK) && PANGO_VERSION_CHECK (1, 17, 3)) /* pango bug: line is between 1..numlines, not 0..numlines-1 */ - + --line; +#endif EXTEND (SP, 2); - PUSHs (sv_2mortal (newSViv (line - 1))); + PUSHs (sv_2mortal (newSViv (line))); PUSHs (sv_2mortal (newSViv (x / PANGO_SCALE))); } @@ -1336,7 +1349,7 @@ if (line < 0) XSRETURN_EMPTY; - if (!(lp = pango_layout_get_line (self->pl, line))) + if (!(lp = pango_layout_get_line_readonly (self->pl, line))) XSRETURN_EMPTY; /* do better */ pango_layout_line_x_to_index (lp, x * PANGO_SCALE, &index, &trailing); @@ -2848,7 +2861,7 @@ if (gl.SeparableFilter2D) gl.SeparableFilter2D (target, internalformat, width, height, format, type, row, column); -void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data) +void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data = 0) void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)