#pragma once #include "foundation/result.h" #include namespace pp::paint { constexpr float min_brush_size = 0.1F; constexpr float max_brush_size = 4096.0F; constexpr float min_brush_spacing = 0.01F; constexpr float max_brush_spacing = 16.0F; constexpr float max_brush_angle_degrees = 360.0F; struct BrushParams { float size = 32.0F; float spacing = 0.25F; float opacity = 1.0F; float flow = 1.0F; float angle_degrees = 0.0F; float size_jitter = 0.0F; float opacity_jitter = 0.0F; bool pressure_controls_size = true; bool pressure_controls_opacity = false; }; struct BrushStamp { float size = 0.0F; float opacity = 0.0F; float flow = 0.0F; float angle_degrees = 0.0F; }; [[nodiscard]] pp::foundation::Status validate_brush_params(const BrushParams& params) noexcept; [[nodiscard]] BrushStamp evaluate_brush_stamp(const BrushParams& params, float pressure) noexcept; }