#pragma once

#include <SDL.h>
#include <string>
#include "Tool/RefPtr.h"
#include "Tool/RefObject.h"

class Texture : public RefObject
{
private:
    SDL_Texture *m_texture = nullptr;
    std::string ImgPath = "";
    int Index = 0;
public:
    VecSize TextureSize = {0, 0};     // 纹理大小
    VecPos TexturePos = {0, 0};       // 纹理位置
    VecSize TextureFramepos = {0, 0}; // 帧域宽高

public:
    Texture(/* args */);
    Texture(std::string PngPath);
    Texture(std::string imgPath, int Index);
    ~Texture();

public:
    void SetBlendMode(SDL_BlendMode blendMode);
    // 获取混合模式
    SDL_BlendMode GetBlendMode();
    // 获取纹理
    SDL_Texture *GetTexture();
    // 获取一个拷贝的纹理
    RefPtr<Texture> GetTextureCopy();
};
