sdl2_impl 0.1.0
Vendor SDL2 2.32 : IGraphic2Module / IAudioModule
Loading...
Searching...
No Matches
SdlWindow Class Reference

Une fenetre SDL et son renderer, implemente IWindow2. More...

#include <SdlWindow.hpp>

Inheritance diagram for SdlWindow:
Collaboration diagram for SdlWindow:

Public Member Functions

 SdlWindow (int32_t screenWidth, int32_t screenHeight, std::string title)
 
 ~SdlWindow ()
 
bool isOpen () override
 
void close () override
 
Vector2f getPosition () override
 
void setPosition (Vector2f position) override
 
Vector2f getSize () override
 
void setSize (Vector2f size) override
 
void setFrameLimit (int32_t limit) override
 
void setMouseVisibility (bool visible) override
 Cache ou montre le pointeur SUR CETTE FENETRE.
 
int32_t getDelta () override
 
bool pollEvent () override
 Vide la file SDL une fois, puis rend l'etat de CETTE fenetre.
 
void eventClose () override
 
void beginDraw () override
 
void endDraw () override
 
void drawPoly (graphic::IPolygon *polygon) override
 
void drawSprite (graphic::ISprite *sprite) override
 
void drawText (graphic::IText *text) override
 

Friends

class SdlKeyboard
 
class SdlMouse
 
class SdlGamepad
 

Detailed Description

Une fenetre SDL et son renderer, implemente IWindow2.

SDL n'a PAS de file par fenetre : SDL_PollEvent vide une file unique pour tout le processus. Une borne et un jeu qui appelleraient chacun SDL_PollEvent se voleraient donc les evenements de l'autre, et le premier servi gagnerait.

D'ou pump() : UNE lecture de la file SDL, et chaque evenement est range dans la fenetre que son windowID designe. Ceux qui n'en ont pas - SDL_QUIT, la manette - vont a tout le monde. Chaque fenetre lit ensuite SA file, et personne ne prive personne.

Entre pollEvent() et endDraw(), toute lecture est idempotente : c'est la norme du contrat, celle qui laisse une borne et son invite lire la meme touche dans la meme frame.

Constructor & Destructor Documentation

◆ SdlWindow()

SdlWindow::SdlWindow ( int32_t  screenWidth,
int32_t  screenHeight,
std::string  title 
)
inline

◆ ~SdlWindow()

SdlWindow::~SdlWindow ( )
inline

Member Function Documentation

◆ beginDraw()

void SdlWindow::beginDraw ( )
inlineoverride

◆ close()

void SdlWindow::close ( )
inlineoverride

◆ endDraw()

void SdlWindow::endDraw ( )
inlineoverride

◆ eventClose()

void SdlWindow::eventClose ( )
inlineoverride

◆ getDelta()

int32_t SdlWindow::getDelta ( )
inlineoverride

◆ getPosition()

Vector2f SdlWindow::getPosition ( )
inlineoverride

◆ getSize()

Vector2f SdlWindow::getSize ( )
inlineoverride

◆ isOpen()

bool SdlWindow::isOpen ( )
inlineoverride

◆ pollEvent()

bool SdlWindow::pollEvent ( )
inlineoverride

Vide la file SDL une fois, puis rend l'etat de CETTE fenetre.

Rappele dans la meme frame, il trouve la file SDL vide, n'ajoute rien, et repond la meme chose.

◆ setFrameLimit()

void SdlWindow::setFrameLimit ( int32_t  limit)
inlineoverride

◆ setMouseVisibility()

void SdlWindow::setMouseVisibility ( bool  visible)
inlineoverride

Cache ou montre le pointeur SUR CETTE FENETRE.

SDL n'a pas de curseur par fenetre : ShowCursor agit sur le processus entier. Cacher le pointeur pour le jeu le cachait donc aussi sur la borne, la ou sfml - qui pose un curseur sur la fenetre - se comportait correctement.

On ne fait donc qu'ENREGISTRER le souhait ici. C'est pump() qui l'applique, et seulement celui de la fenetre que la souris survole : le pointeur disparait en entrant dans le jeu et revient en le quittant, ce qui est exactement ce qu'un curseur par fenetre donnerait.

◆ setPosition()

void SdlWindow::setPosition ( Vector2f  position)
inlineoverride

◆ setSize()

void SdlWindow::setSize ( Vector2f  size)
inlineoverride

Friends And Related Symbol Documentation

◆ SdlGamepad

friend class SdlGamepad
friend

◆ SdlKeyboard

friend class SdlKeyboard
friend

◆ SdlMouse

friend class SdlMouse
friend

The documentation for this class was generated from the following file: