From 855808b46965e8602709d296231b4e015ca270f2 Mon Sep 17 00:00:00 2001 From: Christian Aribaud Date: Sun, 21 May 2023 21:04:31 +0200 Subject: [PATCH 1/6] Adding the ability to use data-zooms in HTML files --- demos/demo_data.js | 2 +- melpomene.js | 57 ++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/demos/demo_data.js b/demos/demo_data.js index 07797b4..dffd7ed 100644 --- a/demos/demo_data.js +++ b/demos/demo_data.js @@ -1,4 +1,4 @@ -zooms = [ +PAGES_ZOOMS = [ [1, 2481.0, 1327.1057, 0.0, 0.0], [1, 593.15338, 1076.4635, 0.0, 1364.053], [1, 890.72864, 491.29874, 830.81415, 1751.5], diff --git a/melpomene.js b/melpomene.js index ece00db..745484c 100644 --- a/melpomene.js +++ b/melpomene.js @@ -34,6 +34,15 @@ PROGRESS_BAR_CONTAINER = document.getElementById("reader-progress-container") PROGRESS_BAR = document.getElementById("reader-progress-bar") PROGRESS_BAR_PAGES = document.getElementById("reader-progress-pages") +//=========================== +// STATES GLOBAL VARIABLES +//=========================== + +// The variable ZOOMS can either be defined by another JS file or contructed at init +if (typeof PAGES_ZOOMS == 'undefined') { + PAGES_ZOOMS = null +} + CURRENT_ZOOM = 0 CURRENT_PAGE = 1 CURRENT_WIDTH = 0 @@ -51,10 +60,39 @@ MOUSEWHELL_WAIT = false // Zooms utilites // -------------- +function loadZoomsFromImgTagsIfRequired(){ + + // Zooms may be defined by another JS file + if (PAGES_ZOOMS == null){ + + PAGES_ZOOMS = [] + + // parse the data-zooms of each img and and the page number info + for (var i = 0; i < READER_PAGES.children.length; i++) { + + zooms_raw_data = READER_PAGES.children[i].dataset.zooms + + // ';' separates zooms data, ',' separates values + // We add the page number (adding 1 because of indexing) + zooms = zooms_raw_data.split(";").map( + zoom => [i + 1].concat( + zoom.split(',').map( + value => parseFloat(value) + ) + ) + ) + + PAGES_ZOOMS = PAGES_ZOOMS.concat(zooms) + } + + } + +} + function getFirstZoomOfPage(pageNumber){ - for (var zoom_idx = 0; zoom_idx < zooms.length; zoom_idx++){ - if (zooms[zoom_idx][0] == pageNumber) { + for (var zoom_idx = 0; zoom_idx < PAGES_ZOOMS.length; zoom_idx++){ + if (PAGES_ZOOMS[zoom_idx][0] == pageNumber) { return zoom_idx } } @@ -63,12 +101,12 @@ function getFirstZoomOfPage(pageNumber){ function getLastZoomOfPage(pageNumber){ let res = null - for (var zoom_idx = 0; zoom_idx < zooms.length; zoom_idx++){ - if (zooms[zoom_idx][0] == pageNumber) { + for (var zoom_idx = 0; zoom_idx < PAGES_ZOOMS.length; zoom_idx++){ + if (PAGES_ZOOMS[zoom_idx][0] == pageNumber) { res = zoom_idx } - if (res != null && zooms[zoom_idx][0] != pageNumber) { + if (res != null && PAGES_ZOOMS[zoom_idx][0] != pageNumber) { break } } @@ -77,11 +115,11 @@ function getLastZoomOfPage(pageNumber){ } function getZoomCountForPage(pageNumber) { - return zooms.filter(zoom => zoom[0] == pageNumber).length + return PAGES_ZOOMS.filter(zoom => zoom[0] == pageNumber).length } function getCurrentZoomIndexForPage() { - previousZoomsCount = zooms.filter(zoom => zoom[0] < CURRENT_PAGE).length + previousZoomsCount = PAGES_ZOOMS.filter(zoom => zoom[0] < CURRENT_PAGE).length return CURRENT_ZOOM - previousZoomsCount + 1 } @@ -148,6 +186,7 @@ function totalPagesWidth() { // ========= function initReader(){ + loadZoomsFromImgTagsIfRequired() moveReaderDisplayToZoom(0) // Smoothly show pictures when they intersect with the viewport @@ -232,7 +271,7 @@ function moveReaderDisplayToPage(pageNumber) { function moveReaderDisplayToZoom(index) { - moveReaderDisplayToArea(zooms[index][0], zooms[index][1], zooms[index][2], zooms[index][3], zooms[index][4]) + moveReaderDisplayToArea(PAGES_ZOOMS[index][0], PAGES_ZOOMS[index][1], PAGES_ZOOMS[index][2], PAGES_ZOOMS[index][3], PAGES_ZOOMS[index][4]) CURRENT_ZOOM = index } @@ -278,7 +317,7 @@ function moveReader(to_next) { } else { - if (to_next && CURRENT_ZOOM < zooms.length - 1) { + if (to_next && CURRENT_ZOOM < PAGES_ZOOMS.length - 1) { moveReaderDisplayToZoom(CURRENT_ZOOM + 1) } From 712f8751d819ab4c2a453171d043596596ee1934 Mon Sep 17 00:00:00 2001 From: Christian Aribaud Date: Sun, 21 May 2023 21:07:40 +0200 Subject: [PATCH 2/6] Fixing header / adding version info --- melpomene.css | 3 ++- melpomene.js | 3 ++- zooms_generator.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/melpomene.css b/melpomene.css index cb7fbb5..cfdbd50 100644 --- a/melpomene.css +++ b/melpomene.css @@ -1,4 +1,5 @@ -/* Melpomene CSS */ +/* Melpomene webcomic reader CSS */ +/* Version 1.0.0 - UNSTABLE */ /* CC-BY-NC-SA : https://git.aribaud.net/caribaud/melpomene/ */ :root { diff --git a/melpomene.js b/melpomene.js index 745484c..327dc25 100644 --- a/melpomene.js +++ b/melpomene.js @@ -1,4 +1,5 @@ -/* Melpomene CSS */ +/* Melpomene webcomic reader JS */ +/* Version 1.0.0 - UNSTABLE */ /* CC-BY-NC-SA : https://git.aribaud.net/caribaud/melpomene/ */ //============ diff --git a/zooms_generator.py b/zooms_generator.py index 0a2cc41..73a95cc 100644 --- a/zooms_generator.py +++ b/zooms_generator.py @@ -1,4 +1,5 @@ -# Melpomene comic reader +# Melpomene webcomic reader JSON/JS/HTML generator +# Version 1.0.0 - UNSTABLE # CC-BY-NC-SA https://git.aribaud.net/caribaud/melpomene/ import sys From a8c1a86592856c2e84cdac07424579f1a29097c7 Mon Sep 17 00:00:00 2001 From: Christian Aribaud Date: Sun, 21 May 2023 22:15:23 +0200 Subject: [PATCH 3/6] fixing lowres demo --- demos/pepper_and_carrot_e35_lowres.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/pepper_and_carrot_e35_lowres.html b/demos/pepper_and_carrot_e35_lowres.html index f5609a9..fdd239b 100644 --- a/demos/pepper_and_carrot_e35_lowres.html +++ b/demos/pepper_and_carrot_e35_lowres.html @@ -18,7 +18,7 @@
-