SDLPainter 1.2.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
39class SDLPAINTER_API Image {
40 public:
41 Image() = default;
42
44 explicit Image(const std::string& file_path);
45
46 ~Image();
47
48 // Non-copyable, movable
49 Image(const Image&) = delete;
50 Image& operator=(const Image&) = delete;
51 Image(Image&&) noexcept;
52 Image& operator=(Image&&) noexcept;
53
55 [[nodiscard]] bool IsValid() const noexcept { return mRawData != nullptr; }
56
58 [[nodiscard]] int32_t Width() const noexcept { return mWidth; }
59
61 [[nodiscard]] int32_t Height() const noexcept { return mHeight; }
62
64 [[nodiscard]] int32_t Channels() const noexcept { return mChannels; }
65
67 [[nodiscard]] const uint8_t* RawData() const noexcept {
68 return mRawData.get();
69 }
70
74 [[nodiscard]] static Image CreateFromData(const uint8_t* data, int32_t width,
75 int32_t height, int32_t channels);
76
85 void SetFilter(TextureFilter filter) noexcept { mFilter = filter; }
86
88 [[nodiscard]] TextureFilter GetFilter() const noexcept { return mFilter; }
89
91 TextureHandle Upload(IRenderer& renderer) const;
92
94 [[nodiscard]] TextureHandle GetHandle() const noexcept {
95 return mHandle.Handle();
96 }
97
98 private:
99 struct StbDeleter {
100 void operator()(uint8_t* ptr) const;
101 };
102
103 std::unique_ptr<uint8_t, StbDeleter> mRawData;
104 int32_t mWidth{0};
105 int32_t mHeight{0};
106 int32_t mChannels{0};
107 TextureFilter mFilter{TextureFilter::kLinear};
108 mutable Texture
109 mHandle;
110};
111
112} // namespace sdl_painter
Backend-agnostik soyut renderer arayüzü.
Definition renderer.h:64
TextureFilter GetFilter() const noexcept
Yürürlükteki örnekleme filtresi.
Definition image.h:88
int32_t Width() const noexcept
Görüntü genişliği (piksel).
Definition image.h:58
bool IsValid() const noexcept
Görüntü başarıyla yüklendi mi?
Definition image.h:55
TextureHandle GetHandle() const noexcept
Önceden yüklenmiş texture tanımlayıcısını döner (kInvalidTexture → henüz yüklenmedi).
Definition image.h:94
void SetFilter(TextureFilter filter) noexcept
Örnekleme filtresini ayarla.
Definition image.h:85
int32_t Channels() const noexcept
Kanal sayısı (3 = RGB, 4 = RGBA).
Definition image.h:64
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:67
int32_t Height() const noexcept
Görüntü yüksekliği (piksel).
Definition image.h:61
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.