#pragma once

/*
	GameEngine and Editor
	by John Ryland
	Copyright (c) 2023
*/

////////////////////////////////////////////////////////////////////////////////////
//	Image

namespace ApplicationFramework {

class Image
{
public:
    Image();
    ~Image();

    void Init(unsigned char *data, int width, int height, int components);
    void Load(const char *filename);
    void Unload();

    // accessors
    unsigned char* Data() const  { return m_data;       }
    int Width() const            { return m_width;      }
    int Height() const           { return m_height;     }
    int Components() const       { return m_components; }
    //int Channels() const         { return m_channels;   }

private:
    bool            m_deleteData = false;
    unsigned char*  m_data;
    int             m_width;
    int             m_height;
    int             m_components;
    //int             m_channels;
};

} // ApplicationFramework namespace
