Add tests for examples from Nim in Action.

This commit is contained in:
Dominik Picheta 2017-10-01 17:17:40 +01:00
commit 7889c03cbc
34 changed files with 1213 additions and 0 deletions

View file

@ -0,0 +1,34 @@
when defined(Windows):
const libName* = "SDL2.dll"
elif defined(Linux):
const libName* = "libSDL2.so"
elif defined(MacOsX):
const libName* = "libSDL2.dylib"
type
SdlWindow = object
SdlWindowPtr* = ptr SdlWindow
SdlRenderer = object
SdlRendererPtr* = ptr SdlRenderer
const INIT_VIDEO* = 0x00000020
{.push dynlib: libName.}
proc init*(flags: uint32): cint {.importc: "SDL_Init".}
proc createWindowAndRenderer*(width, height: cint, window_flags: cuint,
window: var SdlWindowPtr, renderer: var SdlRendererPtr): cint
{.importc: "SDL_CreateWindowAndRenderer".}
proc pollEvent*(event: pointer): cint {.importc: "SDL_PollEvent".}
proc setDrawColor*(renderer: SdlRendererPtr, r, g, b, a: uint8): cint
{.importc: "SDL_SetRenderDrawColor", discardable.}
proc present*(renderer: SdlRendererPtr) {.importc: "SDL_RenderPresent".}
proc clear*(renderer: SdlRendererPtr) {.importc: "SDL_RenderClear".}
proc drawLines*(renderer: SdlRendererPtr, points: ptr tuple[x, y: cint],
count: cint): cint {.importc: "SDL_RenderDrawLines", discardable.}
{.pop.}

View file

@ -0,0 +1,25 @@
import os
import sdl
if sdl.init(INIT_VIDEO) == -1:
quit("Couldn't initialise SDL")
var window: SdlWindowPtr
var renderer: SdlRendererPtr
if createWindowAndRenderer(640, 480, 0, window, renderer) == -1:
quit("Couldn't create a window or renderer")
discard pollEvent(nil)
renderer.setDrawColor 29, 64, 153, 255
renderer.clear
renderer.setDrawColor 255, 255, 255, 255
var points = [
(260'i32, 320'i32),
(260'i32, 110'i32),
(360'i32, 320'i32),
(360'i32, 110'i32)
]
renderer.drawLines(addr points[0], points.len.cint)
renderer.present
sleep(5000)