zooui.objects.scene.sceneutils.prioritybatcher module

PriorityBatcher class for viewport-aware object batching.

This class manages batching of text objects for parallel rendering based on their distance from the viewport center, ensuring closest objects are rendered first.

class zooui.objects.scene.sceneutils.prioritybatcher.BatchPriority(*values)[source]

Bases: Enum

Priority levels for text object batching.

HIGH = 0
MEDIUM = 1
LOW = 2
BACKGROUND = 3
class zooui.objects.scene.sceneutils.prioritybatcher.PrioritizedObject(priority, distance, index, object, layout_data=None)[source]

Bases: object

Wrapper for objects with priority for heapq.

priority
distance
index
object
layout_data = None
class zooui.objects.scene.sceneutils.prioritybatcher.PriorityBatcher(batch_size=10, max_batches=10, viewport_center=None, viewport_rect=None)[source]

Bases: object

Manages batching of text objects for parallel rendering.

This class organizes text objects into priority batches based on their distance from the viewport center, ensuring that objects closest to the viewport are rendered first for optimal perceived performance.

batch_size

Number of objects per batch

max_batches

Maximum number of batches to create

viewport_center

Current viewport center coordinates

viewport_rect

Current viewport rectangle

priority_thresholds

Distance thresholds for each priority level

Initialize the PriorityBatcher.

Parameters:
  • batch_size – Number of objects per batch (default: 10)

  • max_batches – Maximum number of batches to create (default: 10)

  • viewport_center – Initial viewport center coordinates

  • viewport_rect – Initial viewport rectangle

update_viewport(viewport_center, viewport_rect)[source]

Update the viewport information.

Parameters:
  • viewport_center – New viewport center coordinates

  • viewport_rect – New viewport rectangle

add_objects(objects)[source]

Add objects to be batched.

Parameters:

objects – List of objects (typically StringMediaObjects)

clear_objects()[source]

Clear all objects from the batcher.

calculate_distance(obj)[source]

Calculate distance from object to viewport center.

Parameters:

obj – Object with x, y attributes

Returns:

Euclidean distance to viewport center

get_priority(distance)[source]

Get priority level based on distance.

Parameters:

distance – Distance from viewport center

Returns:

BatchPriority level

is_in_viewport(obj)[source]

Check if object is in current viewport.

Parameters:

obj – Object with position and size attributes

Returns:

True if object intersects viewport, False otherwise

create_batches()[source]

Create priority-based batches of objects.

Returns:

List of batches, each batch is a list of PrioritizedObject

get_batch_metadata()[source]

Get metadata for all batches.

Returns:

List of metadata dictionaries for each batch

get_object_count()[source]

Get total number of objects in batcher.

Returns:

Number of objects

get_visible_object_count()[source]

Get number of objects currently in viewport.

Returns:

Number of objects in viewport

get_cache_hit_rate()[source]

Get cache hit rate for layout data.

Returns:

Cache hit rate as float between 0 and 1

update_layout_cache(index, layout_data)[source]

Update layout cache for an object.

Parameters:
  • index – Object index

  • layout_data – Pre-calculated layout data

get_layout_cache(index)[source]

Get layout data from cache.

Parameters:

index – Object index

Returns:

TextLayoutData if cached, None otherwise

clear_layout_cache()[source]

Clear all layout cache.

invalidate_cache_for_object(index)[source]

Invalidate cache for specific object.

Parameters:

index – Object index

get_statistics()[source]

Get statistics about current batching state.

Returns:

Dictionary with statistics

See Also

  • zooui/objects/scene/scene - Scene management

  • zooui/objects/scene/qzui - QZUI rendering widget