Skip to content

Commit 9abe236

Browse files
Polygon buffer also shrinks when it can (#958)
* Polygon buffer also shrinks when it can. * fix for zero * remove unused import --------- Co-authored-by: kushalkolar <kushalkolar@gmail.com>
1 parent 7b4c687 commit 9abe236

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

examples/guis/sine_cosine_funcs.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
# test_example = false
1010
# sphinx_gallery_pygfx_docs = 'screenshot'
1111

12-
import glfw
1312
import numpy as np
1413
import fastplotlib as fpl
1514
from fastplotlib.ui import EdgeWindow

fastplotlib/graphics/features/_selection_features.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -416,12 +416,14 @@ def set_value(self, selector, value: Sequence[tuple[float]]):
416416

417417
geometry = selector.geometry
418418

419-
# Need larger buffer?
420-
if len(value) > geometry.positions.nitems:
421-
arr = np.zeros((geometry.positions.nitems * 2, 3), np.float32)
419+
# Need larger (or smaller) buffer? Scale up/down with factors of 2.
420+
need_position_size = 2 ** int(np.ceil(np.log2(max(8, len(value)))))
421+
if need_position_size != geometry.positions.nitems:
422+
arr = np.zeros((need_position_size, 3), np.float32)
422423
geometry.positions = gfx.Buffer(arr)
423-
if len(indices) > geometry.indices.nitems:
424-
arr = np.zeros((geometry.indices.nitems * 2, 3), np.int32)
424+
need_indices_size = 2 ** int(np.ceil(np.log2(max(8, len(indices)))))
425+
if need_indices_size != geometry.indices.nitems:
426+
arr = np.zeros((need_indices_size, 3), np.int32)
425427
geometry.indices = gfx.Buffer(arr)
426428

427429
geometry.positions.data[: len(value)] = value

0 commit comments

Comments
 (0)