// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "display/Color.hpp" namespace Dawn { class ITexture { public: /** * Returns the width of the texture. * * @return Width of the texture. */ virtual int32_t getWidth() = 0; /** * Returns the height of the texture. * * @return Height of the texture. */ virtual int32_t getHeight() = 0; /** * Initializes a texture. * * @param width Width of the texture (in pixels). * @param height Height of the texture (in pixels). */ virtual void setSize(int32_t width, int32_t height) = 0; /** * Fill a texture with a single color. This is stupidly costly. * * @param color Color to fill. */ virtual void fill(struct Color) = 0; /** * Returns true only when the texture has been loaded, sized and put on * the gpu for rendering. * * @return True if ready, otherwise false. */ virtual bool_t isReady() = 0; /** * Buffer pixel data onto the GPU. Pixel buffering is rather costly so * avoid doing this too often. * * @param pixels Array of pixels you're trying to buffer. * @return The amount of bytes buffered to the texture. */ virtual void buffer(struct Color pixels[]) = 0; }; }