From 8eb0808fecb8c57eff877fddf38db91b1f067921 Mon Sep 17 00:00:00 2001 From: knolax <1339802534.kk@gmail.com> Date: Tue, 28 Feb 2017 11:07:10 -0500 Subject: initial commit, this is the gfx library which serves as a crappy wrapper for SDL. --- gfx.cpp | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 gfx.cpp (limited to 'gfx.cpp') diff --git a/gfx.cpp b/gfx.cpp new file mode 100644 index 0000000..ca597d5 --- /dev/null +++ b/gfx.cpp @@ -0,0 +1,152 @@ +#include "gfx.h" +//all the global variables first set here +SDL_Window *mwindowp; // main window were everything foes +SDL_DisplayMode * screenp; +SDL_Renderer * renderp; +TTF_Font * fontp; +int maxx; +int maxy; +int initgfx(int x, int y,const char * title) { + //initializing SDL 2 + SDL_Init(SDL_INIT_EVERYTHING); + //sets global variables for ease of access later + //they are 100 by 200 for now because DisplayMode takes long to implement + //screen resizes are handled by sdl events + //we're not gonna hcange these for now + maxx = x; + maxy = y; + //makes sdl compatible with opengl(for later use) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); + //creates window + mwindowp = SDL_CreateWindow(title, 0, 0, maxx, maxy, SDL_WINDOW_OPENGL); + //renderer to write to + //the int selects which drivers, -1 just selects first applicatble + renderp = SDL_CreateRenderer(mwindowp, -1,SDL_RENDERER_ACCELERATED); + //load truetype font + int err = TTF_Init(); + fontp = TTF_OpenFont("Terminus.ttf",18); + if (fontp == NULL) { + printf("font failed to load\n"); + printf("ttf error %s",TTF_GetError()); + } + return 0; +} +//two draw functions for convenience +int drawimg(int x, int y, int w, int h,SDL_Texture * tex) { + SDL_Rect r; + r.x = x; + r.y = y; + r.w = w; + r.h = h; + //null means entire source texture + SDL_RenderCopy(renderp, tex, NULL, &r); + return 0; + +} +int drawimg(SDL_Rect r, SDL_Texture * tex) { + SDL_RenderCopy(renderp, tex, NULL, &r); + return 0; +} +SDL_Texture * loadtexture(const char * file) { + SDL_Surface * tsp; + SDL_Texture * ttp; + tsp = SDL_LoadBMP(file); + ttp = SDL_CreateTextureFromSurface(renderp, tsp); + SDL_SetTextureBlendMode(ttp, SDL_BLENDMODE_ADD); + SDL_FreeSurface(tsp); + return ttp; +} +int drawimg(int x, int y, int w, int h, const char * file) { + SDL_Texture * ttp = loadtexture(file); + drawimg(x,y,w,h,ttp); + SDL_DestroyTexture(ttp); +} +int drawrect (int x, int y, int w, int h, const char * color) { + std::string str; + str = color; + SDL_Rect r; + r.x = x; + r.y = y; + r.w = w; + r.h = h; + if (!str.compare("red")) { + SDL_SetRenderDrawColor(renderp,255,0,0,255); + } + if (!str.compare("blue")) { + SDL_SetRenderDrawColor(renderp,0,0,255,255); + } + if (!str.compare("orange")) { + SDL_SetRenderDrawColor(renderp,255,180,20,255); + } + if (!str.compare("white")) { + SDL_SetRenderDrawColor(renderp,255,255,255,255); + } + if (!str.compare("black")) { + SDL_SetRenderDrawColor(renderp,0,0,0,255); + } + SDL_RenderFillRect(renderp,&r); + SDL_SetRenderDrawColor(renderp,0,0,0,255); + return 0; +} +int drawrect (int x, int y, int w, int h,int r, int g, int b, int a) { + SDL_Rect rect; + rect.x = x; + rect.y = y; + rect.w = w; + rect.h = h; + SDL_SetRenderDrawColor(renderp,r,g,b,a); + SDL_SetRenderDrawBlendMode(renderp, SDL_BLENDMODE_ADD); + SDL_RenderFillRect(renderp,&rect); + SDL_SetRenderDrawColor(renderp,0,0,0,255); + return 0; +} +//draws text +int drawtext(int x, int y,const char * text, SDL_Color c) { + //surface the font renderer writes to + SDL_Surface * sp; + //color of text + SDL_Color co; + co.r = 100; + co.g = 100; + co.b = 100; + co.a = 100; + //renders text with global font + sp = TTF_RenderText_Solid(fontp, text, c); + //texture to actually draw + SDL_Texture * tp; + tp = SDL_CreateTextureFromSurface(renderp, sp); + //the surface has to be freed because it is only used once and the pointer + //to it was declared in a funcion + SDL_FreeSurface(sp); + //finding the width and height of the text + int w; + int h; + SDL_QueryTexture(tp, NULL, NULL, &w, &h); + //drawing the texture + drawimg(x, y, w, h, tp); + SDL_DestroyTexture(tp); +} +//this is where almost all of the grame code is +int updategfx() { + + //checks the states of the buttons and handles them accordingly + + //clears renderer buffer + + SDL_RenderPresent(renderp); + return 0; +} +int cleargfx() { + SDL_RenderClear(renderp); +} +//quits all the libraries and releases some memory +int quitgfx() { + //release of context + SDL_DestroyRenderer(renderp); + TTF_Quit(); + SDL_Quit(); + return 0; +} -- cgit v1.1