- Removed legacy push constant structures and functions for better clarity and maintainability.
- Introduced new `text_push_constants_t` structure for text rendering with optimized layout.
- Implemented dual stage push constant analysis to support separate layouts for vertex and fragment shaders.
- Added functions to generate push constant structures and fill functions based on shader reflection.
- Enhanced static checks for push constant layouts to ensure compatibility and correctness.
- Updated templates to accommodate new dual stage push constant generation.
- Added support detection for procedural vertex shaders based on push constant layout.
- Removed the existing procedural_shader_widget.h file and re-added it with minor adjustments.
- Introduced new blur_widget.h for Gaussian blur effects with customizable parameters.
- Added chromatic_aberration_widget.h to implement chromatic aberration effects.
- Created color_adjust_widget.h for color adjustments including brightness, contrast, saturation, and gamma.
- Implemented color_tint_widget.h for tint mapping effects with various blending modes.
- Added noise_widget.h for film grain noise effects, supporting static and animated modes.
- Introduced vignette_widget.h for vignette effects with adjustable radius, softness, and tint color.
- Created effects.h to consolidate all new effect widgets for easier inclusion.
- Removed debug output statements from render_tree_executor.cpp to clean up the code.
- Updated custom_shader_widget_renderer.cpp to prevent placeholder allocation for uniform buffers, ensuring correct descriptor updates.
- Simplified effect rectangle setting in custom_shader_widget_base.cpp by removing debug outputs.
- Adjusted descriptor binding logic in post_process_shader_widget.h for clarity and consistency.
- Introduced a comprehensive design document for dynamic descriptor layout creation, addressing existing limitations and outlining a new architecture for descriptor management.
- Removed references to `post_effect_applicator` from `render_tree_executor.h`, `shared_render_resources.cpp`, and `shared_render_resources.h`.
- Eliminated `post_effect_command_t` and related functions from `render_collector.cpp` and `render_collector.h`.
- Deleted `post_process.h` and its associated implementation, simplifying the widget structure.
- Updated custom shader widgets to reflect changes in effect handling.
- Adjusted various widget classes to remove unused intrinsic size methods.
- Enhanced shader generation templates to include push constant base member information for better validation.
- Added a new atomic cache versioning system to track glyph updates in glyph_cache.
- Introduced methods to check for pending glyph tasks and retrieve the current cache version.
- Improved text shaping logic to estimate glyph advances for unready glyphs, ensuring smoother rendering.
- Refactored render_thread to focus on a single target window for rendering, enhancing performance.
- Updated thread_coordinator to manage window IDs and ensure proper rendering context.
- Implemented a new tooltip management system using render_window for better rendering control.
- Enhanced tooltip display logic to dynamically create and resize tooltip windows based on content.
- Added functionality to pre-request glyphs for tooltips to ensure they are ready when displayed.
- Improved window management with additional methods for setting position, resizing, and visibility checks.
- Added tooltip_manager class to manage tooltip display and hiding with delay.
- Introduced tooltip_window_widget for rendering tooltips in a floating window.
- Created tooltip_types.h for tooltip configuration and position enums.
- Implemented padding_wrapper for inner padding in tooltip content.
- Added methods for showing tooltips near widgets and at specific screen positions.
- Integrated content management for tooltips, including text and custom widgets.
- Enhanced layout and rendering logic for tooltip windows.
- Added `text_model` class to manage text content and selection state, supporting UTF-32 storage for accurate character-level operations.
- Implemented UTF-8 to UTF-32 conversion functions for seamless text input.
- Introduced `text_selection` class to represent selection ranges using anchor/focus model.
- Added methods for text insertion, deletion, and selection management, including word boundary detection.
- Implemented maximum length constraints for text input.
- Provided callback mechanism for text change notifications.
- Merged event_target functionality into widget_base to simplify class hierarchy and reduce complexity.
- Updated focus_manager, ime_manager, shortcut_manager, and widget_event_router to use widget_base instead of event_target.
- Removed redundant event_target inheritance from various widget classes, including overlay and scrollbar.
- Ensured proper event bubbling and visibility management by utilizing widget_base's parent pointer.
- Cleaned up related documentation and updated method signatures across the codebase.
- Updated v_stack.h to use threading::main_property for spacing management, ensuring automatic dirty marking on changes.
- Enhanced render_collector.h with threading::thread_bound for thread safety, added documentation for thread usage.
- Modified widget_state.h to include previous_aabb for dirty region calculations.
- Implemented update_previous_aabb method in widget_state_store to track previous AABB for widgets.
- Refactored viewport_cache to utilize threading::main_property for caching and visibility management.
- Updated widget_base.h to use threading::main_property for widget attributes, ensuring thread-safe access.
- Enhanced widget_context.h with threading::property for managing state changes.
- Refactored imager and scrollbar widgets to utilize new property management for state consistency.
- Added comprehensive documentation for thread safety and usage across the widget framework.
- Introduced `thread_bound` class for binding data to specific threads with compile-time and runtime safety checks.
- Added `thread_context` for managing and verifying thread identities using thread-local storage.
- Developed `thread_dispatcher` to facilitate task scheduling across different threads, including main, layout, and render threads.
- Defined thread tags (`main_thread_tag`, `layout_thread_tag`, `render_thread_tag`, `any_thread_tag`) for type-safe thread identification.
- Created `version_manager` and `version_tracker` for tracking and managing versioning of data sources, enabling efficient change detection and updates.
- Enhanced documentation with usage examples for each component, promoting ease of integration and understanding of the threading framework.
- Removed `render_tree_builder` and `render_tree_integration` test directories and their associated CMakeLists and source files.
- Updated `CMakeLists.txt` to exclude the removed test directories.
- Modified buffer creation templates to include `vk::Result` in expected return types for better error handling.
- Added scroll_box class to manage scrolling of content exceeding viewport size.
- Introduced scroll_state class to encapsulate scrolling state and calculations.
- Created scrollbar_manager class to handle scrollbar creation, layout, and updates.
- Developed smooth_scroll_animator class for smooth scrolling animations with easing functions.
- Enhanced child widget management using slots and improved event handling.
- Utilized C++23 features for better code structure and readability.
- Implemented various scrolling modes: vertical, horizontal, and both.
- Added methods for setting scroll offsets, scrolling to specific positions, and querying scroll properties.
- Implemented binary search optimization for rendering commands in HStack and VStack to improve performance when rendering child widgets.
- Enhanced ScrollBox to only tick child widgets that are within the viewport, reducing unnecessary updates.
- Introduced a viewport cache to manage visibility states of widgets, allowing for efficient visibility checks and updates.
- Updated dirty state management in widget states to use a more structured approach with a new dirty_state enum, improving clarity and functionality.
- Added methods to invalidate and manage viewport cache, ensuring that visibility states are accurately maintained during layout changes.
- Marked widgets for re-rendering when their properties change, ensuring visual updates are reflected correctly.
- Added `scrollbar` class to support both vertical and horizontal scrolling.
- Implemented measurement and arrangement logic for scrollbar dimensions.
- Created rendering commands for track and thumb, including hover and active states.
- Added mouse event handling for dragging the thumb and updating scroll values.
- Introduced style configuration for scrollbar appearance, including colors and dimensions.
- Added methods to set scroll range, current value, viewport size, and content size.
- Implemented visibility strategies for the scrollbar (always, auto-hide, never).
- Changed visibility checks to renderable checks in various widget classes to improve rendering logic.
- Added a debug mode in post_effect_applicator to visualize widget boundaries with red rectangles.
- Implemented a new scroll_box widget to support scrolling functionality for overflowing content.
- Enhanced render_collector with a method to submit debug rectangles for visual debugging.
- Updated widget_base to manage renderable state instead of visibility.
- Refactored related widget classes to utilize the new renderable state for rendering decisions.
- Introduced `stencil_mask_renderer` class to handle stencil masking operations.
- Implemented initialization, cleanup, and frame management methods.
- Added shader modules for stencil mask vertex and fragment shaders.
- Created pipelines for stencil writing and clearing.
- Enhanced existing layout and container helper functions to support new stretch-aware modifiers.
- Updated relevant files to integrate the new stencil mask renderer into the rendering pipeline.
- Refactored modifier traits to simplify stretch modifier checks.
- Removed the MASK_WIDGET_DESIGN.md documentation file as it is no longer needed.
- Updated the example pipeline to modify the corner radius of the rounded rectangle mask.
- Enhanced the mask renderer to correctly calculate UV coordinates based on viewport size for better rendering accuracy.
- Changed the get_mask_params method in circle_mask, rect_mask, and rounded_rect_mask to accept bounds by reference for efficiency.
- Adjusted the mask factory function to ensure correct parameter order.
- Refactored corner_radius method in rounded_rect_mask to accept a rect_corner_radius structure for more flexible corner radius settings.