SFML - Simple and Fast Multimedia Library

SFML 3.1.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
sf::InputStream Class Referenceabstract
System module

Abstract class for custom file input streams. More...

`#include <SFML/System/InputStream.hpp>`

Inheritance diagram for sf::InputStream:

## Public Member Functions
virtual | ~InputStream ()=default
| Virtual destructor.
virtual std::optional< std::size_t > | read (void *data, std::size_t size)=0
| Read data from the stream.
virtual std::optional< std::size_t > | seek (std::size_t position)=0
| Change the current reading position.
virtual std::optional< std::size_t > | tell ()=0
| Get the current reading position in the stream.
virtual std::optional< std::size_t > | getSize ()=0
| Return the size of the stream.

## Detailed Description

Abstract class for custom file input streams.

This class allows users to define their own file input sources from which SFML can load resources.

SFML resource classes like sf::Texture and sf::SoundBuffer provide loadFromFile and loadFromMemory functions, which read data from conventional sources. However, if you have data coming from a different source (over a network, embedded, encrypted, compressed, etc) you can derive your own class from sf::InputStream and load SFML resources with their loadFromStream function.

Usage example:

// custom stream class that reads from inside a zip file
class ZipStream : public sf::InputStream
{
public:
ZipStream(const std::string& archive);
[[nodiscard]] bool open(const std::filesystem::path& filename);
[[nodiscard]] std::optional<std::size_t> read(void* data, std::size_t size);
[[nodiscard]] std::optional<std::size_t> seek(std::size_t position);
[[nodiscard]] std::optional<std::size_t> tell();
std::optional<std::size_t> getSize();
private:
...
};
// now you can load textures...
ZipStream stream("resources.zip");
if (!stream.open("images/img.png"))
{
// Handle error...
}
const sf::Texture texture(stream);
// musics...
sf::Music music;
ZipStream stream("resources.zip");
if (!stream.open("musics/msc.ogg"))
{
// Handle error...
}
if (!music.openFromStream(stream))
{
// Handle error...
}
// etc.
sf::InputStream
Abstract class for custom file input streams.
Definition InputStream.hpp:46
sf::InputStream::tell
virtual std::optional< std::size_t > tell()=0
Get the current reading position in the stream.
sf::InputStream::getSize
virtual std::optional< std::size_t > getSize()=0
Return the size of the stream.
sf::InputStream::read
virtual std::optional< std::size_t > read(void *data, std::size_t size)=0
Read data from the stream.
sf::InputStream::seek
virtual std::optional< std::size_t > seek(std::size_t position)=0
Change the current reading position.
sf::Music
Streamed music played from an audio file.
Definition Music.hpp:53
sf::Music::openFromStream
bool openFromStream(InputStream &stream)
Open a music from an audio file in a custom stream.
sf::Texture
Image living on the graphics card that can be used for drawing.
Definition Texture.hpp:56

See also
  FileInputStream, MemoryInputStream

Definition at line 45 of file InputStream.hpp.

## Constructor & Destructor Documentation

## ◆ ~InputStream()

virtual sf::InputStream::~InputStream | ( |  | ) |
| virtualdefault

Virtual destructor.

## Member Function Documentation

## ◆ getSize()

virtual std::optional< std::size_t > sf::InputStream::getSize | ( |  | ) |
| pure virtual

Return the size of the stream.

Returns
  The total number of bytes available in the stream, or std::nullopt on error

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

## ◆ read()

virtual std::optional< std::size_t > sf::InputStream::read | ( | void * | data,
|  | std::size_t | size )
| nodiscardpure virtual

Read data from the stream.

After reading, the stream's reading position must be advanced by the amount of bytes read.

Parameters

  data | Buffer where to copy the read data
  size | Desired number of bytes to read

Returns
  The number of bytes actually read, or std::nullopt on error

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

## ◆ seek()

virtual std::optional< std::size_t > sf::InputStream::seek | ( | std::size_t | position | ) |
| nodiscardpure virtual

Change the current reading position.

Parameters

  position | The position to seek to, from the beginning

Returns
  The position actually sought to, or std::nullopt on error

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

## ◆ tell()

virtual std::optional< std::size_t > sf::InputStream::tell | ( |  | ) |
| nodiscardpure virtual

Get the current reading position in the stream.

Returns
  The current position, or std::nullopt on error.

Implemented in sf::FileInputStream, and sf::MemoryInputStream.

The documentation for this class was generated from the following file:

- InputStream.hpp