External Functions

Below is a list of all external types, functions etc. that interacts with or is a direct alias to SDL.

// Public aliases
public alias EXT_GetWindowFlags          = SDL_GetWindowFlags;
public alias EXT_WindowFlags             = SDL_WindowFlags;
public alias EXT_GetError                = SDL_GetError;
public alias EXT_SetWindowBordered       = SDL_SetWindowBordered;
public alias EXT_bool                    = SDL_bool;
public alias EXT_DestroyWindow           = SDL_DestroyWindow;
public alias EXT_HideWindow              = SDL_HideWindow;
public alias EXT_ShowWindow              = SDL_ShowWindow;
public alias EXT_StopTextInput           = SDL_StopTextInput;
public alias EXT_StartTextInput          = SDL_StartTextInput;
public alias EXT_SetWindowFullscreen     = SDL_SetWindowFullscreen;
public alias EXT_CreateRGBSurface        = SDL_CreateRGBSurface;
public alias EXT_PIXELFORMAT_ARGB8888    = SDL_PIXELFORMAT_ARGB8888;
public alias EXT_TEXTUREACCESS_STREAMING = SDL_TEXTUREACCESS_STREAMING;
public alias EXT_SaveBMP                 = SDL_SaveBMP;
public alias EXT_RenderReadPixels        = SDL_RenderReadPixels;
public alias EXT_IMG_SavePNG             = IMG_SavePNG;
public alias EXT_SetTextureAlphaMod      = SDL_SetTextureAlphaMod;
public alias EXT_QueryTexture            = SDL_QueryTexture;
public alias EXT_Point                   = SDL_Point;

public alias Color                       = SDL_Color;
public alias EXT_GetWindowFromID         = SDL_GetWindowFromID;

public alias EXT_Window                  = SDL_Window*;
public alias EXT_Screen                  = SDL_Renderer*;

public alias EXT_Rectangle               = SDL_Rect*;
public alias EXT_RectangleNative         = SDL_Rect;

public alias EXT_Font                    = TTF_Font*;
public alias EXT_Texture                 = SDL_Texture*;

public alias EXT_IMG_Load                = IMG_Load;
public alias EXT_RWFromConstMem          = SDL_RWFromConstMem;
public alias EXT_IMG_Load_RW             = IMG_Load_RW;
public alias EXT_RWops                   = SDL_RWops*;

public alias EXT_RenderCopy              = SDL_RenderCopy;
public alias EXT_RenderCopyEx            = SDL_RenderCopyEx;
public alias EXT_DestroyTexture          = SDL_DestroyTexture;
public alias EXT_FreeSurface             = SDL_FreeSurface;
public alias EXT_RendererFlip            = SDL_RendererFlip;
public alias EXT_Surface                 = SDL_Surface*;
public alias EXT_CreateTextureFromSurface = SDL_CreateTextureFromSurface;
public alias EXT_CreateTexture           = SDL_CreateTexture;
public alias EXT_LockTexture             = SDL_LockTexture;
public alias EXT_UnlockTexture           = SDL_UnlockTexture;
public alias EXT_RenderUnicodeText       = TTF_RenderUNICODE_Blended;
public alias EXT_UnicodeTextSize         = TTF_SizeUNICODE;
public alias EXT_SetRenderRectangle      = SDL_RenderSetClipRect;

public alias EXT_Delay                   = SDL_Delay;

// Private aliases
private alias EXT_SoundChunk             = Mix_Chunk*;
private alias TextureAtlas               = EXT_Texture[];

// Top-level functions

// Texture / query helpers
EXT_Point EXT_QueryTextureSize(EXT_Texture texture);

// Initialization
void EXT_Initialize();

// Main loop timing
void EXT_PreAplicationLoop(int fps);
int  EXT_GetApplicationFps();
int  EXT_GetRecommendedMovementFps();
void EXT_PostApplicationLoop(int fps);

// Mouse position
IntVector EXT_GetMousePosition();

// Event control
void EXT_DisableEvents();
void EXT_EnableEvents();
bool EXT_ProcessEvents(Window[] windows);

// Input mapping
MouseButton EXT_MouseButton(SDL_D_MouseButton button);
KeyboardKey EXT_KeyboardKey(SDL_Keycode keyCode);

// Window / renderer creation
EXT_Window EXT_CreateWindow(string title, IntVector size, bool isFullScreen);
EXT_Screen EXT_CreateScreen(EXT_Window nativeWindow);

// Rectangles
EXT_Rectangle EXT_CreateEmptyRectangle();
EXT_Rectangle EXT_CreateRectangle(Rectangle rectangle);

// Drawing helpers
bool EXT_SetScreenDrawColor(EXT_Screen screen, Color color);
bool EXT_FillRectangle(EXT_Screen screen, EXT_Rectangle nativeRectangle);
bool EXT_DrawRectangle(EXT_Screen screen, EXT_Rectangle nativeRectangle);
bool EXT_ClearScreen(EXT_Screen screen);
void EXT_PresentScreen(EXT_Screen screen);

// Fonts
EXT_Font EXT_GetFont(string path, size_t size);
int      EXT_FontGlyphSupport(EXT_Font font, dchar c);

// Sheets / tiles
struct EXT_Sheet
{
    EXT_Texture sheet;
    IntVector   columnSize;
    int         columnCount;
}

struct EXT_SheetEntry
{
    EXT_Rectangle rect;
    EXT_Rectangle textureRect;
}

struct EXT_SheetRender
{
    EXT_SheetEntry* entry;
    EXT_Texture     texture;
    IntVector       size;
}

EXT_Sheet      EXT_CREATE_TILESET(EXT_Screen screen, string path, IntVector columnSize, int columnCount);
void           EXT_CLEAR_TILESET(EXT_Sheet tileset);
EXT_Texture    EXT_CREATE_SHEET(SDL_Renderer* renderer, string path);
EXT_Texture    EXT_CREATE_SHEET_BUFFER(SDL_Renderer* renderer, ubyte[] b);
EXT_SheetEntry EXT_CREATE_SHEET_ENTRY(EXT_Texture sheet, FloatVector position, IntVector size, int row, int columns);

// Ticks / timing / FPS
void EXT_SetTicks();
uint EXT_GetTicks();
uint EXT_GetTicksRaw();
int  EXT_GetFps();

// Keyboard state & movement helpers
void EXT_AllowWASDMovement();
void EXT_DisallowWASDMovement();
void EXT_EnableKeyboardState();
void EXT_DisableKeyboardState();
void EXT_InitializeKeyboardState();

bool EXT_HoldsControl();
bool EXT_MoveUp();
bool EXT_MoveRight();
bool EXT_MoveDown();
bool EXT_MoveLeft();

// Cursor helpers
void EXT_CreateCursors();
void EXT_ResetCursor();
void EXT_SetIBeamCursor();
void EXT_SetHandCursor();
void EXT_BeginWait();
void EXT_EndWait();
void EXT_SetWaitCursor();

// Ping
void EXT_SetPing(long ping);
long EXT_GetPing();

// Sound / music enable/disable
void EXT_DisableSound();
void EXT_EnableSound();
void EXT_DisableMusic();
void EXT_EnableMusic();
void EXT_DisableSoundEffects();
void EXT_EnableSoundEffects();

// Music control
void EXT_SetSoundVolume(int volume);
void EXT_ValidateMusic();
void EXT_PlayLastMusic();
void EXT_PlayMusic(string path);
void EXT_PauseMusic();
void EXT_StopMusic();

// Sound effects
void EXT_PlaySound(string path);

// Texture atlas
struct EXT_TextureAsset
{
    EXT_Rectangle[] states;
    EXT_Texture     texture;
}

void               EXT_InitializeTextureAtlas(string name, int pageCount);
void               EXT_AddTextureAtlasPage(EXT_Screen screen, string name, string path, int page);
EXT_Texture        EXT_GetTextureAtlas(string name, int page);
EXT_TextureAsset*  EXT_GetTextureAsset(string atlasName, int page, Rectangle location, int columns);

// Types

public class EXT_TextEntry
{
    EXT_Texture   _texture;
    EXT_Rectangle _rect;
}

public class EXT_TextLabel
{
    this(EXT_Screen screen, Application application);
    @property IntVector position();
    @property void      position(IntVector newPosition);
    @property int       x();
    @property int       y();
    @property string    fontName();
    @property void      fontName(string newFontName);
    @property size_t    fontSize();
    @property void      fontSize(size_t newFontSize);
    @property Color     color();
    @property void      color(Color newColor);
    @property dstring   text();
    @property void      text(dstring newText);
    @property IntVector size();
    @property int       width();
    @property int       height();
    @property bool      shadow();
    @property void      shadow(bool hasShadow);

    protected bool measureComponentSize(out IntVector size);
    public void update();
    void        show();
    void        hide();
    public void render();
    void        clean();
}

public class EXT_Panel
{
    this(EXT_Screen screen, Application application);
    @property IntVector position();
    @property void      position(IntVector newPosition);
    @property int       x();
    @property int       y();
    @property Color     fillColor();
    @property void      fillColor(Color newColor);
    @property Color     borderColor();
    @property void      borderColor(Color newColor);
    @property IntVector size();
    @property void      size(IntVector newSize);
    @property int       width();
    @property int       height();

    void  update();
    void  show();
    void  hide();
    public void render();
    void  clean();
}

public class EXT_Image
{
    this(Window window, string name);
    @property IntVector position();
    @property void      position(IntVector newPosition);
    @property int       x();
    @property int       y();
    @property Color     fillColor();
    @property void      fillColor(Color newColor);
    @property Color     borderColor();
    @property void      borderColor(Color newColor);
    @property IntVector size();
    @property int       width();
    @property int       height();
    @property string    name();
    @property void      name(string newName);

    void  update();
    void  show();
    void  hide();
    public void render();
    void  clean();
}

private final class EXT_Music
{
    this();
    bool openFromFile(string music);
    void play();
    void pause();
    void stop();
    void clean();
}

If you require direct access to SDL functions beyond DVN’s EXT_ layer (for example: advanced texture operations, surface manipulation, raw window handles, custom rendering pipelines, etc.), you may import the underlying Derelict SDL2 modules directly:

import derelict.sdl2.sdl;
import derelict.sdl2.image;
import derelict.sdl2.mixer;
import derelict.sdl2.ttf;
import derelict.sdl2.net;

Note that these are not part of DVN’s guaranteed-stable API surface.