Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
// Test : récupère l'image du fac-similé et l'affiche quelque part en la décalant d'un certain nombre de lignes.
// Remarque : impossible de le mettre dans le canvas existant pour des raisons de sécurité apparemment.

// Idée : analyser cette image sans l'afficher, puis en tirer les conséquences sur le fac-similé affiché en utilisant
// l'API OpenSeaDragon (mw.proofreadpage.openseadragon.viewer.viewport.zoomTo, etc.)

function doit() {
	let imageURL = 
	$("img")[0].src;
	  // "https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Euripide%2C_trad._Leconte_de_Lisle%2C_I%2C_1884.djvu/page546-1536px-Euripide%2C_trad._Leconte_de_Lisle%2C_I%2C_1884.djvu.jpg"; 
	// "https://cdn.glitch.com/4c9ebeb9-8b9a-4adc-ad0a-238d9ae00bb5%2Fmdn_logo-only_color.svg?1535749917189";
	let imageDescription = "Une image";

	function imageReceived() {
		const canvas = document.createElement("canvas");
		const context = canvas.getContext("2d");

		canvas.width = downloadedImg.width;
		canvas.height = downloadedImg.height;
		canvas.innerText = downloadedImg.alt;

		context.drawImage(downloadedImg, 0, 0);
		$("#firstHeadingTitle")[0].appendChild(canvas);
		console.log("image appended");

		var imagedata = canvas.getContext("2d").getImageData(0, 0, downloadedImg.width, downloadedImg.height);
		var msg = `${imagedata.height} x ${imagedata.width} : ${imagedata.data.length} pixels`;

		const newimagedata = context.createImageData(imagedata.width, imagedata.height);

		// Iterate through every pixel
		const decalage = 500;
		for (let i = decalage * imagedata.width * 4; i < newimagedata.data.length; i += 1) {
			newimagedata.data[i - decalage * imagedata.width * 4] = imagedata.data[i];
			// newimagedata.data[i] = 128;
		}

		context.putImageData(newimagedata, 20, 20);
	};

	let downloadedImg = new Image();
	downloadedImg.crossOrigin = "Anonymous";
	downloadedImg.addEventListener("load", imageReceived, false);
	downloadedImg.alt = imageDescription;
	downloadedImg.src = imageURL;
}



function tests(e) {
	e.preventDefault();
	try {
        doit(e);
	}
	catch(exc) {
		OO.ui.alert("Erreur : " + exc);
		return;
	}
}

function addCommande(libelle, id, desc, fn) {
	mw.util.addPortletLink("p-cactions",
		"#",
		libelle,
		id,
		desc);

	$('#' + id).on('click', function(e) {
		fn(e);
	});
}

$(function($) {
    addCommande("Tests", 
	    "sd-tests", 
		"Tests perso", 
		tests
    );
})