0b5f75339e
* Fixed agenda permissions * Renamed assignment to assignments, fixed assignments permission names * Renamed mediafile to mediafiles * Renamed motion to motions. Fixed motions permission names
101 lines
3.0 KiB
JavaScript
101 lines
3.0 KiB
JavaScript
/*
|
|
* JavaScript functions for pdf presenter of OpenSlides.
|
|
*
|
|
*/
|
|
|
|
var pdf = PDFJS.getDocument(projector['pdf_url']);
|
|
|
|
projector['load_pdf_page'] = function(page) {
|
|
projector['pdf_page_num'] = page;
|
|
pdf.then(function(pdf) {
|
|
pdf.getPage(page).then(set_convas_size);
|
|
});
|
|
};
|
|
|
|
projector['load_pdf'] = function(data) {
|
|
projector['pdf_url'] = data['url'];
|
|
projector['pdf_page_num'] = data['page_num'];
|
|
pdf = PDFJS.getDocument(projector['pdf_url']);
|
|
projector['load_pdf_page'](projector['pdf_page_num']);
|
|
};
|
|
|
|
projector['toggle_fullscreen'] = function(fullscreen) {
|
|
projector['pdf_fullscreen'] = fullscreen;
|
|
content = $('#content');
|
|
presentation = $('#presentation');
|
|
footer = $('#footer');
|
|
body = $('body');
|
|
if (fullscreen) {
|
|
content.addClass('fullscreen');
|
|
presentation.addClass('fullscreen');
|
|
footer.addClass('black');
|
|
body.addClass('black');
|
|
} else {
|
|
content.removeClass('fullscreen');
|
|
presentation.removeClass('fullscreen');
|
|
footer.removeClass('black');
|
|
body.removeClass('black');
|
|
}
|
|
$(window).resize();
|
|
};
|
|
|
|
function scale_to_height(page) {
|
|
return page.getViewport(window.innerHeight / page.getViewport(1.0).height);
|
|
}
|
|
|
|
function scale_to_width(page) {
|
|
return page.getViewport(window.innerWidth / page.getViewport(1.0).width);
|
|
}
|
|
|
|
function get_correct_viewport(page, canvas) {
|
|
if(window.innerWidth > window.innerHeight) {
|
|
viewport = scale_to_height(page);
|
|
if (viewport.width > window.innerWidth) {
|
|
viewport = scale_to_width(page);
|
|
canvas.height = viewport.height;
|
|
canvas.width = window.innerWidth;
|
|
} else {
|
|
canvas.height = window.innerHeight;
|
|
canvas.width = viewport.width;
|
|
}
|
|
} else {
|
|
viewport = scale_to_width(page);
|
|
if (viewport.height > window.innerHeight) {
|
|
viewport = scale_to_height(page);
|
|
canvas.height = window.innerHeight;
|
|
canvas.width = viewport.width;
|
|
} else {
|
|
canvas.height = viewport.height;
|
|
canvas.width = window.innerWidth;
|
|
}
|
|
}
|
|
return viewport;
|
|
}
|
|
|
|
function set_convas_size(page) {
|
|
var canvas = document.getElementById('presentation');
|
|
var context = canvas.getContext('2d');
|
|
if (projector['pdf_fullscreen']) {
|
|
viewport = get_correct_viewport(page, canvas);
|
|
} else {
|
|
viewport = page.getViewport(window.innerWidth / page.getViewport(1.0).width);
|
|
canvas.height = viewport.height;
|
|
canvas.width = window.innerWidth;
|
|
}
|
|
page.render({canvasContext: context, viewport: viewport});
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
$(window).resize(function() {
|
|
projector['load_pdf_page'](projector['pdf_page_num']);
|
|
});
|
|
if (projector['pdf_fullscreen']) {
|
|
if (!$('#content').hasClass('fullscreen')) {
|
|
$('#content').addClass('fullscreen');
|
|
$('#footer').addClass('black');
|
|
$('body').addClass('black');
|
|
}
|
|
}
|
|
$(window).resize();
|
|
});
|