SDLPainter 1.4.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
image.h
1#pragma once
2
3#include "sdl_painter/export.h"
4#include "sdl_painter/renderer.h"
5#include "sdl_painter/texture.h"
6
7#include <cstdint>
8#include <memory>
9#include <string>
10
11namespace sdl_painter {
12
13class IRenderer;
14
21enum class ImageFlip : uint8_t {
22 kNone,
23 kHorizontal,
24 kVertical,
25 kBoth,
26};
27
38class SDLPAINTER_API Image {
39 public:
40 Image() = default;
41
43 explicit Image(const std::string& file_path);
44
45 ~Image();
46
47 // Non-copyable, movable
48 Image(const Image&) = delete;
49 Image& operator=(const Image&) = delete;
50 Image(Image&&) noexcept;
51 Image& operator=(Image&&) noexcept;
52
54 [[nodiscard]] bool IsValid() const noexcept { return mRawData != nullptr; }
55
57 [[nodiscard]] int32_t Width() const noexcept { return mWidth; }
58
60 [[nodiscard]] int32_t Height() const noexcept { return mHeight; }
61
63 [[nodiscard]] int32_t Channels() const noexcept { return mChannels; }
64
66 [[nodiscard]] const uint8_t* RawData() const noexcept {
67 return mRawData.get();
68 }
69
73 [[nodiscard]] static Image CreateFromData(const uint8_t* data, int32_t width,
74 int32_t height, int32_t channels);
75
84 void SetFilter(TextureFilter filter) noexcept { mFilter = filter; }
85
87 [[nodiscard]] TextureFilter GetFilter() const noexcept { return mFilter; }
88
90 TextureHandle Upload(IRenderer& renderer) const;
91
93 [[nodiscard]] TextureHandle GetHandle() const noexcept {
94 return mHandle.Handle();
95 }
96
97 private:
98 struct StbDeleter {
99 void operator()(uint8_t* ptr) const;
100 };
101
102 std::unique_ptr<uint8_t, StbDeleter> mRawData;
103 int32_t mWidth{0};
104 int32_t mHeight{0};
105 int32_t mChannels{0};
106 TextureFilter mFilter{TextureFilter::kLinear};
107 mutable Texture
108 mHandle;
109};
110
111} // namespace sdl_painter
Backend-agnostik soyut renderer arayüzü.
Definition renderer.h:77
TextureFilter GetFilter() const noexcept
Yürürlükteki örnekleme filtresi.
Definition image.h:87
int32_t Width() const noexcept
Görüntü genişliği (piksel).
Definition image.h:57
bool IsValid() const noexcept
Görüntü başarıyla yüklendi mi?
Definition image.h:54
TextureHandle GetHandle() const noexcept
Önceden yüklenmiş texture tanımlayıcısını döner (kInvalidTexture → henüz yüklenmedi).
Definition image.h:93
void SetFilter(TextureFilter filter) noexcept
Örnekleme filtresini ayarla.
Definition image.h:84
int32_t Channels() const noexcept
Kanal sayısı (1 = gri, 2 = gri+alfa, 3 = RGB, 4 = RGBA).
Definition image.h:63
static Image CreateFromData(const uint8_t *data, int32_t width, int32_t height, int32_t channels)
Ham piksel verisinden görüntü oluştur (veriler kopyalanır).
const uint8_t * RawData() const noexcept
Ham piksel verisi (stb_image tarafından yüklendi).
Definition image.h:66
int32_t Height() const noexcept
Görüntü yüksekliği (piksel).
Definition image.h:60
Image(const std::string &file_path)
Dosyadan görüntü yükle. Başarısız olursa IsValid() false döner.
TextureHandle Upload(IRenderer &renderer) const
Texture'ı renderer'a yükle; ikinci çağrıda önbelleği döner.