--- deliantra/Deliantra-Client/Client.xs 2007/12/28 15:06:08 1.247 +++ deliantra/Deliantra-Client/Client.xs 2007/12/28 17:30:33 1.252 @@ -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 * @@ -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); } @@ -1303,13 +1314,13 @@ cursor_pos (DC::Layout self, int index) PPCODE: { - PangoRectangle strong_pos; - pango_layout_get_cursor_pos (self->pl, index, &strong_pos, 0); + PangoRectangle pos; + pango_layout_get_cursor_pos (self->pl, index, &pos, 0); EXTEND (SP, 3); - PUSHs (sv_2mortal (newSViv (strong_pos.x / PANGO_SCALE))); - PUSHs (sv_2mortal (newSViv (strong_pos.y / PANGO_SCALE))); - PUSHs (sv_2mortal (newSViv (strong_pos.height / PANGO_SCALE))); + PUSHs (sv_2mortal (newSViv (pos.x / PANGO_SCALE))); + PUSHs (sv_2mortal (newSViv (pos.y / PANGO_SCALE))); + PUSHs (sv_2mortal (newSViv (pos.height / PANGO_SCALE))); } void @@ -1319,7 +1330,7 @@ int line, x; pango_layout_index_to_line_x (self->pl, index, trailing, &line, &x); -#if !PANGO_VERSION_CHECK (1, 17, 3) +#if !(defined (PANGO_VERSION_CHECK) && PANGO_VERSION_CHECK (1, 17, 3)) /* pango bug: line is between 1..numlines, not 0..numlines-1 */ --line; #endif @@ -1338,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);