McRogueFace/src
John McCardle 68f8349fe8 feat: Implement texture caching system with dirty flag optimization (closes #144)
- Add cache_subtree property on Frame for opt-in RenderTexture caching
- Add PyTexture::from_rendered() factory for runtime texture creation
- Add snapshot= parameter to Sprite for creating sprites from Frame content
- Implement content_dirty vs composite_dirty distinction:
  - markContentDirty(): content changed, invalidate self and ancestors
  - markCompositeDirty(): position changed, ancestors need recomposite only
- Update all UIDrawable position setters to use markCompositeDirty()
- Add quick exit workaround for cleanup segfaults

Benchmark: deep_nesting_cached is 3.7x faster (0.09ms vs 0.35ms)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:30:24 -05:00
..
scripts refactor: Rename click property to on_click (closes #139) 2025-11-27 22:31:53 -05:00
ActionCode.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Animation.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Animation.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
BenchmarkLogger.cpp feat: Add work_time_ms to benchmark logging for load analysis 2025-11-28 16:13:40 -05:00
BenchmarkLogger.h feat: Add work_time_ms to benchmark logging for load analysis 2025-11-28 16:13:40 -05:00
CommandLineParser.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
CommandLineParser.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Common.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
GameEngine.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
GameEngine.h feat: Add work_time_ms to benchmark logging for load analysis 2025-11-28 16:13:40 -05:00
HeadlessRenderer.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
HeadlessRenderer.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ImGuiConsole.cpp feat: Add ImGui-based developer console overlay 2025-11-26 20:03:58 -05:00
ImGuiConsole.h feat: Add ImGui-based developer console overlay 2025-11-26 20:03:58 -05:00
IndexTexture.cpp Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
IndexTexture.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
McRFPy_API.cpp feat: Add benchmark logging system for performance analysis (closes #104) 2025-11-28 16:05:55 -05:00
McRFPy_API.h feat: Add benchmark logging system for performance analysis (closes #104) 2025-11-28 16:05:55 -05:00
McRFPy_Automation.cpp feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
McRFPy_Automation.h feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
McRFPy_Doc.h feat: add documentation macro system header 2025-10-30 11:16:44 -04:00
McRFPy_Libtcod.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
McRFPy_Libtcod.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
McRogueFaceConfig.h feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Profiler.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
Profiler.h feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
ProfilerOverlay.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
PyAnimation.cpp docs: convert Phase 2 classes to documentation macros (Animation, Window, SceneObject) 2025-10-30 17:03:28 -04:00
PyAnimation.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyCallable.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
PyCallable.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyColor.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
PyColor.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyDrawable.cpp refactor: Rename click property to on_click (closes #139) 2025-11-27 22:31:53 -05:00
PyDrawable.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyFont.cpp docs: convert Phase 1 classes to documentation macros (Color, Font, Texture, Timer) 2025-10-30 16:59:40 -04:00
PyFont.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyObjectUtils.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyPositionHelper.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyRAII.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyScene.cpp feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
PyScene.h feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
PySceneObject.cpp feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
PySceneObject.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyTexture.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
PyTexture.h feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
PyTimer.cpp docs: convert Phase 1 classes to documentation macros (Color, Font, Texture, Timer) 2025-10-30 16:59:40 -04:00
PyTimer.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyVector.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
PyVector.h feat: Add Vector convenience features - indexing, tuple comparison, floor 2025-11-26 09:37:14 -05:00
PyWindow.cpp docs: convert Phase 2 classes to documentation macros (Animation, Window, SceneObject) 2025-10-30 17:03:28 -04:00
PyWindow.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PythonObjectCache.cpp Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PythonObjectCache.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
Resources.cpp Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Resources.h Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Scene.cpp feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
Scene.h feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
SceneTransition.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
SceneTransition.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
Timer.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Timer.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UI.h Squashed commit of the following: [break_up_ui_h] 2024-04-20 10:32:04 -04:00
UIArc.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIArc.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UIBase.h feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
UICaption.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UICaption.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UICircle.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UICircle.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UICollection.cpp feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
UICollection.h fix: Make UICollection/EntityCollection match Python list semantics 2025-11-26 08:08:43 -05:00
UIContainerBase.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIDrawable.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIDrawable.h feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIEntity.cpp feat: Add dirty flag propagation to all UIDrawables and expand metrics API (#144, #104) 2025-11-28 15:44:09 -05:00
UIEntity.h feat: Add entity.grid property and fix auto-removal bug 2025-11-27 21:08:31 -05:00
UIEntityPyMethods.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIFrame.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIFrame.h feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIGrid.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UIGrid.h feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
UIGridPoint.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIGridPoint.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UILine.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UILine.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UISprite.cpp feat: Implement texture caching system with dirty flag optimization (closes #144) 2025-11-28 19:30:24 -05:00
UISprite.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UITestScene.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UITestScene.h Refactor: remove "s" prefix from "sRender" method ( -> "render") Closes #44 2024-04-20 14:16:14 -04:00
main.cpp Merge branch 'origin/master' - combine double-execution fixes 2025-11-26 18:03:15 -05:00