15#include <egt/detail/meta.h>
16#include <egt/geometry.h>
53 explicit operator bool() const noexcept {
return !empty(); }
55 bool empty()
const {
return m_data ==
nullptr; }
57 void*
data() {
return m_data; }
58 const void*
data()
const {
return m_data; }
70 void flush(
bool claimed_by_cpu =
false)
const;
80 EGT_NODISCARD
const detail::InternalSurface&
impl()
const {
return *m_impl; }
90 void* m_data{
nullptr};
95 std::unique_ptr<detail::InternalSurface>
m_impl;
32 bit RGBA color.
Definition color.h:41
void * data()
Definition surface.h:57
std::function< void(void *)> ReleaseFunction
Definition surface.h:36
EGT_NODISCARD const detail::InternalSurface & impl() const
Definition surface.h:80
DefaultDim width() const
Definition surface.h:62
const void * data() const
Definition surface.h:58
std::unique_ptr< detail::InternalSurface > m_impl
Definition surface.h:95
bool empty() const
Definition surface.h:55
Surface(const detail::FrameBuffer &fb)
void flood(const Point &point, const Color &color)
static DefaultDim stride(PixelFormat format, DefaultDim width)
EGT_NODISCARD Color color_at(const Point &point) const
ReleaseFunction m_release
Definition surface.h:91
Surface & operator=(const Surface &)=delete
PixelFormat format() const
Definition surface.h:61
void sync_for_cpu() const
Claim the surface for being used by the CPU.
Surface(void *data, const ReleaseFunction &release, const Size &size, PixelFormat format, DefaultDim stride)
DefaultDim stride() const
Definition surface.h:64
Surface(const Size &size={}, PixelFormat format=PixelFormat::argb8888)
Surface & operator=(Surface &&rhs)
void write_to_png(const std::string &name) const
const Size & size() const
Definition surface.h:60
Size m_size
Definition surface.h:92
void flush(bool claimed_by_cpu=false) const
Surface(const Surface &)=delete
void color_at(const Point &point, const Color &color)
DefaultDim height() const
Definition surface.h:63
PixelFormat
Supported pixel formats.
Definition types.h:30
int DefaultDim
Define the default dimension type used for geometry.
Definition geometry.h:34
EGT framework namespace.
Definition animation.h:24