# fullfilm2021/aeroglide-vision architecture

> Architecture diagram of the GitHub repository fullfilm2021/aeroglide-vision, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fullfilm2021/aeroglide-vision
- Repository: https://github.com/fullfilm2021/aeroglide-vision

## Overview

AeroGlide-Vision is a Python virtual mouse: camera frames are analyzed for hand gestures and eye winks, then translated into cursor, click, scroll, or workstation-lock actions. The main loop also manages camera selection, runtime controls, and a tray interface, while rendering a live HUD. The source excerpts show the main loop invoking both tracking modules; README-described controls preserve capabilities whose full implementation was not sampled.

Main entry points: [`gesture_mouse.py`](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py) (Application Loop), [`FaceTrackingModule.py`](https://github.com/fullfilm2021/aeroglide-vision/blob/main/FaceTrackingModule.py) (Wink Recognition), [`HandTrackingModule.py`](https://github.com/fullfilm2021/aeroglide-vision/blob/main/HandTrackingModule.py) (Hand Tracking)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime Control"]
  node_controller["Application Loop<br/>[gesture_mouse.py]"]
  node_camera_select["Camera Selection<br/>[gesture_mouse.py]"]
end

subgraph group_perception["Vision Perception"]
  node_hand_tracking["Hand Tracking"]
  node_face_tracking["Face Tracking"]
  node_gesture_logic["Gesture Recognition<br/>[gesture_mouse.py]"]
  node_eye_logic["Wink Recognition"]
end

subgraph group_interaction["Mouse Interaction"]
  node_cursor_filter["Cursor Filter<br/>[gesture_mouse.py]"]
  node_mouse_actions["Mouse Actions<br/>[gesture_mouse.py]"]
  node_screen_lock["Workstation Lock<br/>[gesture_mouse.py]"]
end

subgraph group_interface["User Interface"]
  node_hud["Camera HUD<br/>[gesture_mouse.py]"]
  node_runtime_controls["Runtime Controls<br/>[gesture_mouse.py]"]
  node_tray["System Tray<br/>[gesture_mouse.py]"]
end

node_user(("User"))
node_camera["Webcam"]
node_os_mouse["Operating System Mouse"]
node_os_lock["Windows Lock"]

node_user -->|"presents gestures"| node_camera
node_camera_select -->|"selects device"| node_camera
node_camera -->|"supplies frames"| node_controller
node_controller -->|"processes frames"| node_hand_tracking
node_controller -->|"processes frames"| node_face_tracking
node_hand_tracking -.->|"provides landmarks"| node_gesture_logic
node_face_tracking -->|"calculates eye status"| node_eye_logic
node_controller -->|"interprets landmarks"| node_gesture_logic
node_controller -->|"reads eye status"| node_eye_logic
node_gesture_logic -.->|"smooths movement"| node_cursor_filter
node_gesture_logic -.->|"triggers actions"| node_mouse_actions
node_eye_logic -.->|"triggers wink clicks"| node_mouse_actions
node_mouse_actions -.->|"controls pointer"| node_os_mouse
node_gesture_logic -.->|"recognizes held fist"| node_screen_lock
node_screen_lock -->|"locks workstation"| node_os_lock
node_controller -.->|"renders status"| node_hud
node_user -->|"presses control keys"| node_runtime_controls
node_runtime_controls -.->|"changes runtime settings"| node_controller
node_controller -->|"starts tray icon"| node_tray
node_user -->|"restores window"| node_tray

click node_controller "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_camera_select "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_hand_tracking "https://github.com/fullfilm2021/aeroglide-vision/blob/main/HandTrackingModule.py"
click node_face_tracking "https://github.com/fullfilm2021/aeroglide-vision/blob/main/FaceTrackingModule.py"
click node_gesture_logic "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_eye_logic "https://github.com/fullfilm2021/aeroglide-vision/blob/main/FaceTrackingModule.py"
click node_cursor_filter "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_mouse_actions "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_screen_lock "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_hud "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_runtime_controls "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"
click node_tray "https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_controller,node_camera_select,node_user toneBlue
class node_hand_tracking,node_face_tracking,node_gesture_logic,node_eye_logic toneAmber
class node_cursor_filter,node_mouse_actions,node_screen_lock toneMint
class node_hud,node_runtime_controls,node_tray toneRose
class node_camera,node_os_mouse,node_os_lock toneIndigo
```

## Components

### Runtime Control

- [Application Loop](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [Camera Selection](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`

### Vision Perception

- [Hand Tracking](https://github.com/fullfilm2021/aeroglide-vision/blob/main/HandTrackingModule.py): `HandTrackingModule.py`
- [Face Tracking](https://github.com/fullfilm2021/aeroglide-vision/blob/main/FaceTrackingModule.py): `FaceTrackingModule.py`
- [Gesture Recognition](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [Wink Recognition](https://github.com/fullfilm2021/aeroglide-vision/blob/main/FaceTrackingModule.py): `FaceTrackingModule.py`

### Mouse Interaction

- [Cursor Filter](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [Mouse Actions](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [Workstation Lock](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`

### User Interface

- [Camera HUD](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [Runtime Controls](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`
- [System Tray](https://github.com/fullfilm2021/aeroglide-vision/blob/main/gesture_mouse.py): `gesture_mouse.py`

### Other components

- **User**
- **Webcam**
- **Operating System Mouse**
- **Windows Lock**

## Connections

- User → Webcam: presents gestures (evidence: `README.md`)
- Camera Selection → Webcam: selects device (evidence: `gesture_mouse.py`)
- Webcam → Application Loop: supplies frames (evidence: `gesture_mouse.py`)
- Application Loop → Hand Tracking: processes frames (evidence: `gesture_mouse.py`)
- Application Loop → Face Tracking: processes frames (evidence: `gesture_mouse.py`)
- Hand Tracking → Gesture Recognition: provides landmarks (evidence: `gesture_mouse.py`)
- Face Tracking → Wink Recognition: calculates eye status (evidence: `FaceTrackingModule.py`)
- Application Loop → Gesture Recognition: interprets landmarks (evidence: `gesture_mouse.py`)
- Application Loop → Wink Recognition: reads eye status (evidence: `gesture_mouse.py`)
- Gesture Recognition → Cursor Filter: smooths movement (evidence: `gesture_mouse.py`)
- Gesture Recognition → Mouse Actions: triggers actions (evidence: `gesture_mouse.py`)
- Wink Recognition → Mouse Actions: triggers wink clicks (evidence: `gesture_mouse.py`)
- Mouse Actions → Operating System Mouse: controls pointer
- Gesture Recognition → Workstation Lock: recognizes held fist (evidence: `gesture_mouse.py`)
- Workstation Lock → Windows Lock: locks workstation (evidence: `gesture_mouse.py`)
- Application Loop → Camera HUD: renders status (evidence: `gesture_mouse.py`)
- User → Runtime Controls: presses control keys (evidence: `README.md`)
- Runtime Controls → Application Loop: changes runtime settings (evidence: `gesture_mouse.py`)
- Application Loop → System Tray: starts tray icon (evidence: `gesture_mouse.py`)
- User → System Tray: restores window (evidence: `README.md`)
