Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: SFML 3 Binding for openEuphoria  (Read 163 times)

0 Members and 1 Guest are viewing this topic.

MetalCoder

  • Newbie
  • *
  • Posts: 39
    • View Profile
SFML 3 Binding for openEuphoria
« on: February 12, 2026, 10:45:50 pm »
Hi all,

I have written a wrapper for SFML 3 for the openEuphoria programming language.

Code: [Select]
include std/ffi.e

include sfml_window.e
include sfml_graphics.e
include sfml_system.e

-- video mode
sequence mode = {{800,600},32}

-- create window
atom win = sfRenderWindow_create(
mode,
"SFML Bounce Test",
sfClose,
sfWindowed,
NULL
)

if win = 0 then
puts(1,"Failed to create window!\n")
abort(0)
end if

-- load texture
atom tex = sfTexture_createFromFile("sfml_logo.png", NULL)

if tex = 0 then
puts(1,"Failed to load texture!\n")
abort(0)
end if

-- create sprite
atom sprite = sfSprite_create(tex)
--sfSprite_setTexture(sprite, tex, 1)

-- sprite position
sequence spritePos = {200, 200}
sfSprite_setPosition(sprite, spritePos)

-- sizes
sequence winSize = {800, 600}
sequence texSize = sfTexture_getSize(tex)

-- velocity (pixels per second)
sequence velocity = {200, 150}

-- clock for delta time
atom clock = sfClock_create()

-- event handling
atom evt = allocate_struct(sfEvent)
atom evt_type = 0

while sfRenderWindow_isOpen(win) do

-- events
while sfRenderWindow_pollEvent(win, evt) do
evt_type = peek_type(evt, C_INT)

if evt_type = sfEvtClosed then
sfRenderWindow_close(win)
end if

if evt_type = sfEvtKeyPressed then
if sfKeyboard_isKeyPressed(sfKeyEscape) then
sfRenderWindow_close(win)
end if
end if
end while

-- delta time (seconds)
atom dt = sfTime_asSeconds(sfClock_restart(clock))

-- move sprite (time-based)
spritePos[1] += velocity[1] * dt
spritePos[2] += velocity[2] * dt

if dt > 0.05 then
dt = 0.05
end if

-- bounce left/right
if spritePos[1] <= 0 then
spritePos[1] = 0
velocity[1] = -velocity[1]
elsif spritePos[1] + texSize[1] >= winSize[1] then
spritePos[1] = winSize[1] - texSize[1]
velocity[1] = -velocity[1]
end if

-- bounce top/bottom
if spritePos[2] <= 0 then
spritePos[2] = 0
velocity[2] = -velocity[2]
elsif spritePos[2] + texSize[2] >= winSize[2] then
spritePos[2] = winSize[2] - texSize[2]
velocity[2] = -velocity[2]
end if

sfSprite_setPosition(sprite, spritePos)

-- render
sfRenderWindow_clear(win, {0,0,0,255})
sfRenderWindow_drawSprite(win, sprite, NULL)
sfRenderWindow_display(win)

end while

-- cleanup
sfClock_destroy(clock)
sfSprite_destroy(sprite)
sfTexture_destroy(tex)
sfRenderWindow_destroy(win)

[https://openeuphoria.org/]

[https://github.com/gAndy50/EuSFML3]

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 11296
    • View Profile
    • development blog
    • Email
Re: SFML 3 Binding for openEuphoria
« Reply #1 on: February 13, 2026, 07:27:11 pm »
Feel free to open a PR to the SFML-Website repository in case you want the wrapper/binding be featured on the SFML website.

English page & French page
Official FAQ: https://www.sfml-dev.org/faq/
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

MetalCoder

  • Newbie
  • *
  • Posts: 39
    • View Profile
Re: SFML 3 Binding for openEuphoria
« Reply #2 on: February 14, 2026, 01:56:12 am »
I've made a pull request. This is the first time I've done one, so hopefully I did it correctly.