diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | pango-view/viewer-pangocairo.c | 1 | ||||
-rw-r--r-- | pango/fonts.c | 20 | ||||
-rw-r--r-- | pango/opentype/harfbuzz-dump.c | 3 | ||||
-rw-r--r-- | pango/pango-bidi-type.c | 2 | ||||
-rw-r--r-- | pango/pango-coverage.c | 2 | ||||
-rw-r--r-- | pango/pango-markup.c | 6 | ||||
-rw-r--r-- | pango/pango-renderer.c | 25 | ||||
-rw-r--r-- | pango/pango-utils.c | 2 | ||||
-rw-r--r-- | pango/pangocairo-render.c | 85 |
10 files changed, 111 insertions, 52 deletions
@@ -1,5 +1,22 @@ 2008-12-25 Behdad Esfahbod <behdad@gnome.org> + Bug 469049 – Fix all compiler warnings + + * pango-view/viewer-pangocairo.c (render_callback): + * pango/fonts.c (append_field), (pango_font_description_to_string): + * pango/opentype/harfbuzz-dump.c: + * pango/pango-bidi-type.c (pango_log2vis_get_embedding_levels): + * pango/pango-coverage.c (pango_coverage_set): + * pango/pango-markup.c (span_parse_func): + * pango/pango-renderer.c + (pango_renderer_default_draw_error_underline): + * pango/pango-utils.c (pango_scan_string): + * pango/pangocairo-render.c (pango_cairo_renderer_draw_trapezoid), + (draw_error_underline), (pango_cairo_renderer_class_init): + Fix all the remaining warnings. + +2008-12-25 Behdad Esfahbod <behdad@gnome.org> + * pango/modules.c (pango_module_load), (script_info_free): * pango/opentype/harfbuzz-gpos.c (HB_Load_GPOS_Table): * pango/pango-bidi-type.c: diff --git a/pango-view/viewer-pangocairo.c b/pango-view/viewer-pangocairo.c index de3fc89b..97946eb8 100644 --- a/pango-view/viewer-pangocairo.c +++ b/pango-view/viewer-pangocairo.c @@ -269,6 +269,7 @@ render_callback (PangoLayout *layout, cairo_restore (cr); } + cairo_move_to (cr, 0, 0); pango_cairo_show_layout (cr, layout); cairo_restore (cr); diff --git a/pango/fonts.c b/pango/fonts.c index 74b36ab5..d7d59bc4 100644 --- a/pango/fonts.c +++ b/pango/fonts.c @@ -1120,19 +1120,19 @@ append_field (GString *str, const FieldMap *map, int n_elements, int val) int i; for (i=0; i<n_elements; i++) { - if (map[i].value == val) + if (map[i].value != val) + continue; + + if (G_LIKELY (map[i].str && map[i].str[0])) { - if (map[i].str && map[i].str[0]) - { - if (str->len > 0 && str->str[str->len -1] != ' ') - g_string_append_c (str, ' '); - g_string_append (str, map[i].str); - } - return; + if (G_LIKELY (str->len > 0 && str->str[str->len -1] != ' ')) + g_string_append_c (str, ' '); + g_string_append (str, map[i].str); } + return; } - if (str->len > 0 || str->str[str->len -1] != ' ') + if (G_LIKELY (str->len > 0 || str->str[str->len -1] != ' ')) g_string_append_c (str, ' '); g_string_append_printf (str, "%d", val); } @@ -1158,7 +1158,7 @@ pango_font_description_to_string (const PangoFontDescription *desc) result = g_string_new (NULL); - if (desc->family_name && desc->mask & PANGO_FONT_MASK_FAMILY) + if (G_LIKELY (desc->family_name && desc->mask & PANGO_FONT_MASK_FAMILY)) { const char *p; size_t wordlen; diff --git a/pango/opentype/harfbuzz-dump.c b/pango/opentype/harfbuzz-dump.c index 8c81da12..86116647 100644 --- a/pango/opentype/harfbuzz-dump.c +++ b/pango/opentype/harfbuzz-dump.c @@ -54,6 +54,9 @@ do_indent (FILE *stream, int indent) fprintf (stream, "%*s", indent * 3, ""); } +#if __GNUC__ >= 3 +__attribute__((__format__(__printf__, 3, 4))) +#endif static void dump (FILE *stream, int indent, const char *format, ...) { diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c index 990c4d2b..9c37ef7a 100644 --- a/pango/pango-bidi-type.c +++ b/pango/pango-bidi-type.c @@ -131,7 +131,7 @@ pango_log2vis_get_embedding_levels (const gchar *text, { if (length < 0) length = strlen (text); - embedding_levels_list = fribidi_log2vis_get_embedding_levels_new_utf8 (text, length, &fribidi_base_dir); + embedding_levels_list = (guint8 *) fribidi_log2vis_get_embedding_levels_new_utf8 (text, length, &fribidi_base_dir); } #else { diff --git a/pango/pango-coverage.c b/pango/pango-coverage.c index 4e47c244..73fb147b 100644 --- a/pango/pango-coverage.c +++ b/pango/pango-coverage.c @@ -212,7 +212,7 @@ pango_coverage_set (PangoCoverage *coverage, g_return_if_fail (coverage != NULL); g_return_if_fail (index >= 0); - g_return_if_fail (level >= 0 && level <= 3); + g_return_if_fail ((guint) level <= 3); block_index = index / 256; diff --git a/pango/pango-markup.c b/pango/pango-markup.c index f5c96498..b1a8c9c1 100644 --- a/pango/pango-markup.c +++ b/pango/pango-markup.c @@ -1244,7 +1244,7 @@ span_parse_func (MarkupData *md G_GNUC_UNUSED, { PangoUnderline ul = PANGO_UNDERLINE_NONE; - if (!span_parse_enum ("underline", underline, PANGO_TYPE_UNDERLINE, (int *) &ul, line_number, error)) + if (!span_parse_enum ("underline", underline, PANGO_TYPE_UNDERLINE, (int*)(void*)&ul, line_number, error)) goto error; add_attribute (tag, pango_attr_underline_new (ul)); @@ -1264,7 +1264,7 @@ span_parse_func (MarkupData *md G_GNUC_UNUSED, { PangoGravity gr = PANGO_GRAVITY_SOUTH; - if (!span_parse_enum ("gravity", gravity, PANGO_TYPE_GRAVITY, (int *) &gr, line_number, error)) + if (!span_parse_enum ("gravity", gravity, PANGO_TYPE_GRAVITY, (int*)(void*)&gr, line_number, error)) goto error; add_attribute (tag, pango_attr_gravity_new (gr)); @@ -1274,7 +1274,7 @@ span_parse_func (MarkupData *md G_GNUC_UNUSED, { PangoGravityHint hint = PANGO_GRAVITY_HINT_NATURAL; - if (!span_parse_enum ("gravity_hint", gravity_hint, PANGO_TYPE_GRAVITY_HINT, (int *) &hint, line_number, error)) + if (!span_parse_enum ("gravity_hint", gravity_hint, PANGO_TYPE_GRAVITY_HINT, (int*)(void*)&hint, line_number, error)) goto error; add_attribute (tag, pango_attr_gravity_hint_new (hint)); diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index d89d53f5..ac83388e 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -975,6 +975,7 @@ pango_renderer_default_draw_error_underline (PangoRenderer *renderer, const PangoMatrix *matrix; double dx, dx0, dy0; PangoMatrix total; + int i; x += (width - width_units * unit_width) / 2; width = width_units * unit_width; @@ -989,27 +990,25 @@ pango_renderer_default_draw_error_underline (PangoRenderer *renderer, dx0 = (matrix->xx * dx) / PANGO_SCALE; dy0 = (matrix->yx * dx) / PANGO_SCALE; + i = (width_units - 1) / 2; while (TRUE) { - draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* A */ 0, 0, HEIGHT_SQUARES * 2 - 1, 1); - if (width_units > 2) - { - draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* B */ - HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 3), - 1, HEIGHT_SQUARES * 2 - 3); - width_units -= 2; + if (i <= 0) + break; + i--; - total.x0 += dx0; - total.y0 += dy0; - } - else - break; + draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* B */ + HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 3), + 1, HEIGHT_SQUARES * 2 - 3); + + total.x0 += dx0; + total.y0 += dy0; } - if (width_units == 2) + if (width_units % 2 == 0) { draw_rectangle (renderer, &total, PANGO_RENDER_PART_UNDERLINE, /* C */ HEIGHT_SQUARES * 2 - 2, - (HEIGHT_SQUARES * 2 - 2), diff --git a/pango/pango-utils.c b/pango/pango-utils.c index e9018fbb..78e969fb 100644 --- a/pango/pango-utils.c +++ b/pango/pango-utils.c @@ -425,7 +425,7 @@ pango_scan_string (const char **pos, GString *out) while (g_ascii_isspace (*p)) p++; - if (!*p) + if (G_UNLIKELY (!*p)) return FALSE; else if (*p == '"') { diff --git a/pango/pangocairo-render.c b/pango/pangocairo-render.c index 8be2614f..006c8b57 100644 --- a/pango/pangocairo-render.c +++ b/pango/pangocairo-render.c @@ -498,6 +498,45 @@ pango_cairo_renderer_draw_rectangle (PangoRenderer *renderer, } } +static void +pango_cairo_renderer_draw_trapezoid (PangoRenderer *renderer, + PangoRenderPart part, + double y1_, + double x11, + double x21, + double y2, + double x12, + double x22) +{ + PangoCairoRenderer *crenderer = (PangoCairoRenderer *) (renderer); + cairo_t *cr; + double x, y; + + cr = crenderer->cr; + + cairo_save (cr); + + if (!crenderer->do_path) + set_color (crenderer, part); + + x = crenderer->x_offset, + y = crenderer->y_offset; + cairo_user_to_device_distance (cr, &x, &y); + cairo_identity_matrix (cr); + cairo_translate (cr, x, y); + + cairo_move_to (cr, x11, y1_); + cairo_line_to (cr, x21, y1_); + cairo_line_to (cr, x22, y2); + cairo_line_to (cr, x12, y2); + cairo_close_path (cr); + + if (!crenderer->do_path) + cairo_fill (cr); + + cairo_restore (cr); +} + /* Draws an error underline that looks like one of: * H E H * /\ /\ /\ /\ /\ - @@ -527,8 +566,10 @@ draw_error_underline (cairo_t *cr, { double square = height / HEIGHT_SQUARES; double unit_width = (HEIGHT_SQUARES - 1) * square; + double double_width = 2 * unit_width; int width_units = (width + unit_width / 2) / unit_width; double y_top, y_bottom; + double x_left, x_middle, x_right; int i; x += (width - width_units * unit_width) / 2; @@ -538,38 +579,35 @@ draw_error_underline (cairo_t *cr, y_bottom = y + height; /* Bottom of squiggle */ + x_middle = x + unit_width; + x_right = x + double_width; cairo_move_to (cr, x - square / 2, y_top + square / 2); /* A */ - for (i = 0; i < width_units; i += 2) + for (i = 0; i < width_units-2; i += 2) { - double x_middle = x + (i + 1) * unit_width; - double x_right = x + (i + 2) * unit_width; - cairo_line_to (cr, x_middle, y_bottom); /* B */ + cairo_line_to (cr, x_right, y_top + square); /* C */ - if (i + 1 == width_units) - /* Nothing */; - else if (i + 2 == width_units) - cairo_line_to (cr, x_right + square / 2, y_top + square / 2); /* D */ - else - cairo_line_to (cr, x_right, y_top + square); /* C */ + x_middle += double_width; + x_right += double_width; } + cairo_line_to (cr, x_middle, y_bottom); /* B */ + + if (i + 1 == width_units) + cairo_line_to (cr, x_middle + square / 2, y_bottom - square / 2); /* G */ + else if (i + 2 == width_units) { + cairo_line_to (cr, x_right + square / 2, y_top + square / 2); /* D */ + cairo_line_to (cr, x_right, y_top); /* E */ + } /* Top of squiggle */ - for (i -= 2; i >= 0; i -= 2) + x_left = x_middle - unit_width; + for (; i >= 0; i -= 2) { - double x_left = x + i * unit_width; - double x_middle = x + (i + 1) * unit_width; - double x_right = x + (i + 2) * unit_width; - - if (i + 1 == width_units) - cairo_line_to (cr, x_middle + square / 2, y_bottom - square / 2); /* G */ - else { - if (i + 2 == width_units) - cairo_line_to (cr, x_right, y_top); /* E */ - cairo_line_to (cr, x_middle, y_bottom - square); /* F */ - } - + cairo_line_to (cr, x_middle, y_bottom - square); /* F */ cairo_line_to (cr, x_left, y_top); /* H */ + + x_left -= double_width; + x_middle -= double_width; } } @@ -656,6 +694,7 @@ pango_cairo_renderer_class_init (PangoCairoRendererClass *klass) renderer_class->draw_glyphs = pango_cairo_renderer_draw_glyphs; renderer_class->draw_glyph_item = pango_cairo_renderer_draw_glyph_item; renderer_class->draw_rectangle = pango_cairo_renderer_draw_rectangle; + renderer_class->draw_trapezoid = pango_cairo_renderer_draw_trapezoid; renderer_class->draw_error_underline = pango_cairo_renderer_draw_error_underline; renderer_class->draw_shape = pango_cairo_renderer_draw_shape; } |