mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2025-03-03 22:44:39 +01:00
Simplify offset calculation
This commit is contained in:
parent
df98e51568
commit
222bd718e4
2 changed files with 12 additions and 42 deletions
|
@ -8,6 +8,7 @@
|
||||||
#include "zathura.h"
|
#include "zathura.h"
|
||||||
#include "render.h"
|
#include "render.h"
|
||||||
#include "document.h"
|
#include "document.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
cb_destroy(GtkWidget* widget, gpointer data)
|
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];
|
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 */
|
/* check for rendered attribute */
|
||||||
if (page->surface != NULL) {
|
if (page->surface != NULL) {
|
||||||
continue;
|
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 >= lower) && (end <= upper) ) [> end of the page is in viewport <]*/
|
||||||
/*|| ( (begin >= lower) && (end >= upper) && (begin <= upper) ) [> begin 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;
|
page->visible = true;
|
||||||
render_page(zathura->sync.render_thread, page);
|
render_page(zathura->sync.render_thread, page);
|
||||||
}
|
}
|
||||||
|
|
45
utils.c
45
utils.c
|
@ -238,7 +238,7 @@ string_concat(const char* string1, ...)
|
||||||
|
|
||||||
|
|
||||||
page_offset_t*
|
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) {
|
if (page == NULL || page->document == NULL || page->document->zathura == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -253,46 +253,9 @@ page_offset_top(zathura_page_t* page)
|
||||||
zathura_document_t* document = page->document;
|
zathura_document_t* document = page->document;
|
||||||
zathura_t* zathura = document->zathura;
|
zathura_t* zathura = document->zathura;
|
||||||
|
|
||||||
int* tmp = girara_setting_get(zathura->ui.session, "pages-per-row");
|
if (gtk_widget_translate_coordinates(page->event_box, zathura->ui.page_view, 0, 0, &(offset->x), &(offset->y)) == false) {
|
||||||
|
free(offset);
|
||||||
unsigned int page_padding = zathura->global.page_padding;
|
return NULL;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return offset;
|
return offset;
|
||||||
|
|
Loading…
Add table
Reference in a new issue