#ifndef DRAW_H_INCLUDED #define DRAW_H_INCLUDED #include #include #include ///OGL texture structs //textures are the format OGL blits, non editable data -(loaded sprites/images) struct OGL_Texture{ protected: bool texture_generated; public: GLuint Texture_ID; uint32_t w,h; void gen_texture(uint16_t w, uint16_t h, uint8_t *PixData); OGL_Texture(); ~OGL_Texture(); }; //surfaces contain editable pixel data, can be cast to textures for blitting -(effects, debug/primitive data draws) struct OGL_Surface : OGL_Texture{ uint32_t w,h; uint8_t bpp; uint8_t *PixData; void Create_Surface(uint16_t w,uint16_t h, char bpp); void Clear_Surface(uint8_t r, uint8_t g, uint8_t b, uint8_t a=255); void Set_Surface_AlphaKey(uint8_t r, uint8_t g, uint8_t b); void gen_texture(); OGL_Surface(); ~OGL_Surface(); }; OGL_Texture *Texture_Cast(OGL_Surface *Surface); //////// //BLIT// //////// enum Image_Options{ IMG_NORM = 0, IMG_HFLIP = 1, IMG_VFLIP = 2, IMG_ADD_BLEND = 3 }; void DrawImage(OGL_Texture *Texture, int dx, int dy, float rot=0.0,float scale_x=1.0,float scale_y=1.0,float alpha=1.0,int options=0); void DrawSubImage(OGL_Texture *Texture, int sx, int sy, int sw, int sh, int dx, int dy, float rot=0.0,float scale_x=1.0,float scale_y=1.0,float alpha=1.0,int options=0); ////////// //COLOUR// ////////// uint32_t make_col(uint8_t r, uint8_t g, uint8_t b, uint8_t a); uint32_t make_col(uint8_t r, uint8_t g, uint8_t b); /////////////////// //DRAW PRIMITIVES// /////////////////// bool putpixel(OGL_Surface *Surface, int x, int y, uint32_t col); bool getpixel(OGL_Surface *Surface, int x, int y, uint32_t &col); // void hline(OGL_Surface *Surface, int x, int y, int w, uint32_t col); void vline(OGL_Surface *Surface, int x, int y, int h, uint32_t col); void line(OGL_Surface *Surface, int x1, int y1, int x2, int y2, uint32_t col); void box(OGL_Surface *Surface, int x, int y, int w, int h, uint32_t col); void rect(OGL_Surface *Surface, int x, int y, int w, int h, uint32_t col); void polyline(OGL_Surface *Surface, unsigned char n, int points[], uint32_t col); void polygon(OGL_Surface *Surface, unsigned char n, int points[], uint32_t col); void circle(OGL_Surface *Surface, int x0, int y0, int radius, uint32_t col); void circle_fill(OGL_Surface *Surface, int x0, int y0, int radius, uint32_t col); // #endif // DRAW_H_INCLUDED