X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=shell%2Fev-page-cache.c;h=a79ba056e73f8ac542eddb9f63782cb434a0f786;hb=e9d82256c890d24d9465a2721f622083bab9de7b;hp=1b0f8e4604adc130f952c3e5f94b8ef8fed3ba42;hpb=646b17b09453da438218e6b86a2b8b830e5b73c0;p=evince.git diff --git a/shell/ev-page-cache.c b/shell/ev-page-cache.c index 1b0f8e46..a79ba056 100644 --- a/shell/ev-page-cache.c +++ b/shell/ev-page-cache.c @@ -33,7 +33,7 @@ struct _EvPageCache double* height_to_page; double* dual_height_to_page; - EvOrientation orientation; + int rotation; EvPageCacheInfo *size_cache; EvDocumentInfo *page_info; @@ -111,8 +111,8 @@ build_height_to_page (EvPageCache *page_cache) double uniform_height, page_height, next_page_height; double saved_height; - swap = (page_cache->orientation == EV_ORIENTATION_LANDSCAPE || - page_cache->orientation == EV_ORIENTATION_SEASCAPE); + swap = (page_cache->rotation == 90 || + page_cache->rotation == 270); g_free (page_cache->height_to_page); g_free (page_cache->dual_height_to_page); @@ -130,7 +130,7 @@ build_height_to_page (EvPageCache *page_cache) } page_cache->height_to_page [i] = (i + 1) * uniform_height; } else { - if (swap) { + if (!swap) { page_height = page_cache->size_cache [i].height; } else { page_height = page_cache->size_cache [i].width; @@ -186,7 +186,6 @@ ev_page_cache_new (EvDocument *document) /* Assume all pages are the same size until proven otherwise */ page_cache->uniform = TRUE; page_cache->has_labels = FALSE; - page_cache->orientation = ev_document_get_orientation (document); page_cache->n_pages = ev_document_get_n_pages (document); page_cache->page_labels = g_new0 (char *, page_cache->n_pages); page_cache->max_width = 0; @@ -262,7 +261,7 @@ ev_page_cache_new (EvDocument *document) /* make some sanity check assertions */ if (! page_cache->uniform) g_assert (page_cache->size_cache != NULL); - if (page_cache->uniform) + if (page_cache->uniform && page_cache->n_pages > 0) g_assert (page_cache->uniform_width > 0 && page_cache->uniform_height > 0); ev_document_doc_mutex_unlock (); @@ -342,16 +341,6 @@ ev_page_cache_set_page_label (EvPageCache *page_cache, return FALSE; } -void -ev_page_cache_set_link (EvPageCache *page_cache, - EvLink *link) -{ - g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); - g_return_if_fail (EV_IS_LINK (link)); - - ev_page_cache_set_current_page (page_cache, ev_link_get_page (link)); -} - const char * ev_page_cache_get_title (EvPageCache *page_cache) { @@ -363,55 +352,50 @@ ev_page_cache_get_title (EvPageCache *page_cache) void ev_page_cache_get_size (EvPageCache *page_cache, gint page, - EvOrientation orientation, + gint rotation, gfloat scale, gint *width, gint *height) { + double w, h; + g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); g_return_if_fail (page >= 0 && page < page_cache->n_pages); if (page_cache->uniform) { - if (width) - *width = page_cache->uniform_width; - if (height) - *height = page_cache->uniform_height; + w = page_cache->uniform_width; + h = page_cache->uniform_height; } else { EvPageCacheInfo *info; info = &(page_cache->size_cache [page]); - if (width) - *width = info->width; - if (height) - *height = info->height; + w = info->width; + h = info->height; } - if (orientation == EV_ORIENTATION_PORTRAIT || - orientation == EV_ORIENTATION_UPSIDEDOWN) { - if (width) - *width = (int) ((*width) * scale + 0.5); - if (height) - *height = (int) ((*height) * scale + 0.5); + w = w * scale + 0.5; + h = h * scale + 0.5; + + if (rotation == 0 || rotation == 180) { + if (width) *width = (int)w; + if (height) *height = (int)h; } else { - if (width) - *width = (int) ((*height) * scale + 0.5); - if (height) - *height = (int) ((*width) * scale + 0.5); + if (width) *width = (int)h; + if (height) *height = (int)w; } } void ev_page_cache_get_max_width (EvPageCache *page_cache, - EvOrientation orientation, + gint rotation, gfloat scale, gint *width) { g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); if (width) { - if (orientation == EV_ORIENTATION_PORTRAIT || - orientation == EV_ORIENTATION_UPSIDEDOWN) { + if (rotation == 0 || rotation == 180) { *width = page_cache->max_width * scale; } else { *width = page_cache->max_height * scale; @@ -421,15 +405,14 @@ ev_page_cache_get_max_width (EvPageCache *page_cache, void ev_page_cache_get_max_height (EvPageCache *page_cache, - EvOrientation orientation, + gint rotation, gfloat scale, gint *height) { g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); if (height) { - if (orientation == EV_ORIENTATION_PORTRAIT || - orientation == EV_ORIENTATION_UPSIDEDOWN) { + if (rotation == 0 || rotation == 180) { *height = page_cache->max_height * scale; } else { *height = page_cache->max_width * scale; @@ -440,7 +423,7 @@ ev_page_cache_get_max_height (EvPageCache *page_cache, void ev_page_cache_get_height_to_page (EvPageCache *page_cache, gint page, - EvOrientation orientation, + gint rotation, gfloat scale, gint *height, gint *dual_height) @@ -450,8 +433,8 @@ ev_page_cache_get_height_to_page (EvPageCache *page_cache, g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); - if (page_cache->orientation != orientation) { - page_cache->orientation = orientation; + if (page_cache->rotation != rotation) { + page_cache->rotation = rotation; build_height_to_page (page_cache); } @@ -504,32 +487,6 @@ ev_page_cache_get_info (EvPageCache *page_cache) return page_cache->page_info; } - -gboolean -ev_page_cache_next_page (EvPageCache *page_cache) -{ - g_return_val_if_fail (EV_IS_PAGE_CACHE (page_cache), FALSE); - - if (page_cache->current_page >= page_cache->n_pages - 1) - return FALSE; - - ev_page_cache_set_current_page (page_cache, page_cache->current_page + 1); - return TRUE; - -} - -gboolean -ev_page_cache_prev_page (EvPageCache *page_cache) -{ - g_return_val_if_fail (EV_IS_PAGE_CACHE (page_cache), FALSE); - - if (page_cache->current_page <= 0) - return FALSE; - - ev_page_cache_set_current_page (page_cache, page_cache->current_page - 1); - return TRUE; -} - #define PAGE_CACHE_STRING "ev-page-cache" EvPageCache *