63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include "Sprite.hpp"
|
|
#include "interfaces/ITexture.hpp"
|
|
#include "Types.hpp"
|
|
#include "Vector2.hpp"
|
|
#include "interfaces/ITextureHelper.hpp"
|
|
|
|
#define FREEIMAGE_LIB
|
|
#include "FI/FreeImage.h"
|
|
|
|
namespace TSE
|
|
{
|
|
class Texture : public ITexture
|
|
{
|
|
protected:
|
|
uint TextureID = 0;
|
|
Vector2 Size;
|
|
uint Bpp;
|
|
byte chanels = 0;
|
|
FIBITMAP* bmp = nullptr;
|
|
byte* imagePtr = nullptr;
|
|
|
|
public:
|
|
string name = "Unnamed";
|
|
inline static ITextureHelper* helper = nullptr;
|
|
|
|
Texture(const string& path);
|
|
Texture(const int& width, const int& height, int bpp = 32);
|
|
Texture(const Vector2& size, int bpp = 32);
|
|
~Texture();
|
|
|
|
uint bpp() const;
|
|
Vector2 size() const override;
|
|
float Width() const override;
|
|
float Height() const override;
|
|
byte Chanels() const;
|
|
byte* GetImagePtr() const;
|
|
void SetPixel(const Vector2& pos, const Color& c);
|
|
void GetPixel(const Vector2& pos, Color& c) const;
|
|
void SetPixelNoApply(const Vector2& pos, const Color& c);
|
|
void ToSprite(Sprite& s);
|
|
void SetChanels(const byte& ch);
|
|
uint GetTextureId() const override;
|
|
void SetTextureId(uint id);
|
|
void SetPixel(const int& x, const int& y, const Color& c);
|
|
void GetPixel(const int& x, const int& y, Color& c) const;
|
|
void Fill(const Color& c);
|
|
void SetPixelNoApply(const int& x, const int& y, const Color& c);
|
|
void AddPixelNoApply(const int& x, const int& y, const Color& c);
|
|
void Recreate(const int& x, const int& y, const int& bpp, const int& chanels);
|
|
void SavePNG(const std::string& path) const;
|
|
byte* getPixelPointer(const int& x, const int& y) const;
|
|
static void makeError(Texture& tex);
|
|
|
|
void bind() const;
|
|
void unbind() const;
|
|
void Apply();
|
|
void regist();
|
|
void PlatformDestroy();
|
|
};
|
|
} // namespace TSE
|