X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-document-misc.c;h=d597127f69251a426600798e1b76e60b1d09445d;hb=68314b63836ebfd7878ba056d09290544f66750e;hp=605cbb0a87c0074a67a7c03762db37af0ddd0e41;hpb=d02aafbc4423ead5b00e452452643e076c4fa2e8;p=evince.git diff --git a/libdocument/ev-document-misc.c b/libdocument/ev-document-misc.c index 605cbb0a..d597127f 100644 --- a/libdocument/ev-document-misc.c +++ b/libdocument/ev-document-misc.c @@ -133,7 +133,7 @@ ev_document_misc_get_page_border_size (gint page_width, void -ev_document_misc_paint_one_page (GdkDrawable *drawable, +ev_document_misc_paint_one_page (cairo_t *cr, GtkWidget *widget, GdkRectangle *area, GtkBorder *border, @@ -143,35 +143,35 @@ ev_document_misc_paint_one_page (GdkDrawable *drawable, GtkStyle *style = gtk_widget_get_style (widget); GtkStateType state = gtk_widget_get_state (widget); - gdk_draw_rectangle (drawable, - highlight ? style->text_gc[state] : style->dark_gc[state], - TRUE, - area->x, - area->y, - area->width, - area->height); - gdk_draw_rectangle (drawable, - inverted_colors ? style->black_gc : style->white_gc, - TRUE, - area->x + border->left, - area->y + border->top, - area->width - (border->left + border->right), - area->height - (border->top + border->bottom)); - gdk_draw_rectangle (drawable, - style->mid_gc[state], - TRUE, - area->x, - area->y + area->height - (border->bottom - border->top), - border->bottom - border->top, - border->bottom - border->top); - gdk_draw_rectangle (drawable, - style->mid_gc[state], - TRUE, - area->x + area->width - (border->right - border->left), - area->y, - border->right - border->left, - border->right - border->left); + gdk_cairo_set_source_color (cr, highlight ? &style->text[state] : &style->dark[state]); + gdk_cairo_rectangle (cr, area); + cairo_fill (cr); + if (inverted_colors) + cairo_set_source_rgb (cr, 0, 0, 0); + else + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_rectangle (cr, + area->x + border->left, + area->y + border->top, + area->width - (border->left + border->right), + area->height - (border->top + border->bottom)); + cairo_fill (cr); + + gdk_cairo_set_source_color (cr, &style->mid[state]); + cairo_rectangle (cr, + area->x, + area->y + area->height - (border->bottom - border->top), + border->bottom - border->top, + border->bottom - border->top); + cairo_fill (cr); + + cairo_rectangle (cr, + area->x + area->width - (border->right - border->left), + area->y, + border->right - border->left, + border->right - border->left); + cairo_fill (cr); } cairo_surface_t * @@ -321,7 +321,6 @@ ev_document_misc_surface_rotate_and_scale (cairo_surface_t *surface, void ev_document_misc_invert_surface (cairo_surface_t *surface) { -#if CAIRO_VERSION > CAIRO_VERSION_ENCODE(1, 9, 2) cairo_t *cr; cr = cairo_create (surface); @@ -331,30 +330,6 @@ ev_document_misc_invert_surface (cairo_surface_t *surface) { cairo_set_source_rgb (cr, 1., 1., 1.); cairo_paint(cr); cairo_destroy (cr); -#else - guchar *data; - gint rowstride; - gint width, height; - gint x, y; - - data = cairo_image_surface_get_data (surface); - rowstride = cairo_image_surface_get_stride (surface); - width = cairo_image_surface_get_width (surface); - height = cairo_image_surface_get_height (surface); - - for (y = 0; y < height; y++) { - guchar *p = data + y * rowstride; - - for (x = 0; x < width; x++) { - p[0] = 255 - p[0]; - p[1] = 255 - p[1]; - p[2] = 255 - p[2]; - p += 4; - } - } - - cairo_surface_mark_dirty (surface); -#endif } void @@ -400,3 +375,26 @@ ev_document_misc_get_screen_dpi (GdkScreen *screen) return (dp / di); } + +/* Returns a locale specific date and time representation */ +gchar * +ev_document_misc_format_date (GTime utime) +{ + time_t time = (time_t) utime; + char s[256]; + const char fmt_hack[] = "%c"; + size_t len; +#ifdef HAVE_LOCALTIME_R + struct tm t; + if (time == 0 || !localtime_r (&time, &t)) return NULL; + len = strftime (s, sizeof (s), fmt_hack, &t); +#else + struct tm *t; + if (time == 0 || !(t = localtime (&time)) ) return NULL; + len = strftime (s, sizeof (s), fmt_hack, t); +#endif + + if (len == 0 || s[0] == '\0') return NULL; + + return g_locale_to_utf8 (s, -1, NULL, NULL, NULL); +}