UI trackpad scroll and pinch
by Andy Bulka
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Centered Zoom Trackpad Gesture Simulation</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
overflow: hidden;
}
#canvas-container {
width: 100%;
height: 400px;
overflow: hidden;
position: relative;
border: 1px solid #ccc;
}
canvas {
position: absolute;
}
#log {
margin-top: 20px;
padding: 10px;
background-color: #f0f0f0;
border: 1px solid #ccc;
height: 150px;
overflow-y: auto;
}
</style>
</head>
<body>
<h1>Centered Zoom Trackpad Gesture Simulation</h1>
<div id="canvas-container">
<canvas id="myCanvas"></canvas>
</div>
<div id="log"></div>
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const container = document.getElementById('canvas-container');
const logArea = document.getElementById('log');
let scale = 1;
let offsetX = 0;
const baseRadius = 50;
const verticalCenter = 200;
function log(message) {
const now = new Date();
const timestamp = now.toLocaleTimeString() + '.' + now.getMilliseconds().toString().padStart(3, '0');
logArea.innerHTML = `${timestamp}: ${message}<br>` + logArea.innerHTML;
console.log(`${timestamp}: ${message}`);
}
function drawShapes() {
canvas.width = 2000;
canvas.height = 400;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.scale(scale, scale);
ctx.translate(-offsetX / scale,...