# Generated by scripts/generate_pyi.py, do not edit.

from typing import Any, Callable

import renpy

import builtins as __builtins__

class Matrix:
    def __init__(self, /, *args, **kwargs): ...

    def __eq__(self, value, /): ...

    def __ge__(self, value, /): ...

    def __getstate__(self): ...

    def __gt__(self, value, /): ...

    def __le__(self, value, /): ...

    def __lt__(self, value, /): ...

    def __ne__(self, value, /): ...

    def __repr__(self, /): ...

    def __rmul__(self, value, /): ...

    def __setstate__(self, state): ...

    @staticmethod
    def identity(): ...

    def inverse(self) -> 'Matrix': ...

    def is_2d_null(self): ...

    def is_unit_aligned(self) -> bool: ...

    @staticmethod
    def offset(x, y, z): ...

    @staticmethod
    def perspective(w, h, n, p, f): ...

    @staticmethod
    def rotate(x, y, z): ...

    @staticmethod
    def scale(x, y, z): ...

    @staticmethod
    def screen_projection(w, h): ...

    def take(self, other: 'Matrix'): ...

    @staticmethod
    def texture_projection(w, h): ...

    def transform(self, x: float, y: float, z: float=0.0, w: float=1.0, components: int=2): ...

    def transpose(self) -> 'Matrix': ...

    xdx: float
    ydx: float
    zdx: float
    wdx: float
    xdy: float
    ydy: float
    zdy: float
    wdy: float
    xdz: float
    ydz: float
    zdz: float
    wdz: float
    xdw: float
    ydw: float
    zdw: float
    wdw: float

class Matrix2D(Matrix):
    def __init__(self, /, *args, **kwargs): ...

    xdx: float
    ydx: float
    zdx: float
    wdx: float
    xdy: float
    ydy: float
    zdy: float
    wdy: float
    xdz: float
    ydz: float
    zdz: float
    wdz: float
    xdw: float
    ydw: float
    zdw: float
    wdw: float

def identity_matrix() -> 'Matrix': ...

def offset_matrix(x: float, y: float, z: float) -> 'Matrix': ...

def perspective_matrix(w: float, h: float, n: float, p: float, f: float) -> 'Matrix': ...

def rotate_matrix(x: float, y: float, z: float) -> 'Matrix': ...

def scale_matrix(x: float, y: float, z: float) -> 'Matrix': ...

def screen_projection_matrix(w: float, h: float) -> 'Matrix': ...

def texture_projection_matrix(w: float, h: float) -> 'Matrix': ...

