42 lines
1.5 KiB
C++
42 lines
1.5 KiB
C++
// shape_renderer.hpp - Renderizado de formes vectorials
|
|
// © 2026 JailDesigner
|
|
|
|
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <memory>
|
|
|
|
#include "core/graphics/shape.hpp"
|
|
#include "core/rendering/render_context.hpp"
|
|
#include "core/types.hpp"
|
|
|
|
namespace Rendering {
|
|
|
|
// Renderizar shape con transformacions
|
|
// - renderer: SDL renderer
|
|
// - shape: shape vectorial a draw
|
|
// - position: posición del centro en coordenades mundials
|
|
// - angle: rotación en radians (0 = amunt, sentit horari)
|
|
// - scale: factor de scale (1.0 = mida original)
|
|
// - progress: progrés de l'animación (0.0-1.0, default 1.0 = tot visible)
|
|
// - brightness: factor de brightness (0.0-1.0, default 1.0 = màxima brightness)
|
|
// - color: si alpha==0, usa oscil·lador global
|
|
// - thickness: gruix de línia. <=0 → usa global (g_current_line_thickness)
|
|
// - alpha: alpha que arriba al GPU (default 1.0 = opac). <1.0 = halo real
|
|
// - glow: si true, redibuixa la shape amb halos translúcids proporcionals
|
|
// al bounding_radius*scale (efecte neon). Si false, single-pass.
|
|
void renderShape(Rendering::Renderer* renderer,
|
|
const std::shared_ptr<Graphics::Shape>& shape,
|
|
const Vec2& position,
|
|
float angle,
|
|
float scale = 1.0F,
|
|
float progress = 1.0F,
|
|
float brightness = 1.0F,
|
|
SDL_Color color = {0, 0, 0, 0},
|
|
float thickness = 0.0F,
|
|
float alpha = 1.0F,
|
|
bool glow = true);
|
|
|
|
} // namespace Rendering
|