Add sdl gfx. Use ast2
This commit is contained in:
parent
ca209ffff4
commit
e0e4cc81bf
11 changed files with 149 additions and 18 deletions
8
nim.cfg
8
nim.cfg
|
|
@ -1 +1,7 @@
|
||||||
-d:SDL_DL -d:SDL_Static -d:SDL_image_Static -d:SDL_mixer_Static -d:SDL_net_Static -d:SDL_ttf_Static -d:SDL_gpu_Static -d:SDL_image_DL -d:SDL_mixer_DL -d:SDL_net_DL -d:SDL_ttf_DL -d:SDL_gpu_Git
|
-d:SDL_SetVer="2.0.12" -d:SDL_DL -d:SDL_Static
|
||||||
|
-d:SDL_ImageSetVer="2.0.5" -d:SDL_Image_DL -d:SDL_Image_Static
|
||||||
|
-d:SDL_NetSetVer="2.0.1" -d:SDL_Net_DL -d:SDL_Net_Static
|
||||||
|
-d:SDL_MixerSetVer="2.0.4" -d:SDL_Mixer_DL -d:SDL_Mixer_Static
|
||||||
|
-d:SDL_TTFSetVer="2.0.15" -d:SDL_TTF_DL -d:SDL_TTF_Static
|
||||||
|
-d:SDL_GpuSetVer="def5ea1" -d:SDL_GPU_Git -d:SDL_Gpu_Static
|
||||||
|
-d:SDL2_GFXPrimitivesSetVer="1.0.4" -d:SDL2_GFXPrimitives_DL -d:SDL2_GFXPrimitives_Static -d:SDL2_GFX_Static
|
||||||
|
|
@ -9,8 +9,13 @@ srcDir = "src"
|
||||||
|
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
requires "nim >= 1.0.6", "nimterop#head"
|
requires "nim >= 1.0.6", "nimterop#head"
|
||||||
|
|
||||||
|
when gorgeEx("nimble path nimterop").exitCode == 0:
|
||||||
|
import nimterop/docs
|
||||||
|
task docs, "Generate docs": buildDocs(@["src/sdl2_all.nim"], "build/htmldocs")
|
||||||
|
else:
|
||||||
|
task docs, "Do nothing": discard
|
||||||
|
|
||||||
task buildSDL2, "Build SDL2 example":
|
task buildSDL2, "Build SDL2 example":
|
||||||
exec "nimble c -f -r src/sdl2_all.nim"
|
exec "nimble c -f -r src/sdl2_all.nim"
|
||||||
|
|
@ -8,7 +8,7 @@ const
|
||||||
|
|
||||||
getHeader(
|
getHeader(
|
||||||
"SDL.h",
|
"SDL.h",
|
||||||
dlurl = "https://www.libsdl.org/release/SDL2-2.0.12.tar.gz",
|
dlurl = "https://www.libsdl.org/release/SDL2-$1.tar.gz",
|
||||||
outdir = srcDir
|
outdir = srcDir
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -18,8 +18,6 @@ static:
|
||||||
# cDisableCaching()
|
# cDisableCaching()
|
||||||
|
|
||||||
cOverride:
|
cOverride:
|
||||||
const KEYCODE_UNDERSCORE* = ('_').KeyCodeEnum
|
|
||||||
|
|
||||||
type
|
type
|
||||||
BlitMap* {.incompleteStruct.} = object
|
BlitMap* {.incompleteStruct.} = object
|
||||||
RWops* {.incompleteStruct.} = object
|
RWops* {.incompleteStruct.} = object
|
||||||
|
|
@ -145,11 +143,10 @@ cPlugin:
|
||||||
if sym.name == "KeyCode":
|
if sym.name == "KeyCode":
|
||||||
sym.name = "KeyCodeEnum"
|
sym.name = "KeyCodeEnum"
|
||||||
|
|
||||||
|
|
||||||
when defined(SDL_Static):
|
when defined(SDL_Static):
|
||||||
cImport(SDL_Path, recurse = true)
|
cImport(SDL_Path, recurse = true, flags = "-f=ast2 -DDOXYGEN_SHOULD_IGNORE_THIS")
|
||||||
else:
|
else:
|
||||||
cImport(SDL_Path, recurse = true, dynlib = "SDL_LPath")
|
cImport(SDL_Path, recurse = true, dynlib = "SDL_LPath", flags = "-f=ast2 -DDOXYGEN_SHOULD_IGNORE_THIS")
|
||||||
|
|
||||||
proc getDynlibExt(): string =
|
proc getDynlibExt(): string =
|
||||||
when defined(windows):
|
when defined(windows):
|
||||||
|
|
|
||||||
119
src/nim_sdl2_gfx/wrapper.nim
Normal file
119
src/nim_sdl2_gfx/wrapper.nim
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
import os, strutils, strformat
|
||||||
|
import ../nim_sdl2/wrapper as sdl2_wrapper
|
||||||
|
import nimterop/[cimport, build]
|
||||||
|
|
||||||
|
export sdl2_wrapper
|
||||||
|
|
||||||
|
const
|
||||||
|
baseDir = currentSourcePath.parentDir().parentDir().parentDir()
|
||||||
|
buildDir = baseDir / "build"
|
||||||
|
sdlIncludeDir = buildDir / "sdl2" / "include"
|
||||||
|
srcDir = buildDir / "sdl2_gfx"
|
||||||
|
|
||||||
|
getHeader(
|
||||||
|
"SDL2_gfxPrimitives.h",
|
||||||
|
dlurl = "http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-$1.tar.gz",
|
||||||
|
outdir = srcDir,
|
||||||
|
altNames = "SDL2_gfx,SDL_gfx"
|
||||||
|
)
|
||||||
|
|
||||||
|
# static:
|
||||||
|
# cDebug()
|
||||||
|
# cDisableCaching()
|
||||||
|
|
||||||
|
cPlugin:
|
||||||
|
import strutils, nre
|
||||||
|
import sets
|
||||||
|
|
||||||
|
const EVENT_TYPES = toHashSet([
|
||||||
|
"FIRSTEVENT",
|
||||||
|
"QUIT",
|
||||||
|
"APP_TERMINATING",
|
||||||
|
"APP_LOWMEMORY",
|
||||||
|
"APP_WILLENTERBACKGROUND",
|
||||||
|
"APP_DIDENTERBACKGROUND",
|
||||||
|
"APP_WILLENTERFOREGROUND",
|
||||||
|
"APP_DIDENTERFOREGROUND",
|
||||||
|
"DISPLAYEVENT",
|
||||||
|
"WINDOWEVENT",
|
||||||
|
"SYSWMEVENT",
|
||||||
|
"KEYDOWN",
|
||||||
|
"KEYUP",
|
||||||
|
"TEXTEDITING",
|
||||||
|
"TEXTINPUT",
|
||||||
|
"KEYMAPCHANGED",
|
||||||
|
"MOUSEMOTION",
|
||||||
|
"MOUSEBUTTONDOWN",
|
||||||
|
"MOUSEBUTTONUP",
|
||||||
|
"MOUSEWHEEL",
|
||||||
|
"JOYAXISMOTION",
|
||||||
|
"JOYBALLMOTION",
|
||||||
|
"JOYHATMOTION",
|
||||||
|
"JOYBUTTONDOWN",
|
||||||
|
"JOYBUTTONUP",
|
||||||
|
"JOYDEVICEADDED",
|
||||||
|
"JOYDEVICEREMOVED",
|
||||||
|
"CONTROLLERAXISMOTION",
|
||||||
|
"CONTROLLERBUTTONDOWN",
|
||||||
|
"CONTROLLERBUTTONUP",
|
||||||
|
"CONTROLLERDEVICEADDED",
|
||||||
|
"CONTROLLERDEVICEREMOVED",
|
||||||
|
"CONTROLLERDEVICEREMAPPED",
|
||||||
|
"FINGERDOWN",
|
||||||
|
"FINGERUP",
|
||||||
|
"FINGERMOTION",
|
||||||
|
"DOLLARGESTURE",
|
||||||
|
"DOLLARRECORD",
|
||||||
|
"MULTIGESTURE",
|
||||||
|
"CLIPBOARDUPDATE",
|
||||||
|
"DROPFILE",
|
||||||
|
"DROPTEXT",
|
||||||
|
"DROPBEGIN",
|
||||||
|
"DROPCOMPLETE",
|
||||||
|
"AUDIODEVICEADDED",
|
||||||
|
"AUDIODEVICEREMOVED",
|
||||||
|
"SENSORUPDATE",
|
||||||
|
"RENDER_TARGETS_RESET",
|
||||||
|
"RENDER_DEVICE_RESET",
|
||||||
|
"USEREVENT",
|
||||||
|
"LASTEVENT",
|
||||||
|
])
|
||||||
|
|
||||||
|
# Symbol renaming examples
|
||||||
|
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
|
||||||
|
# Get rid of leading and trailing underscores
|
||||||
|
# sym.name = sym.name.strip(chars = {'_'})
|
||||||
|
|
||||||
|
# Remove prefixes or suffixes from procs
|
||||||
|
if sym.name == "__MACOSX__":
|
||||||
|
sym.name = "MACOSX"
|
||||||
|
if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst:
|
||||||
|
if sym.name != "_":
|
||||||
|
sym.name = sym.name.replace(re"^_+", "")
|
||||||
|
sym.name = sym.name.replace(re"_+$", "")
|
||||||
|
sym.name = sym.name.replace(re"^SDL_", "")
|
||||||
|
|
||||||
|
if sym.name.startsWith("SDLK_"):
|
||||||
|
sym.name = sym.name.replace("SDLK_", "KEYCODE_")
|
||||||
|
|
||||||
|
if EVENT_TYPES.contains(sym.name):
|
||||||
|
sym.name = "EVENT_" & sym.name
|
||||||
|
|
||||||
|
if sym.name == "ThreadID":
|
||||||
|
sym.name = "CurrentThreadID"
|
||||||
|
if sym.name == "GLContextResetNotification":
|
||||||
|
sym.name = "GLContextResetNotificationEnum"
|
||||||
|
if sym.name == "KeyCode":
|
||||||
|
sym.name = "KeyCodeEnum"
|
||||||
|
|
||||||
|
|
||||||
|
when defined(SDL2_GfxPrimitives_Static):
|
||||||
|
cImport(srcDir / "SDL2_gfxPrimitives.h", recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_rotozoom.h", recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_framerate.h", recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_imageFilter.h", recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
else:
|
||||||
|
cImport(srcDir / "SDL2_gfxPrimitives.h", recurse = false, dynlib="SDL2_GfxPrimitives_LPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_rotozoom.h", recurse = false, dynlib="SDL2_GfxPrimitives_LPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_framerate.h", recurse = false, dynlib="SDL2_GfxPrimitives_LPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
cImport(srcDir / "SDL2_imageFilter.h", recurse = false, dynlib="SDL2_GfxPrimitives_LPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
|
@ -19,9 +19,9 @@ getHeader(
|
||||||
&"-DSDL2MAIN_LIBRARY={SDLMainLib} -DSDL2_PATH={sdlDir} -DSDL2_INCLUDE_DIR={sdlIncludeDir} -DSDL_gpu_BUILD_DEMOS=OFF"
|
&"-DSDL2MAIN_LIBRARY={SDLMainLib} -DSDL2_PATH={sdlDir} -DSDL2_INCLUDE_DIR={sdlIncludeDir} -DSDL_gpu_BUILD_DEMOS=OFF"
|
||||||
)
|
)
|
||||||
|
|
||||||
static:
|
# static:
|
||||||
cDebug()
|
# cDebug()
|
||||||
cDisableCaching()
|
# cDisableCaching()
|
||||||
|
|
||||||
cOverride:
|
cOverride:
|
||||||
type
|
type
|
||||||
|
|
@ -113,6 +113,6 @@ cPlugin:
|
||||||
sym.name = "KeyCodeEnum"
|
sym.name = "KeyCodeEnum"
|
||||||
|
|
||||||
when defined(SDL_gpu_Static):
|
when defined(SDL_gpu_Static):
|
||||||
cImport(SDL_gpuPath, recurse = true, flags = &"-I={sdlIncludeDir} -f=ast2")
|
cImport(SDL_gpuPath, recurse = false, flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
else:
|
else:
|
||||||
cImport(SDL_gpuPath, recurse = true, dynlib = "SDL_gpuLPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
cImport(SDL_gpuPath, recurse = false, dynlib = "SDL_gpuLPath", flags = &"-I={sdlIncludeDir} -f=ast2")
|
||||||
|
|
@ -10,7 +10,7 @@ const
|
||||||
|
|
||||||
getHeader(
|
getHeader(
|
||||||
"SDL_image.h",
|
"SDL_image.h",
|
||||||
dlurl = "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.5.tar.gz",
|
dlurl = "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-$1.tar.gz",
|
||||||
outdir = srcDir,
|
outdir = srcDir,
|
||||||
altNames = "SDL2_image"
|
altNames = "SDL2_image"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const
|
||||||
|
|
||||||
getHeader(
|
getHeader(
|
||||||
"SDL_mixer.h",
|
"SDL_mixer.h",
|
||||||
dlurl = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz",
|
dlurl = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-$1.tar.gz",
|
||||||
outdir = srcDir,
|
outdir = srcDir,
|
||||||
altNames = "SDL2_mixer"
|
altNames = "SDL2_mixer"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const
|
||||||
|
|
||||||
getHeader(
|
getHeader(
|
||||||
"SDL_net.h",
|
"SDL_net.h",
|
||||||
dlurl = "https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.0.1.tar.gz",
|
dlurl = "https://www.libsdl.org/projects/SDL_net/release/SDL2_net-$1.tar.gz",
|
||||||
outdir = srcDir,
|
outdir = srcDir,
|
||||||
altNames = "SDL2_net"
|
altNames = "SDL2_net"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ const
|
||||||
|
|
||||||
getHeader(
|
getHeader(
|
||||||
"SDL_ttf.h",
|
"SDL_ttf.h",
|
||||||
dlurl = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz",
|
dlurl = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-$1.tar.gz",
|
||||||
outdir = srcDir,
|
outdir = srcDir,
|
||||||
altNames = "SDL2_ttf",
|
altNames = "SDL2_ttf",
|
||||||
cmakeFlags = &"-DCMAKE_C_FLAGS=-I{sdlIncludeDir} -DCMAKE_MODULE_PATH={cmakeModPath} " &
|
cmakeFlags = &"-DCMAKE_C_FLAGS=-I{sdlIncludeDir} -DCMAKE_MODULE_PATH={cmakeModPath} " &
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,12 @@ import sdl2_image
|
||||||
import sdl2_mixer
|
import sdl2_mixer
|
||||||
import sdl2_net
|
import sdl2_net
|
||||||
import sdl2_ttf
|
import sdl2_ttf
|
||||||
|
import sdl2_gfx
|
||||||
|
|
||||||
export sdl2
|
export sdl2
|
||||||
export sdl2_gpu
|
export sdl2_gpu
|
||||||
export sdl2_image
|
export sdl2_image
|
||||||
export sdl2_mixer
|
export sdl2_mixer
|
||||||
export sdl2_net
|
export sdl2_net
|
||||||
export sdl2_ttf
|
export sdl2_ttf
|
||||||
|
export sdl2_gfx
|
||||||
2
src/sdl2_gfx.nim
Normal file
2
src/sdl2_gfx.nim
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
import nim_sdl2_gfx / wrapper
|
||||||
|
export wrapper
|
||||||
Loading…
Add table
Add a link
Reference in a new issue