Skip to content

Commit 39a61fc

Browse files
eXpl0it3rTankOs
authored andcommitted
Upgrade to SFML 3
1 parent c2a95a5 commit 39a61fc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+1163
-1272
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ name: CI
22

33
on: [push, pull_request, workflow_dispatch]
44

5+
concurrency:
6+
group: environment-${{github.ref}}
7+
cancel-in-progress: true
8+
59
jobs:
610
build:
711
name: ${{ matrix.platform.name }} ${{ matrix.config.name }}
@@ -13,8 +17,8 @@ jobs:
1317
platform:
1418
- { name: Windows VS2019, os: windows-2019 }
1519
- { name: Windows VS2022, os: windows-2022 }
16-
- { name: Linux GCC, os: ubuntu-22.04 }
17-
- { name: Linux Clang, os: ubuntu-22.04, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
20+
- { name: Linux GCC, os: ubuntu-24.04 }
21+
- { name: Linux Clang, os: ubuntu-24.04, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
1822
- { name: macOS x64, os: macos-13 }
1923
- { name: macOS arm64, os: macos-14 }
2024
config:
@@ -24,7 +28,7 @@ jobs:
2428
steps:
2529
- name: Install Linux Dependencies
2630
if: runner.os == 'Linux'
27-
run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev
31+
run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libxi-dev libudev-dev libflac-dev libvorbis-dev libgl1-mesa-dev libfreetype-dev
2832

2933
- name: SFGUI - Checkout Code
3034
uses: actions/checkout@v4
@@ -34,7 +38,7 @@ jobs:
3438
with:
3539
fetch-depth: 0
3640
repository: SFML/SFML
37-
ref: 2.6.x
41+
ref: 3.0.0
3842
path: SFML
3943

4044
- name: SFML - Configure CMake
@@ -51,4 +55,4 @@ jobs:
5155

5256
- name: SFGUI - Build
5357
shell: bash
54-
run: cmake --build $GITHUB_WORKSPACE/build --config Release --target install
58+
run: cmake --build $GITHUB_WORKSPACE/build --config Release --target install

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Enhancements:
66

7-
* Update SFML version to 2.6.
7+
* Update SFML version to 3.0.
88
* Update CMake version to match SFML's version.
99

1010
## Release 0.4.0

CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required( VERSION 3.7.2 )
1+
cmake_minimum_required( VERSION 3.22 )
22

33
set( SFGUI_MAJOR_VERSION 0 )
44
set( SFGUI_MINOR_VERSION 4 )
@@ -24,8 +24,8 @@ option( SFML_STATIC_LIBRARIES "Do you want to link SFML statically?"
2424
# Find packages.
2525
find_package( OpenGL REQUIRED )
2626

27-
if( NOT TARGET sfml-graphics )
28-
find_package( SFML 2.6 REQUIRED COMPONENTS graphics window system )
27+
if( NOT TARGET SFML::Graphics )
28+
find_package( SFML 3 REQUIRED COMPONENTS Graphics )
2929
endif()
3030

3131
set( INCLUDE_PATH "${PROJECT_SOURCE_DIR}/include/" )
@@ -47,7 +47,7 @@ target_include_directories( ${TARGET} SYSTEM PRIVATE "${PROJECT_SOURCE_DIR}/extl
4747
target_include_directories( ${TARGET} PRIVATE "${SOURCE_PATH}" )
4848
target_include_directories( ${TARGET} PUBLIC $<BUILD_INTERFACE:${INCLUDE_PATH}> $<INSTALL_INTERFACE:include/> )
4949

50-
target_compile_features( ${TARGET} PUBLIC cxx_std_11 )
50+
target_compile_features( ${TARGET} PUBLIC cxx_std_17 )
5151

5252
if( NOT SFGUI_BUILD_SHARED_LIBS )
5353
target_compile_definitions( ${TARGET} PUBLIC SFGUI_STATIC )
@@ -62,7 +62,7 @@ if( SFGUI_INCLUDE_FONT )
6262
target_compile_definitions( ${TARGET} PRIVATE SFGUI_INCLUDE_FONT )
6363
endif()
6464

65-
target_link_libraries( ${TARGET} PUBLIC sfml-graphics sfml-window sfml-system ${OPENGL_gl_LIBRARY} )
65+
target_link_libraries( ${TARGET} PUBLIC SFML::Graphics OpenGL::GL )
6666

6767
# Tell the compiler to export when necessary.
6868
set_target_properties( ${TARGET} PROPERTIES DEFINE_SYMBOL SFGUI_EXPORTS )
@@ -110,7 +110,7 @@ if( WIN32 )
110110
set_target_properties( ${TARGET} PROPERTIES IMPORT_SUFFIX ".a" )
111111
endif()
112112

113-
set( SHARE_PATH "." )
113+
set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}" )
114114
set( LIB_PATH "lib" )
115115
elseif( APPLE )
116116
find_library( COREFOUNDATION_LIBRARY CoreFoundation )
@@ -120,7 +120,7 @@ elseif( APPLE )
120120
set( LIB_PATH "lib" )
121121
elseif( "${CMAKE_SYSTEM_NAME}" MATCHES "Linux" )
122122
find_package( X11 REQUIRED )
123-
target_link_libraries( ${TARGET} PUBLIC ${X11_LIBRARIES} )
123+
target_link_libraries( ${TARGET} PUBLIC X11::X11 )
124124
set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share/SFGUI" )
125125

126126
if( LIB_SUFFIX )
@@ -134,7 +134,7 @@ else()
134134
endif()
135135

136136
if( CMAKE_CXX_COMPILER MATCHES ".*clang[+][+]" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
137-
target_compile_options( SFGUI PRIVATE -Wall -Wextra -Wshadow -Wconversion -Wsign-conversion -Wunused-parameter -Wno-long-long -pedantic )
137+
target_compile_options( SFGUI PRIVATE -Wall -Wextra -Wshadow -Wconversion -Wsign-conversion -Wunused-parameter -pedantic )
138138
endif()
139139

140140
### EXAMPLES ###

cmake/templates/config.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Define Alias library @PROJECT_NAME@::@TARGET@
55

66
include( CMakeFindDependencyMacro )
7-
find_dependency( SFML 2.6 COMPONENTS graphics window system)
7+
find_dependency( SFML 3.0 COMPONENTS Graphics)
88
find_dependency( OpenGL )
99

1010
if( "${CMAKE_SYSTEM_NAME}" MATCHES "Linux" )

examples/Box.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
int main() {
1010
// Create the main SFML window
11-
sf::RenderWindow app_window( sf::VideoMode( 800, 600 ), "SFGUI Box Example", sf::Style::Titlebar | sf::Style::Close );
11+
sf::RenderWindow app_window( sf::VideoMode( { 800, 600 } ), "SFGUI Box Example", sf::Style::Titlebar | sf::Style::Close );
1212

1313
// We have to do this because we don't use SFML to draw.
1414
app_window.resetGLStates();
@@ -58,14 +58,12 @@ int main() {
5858
// Start the game loop
5959
while ( app_window.isOpen() ) {
6060
// Process events
61-
sf::Event event;
62-
63-
while ( app_window.pollEvent( event ) ) {
61+
while ( const std::optional event = app_window.pollEvent() ) {
6462
// Handle events
65-
window->HandleEvent( event );
63+
window->HandleEvent( *event );
6664

6765
// Close window : exit
68-
if ( event.type == sf::Event::Closed ) {
66+
if ( event->is<sf::Event::Closed>() ) {
6967
return EXIT_SUCCESS;
7068
}
7169
}

examples/Buttons.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
int main() {
1010
// Create the main SFML window
11-
sf::RenderWindow app_window( sf::VideoMode( 800, 600 ), "SFGUI Buttons Example", sf::Style::Titlebar | sf::Style::Close );
11+
sf::RenderWindow app_window( sf::VideoMode( { 800, 600 } ), "SFGUI Buttons Example", sf::Style::Titlebar | sf::Style::Close );
1212

1313
// We have to do this because we don't use SFML to draw.
1414
app_window.resetGLStates();
@@ -126,14 +126,12 @@ int main() {
126126
// Start the game loop
127127
while ( app_window.isOpen() ) {
128128
// Process events
129-
sf::Event event;
130-
131-
while ( app_window.pollEvent( event ) ) {
129+
while ( const std::optional event = app_window.pollEvent() ) {
132130
// Handle events
133-
window->HandleEvent( event );
131+
window->HandleEvent( *event );
134132

135133
// Close window : exit
136-
if ( event.type == sf::Event::Closed ) {
134+
if ( event->is<sf::Event::Closed>() ) {
137135
return EXIT_SUCCESS;
138136
}
139137
}

examples/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required( VERSION 3.7.2 )
1+
cmake_minimum_required( VERSION 3.22 )
22

33
function( build_example SAMPLE_NAME SOURCES )
44
add_executable( ${SAMPLE_NAME} ${SOURCES} )
@@ -45,19 +45,19 @@ build_example( "SFGUI-Test" "Test.cpp" )
4545
# Don't try to copy if the directories are the same.
4646
if( NOT ( "${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}" ) )
4747
add_custom_command(
48-
TARGET "SFGUI-Test"
48+
TARGET "SFGUI-Test" POST_BUILD
4949
COMMAND "${CMAKE_COMMAND}"
5050
ARGS -E copy_directory "${PROJECT_SOURCE_DIR}/examples/data" "${PROJECT_BINARY_DIR}/examples/data"
5151
)
5252

5353
add_custom_command(
54-
TARGET "Image"
54+
TARGET "Image" POST_BUILD
5555
COMMAND "${CMAKE_COMMAND}"
5656
ARGS -E copy_directory "${PROJECT_SOURCE_DIR}/examples/data" "${PROJECT_BINARY_DIR}/examples/data"
5757
)
5858

5959
add_custom_command(
60-
TARGET "Canvas"
60+
TARGET "Canvas" POST_BUILD
6161
COMMAND "${CMAKE_COMMAND}"
6262
ARGS -E copy_directory "${PROJECT_SOURCE_DIR}/examples/data" "${PROJECT_BINARY_DIR}/examples/data"
6363
)

examples/Canvas.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
#include <SFML/OpenGL.hpp>
99

1010
#include <cmath>
11+
#include <cstdint>
1112

1213
int main() {
1314
// Create the main SFML window
14-
sf::RenderWindow app_window( sf::VideoMode( 800, 600 ), "SFGUI Canvas Example", sf::Style::Titlebar | sf::Style::Close );
15+
sf::RenderWindow app_window( sf::VideoMode( { 800, 600 } ), "SFGUI Canvas Example", sf::Style::Titlebar | sf::Style::Close );
1516

1617
// We have to do this because we don't use SFML to draw.
1718
app_window.resetGLStates();
@@ -49,20 +50,18 @@ int main() {
4950

5051
// Create a table to put the scrollbars and scrollable canvas in.
5152
auto table = sfg::Table::Create();
52-
table->Attach( sfml_scrollable_canvas, sf::Rect<sf::Uint32>( 0, 0, 1, 1 ), sfg::Table::FILL | sfg::Table::EXPAND, sfg::Table::FILL | sfg::Table::EXPAND );
53-
table->Attach( vertical_scrollbar, sf::Rect<sf::Uint32>( 1, 0, 1, 1 ), 0, sfg::Table::FILL );
54-
table->Attach( horizontal_scrollbar, sf::Rect<sf::Uint32>( 0, 1, 1, 1 ), sfg::Table::FILL, 0 );
53+
table->Attach( sfml_scrollable_canvas, sf::Rect<std::uint32_t>( { 0, 0 }, { 1, 1 } ), sfg::Table::FILL | sfg::Table::EXPAND, sfg::Table::FILL | sfg::Table::EXPAND );
54+
table->Attach( vertical_scrollbar, sf::Rect<std::uint32_t>( { 1, 0 }, { 1, 1 } ), 0, sfg::Table::FILL );
55+
table->Attach( horizontal_scrollbar, sf::Rect<std::uint32_t>( { 0, 1 }, { 1, 1 } ), sfg::Table::FILL, 0 );
5556

5657
// Add the Canvases to the windows.
5758
opengl_window->Add( opengl_canvas );
5859
sfml_window->Add( sfml_canvas );
5960
sfml_scrollable_window->Add( table );
6061

6162
// Create an sf::Sprite for demonstration purposes.
62-
sf::Texture texture;
63-
texture.loadFromFile( "data/sfgui.png" );
64-
sf::Sprite sprite;
65-
sprite.setTexture( texture );
63+
const sf::Texture texture( "data/sfgui.png" );
64+
const sf::Sprite sprite( texture );
6665

6766
// Create an sf::RectangleShape for demonstration purposes.
6867
sf::RectangleShape rectangle_shape( sf::Vector2f( 218.f * 20, 84.f * 20 ) );
@@ -88,11 +87,11 @@ int main() {
8887
vertical_adjustment->SetPageSize( scrollable_canvas_size );
8988

9089
horizontal_adjustment->GetSignal( sfg::Adjustment::OnChange ).Connect( [&view, &horizontal_adjustment]() {
91-
view.setCenter( horizontal_adjustment->GetValue(), view.getCenter().y );
90+
view.setCenter( { horizontal_adjustment->GetValue(), view.getCenter().y } );
9291
} );
9392

9493
vertical_adjustment->GetSignal( sfg::Adjustment::OnChange ).Connect( [&view, &vertical_adjustment]() {
95-
view.setCenter( view.getCenter().x, vertical_adjustment->GetValue() );
94+
view.setCenter( { view.getCenter().x, vertical_adjustment->GetValue() } );
9695
} );
9796

9897
// Because Canvases provide a virtual surface to draw
@@ -118,14 +117,12 @@ int main() {
118117
// Start the game loop
119118
while ( app_window.isOpen() ) {
120119
// Process events
121-
sf::Event event;
122-
123-
while ( app_window.pollEvent( event ) ) {
120+
while ( const std::optional event = app_window.pollEvent() ) {
124121
// Handle events
125-
desktop.HandleEvent( event );
122+
desktop.HandleEvent( *event );
126123

127124
// Close window : exit
128-
if ( event.type == sf::Event::Closed ) {
125+
if ( event->is<sf::Event::Closed>() ) {
129126
return EXIT_SUCCESS;
130127
}
131128
}
@@ -173,14 +170,14 @@ int main() {
173170
glPushMatrix();
174171
glLoadIdentity();
175172

176-
glViewport( 0, 0, static_cast<int>( opengl_canvas->GetAllocation().width ), static_cast<int>( opengl_canvas->GetAllocation().height ) );
173+
glViewport( 0, 0, static_cast<int>( opengl_canvas->GetAllocation().size.x ), static_cast<int>( opengl_canvas->GetAllocation().size.y ) );
177174

178175
static const auto pi = 3.1415926535897932384626433832795f;
179176
static const auto fov = 90.f;
180177
static const auto near_distance = 1.f;
181178
static const auto far_distance = 20.f;
182179

183-
auto aspect = opengl_canvas->GetAllocation().width / opengl_canvas->GetAllocation().height;
180+
auto aspect = opengl_canvas->GetAllocation().size.x / opengl_canvas->GetAllocation().size.y;
184181
auto frustum_height = std::tan( fov / 360 * pi ) * near_distance;
185182
auto frustum_width = frustum_height * aspect;
186183

@@ -227,7 +224,7 @@ int main() {
227224
sfml_scrollable_canvas->Unbind();
228225

229226
// This is important.
230-
app_window.setActive( true );
227+
(void)app_window.setActive( true );
231228

232229
// Draw the GUI
233230
sfgui.Display( app_window );

examples/ComboBox.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
int main() {
1010
// Create the main SFML window
11-
sf::RenderWindow app_window( sf::VideoMode( 800, 600 ), "SFGUI Combo Box Example", sf::Style::Titlebar | sf::Style::Close );
11+
sf::RenderWindow app_window( sf::VideoMode( { 800, 600 } ), "SFGUI Combo Box Example", sf::Style::Titlebar | sf::Style::Close );
1212

1313
// Create an SFGUI. This is required before doing anything with SFGUI.
1414
sfg::SFGUI sfgui;
@@ -72,14 +72,12 @@ int main() {
7272
// Start the game loop
7373
while ( app_window.isOpen() ) {
7474
// Process events
75-
sf::Event event;
76-
77-
while ( app_window.pollEvent( event ) ) {
75+
while ( const std::optional event = app_window.pollEvent() ) {
7876
// Handle events
79-
window->HandleEvent( event );
77+
window->HandleEvent( *event );
8078

8179
// Close window : exit
82-
if ( event.type == sf::Event::Closed ) {
80+
if ( event->is<sf::Event::Closed>() ) {
8381
return EXIT_SUCCESS;
8482
}
8583
}

0 commit comments

Comments
 (0)