dawsonia-demo / app /tabs /visualizer_functions.py
Ashwin V. Mohanan
Sync on digitize and read from final output directory
d5ea0f1
raw
history blame
1.62 kB
import os
import gradio as gr
from jinja2 import Environment, FileSystemLoader
from typing_extensions import TypeAlias
_ENV = Environment(loader=FileSystemLoader("app/assets/jinja-templates"))
_IMAGE_TEMPLATE = _ENV.get_template("image.j2")
from typing import NamedTuple, TypeAlias
class TableCell(NamedTuple):
polygon: tuple[tuple[int, int], ...]
text_x: int
text_y: int
text: str
class Page(NamedTuple):
width: int
height: int
cells: list[TableCell]
path: str
Collection: TypeAlias = list[Page]
def render_image(collection: Collection, current_page_index: int) -> str:
return _IMAGE_TEMPLATE.render(
page=collection[current_page_index],
)
def toggle_navigation_button(collection: Collection):
visible = len(collection) > 1
return gr.update(visible=visible)
def activate_left_button(current_page_index):
interactive = current_page_index > 0
return gr.update(interactive=interactive)
def activate_right_button(collection: Collection, current_page_index):
interactive = current_page_index + 1 < len(collection)
return gr.update(interactive=interactive)
def right_button_click(collection: Collection, current_page_index):
max_index = len(collection) - 1
return min(max_index, current_page_index + 1)
def left_button_click(current_page_index):
return max(0, current_page_index - 1)
def update_image_caption(collection: Collection, current_page_index):
n_pages = len(collection)
label = os.path.split(collection[current_page_index].path)[-1]
return f"image {current_page_index + 1} of {n_pages}: `{label}`"