Fix API changes in SFML 3

This commit is contained in:
Chris Thrasher committed 2024-05-31 16:36:13 -06:00
1 parent 36a6e7c5a6
commit 44380e7507
11 files changed
+97 -166

No files matched your search

+1 -1
View File
@@ -46,7 +46,7 @@ jobs:
uses: actions/checkout@v4
with:
repository: SFML/SFML
ref: c89c32d7baa15927a39a161a4ead867c11d5ea21
ref: b583eaf1606e54e5f443b094b3b2a6e3af72a5a4
path: SFML
- name: Configure SFML CMake
+17 -31
View File
@@ -34,30 +34,22 @@
////////////////////////////////////////////////////////////
sfSoundBuffer* sfSoundBuffer_createFromFile(const char* filename)
{
sfSoundBuffer* buffer = new sfSoundBuffer;
auto soundBuffer = sf::SoundBuffer::loadFromFile(filename);
if (!soundBuffer)
return nullptr;
if (!buffer->This.loadFromFile(filename))
{
delete buffer;
buffer = nullptr;
}
return buffer;
return new sfSoundBuffer{std::move(*soundBuffer)};
}
////////////////////////////////////////////////////////////
sfSoundBuffer* sfSoundBuffer_createFromMemory(const void* data, size_t sizeInBytes)
{
sfSoundBuffer* buffer = new sfSoundBuffer;
auto soundBuffer = sf::SoundBuffer::loadFromMemory(data, sizeInBytes);
if (!soundBuffer)
return nullptr;
if (!buffer->This.loadFromMemory(data, sizeInBytes))
{
delete buffer;
buffer = nullptr;
}
return buffer;
return new sfSoundBuffer{std::move(*soundBuffer)};
}
@@ -67,15 +59,12 @@ sfSoundBuffer* sfSoundBuffer_createFromStream(sfInputStream* stream)
{
CSFML_CHECK_RETURN(stream, nullptr);
sfSoundBuffer* buffer = new sfSoundBuffer;
CallbackStream sfmlStream(stream);
if (!buffer->This.loadFromStream(sfmlStream))
{
delete buffer;
buffer = nullptr;
}
auto soundBuffer = sf::SoundBuffer::loadFromStream(sfmlStream);
if (!soundBuffer)
return nullptr;
return buffer;
return new sfSoundBuffer{std::move(*soundBuffer)};
}
@@ -87,18 +76,15 @@ sfSoundBuffer* sfSoundBuffer_createFromSamples(const int16_t* samples,
sfSoundChannel* channelMapData,
size_t channelMapSize)
{
sfSoundBuffer* buffer = new sfSoundBuffer;
std::vector<sf::SoundChannel> channelMap(channelMapSize);
for (std::size_t i = 0; i < channelMap.size(); ++i)
channelMap[i] = static_cast<sf::SoundChannel>(channelMapData[i]);
if (!buffer->This.loadFromSamples(samples, sampleCount, channelCount, sampleRate, channelMap))
{
delete buffer;
buffer = nullptr;
}
return buffer;
auto soundBuffer = sf::SoundBuffer::loadFromSamples(samples, sampleCount, channelCount, sampleRate, channelMap);
if (!soundBuffer)
return nullptr;
return new sfSoundBuffer{std::move(*soundBuffer)};
}
+2 -2
View File
@@ -70,9 +70,9 @@ const sfSoundBuffer* sfSoundBufferRecorder_getBuffer(const sfSoundBufferRecorder
{
CSFML_CHECK_RETURN(soundBufferRecorder, nullptr);
soundBufferRecorder->SoundBuffer.This = soundBufferRecorder->This.getBuffer();
soundBufferRecorder->SoundBuffer = sfSoundBuffer{soundBufferRecorder->This.getBuffer()};
return &soundBufferRecorder->SoundBuffer;
return &*soundBufferRecorder->SoundBuffer;
}
////////////////////////////////////////////////////////////
+5 -3
View File
@@ -31,15 +31,17 @@
#include <SFML/Audio/SoundBufferRecorder.hpp>
#include <SFML/Audio/SoundBufferStruct.h>
#include <optional>
////////////////////////////////////////////////////////////
// Internal structure of sfSoundBufferRecorder
////////////////////////////////////////////////////////////
struct sfSoundBufferRecorder
{
sf::SoundBufferRecorder This;
mutable sfSoundBuffer SoundBuffer;
std::string DeviceName;
sf::SoundBufferRecorder This;
mutable std::optional<sfSoundBuffer> SoundBuffer;
std::string DeviceName;
};
+13 -22
View File
@@ -34,28 +34,22 @@
////////////////////////////////////////////////////////////
sfFont* sfFont_createFromFile(const char* filename)
{
sfFont* font = new sfFont;
if (!font->This.loadFromFile(filename))
{
delete font;
font = nullptr;
}
auto font = sf::Font::loadFromFile(filename);
if (!font)
return nullptr;
return font;
return new sfFont{std::move(*font), {}, {}};
}
////////////////////////////////////////////////////////////
sfFont* sfFont_createFromMemory(const void* data, size_t sizeInBytes)
{
sfFont* font = new sfFont;
if (!font->This.loadFromMemory(data, sizeInBytes))
{
delete font;
font = nullptr;
}
auto font = sf::Font::loadFromMemory(data, sizeInBytes);
if (!font)
return nullptr;
return font;
return new sfFont{std::move(*font), {}, {}};
}
@@ -64,15 +58,12 @@ sfFont* sfFont_createFromStream(sfInputStream* stream)
{
CSFML_CHECK_RETURN(stream, nullptr);
sfFont* font = new sfFont;
font->Stream = CallbackStream(stream);
if (!font->This.loadFromStream(font->Stream))
{
delete font;
font = nullptr;
}
auto sfmlStream = std::make_shared<CallbackStream>(stream);
auto font = sf::Font::loadFromStream(*sfmlStream);
if (!font)
return nullptr;
return font;
return new sfFont{std::move(*font), {}, std::move(sfmlStream)};
}
+2 -1
View File
@@ -32,6 +32,7 @@
#include <SFML/Graphics/TextureStruct.h>
#include <SFML/CallbackStream.h>
#include <map>
#include <memory>
////////////////////////////////////////////////////////////
@@ -41,7 +42,7 @@ struct sfFont
{
sf::Font This;
std::map<unsigned int, sfTexture> Textures;
CallbackStream Stream;
std::shared_ptr<CallbackStream> Stream;
};
+15 -36
View File
@@ -35,60 +35,43 @@
////////////////////////////////////////////////////////////
sfImage* sfImage_create(unsigned int width, unsigned int height)
{
sfImage* image = new sfImage;
image->This.create({ width, height });
return image;
return new sfImage{sf::Image({width, height})};
}
////////////////////////////////////////////////////////////
sfImage* sfImage_createFromColor(unsigned int width, unsigned int height, sfColor color)
{
sfImage* image = new sfImage;
image->This.create({ width, height }, sf::Color(color.r, color.g, color.b, color.a));
return image;
return new sfImage{sf::Image({ width, height }, sf::Color(color.r, color.g, color.b, color.a))};
}
////////////////////////////////////////////////////////////
sfImage* sfImage_createFromPixels(unsigned int width, unsigned int height, const uint8_t* data)
{
sfImage* image = new sfImage;
image->This.create({ width, height }, data);
return image;
return new sfImage{sf::Image({ width, height }, data)};
}
////////////////////////////////////////////////////////////
sfImage* sfImage_createFromFile(const char* filename)
{
sfImage* image = new sfImage;
auto image = sf::Image::loadFromFile(filename);
if (!image)
return nullptr;
if (!image->This.loadFromFile(filename))
{
delete image;
image = nullptr;
}
return image;
return new sfImage{std::move(*image)};
}
////////////////////////////////////////////////////////////
sfImage* sfImage_createFromMemory(const void* data, size_t sizeInBytes)
{
sfImage* image = new sfImage;
auto image = sf::Image::loadFromMemory(data, sizeInBytes);
if (!image)
return nullptr;
if (!image->This.loadFromMemory(data, sizeInBytes))
{
delete image;
image = nullptr;
}
return image;
return new sfImage{std::move(*image)};
}
@@ -97,16 +80,12 @@ sfImage* sfImage_createFromStream(sfInputStream* stream)
{
CSFML_CHECK_RETURN(stream, nullptr);
sfImage* image = new sfImage;
CallbackStream sfmlStream(stream);
if (!image->This.loadFromStream(sfmlStream))
{
delete image;
image = nullptr;
}
auto image = sf::Image::loadFromStream(sfmlStream);
if (!image)
return nullptr;
return image;
return new sfImage{std::move(*image)};
}
+6 -11
View File
@@ -51,19 +51,14 @@ sfRenderTexture* sfRenderTexture_create(unsigned int width, unsigned int height,
}
// Create the render texture
sfRenderTexture* renderTexture = new sfRenderTexture;
if (!renderTexture->This.create({ width, height }, params))
{
delete renderTexture;
auto renderTexture = sf::RenderTexture::create({ width, height }, params);
if (!renderTexture)
return nullptr;
}
renderTexture->Target = new sfTexture(const_cast<sf::Texture*>(&renderTexture->This.getTexture()));
renderTexture->DefaultView.This = renderTexture->This.getDefaultView();
renderTexture->CurrentView.This = renderTexture->This.getView();
return renderTexture;
return new sfRenderTexture{std::move(*renderTexture),
new sfTexture(const_cast<sf::Texture*>(&renderTexture->getTexture())),
{renderTexture->getDefaultView()},
{renderTexture->getView()}};
}
+27 -39
View File
@@ -36,8 +36,7 @@
////////////////////////////////////////////////////////////
sfShader* sfShader_createFromFile(const char* vertexShaderFilename, const char* geometryShaderFilename, const char* fragmentShaderFilename)
{
bool success = false;
sfShader* shader = new sfShader;
std::optional<sf::Shader> shader;
if (vertexShaderFilename || geometryShaderFilename || fragmentShaderFilename)
{
if (!geometryShaderFilename)
@@ -45,17 +44,17 @@ sfShader* sfShader_createFromFile(const char* vertexShaderFilename, const char*
if (!vertexShaderFilename)
{
// fragment shader only
success = shader->This.loadFromFile(fragmentShaderFilename, sf::Shader::Type::Fragment);
shader = sf::Shader::loadFromFile(fragmentShaderFilename, sf::Shader::Type::Fragment);
}
else if (!fragmentShaderFilename)
{
// vertex shader only
success = shader->This.loadFromFile(vertexShaderFilename, sf::Shader::Type::Vertex);
shader = sf::Shader::loadFromFile(vertexShaderFilename, sf::Shader::Type::Vertex);
}
else
{
// vertex + fragment shaders
success = shader->This.loadFromFile(vertexShaderFilename, fragmentShaderFilename);
shader = sf::Shader::loadFromFile(vertexShaderFilename, fragmentShaderFilename);
}
}
else
@@ -63,31 +62,27 @@ sfShader* sfShader_createFromFile(const char* vertexShaderFilename, const char*
if (!vertexShaderFilename && !fragmentShaderFilename)
{
// geometry shader only
success = shader->This.loadFromFile(geometryShaderFilename, sf::Shader::Type::Geometry);
shader = sf::Shader::loadFromFile(geometryShaderFilename, sf::Shader::Type::Geometry);
}
else
{
// vertex + geometry + fragment shaders
success = shader->This.loadFromFile(vertexShaderFilename, geometryShaderFilename, fragmentShaderFilename);
shader = sf::Shader::loadFromFile(vertexShaderFilename, geometryShaderFilename, fragmentShaderFilename);
}
}
}
if (!success)
{
delete shader;
shader = nullptr;
}
if (!shader)
return nullptr;
return shader;
return new sfShader{std::move(*shader)};
}
////////////////////////////////////////////////////////////
sfShader* sfShader_createFromMemory(const char* vertexShader, const char* geometryShader, const char* fragmentShader)
{
bool success = false;
sfShader* shader = new sfShader;
std::optional<sf::Shader> shader;
if (vertexShader || geometryShader || fragmentShader)
{
if (!geometryShader)
@@ -95,17 +90,17 @@ sfShader* sfShader_createFromMemory(const char* vertexShader, const char* geomet
if (!vertexShader)
{
// fragment shader only
success = shader->This.loadFromMemory(fragmentShader, sf::Shader::Type::Fragment);
shader = sf::Shader::loadFromMemory(fragmentShader, sf::Shader::Type::Fragment);
}
else if (!fragmentShader)
{
// vertex shader only
success = shader->This.loadFromMemory(vertexShader, sf::Shader::Type::Vertex);
shader = sf::Shader::loadFromMemory(vertexShader, sf::Shader::Type::Vertex);
}
else
{
// vertex + fragment shaders
success = shader->This.loadFromMemory(vertexShader, fragmentShader);
shader = sf::Shader::loadFromMemory(vertexShader, fragmentShader);
}
}
else
@@ -113,31 +108,27 @@ sfShader* sfShader_createFromMemory(const char* vertexShader, const char* geomet
if (!vertexShader && !fragmentShader)
{
// geometry shader only
success = shader->This.loadFromMemory(geometryShader, sf::Shader::Type::Geometry);
shader = sf::Shader::loadFromMemory(geometryShader, sf::Shader::Type::Geometry);
}
else
{
// vertex + geometry + fragment shaders
success = shader->This.loadFromMemory(vertexShader, geometryShader, fragmentShader);
shader = sf::Shader::loadFromMemory(vertexShader, geometryShader, fragmentShader);
}
}
}
if (!success)
{
delete shader;
shader = nullptr;
}
if (!shader)
return nullptr;
return shader;
return new sfShader{std::move(*shader)};
}
////////////////////////////////////////////////////////////
sfShader* sfShader_createFromStream(sfInputStream* vertexShaderStream, sfInputStream* geometryShaderStream, sfInputStream* fragmentShaderStream)
{
bool success = false;
sfShader* shader = new sfShader;
std::optional<sf::Shader> shader;
if (vertexShaderStream || geometryShaderStream || fragmentShaderStream)
{
if (!geometryShaderStream)
@@ -146,20 +137,20 @@ sfShader* sfShader_createFromStream(sfInputStream* vertexShaderStream, sfInputSt
{
// fragment shader only
CallbackStream stream(fragmentShaderStream);
success = shader->This.loadFromStream(stream, sf::Shader::Type::Fragment);
shader = sf::Shader::loadFromStream(stream, sf::Shader::Type::Fragment);
}
else if (!fragmentShaderStream)
{
// vertex shader only
CallbackStream stream(vertexShaderStream);
success = shader->This.loadFromStream(stream, sf::Shader::Type::Vertex);
shader = sf::Shader::loadFromStream(stream, sf::Shader::Type::Vertex);
}
else
{
// vertex + fragment shaders
CallbackStream vertexStream(vertexShaderStream);
CallbackStream fragmentStream(fragmentShaderStream);
success = shader->This.loadFromStream(vertexStream, fragmentStream);
shader = sf::Shader::loadFromStream(vertexStream, fragmentStream);
}
}
else
@@ -168,25 +159,22 @@ sfShader* sfShader_createFromStream(sfInputStream* vertexShaderStream, sfInputSt
if (!vertexShaderStream && !fragmentShaderStream)
{
// geometry shader only
success = shader->This.loadFromStream(geometryStream, sf::Shader::Type::Geometry);
shader = sf::Shader::loadFromStream(geometryStream, sf::Shader::Type::Geometry);
}
else
{
// vertex + geometry + fragment shaders
CallbackStream vertexStream(vertexShaderStream);
CallbackStream fragmentStream(fragmentShaderStream);
success = shader->This.loadFromStream(vertexStream, geometryStream, fragmentStream);
shader = sf::Shader::loadFromStream(vertexStream, geometryStream, fragmentStream);
}
}
}
if (!success)
{
delete shader;
shader = nullptr;
}
if (!shader)
return nullptr;
return shader;
return new sfShader{std::move(*shader)};
}
+1 -4
View File
@@ -250,10 +250,7 @@ sfImage* sfTexture_copyToImage(const sfTexture* texture)
CSFML_CHECK_RETURN(texture, nullptr);
CSFML_CHECK_RETURN(texture->This, nullptr);
sfImage* image = new sfImage;
image->This = texture->This->copyToImage();
return image;
return new sfImage{texture->This->copyToImage()};
}
+8 -16
View File
@@ -33,30 +33,22 @@
////////////////////////////////////////////////////////////
sfCursor* sfCursor_createFromPixels(const uint8_t* pixels, sfVector2u size, sfVector2u hotspot)
{
sfCursor* cursor = new sfCursor;
auto cursor = sf::Cursor::loadFromPixels(pixels, sf::Vector2u(size.x, size.y), sf::Vector2u(hotspot.x, hotspot.y));
if (!cursor)
return nullptr;
if (!cursor->This.loadFromPixels(pixels, sf::Vector2u(size.x, size.y), sf::Vector2u(hotspot.x, hotspot.y)))
{
delete cursor;
cursor = nullptr;
}
return cursor;
return new sfCursor{std::move(*cursor)};
}
////////////////////////////////////////////////////////////
sfCursor* sfCursor_createFromSystem(sfCursorType type)
{
sfCursor* cursor = new sfCursor;
auto cursor = sf::Cursor::loadFromSystem(static_cast<sf::Cursor::Type>(type));
if (!cursor)
return nullptr;
if (!cursor->This.loadFromSystem(static_cast<sf::Cursor::Type>(type)))
{
delete cursor;
cursor = nullptr;
}
return cursor;
return new sfCursor{std::move(*cursor)};
}