- EvPage *page;
- gdouble page_width, page_height;
- gint thumb_width = 0;
- gint thumb_height = 0;
-
- page = ev_document_get_page (document, i);
-
- ev_document_get_page_size (document, i, &page_width, &page_height);
-
- if (!rc) {
- rc = ev_render_context_new (page, 0, (gdouble)THUMBNAIL_WIDTH / page_width);
- } else {
- ev_render_context_set_page (rc, page);
- ev_render_context_set_scale (rc, (gdouble)THUMBNAIL_WIDTH / page_width);
- }
-
- ev_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (document),
- rc, &thumb_width, &thumb_height);
-
- if (i == 0) {
- cache->uniform_width = thumb_width;
- cache->uniform_height = thumb_height;
- } else if (cache->uniform &&
- (cache->uniform_width != thumb_width ||
- cache->uniform_height != thumb_height)) {
- /* It's a different thumbnail size. Backfill the array. */
- int j;
-
- cache->sizes = g_new0 (EvThumbsSize, n_pages);
-
- for (j = 0; j < i; j++) {
- thumb_size = &(cache->sizes[j]);
- thumb_size->width = cache->uniform_width;
- thumb_size->height = cache->uniform_height;
- }
- cache->uniform = FALSE;
- }
-
- if (! cache->uniform) {
- thumb_size = &(cache->sizes[i]);
-
- thumb_size->width = thumb_width;
- thumb_size->height = thumb_height;
- }
-
- g_object_unref (page);
- }
-
- if (rc) {
- g_object_unref (rc);