view pytouhou/lib/sdl.pxd @ 783:ec1e06402a97

Replace SDL2_mixer with the kira crate
author Link Mauve <linkmauve@linkmauve.fr>
date Fri, 21 Nov 2025 10:21:59 +0100
parents 80687f258001
children f73e8524c045
line wrap: on
line source

# -*- encoding: utf-8 -*-
##
## Copyright (C) 2013 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 3 only.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

from pytouhou.lib._sdl cimport *
cimport pytouhou.lib.gui as gui


cdef SDL_GLattr GL_CONTEXT_MAJOR_VERSION
cdef SDL_GLattr GL_CONTEXT_MINOR_VERSION
cdef SDL_GLattr GL_CONTEXT_PROFILE_MASK
cdef SDL_GLattr GL_DOUBLEBUFFER
cdef SDL_GLattr GL_RED_SIZE
cdef SDL_GLattr GL_GREEN_SIZE
cdef SDL_GLattr GL_BLUE_SIZE
cdef SDL_GLattr GL_DEPTH_SIZE

cdef SDL_GLprofile GL_CONTEXT_PROFILE_CORE
cdef SDL_GLprofile GL_CONTEXT_PROFILE_COMPATIBILITY
cdef SDL_GLprofile GL_CONTEXT_PROFILE_ES

cdef SDL_WindowFlags WINDOWPOS_CENTERED
cdef SDL_WindowFlags WINDOW_OPENGL
cdef SDL_WindowFlags WINDOW_SHOWN
cdef SDL_WindowFlags WINDOW_RESIZABLE

#TODO: should be SDL_Scancode, but Cython doesn’t allow enum for array indexing.
cdef long SCANCODE_Z
cdef long SCANCODE_X
cdef long SCANCODE_P
cdef long SCANCODE_LSHIFT
cdef long SCANCODE_UP
cdef long SCANCODE_DOWN
cdef long SCANCODE_LEFT
cdef long SCANCODE_RIGHT
cdef long SCANCODE_LCTRL
cdef long SCANCODE_ESCAPE
cdef long SCANCODE_HOME

cdef SDL_WindowEventID WINDOWEVENT_RESIZED

cdef SDL_EventType KEYDOWN
cdef SDL_EventType QUIT
cdef SDL_EventType WINDOWEVENT

cdef const Uint8 *keyboard_state


cdef class Window(gui.Window):
    cdef SDL_Window *window
    cdef SDL_GLContext context
    cdef SDL_Renderer *renderer
    cdef bint is_fullscreen

    # The following functions are there for the pure SDL backend.
    cdef bint create_renderer(self, Uint32 flags) except True
    cdef bint render_clear(self) except True
    cdef bint render_copy(self, Texture texture, Rect srcrect, Rect dstrect) except True
    cdef bint render_copy_ex(self, Texture texture, Rect srcrect, Rect dstrect, double angle, bint flip) except True
    cdef bint render_set_clip_rect(self, Rect rect) except True
    cdef bint render_set_viewport(self, Rect rect) except True
    cdef Texture create_texture_from_surface(self, Surface surface)


cdef class Texture:
    cdef SDL_Texture *texture

    cpdef set_color_mod(self, Uint8 r, Uint8 g, Uint8 b)
    cpdef set_alpha_mod(self, Uint8 alpha)
    cpdef set_blend_mode(self, SDL_BlendMode blend_mode)


cdef class Rect:
    cdef SDL_Rect rect


cdef class Color:
    cdef SDL_Color color


cdef class Surface:
    cdef SDL_Surface *surface

    cdef bint blit(self, Surface other) except True
    cdef void set_alpha(self, Surface alpha_surface) nogil


cdef class Font:
    cdef TTF_Font *font

    cdef Surface render(self, unicode text)


cdef bint init(Uint32 flags) except True
cdef bint img_init(int flags) except True
cdef bint ttf_init() except True
cdef bint gl_set_attribute(SDL_GLattr attr, int value) except True
cdef Surface load_png(file_)
cdef Surface create_rgb_surface(int width, int height, int depth, Uint32 rmask=*, Uint32 gmask=*, Uint32 bmask=*, Uint32 amask=*)
cdef Uint32 get_ticks() nogil
cdef void delay(Uint32 ms) nogil
cpdef bint show_simple_message_box(unicode message) except True