Skip to main content

PyPI version Repository License

Overlay arrows and more

WARNING: This library is still at an early stage of development.

Description

The ‘Overlay arrows and more’ library displays a transparent window on top of all other windows. The transparent window serves as a support for adding graphical elements such as arrows, rectangles, circles, text, etc…

Features

  • Transparent overlays that don’t block underlying applications

  • Multiple shapes: rectangles, ellipses, arrows, triangles, and images

  • Customizable styling: colors, brushes, line thickness, fonts

  • Rotation support for any graphical element

  • Auto-refresh capability with configurable frequency

  • Multi-threaded design for smooth performance

  • Multi-monitor support

Installation

pip install overlay_arrows_and_more

Usage

This is a simple example:

import overlay_arrows_and_more as oaam
import time

main_overlay = oaam.Overlay()
transparent_overlay = oaam.Overlay(transparency=.5)

transparent_overlay.add(geometry=oaam.Shape.rectangle, x=300, y=300, width=100, height=100, thickness=10, color=(0, 255, 0))
transparent_overlay.refresh()

main_overlay.add(geometry=oaam.Shape.ellipse, x=10, y=10, width=40, height=40, thickness=1)
main_overlay.add(geometry=oaam.Shape.rectangle, x=100, y=100, width=100, height=100, color=(0, 0, 255), thickness=5)
main_overlay.add(geometry=oaam.Shape.rectangle, x=300, y=100, width=100, height=100, thickness=10, color=(0, 255, 0))
main_overlay.refresh()

time.sleep(9.0)
main_overlay.clear_all()
main_overlay.refresh()

Functions

Classes
Overlay
Overlay(transparency=0.0, frequency=None)

Main class for creating overlay windows.

Parameters:

  • transparency (float): Transparency level (0.0 = opaque, 1.0 = fully transparent)

  • frequency (float): Auto-refresh frequency in Hz (optional)

Methods:

  • add(**kwargs): Add a graphical element to the overlay

  • refresh(): Update the overlay display

  • clear_all(): Remove all graphical elements

  • quit(): Close the overlay and clean up resources

Shape (Enum)

Available shapes for drawing:

Shape.rectangle: Rectangular shape Shape.ellipse: Elliptical/circular shape Shape.arrow: Arrow shape Shape.triangle: Triangular shape Shape.image: Image/icon

Brush (Enum)

Fill patterns for shapes:

  • Brush.solid: Solid color fill

  • Brush.b_diagonal: 45° upward diagonal lines

  • Brush.cross: Horizontal and vertical crosshatch

  • Brush.diag_cross: 45° crosshatch

  • Brush.f_diagonal: 45° downward diagonal lines

  • Brush.horizontal: Horizontal lines

  • Brush.vertical: Vertical lines

Element Properties

When adding elements with add(), you can use these properties:

Position and Size

  • x, y: Position coordinates

  • width, height: Element dimensions

Appearance

  • color: Outline color as RGB tuple (r, g, b)

  • thickness: Line thickness (0 for filled shapes)

  • brush: Fill pattern (Brush enum)

  • brush_color: Fill color as RGB tuple

  • angle: Rotation angle in degrees

  • center_of_rotation: Rotation center as tuple (x, y)

Text Properties

  • text: Text content

  • text_color: Text color as RGB tuple

  • text_bg_color: Text background color

  • font_size: Font size in pixels

  • font_name: Font family name

  • text_format: Text alignment flags

Special Properties

  • geometry: Shape type (Shape enum)

  • xyrgb_array: Vertex data for triangles

  • hicon: Icon handle for images

Examples
Recording Indicator
import overlay_arrows_and_more as overlay
import time

# Create overlay
rec_overlay = overlay.Overlay()

# Blinking recording indicator
for i in range(20):  # Blink 20 times
    rec_overlay.clear_all()

    # Show red dot on even iterations (blinking effect)
    if i % 2 == 0:
        rec_overlay.add(
            geometry=overlay.Shape.ellipse,
            x=50, y=50,
            width=20, height=20,
            brush=overlay.Brush.solid,
            brush_color=(255, 0, 0),
            thickness=0
        )

    # Recording text (always visible)
    rec_overlay.add(
        x=80, y=50,
        width=100, height=20,
        text="REC",
        text_color=(255, 0, 0),
        text_bg_color=(255, 255, 254),
        font_size=16
    )

    rec_overlay.refresh()
    time.sleep(0.5)  # Half second intervals

rec_overlay.quit()
Highlighted Area
import overlay_arrows_and_more as overlay
import time

# Create transparent overlay
highlight_overlay = overlay.Overlay(transparency=0.7)

# Highlight rectangle
highlight_overlay.add(
    geometry=overlay.Shape.rectangle,
    x=200, y=150,
    width=400, height=300,
    thickness=5,
    color=(0, 255, 0),
    brush=overlay.Brush.solid,
    brush_color=(0, 255, 0)
)

# Instruction text
highlight_overlay.add(
    x=220, y=170,
    width=360, height=50,
    text="Click here to continue",
    text_color=(255, 255, 255),
    text_bg_color=(0, 0, 0),
    font_size=18
)

highlight_overlay.refresh()
time.sleep(5)
highlight_overlay.quit()
Animated Elements
import overlay_arrows_and_more as overlay
import time

# Create auto-refreshing overlay
animated_overlay = overlay.Overlay(transparency=0.3, frequency=30)

# Animate a rotating arrow
for i in range(360):
    animated_overlay.clear_all()
    animated_overlay.add(
        geometry=overlay.Shape.arrow,
        x=400, y=300,
        thickness=8,
        color=(0, 0, 255),
        angle=i,
        center_of_rotation=(20, 10)
    )
    time.sleep(1/30)  # 30 FPS

animated_overlay.quit()
Use Cases
  • Screen recording tools: Recording indicators, selection frames

  • Tutorial applications: Highlighting UI elements, step-by-step guides

  • Presentation tools: Annotations, pointers, emphasis

  • Gaming overlays: Status displays, minimaps, notifications

  • Accessibility tools: Visual indicators, screen readers

  • Development tools: Debug information, performance metrics

Utility Functions
load_png
load_png(filename, size_x, size_y)

Load a PNG image for use in overlays.

Parameters:

  • filename: Path to PNG file

  • size_x, size_y: Desired icon dimensions

Returns: Icon handle for use with hicon property

load_ico
load_ico(filename, size_x, size_y)

Load an ICO file for use in overlays.

Parameters:

  • filename: Path to ICO file

  • size_x, size_y: Desired icon dimensions

Returns: Icon handle for use with hicon property

Important Notes
  • This library only works on Windows systems

  • Overlays are always on top of other windows

  • The overlay window is transparent to mouse clicks

  • Remember to call quit() to properly clean up resources

  • For animated overlays, consider using the frequency parameter for smooth updates

Color Key Warning:

Pure white (255, 255, 255) is used as a transparency key and will be invisible. Use almost-white (255, 255, 254) or light gray (250, 250, 250) instead, either for color or brush_color.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

overlay_arrows_and_more-0.5.1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overlay_arrows_and_more-0.5.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file overlay_arrows_and_more-0.5.1.tar.gz.

File metadata

  • Download URL: overlay_arrows_and_more-0.5.1.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for overlay_arrows_and_more-0.5.1.tar.gz
Algorithm Hash digest
SHA256 3b27c0568839d997242372b40a48de410eb9ae38c5577860131ff724add517e9
MD5 e294a2615172bf7a5f966b6eb1960d83
BLAKE2b-256 8f001fcdc865d5c2523fab2ae6bb4ee7a1e219543a9bade4ff9c70dbd64ad00c

See more details on using hashes here.

File details

Details for the file overlay_arrows_and_more-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for overlay_arrows_and_more-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ab88e80b50bec7f7a46a3cf65683ed406820d5f0642a5787db4503e9342abad
MD5 5c3ddd003055732c1767d92d9edc376e
BLAKE2b-256 8655b43c4481c838dd56c217c054bd8227d0f3830483cef345e8c1b6704d014f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.9

2 files

0.3.8

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.1

2 files

0.3.0

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page