void
-ev_document_misc_paint_one_page (GdkDrawable *drawable,
+ev_document_misc_paint_one_page (cairo_t *cr,
GtkWidget *widget,
GdkRectangle *area,
GtkBorder *border,
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 *
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);
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
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);
+}