roundabout,
created on Monday, 6 January 2025, 17:22:49 (1736184169),
received on Tuesday, 7 January 2025, 08:25:28 (1736238328)
Author identity: vlad <vlad.muntoiu@gmail.com>
554317b0acc1ffb8847240567b8317d95351eda7
static/picture-annotation.py
@@ -715,13 +715,14 @@ zoom_offset = (0, 0)
def on_wheel(event): global scale, scale_exponent, translate_x, translate_y if object_list.matches(":hover"): returnevent.preventDefault() # Adjust scale exponent and compute new scale# Adjust scale exponent and compute new scale.scale_exponent += (-1 if event.deltaY > 0 else 1) / 4 new_scale = 2 ** scale_exponent # Update scalescale = new_scale update_transform()
@@ -733,12 +734,19 @@ start_y = 0
def on_mouse_down(event): global is_dragging, start_x, start_y is_dragging = Truestart_x = event.clientXstart_y = event.clientYif object_list.matches(":hover"): return if event.button == 0: is_dragging = True start_x = event.clientX start_y = event.clientYdef on_mouse_move(event): global translate_x, translate_y if object_list.matches(":hover"): returnif is_dragging: translate_x += event.movementX / scale translate_y += event.movementY / scale
@@ -746,12 +754,53 @@ def on_mouse_move(event):
def on_mouse_up(event): global is_dragging if object_list.matches(":hover"): returnis_dragging = False def on_touch_start(event): global last_touch_positions if event.touches.length == 2: event.preventDefault() last_touch_positions = [ (event.touches[0].clientX, event.touches[0].clientY), (event.touches[1].clientX, event.touches[1].clientY) ] def on_touch_move(event): global translate_x, translate_y, last_touch_positions if event.touches.length == 2: event.preventDefault() current_positions = [ (event.touches[0].clientX, event.touches[0].clientY), (event.touches[1].clientX, event.touches[1].clientY) ] delta_x = sum(p[0] - lp[0] for p, lp in zip(current_positions, last_touch_positions)) / 2 delta_y = sum(p[1] - lp[1] for p, lp in zip(current_positions, last_touch_positions)) / 2 translate_x += delta_x translate_y += delta_y last_touch_positions = current_positions update_transform() def on_touch_end(event): global last_touch_positions if event.touches.length == 0: last_touch_positions = None zoom_container.addEventListener("wheel", on_wheel) zoom_container.addEventListener("mousedown", on_mouse_down) document.addEventListener("mousemove", on_mouse_move) document.addEventListener("mouseup", on_mouse_up) zone.addEventListener("touchstart", on_touch_start) zone.addEventListener("touchmove", on_touch_move) zone.addEventListener("touchend", on_touch_end)# Load existing annotations, if any put_shapes(await load_shapes())