mirror of
https://github.com/SFML/CSFML.git
synced 2026-10-26 13:06:13 +01:00
Fix API changes in SFML 3
This commit is contained in:
1 parent
36a6e7c5a6
commit
44380e7507
11 files changed
+97
-166
No files matched your search
@@ -46,7 +46,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: SFML/SFML
|
||||
ref: c89c32d7baa15927a39a161a4ead867c11d5ea21
|
||||
ref: b583eaf1606e54e5f443b094b3b2a6e3af72a5a4
|
||||
path: SFML
|
||||
|
||||
- name: Configure SFML CMake
|
||||
|
||||
@@ -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)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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
@@ -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)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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()}};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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()};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user