OCR / static /script.js
Anubhav18's picture
Upload 12 files
bf0bd9f verified
document.addEventListener('DOMContentLoaded', () => {
document.getElementById('outimg').style.display = 'none'
document.getElementById('loader').style.visibility = 'hidden'
const canvas = document.getElementById('drawing-area');
const canvasContext = canvas.getContext('2d');
const clearButton = document.getElementById('clear-button');
const saveButton = document.getElementById('save-button');
const state = {
mousedown: false
};
const baseLineWidth = 3;
const devicePixelRatio = window.devicePixelRatio || 1;
const lineWidth = baseLineWidth * devicePixelRatio*(7/9);
const strokeStyle = '#333';
canvas.addEventListener('mousedown', handleWritingStart);
canvas.addEventListener('mousemove', handleWritingInProgress);
canvas.addEventListener('mouseup', handleDrawingEnd);
canvas.addEventListener('mouseout', handleDrawingEnd);
canvas.addEventListener('touchstart', handleWritingStart);
canvas.addEventListener('touchmove', handleWritingInProgress);
canvas.addEventListener('touchend', handleDrawingEnd);
clearButton.addEventListener('click', handleClearButtonClick);
saveButton.addEventListener('click', handleSaveButtonClick);
function handleWritingStart(event) {
event.preventDefault();
state.mousedown = true;
const mousePos = getMousePositionOnCanvas(event);
canvasContext.beginPath();
canvasContext.moveTo(mousePos.x, mousePos.y);
canvasContext.lineWidth = lineWidth;
canvasContext.strokeStyle = strokeStyle;
canvasContext.shadowColor = null;
canvasContext.shadowBlur = 0;
}
function handleWritingInProgress(event) {
event.preventDefault();
if (state.mousedown) {
const mousePos = getMousePositionOnCanvas(event);
canvasContext.lineTo(mousePos.x, mousePos.y);
canvasContext.stroke();
}
}
function handleDrawingEnd(event) {
event.preventDefault();
if (state.mousedown) {
canvasContext.shadowColor = null;
canvasContext.shadowBlur = 0;
canvasContext.stroke();
}
state.mousedown = false;
}
function handleClearButtonClick(event) {
event.preventDefault();
document.getElementById('outimg').style.display = 'none'
document.getElementById('outtext').textContent = 'Your Output will be displayed here'
clearCanvas();
}
function handleSaveButtonClick(event) {
event.preventDefault();
const dataUrl = canvas.toDataURL();
sendDataToFlask(dataUrl);
}
function getMousePositionOnCanvas(event) {
const clientX = event.clientX || (event.touches && event.touches[0].clientX);
const clientY = event.clientY || (event.touches && event.touches[0].clientY);
const rect = canvas.getBoundingClientRect();
const scaleX = canvas.width / rect.width;
const scaleY = canvas.height / rect.height;
const canvasX = (clientX - rect.left) * scaleX;
const canvasY = (clientY - rect.top) * scaleY;
return { x: canvasX, y: canvasY };
}
function clearCanvas() {
canvasContext.clearRect(0, 0, canvas.width, canvas.height);
}
async function sendDataToFlask(dataUrl) {
document.getElementById('loader').style.visibility = 'visible'
const response = await fetch('/views', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ image: dataUrl })
})
const data = await response.json()
const output_image = `data:image/png;base64,${data.output_image}`
const output_string = data.output_string
if(output_string){
document.getElementById('outimg').style.display = "block"
document.getElementById('outtext').textContent = output_string
document.getElementById('outimg').src = output_image;
}
document.getElementById('loader').style.visibility = 'hidden'
}
});