Simplify offset calculation

This commit is contained in:
Moritz Lipp 2011-04-19 20:23:58 +02:00
parent df98e51568
commit 222bd718e4
2 changed files with 12 additions and 42 deletions

View file

@ -8,6 +8,7 @@
#include "zathura.h"
#include "render.h"
#include "document.h"
#include "utils.h"
gboolean
cb_destroy(GtkWidget* widget, gpointer data)
@ -53,6 +54,12 @@ cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data)
{
zathura_page_t* page = zathura->document->pages[page_id];
page_offset_t* offset = page_calculate_offset(page);
if (offset) {
fprintf(stderr, "offset: %d %d\n", offset->x, offset->y);
free(offset);
}
/* check for rendered attribute */
if (page->surface != NULL) {
continue;
@ -65,7 +72,7 @@ cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data)
/*|| ( (begin <= lower) && (end >= lower) && (end <= upper) ) [> end of the page is in viewport <]*/
/*|| ( (begin >= lower) && (end >= upper) && (begin <= upper) ) [> begin of the page is in viewport <]*/
/*) {*/
if (page_id < 1) {
if (page_id < 10) {
page->visible = true;
render_page(zathura->sync.render_thread, page);
}

45
utils.c
View file

@ -238,7 +238,7 @@ string_concat(const char* string1, ...)
page_offset_t*
page_offset_top(zathura_page_t* page)
page_calculate_offset(zathura_page_t* page)
{
if (page == NULL || page->document == NULL || page->document->zathura == NULL) {
return NULL;
@ -253,46 +253,9 @@ page_offset_top(zathura_page_t* page)
zathura_document_t* document = page->document;
zathura_t* zathura = document->zathura;
int* tmp = girara_setting_get(zathura->ui.session, "pages-per-row");
unsigned int page_padding = zathura->global.page_padding;
unsigned int pages_per_row = (tmp && *tmp != 0) ? *tmp : 1;
unsigned int number_of_rows = (document->number_of_pages / pages_per_row) + 1;
free(tmp);
for (unsigned int row = 0; row < number_of_rows; row++) {
unsigned int tmp = -1;
for (unsigned int column = 0; column < pages_per_row; column++)
{
unsigned int page_id = row * pages_per_row + column;
double page_height = document->pages[page_id]->height * document->scale;
if (tmp == -1) {
tmp = page_height;
} else if (page_height > tmp) {
tmp = page_height;
}
}
offset->y += tmp + (row == (number_of_rows - 1)) ? 0 : page_padding;
}
for (unsigned int column = 0; column < pages_per_row; column++) {
unsigned int tmp = -1;
for (unsigned int row = 0; row < number_of_rows; row++)
{
unsigned int page_id = row * pages_per_row + column;
double page_width = document->pages[page_id]->width * document->scale;
if (tmp == -1) {
tmp = page_width;
} else if (page_width > tmp) {
tmp = page_width;
}
}
offset->x += tmp + (column == (pages_per_row - 1)) ? 0 : page_padding;
if (gtk_widget_translate_coordinates(page->event_box, zathura->ui.page_view, 0, 0, &(offset->x), &(offset->y)) == false) {
free(offset);
return NULL;
}
return offset;