# {py:mod}`simvx.graphics.render2d.cache` ```{py:module} simvx.graphics.render2d.cache ``` ```{autodoc2-docstring} simvx.graphics.render2d.cache :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ViewState ` - ```{autodoc2-docstring} simvx.graphics.render2d.cache.ViewState :summary: ``` * - {py:obj}`RenderItemCache ` - ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.render2d.cache.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.graphics.render2d.cache.__all__ :value: > ['RenderItemCache', 'ViewState'] ```{autodoc2-docstring} simvx.graphics.render2d.cache.__all__ ``` ```` `````{py:class} ViewState(*, offset: tuple[float, float] = (0.0, 0.0), zoom: tuple[float, float] = (1.0, 1.0), rotation: float = 0.0, viewport: tuple[int, int] = (0, 0)) :canonical: simvx.graphics.render2d.cache.ViewState ```{autodoc2-docstring} simvx.graphics.render2d.cache.ViewState ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.render2d.cache.ViewState.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.graphics.render2d.cache.ViewState.__slots__ :value: > ('offset', 'zoom', 'rotation', 'viewport') ```{autodoc2-docstring} simvx.graphics.render2d.cache.ViewState.__slots__ ``` ```` ````{py:method} __eq__(other: object) -> bool :canonical: simvx.graphics.render2d.cache.ViewState.__eq__ ```` ````{py:method} __hash__() -> int :canonical: simvx.graphics.render2d.cache.ViewState.__hash__ ```` ````{py:method} __repr__() -> str :canonical: simvx.graphics.render2d.cache.ViewState.__repr__ ```` ````` `````{py:class} RenderItemCache(*, builder_factory: collections.abc.Callable[[], simvx.graphics.render2d.item_builder.ItemBuilder] = ItemBuilder, dynamic: bool | collections.abc.Callable[[typing.Any], bool] = False, theme_generation: collections.abc.Callable[[], int] | None = None) :canonical: simvx.graphics.render2d.cache.RenderItemCache ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.graphics.render2d.cache.RenderItemCache.__slots__ :value: > ('_builder_factory', '_dynamic', '_cached', '_cached_structure_version', '_cached_view', '_cached_th... ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.__slots__ ``` ```` ````{py:method} mark_dirty() -> None :canonical: simvx.graphics.render2d.cache.RenderItemCache.mark_dirty ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.mark_dirty ``` ```` ````{py:property} dirty :canonical: simvx.graphics.render2d.cache.RenderItemCache.dirty :type: bool ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.dirty ``` ```` ````{py:method} is_dynamic(root: typing.Any) -> bool :canonical: simvx.graphics.render2d.cache.RenderItemCache.is_dynamic ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.is_dynamic ``` ```` ````{py:method} set_dynamic(dynamic: bool | collections.abc.Callable[[typing.Any], bool]) -> None :canonical: simvx.graphics.render2d.cache.RenderItemCache.set_dynamic ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.set_dynamic ``` ```` ````{py:method} frame(root: typing.Any, *, structure_version: int = 0, view: simvx.graphics.render2d.cache.ViewState | None = None, layer: int = 0) -> simvx.graphics.render2d.item_builder.CollectResult :canonical: simvx.graphics.render2d.cache.RenderItemCache.frame ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.frame ``` ```` ````{py:method} invalidate() -> None :canonical: simvx.graphics.render2d.cache.RenderItemCache.invalidate ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.invalidate ``` ```` ````{py:property} cached :canonical: simvx.graphics.render2d.cache.RenderItemCache.cached :type: simvx.graphics.render2d.item_builder.CollectResult | None ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.cached ``` ```` ````{py:property} epoch :canonical: simvx.graphics.render2d.cache.RenderItemCache.epoch :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.epoch ``` ```` ````{py:property} collect_count :canonical: simvx.graphics.render2d.cache.RenderItemCache.collect_count :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.collect_count ``` ```` ````{py:property} patch_count :canonical: simvx.graphics.render2d.cache.RenderItemCache.patch_count :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.patch_count ``` ```` ````{py:property} skip_count :canonical: simvx.graphics.render2d.cache.RenderItemCache.skip_count :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.skip_count ``` ```` ````{py:property} last_skipped :canonical: simvx.graphics.render2d.cache.RenderItemCache.last_skipped :type: bool ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.last_skipped ``` ```` ````{py:property} last_geo_uploads :canonical: simvx.graphics.render2d.cache.RenderItemCache.last_geo_uploads :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.last_geo_uploads ``` ```` ````{py:property} last_transform_writes :canonical: simvx.graphics.render2d.cache.RenderItemCache.last_transform_writes :type: int ```{autodoc2-docstring} simvx.graphics.render2d.cache.RenderItemCache.last_transform_writes ``` ```` `````