# Programmation avec la SDL/Récapitulatif des fonctions de la SDL

Voici un récapitulatif des fonctions étudiées dans ce livre.

## Initialisation

Fonctions d'initialisation :
| Objectif | Prototype |
| Initialiser la SDL | int SDL_Init(Uint32 flags); |
| Initialiser le sous-système vidéo | SDL_VideoInit(NULL); |
| Initialiser un ou plusieurs sous-systèmes après la première initialisation | int SDL_InitSubSystem(Uint32 flags); |
| Quitter la SDL | SDL_Quit(NULL); |
| Quitter le sous-système vidéo | SDL_VideoQuit; |
| Quitter un ou plusieurs sous-systèmes | int SDL_QuitSubSystem(Uint32 flags); |

## Gestion des erreurs

Fonctions de gestion des erreurs :
| Objectif | Prototype |
| Récupérer la dernière erreur répertoriée par la SDL | char* SDL_GetError(void); |

## Les fenêtres

Fonctions de gestion des fenêtres :
| Objectif | Prototype |
| Créer une fenêtre. | SDL_Window* SDL_CreateWindow(const char* title, int x, int y, int w, int h, Uint32 flags); |
| Détruire une fenêtre. | void SDL_DestroyWindow(SDL_Window* window); |
| Donner un titre à la fenêtre. | void SDL_SetWindowTitle(SDL_Window* window , const char* title); |
| Récupérer le titre de la fenêtre. | const char* SDL_GetWindowTitle(SDL_Window* window); |
| Ajouter une icone à la fenêtre. | void SDL_SetWindowIcon(SDL_Window* window , SDL_Surface* icon); |
| Changer la position de la fenêtre. | void SDL_SetWindowPosition(SDL_Window* window , int x, int y); |
| Récupérer la position de la fenêtre. | void SDL_GetWindowPosition(SDL_Window* window , int* x, int* y); |
| Changer la taille de la fenêtre. | void SDL_SetWindowSize(SDL_Window* window , int w , int h); |
| Récupérer la taille de la fenêtre. | void SDL_GetWindowSize(SDL_Window* window , int* w , int* h); |
| Agrandir. | void SDL_MaximizeWindow(SDL_Window* window); |
| Réduire. | void SDL_MinimizeWindow(SDL_Window* window); |
| Restaurer. | void SDL_RestoreWindow(SDL_Window* window); |
| Passer en mode plein écran ou en mode normal. | int SDL_SetWindowFullscreen(SDL_Window* window , SDL_bool fullscreen); |
| Définir la luminosité de la fenêtre. | int SDL_SetWindowBrightness(SDL_Window* window, float luminosite); |
| Récupérer la luminosité de la fenêtre. | float SDL_GetWindowBrightness(SDL_Window* window); |
| Récupérer l'ID d'une fenêtre. | Uint32 SDL_GetWindowID(SDL_Window* window); |
| Récupérer une fenêtre à partir de son ID. | SDL_Window* SDL_GetWindowFromID(Uint32 id); |

## Le renderer

Fonction de gestion du renderer :
| Objectif | Prototype |
| Créer un renderer. | SDL_Renderer* SDL_CreateRenderer(SDL_Window* window, int index , Uint32 flags); |
| Créer un renderer et une fenêtre | SDL_CreateWindowAndRenderer(int largeur, int hauteur, Uint32 window_flags, SDL_Window **window, SDL_Renderer **renderer); |
| Détruire un renderer. | void SDL_DestroyRenderer(SDL_Renderer* renderer); |
| Faire un rendu. | void SDL_RenderPresent(SDL_Renderer* renderer); |
| Récupérer le renderer associé à une fenêtre. | SDL_Renderer* SDL_GetRenderer(SDL_Window* window); |
| Récupérer des informations à propos d'un renderer. | int SDL_GetRendererInfo(SDL_Renderer* renderer ,SDL_RendererInfo* info); |
| Changer la couleur de dessin. | int SDL_SetRenderDrawColor(SDL_Renderer* renderer, Uint8 r, Uint8 g , Uint8 b , Uint8 a); |
| Récupérer la couleur de dessin. | int SDL_GetRenderDrawColor(SDL_Renderer* renderer, Uint8* r, Uint8* g, Uint8* b, Uint8* a); |
| Dessiner un point. | int SDL_RenderDrawPoint(SDL_Renderer* renderer, int x , int y); |
| Dessiner un ou plusieurs points. | int SDL_RenderDrawPoints(SDL_Renderer* renderer, const SDL_Point* points, int nombre_de_points); |
| Tracer un segment. | int SDL_RenderDrawLine(SDL_Renderer* renderer, int x1 , int y1 , int x2 , int y2); |
| Tracer un chemin. | int SDL_RenderDrawLines(SDL_Renderer* renderer, const SDL_Point* points, int nombre_de_points); |
| Tracer un rectangle. | int SDL_RenderDrawRect(SDL_Renderer* renderer, const SDL_Rect* rect); |
| Tracer un ou plusieurs rectangles. | int SDL_RenderDrawRects(SDL_Renderer* renderer, const SDL_Rect* rect, int nombre_de_rectangle); |
| Remplir un rectangle. | int SDL_RenderFillRect(SDL_Renderer* renderer, const SDL_Rect* rect); |
| Remplir un ou plusieurs rectangles. | int SDL_RenderFillRects(SDL_Renderer* renderer, const SDL_Rect* rect, int nombre_de_rectangle); |
| Délimiter une zone de travail. | int SDL_RenderSetViewport(SDL_Renderer* renderer, const SDL_Rect* rect); |
| Récupérer le rectangle représentant la zone de travail. | void SDL_RenderGetViewport(SDL_Renderer* renderer, const SDL_Rect* rect); |

## Les textures

Fonction de gestion des textures :
| Objectif | Prototype |
| Créer une texture | SDL_Texture* SDL_CreateTexture(SDL_Renderer* renderer, Uint32 format, int access, int largeur, int hauteur); Format : SDL_PIXELFORMAT_RGBA8888 Access : SDL_TEXTUREACCESS_TARGET |
| Changer la texture affectée par les modifications | int SDL_SetRenderTarget(SDL_Renderer* renderer, SDL_Texture* texture); envoyer NULL à l'argument texture pour revenir au renderer |
| Récupérer la texture affectée par les modifications | SDL_Texture* SDL_GetRenderTarget(SDL_Renderer* renderer); |
| Récupérer des informations sur la texture | int SDL_QueryTexture(SDL_Texture* texture, Uint32* format, int* access, int* w, int* h) |
| Afficher une texture | int SDL_RenderCopy(SDL_Renderer* renderer , SDL_Texture* texture , const SDL_Rect* srcrect , const SDL_Rect* dstrect); |