image: Remove inheritance from Netbpm

This inheritance made no sense
This commit is contained in:
Bananymous 2023-11-29 20:56:05 +02:00
parent fdb6dc94ba
commit 8564b59e14
4 changed files with 9 additions and 18 deletions

View File

@ -70,7 +70,7 @@ BAN::UniqPtr<Image> Image::load_from_file(BAN::StringView path)
case 0x3350:
case 0x3250:
case 0x3150:
if (auto res = Netbpm::create(addr, st.st_size); res.is_error())
if (auto res = load_netbpm(addr, st.st_size); res.is_error())
fprintf(stderr, "%s\n", strerror(res.error().get_error_code()));
else
image = res.release_value();

View File

@ -22,15 +22,17 @@ public:
bool render_to_framebuffer();
protected:
private:
Image(uint64_t width, uint64_t height, BAN::Vector<Color>&& bitmap)
: m_width(width)
, m_height(height)
, m_bitmap(BAN::move(bitmap))
{ }
protected:
private:
const uint64_t m_width;
const uint64_t m_height;
const BAN::Vector<Color> m_bitmap;
friend class BAN::UniqPtr<Image>;
};

View File

@ -29,7 +29,7 @@ BAN::Optional<uint64_t> parse_u64(const uint8_t*& data, size_t data_size)
return {};
}
BAN::ErrorOr<BAN::UniqPtr<Netbpm>> Netbpm::create(const void* mmap_addr, size_t size)
BAN::ErrorOr<BAN::UniqPtr<Image>> load_netbpm(const void* mmap_addr, size_t size)
{
if (size < 11)
{
@ -88,7 +88,7 @@ BAN::ErrorOr<BAN::UniqPtr<Netbpm>> Netbpm::create(const void* mmap_addr, size_t
printf("Netbpm image %llux%llu\n", *width, *height);
BAN::Vector<Color> bitmap;
BAN::Vector<Image::Color> bitmap;
TRY(bitmap.resize(*width * *height));
// Fill bitmap
@ -104,5 +104,5 @@ BAN::ErrorOr<BAN::UniqPtr<Netbpm>> Netbpm::create(const void* mmap_addr, size_t
}
}
return TRY(BAN::UniqPtr<Netbpm>::create(*width, *height, BAN::move(bitmap)));
return TRY(BAN::UniqPtr<Image>::create(*width, *height, BAN::move(bitmap)));
}

View File

@ -1,14 +1,3 @@
#include "Image.h"
class Netbpm : public Image
{
public:
static BAN::ErrorOr<BAN::UniqPtr<Netbpm>> create(const void* mmap_addr, size_t size);
private:
Netbpm(uint64_t width, uint64_t height, BAN::Vector<Color>&& bitmap)
: Image(width, height, BAN::move(bitmap))
{ }
friend class BAN::UniqPtr<Netbpm>;
};
BAN::ErrorOr<BAN::UniqPtr<Image>> load_netbpm(const void* mmap_addr, size_t size);