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:
EnumPriority 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:
objectWrapper 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:
objectManages 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)
- 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_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
See Also¶
zooui/objects/scene/scene - Scene management
zooui/objects/scene/qzui - QZUI rendering widget