summary refs log tree commit diff stats
path: root/tests/niminaction/Chapter8/sfml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/niminaction/Chapter8/sfml')
-rw-r--r--tests/niminaction/Chapter8/sfml/sfml.nim26
-rw-r--r--tests/niminaction/Chapter8/sfml/sfml_test.nim14
2 files changed, 40 insertions, 0 deletions
diff --git a/tests/niminaction/Chapter8/sfml/sfml.nim b/tests/niminaction/Chapter8/sfml/sfml.nim
new file mode 100644
index 000000000..fea85fcd4
--- /dev/null
+++ b/tests/niminaction/Chapter8/sfml/sfml.nim
@@ -0,0 +1,26 @@
+{.passL: "-lsfml-graphics -lsfml-system -lsfml-window".}
+
+type
+  VideoMode* {.importcpp: "sf::VideoMode".} = object
+  RenderWindowObj {.importcpp: "sf::RenderWindow".} = object
+  RenderWindow* = ptr RenderWindowObj
+  Color* {.importcpp: "sf::Color".} = object
+  Event* {.importcpp: "sf::Event".} = object
+
+{.push cdecl, header: "<SFML/Graphics.hpp>".}
+
+proc videoMode*(modeWidth, modeHeight: cuint, modeBitsPerPixel: cuint = 32): VideoMode
+    {.importcpp: "sf::VideoMode(@)", constructor.}
+
+proc newRenderWindow*(mode: VideoMode, title: cstring): RenderWindow
+    {.importcpp: "new sf::RenderWindow(@)", constructor.}
+
+proc pollEvent*(window: RenderWindow, event: var Event): bool
+    {.importcpp: "#.pollEvent(@)".}
+
+proc newColor*(red, green, blue, alpha: uint8): Color
+    {.importcpp: "sf::Color(@)", constructor.}
+
+proc clear*(window: RenderWindow, color: Color) {.importcpp: "#.clear(@)".}
+
+proc display*(window: RenderWindow) {.importcpp: "#.display()".}
diff --git a/tests/niminaction/Chapter8/sfml/sfml_test.nim b/tests/niminaction/Chapter8/sfml/sfml_test.nim
new file mode 100644
index 000000000..e71060cb4
--- /dev/null
+++ b/tests/niminaction/Chapter8/sfml/sfml_test.nim
@@ -0,0 +1,14 @@
+discard """
+action: compile
+disabled: "windows"
+"""
+
+import sfml, os
+var window = newRenderWindow(videoMode(800, 600), "SFML works!")
+
+var event: Event
+discard window.pollEvent(event)
+window.clear(newColor(29, 64, 153, 255))
+window.display()
+
+sleep(1000)