Abstract base class for all renderers in LunaEngine.
All drawing operations are defined here; concrete implementations
(e.g., OpenGLRenderer, PygameRenderer) must implement these methods.
camera_position: pygame.math.Vector2 = pygame.math.Vector2(0, 0)
on_max_particles_change: List[Callable[[int], None]] = []
def max_particles(self: Any) -> int
def max_particles(self: Any, value: int) -> None
def initialize(self: Any) -> bool
def begin_frame(self: Any) -> None
def end_frame(self: Any) -> None
def get_surface(self: Any) -> pygame.Surface
def set_surface(self: Any, surface: Optional[pygame.Surface]) -> None
def draw_rect(self: Any, x: Union[int, float], y: Union[int, float], width: Union[int, float], height: Union[int, float], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], fill: bool = True, pivot: Tuple[float, float] = (0.0, 0.0), border_width: int = 1, surface: Optional[pygame.Surface] = None, corner_radius: Union[int, float, Tuple[int, int, int, int], Tuple[float, float, float, float]] = 0, border_color: Optional[Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle']] = None) -> None
def draw_isosceles_triangle(self: Any, x: Union[int, float], y: Union[int, float], width: Union[int, float], height: Union[int, float], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], fill: bool = True, border_width: int = 1, border_color: Optional[Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle']] = None) -> None
def draw_equilateral_triangle(self: Any, x: Union[int, float], y: Union[int, float], width: Union[int, float], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], fill: bool = True, border_width: int = 1, border_color: Optional[Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle']] = None) -> None
def draw_circle(self: Any, center_x: Union[int, float], center_y: Union[int, float], radius: Union[int, float], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], fill: bool = True, border_width: int = 1, surface: Optional[pygame.Surface] = None, pivot: Tuple[float, float] = (0.5, 0.5)) -> None
def draw_line(self: Any, start_x: Union[int, float], start_y: Union[int, float], end_x: Union[int, float], end_y: Union[int, float], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], width: int = 2, surface: Optional[pygame.Surface] = None) -> None
def draw_lines(self: Any, points: List[Tuple[Tuple[int, int], Tuple[int, int]]], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], width: int = 2, surface: Optional[pygame.Surface] = None) -> None
def draw_polygon(self: Any, points: List[Tuple[float, float]], color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], fill: bool = True, border_width: int = 1, surface: Optional[pygame.Surface] = None, pivot: Tuple[float, float] = (0.0, 0.0)) -> None
def draw_text(self: Any, text: str, x: int, y: int, color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], font: pygame.font.Font, surface: Optional[pygame.Surface] = None, pivot: Tuple[float, float] = (0.0, 0.0), flip: Tuple[bool, bool] = (False, False), rotate: float = 0.0, *args: tuple, **kwargs: dict) -> None
def draw_rich_text(self: Any, text: str, x: int, y: int, default_color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], font: pygame.font.Font, surface: Optional[pygame.Surface] = None, pivot: Tuple[float, float] = (0.0, 0.0), **kwargs: dict) -> None
def draw_rich_text_line(self: Any, line: List['RichTextSegment'], x: int, y: int, default_color: Union[Tuple[int, int, int, float], Tuple[int, int, int], Color, Tuple[float, float, float, float], 'ThemeStyle'], font: pygame.font.Font, surface: Optional[pygame.Surface] = None) -> None
def draw_surface(self: Any, surface: pygame.Surface, x: int, y: int) -> None
def blit(self: Any, source: pygame.Surface, dest: Union[Tuple[int, int], pygame.Rect], area: Optional[pygame.Rect] = None, special_flags: int = 0, pivot: Tuple[float, float] = (0.0, 0.0)) -> None
def fill_screen(self: Any, color: Union[Tuple[int, int, int, float], Tuple[int, int, int]]) -> None
def clear(self: Any) -> None
def render_particles(self: Any, particle_data: Dict[str, Any], camera: Any) -> None
def enable_scissor(self: Any, x: Union[int, float], y: Union[int, float], width: Union[int, float], height: Union[int, float]) -> None
def disable_scissor(self: Any) -> None
def add_filter(self: Any, filter_obj: Filter) -> None
def remove_filter(self: Any, filter_obj: Filter) -> None
def clear_filters(self: Any) -> None
def create_quick_filter(self: Any, filter_type: FilterType, intensity: float = 1.0, x: float = 0, y: float = 0, width: Optional[float] = None, height: Optional[float] = None, radius: float = 50.0, feather: float = 10.0) -> Filter
def apply_vignette(self: Any, intensity: float = 0.7, feather: float = 100.0) -> Filter
def apply_blur(self: Any, intensity: float = 0.5, x: float = 0, y: float = 0, width: Optional[float] = None, height: Optional[float] = None) -> Filter
def apply_sepia(self: Any, intensity: float = 1.0) -> Filter
def apply_grayscale(self: Any, intensity: float = 1.0) -> Filter
def apply_invert(self: Any, intensity: float = 1.0) -> Filter
def apply_warm_temperature(self: Any, intensity: float = 0.5) -> Filter
def apply_cold_temperature(self: Any, intensity: float = 0.5) -> Filter
def apply_night_vision(self: Any, intensity: float = 0.9) -> Filter
def apply_crt_effect(self: Any, intensity: float = 0.8) -> Filter
def apply_pixelate(self: Any, intensity: float = 0.7) -> Filter
def apply_bloom(self: Any, intensity: float = 0.5) -> Filter
def apply_edge_detect(self: Any, intensity: float = 0.8) -> Filter
def apply_emboss(self: Any, intensity: float = 0.7) -> Filter
def apply_sharpen(self: Any, intensity: float = 0.5) -> Filter
def apply_posterize(self: Any, intensity: float = 0.6) -> Filter
def apply_neon(self: Any, intensity: float = 0.7) -> Filter
def apply_radial_blur(self: Any, intensity: float = 0.5) -> Filter
def apply_fisheye(self: Any, intensity: float = 0.4) -> Filter
def apply_twirl(self: Any, intensity: float = 0.3) -> Filter
def apply_circular_grayscale(self: Any, center_x: float, center_y: float, radius: float = 100.0, intensity: float = 1.0) -> Filter
def apply_rectangular_blur(self: Any, x: float, y: float, width: float, height: float, intensity: float = 0.5) -> Filter
def set_blend_mode(self: Any, mode: str) -> None
def set_text_cache_timeout(self: Any, seconds: float) -> None
def get_cache_usage(self: Any, target: str = 'all', humanize: bool = False) -> Union[float, Dict[str, float]]
def cleanup(self: Any) -> None
def resize(self: Any, surface: pygame.Surface, width: int, height: int) -> pygame.Surface
def scale(self: Any, surface: pygame.Surface, width: float, height: float) -> pygame.Surface