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. --- example/main.cpp | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 example/main.cpp (limited to 'example/main.cpp') diff --git a/example/main.cpp b/example/main.cpp new file mode 100644 index 0000000..67f4487 --- /dev/null +++ b/example/main.cpp @@ -0,0 +1,157 @@ +#include +#include +#include "gfx.h" +#include "main.h" +#include "gui.h" +int loop; +float sum; +butt butts; +tbuff texts; +std::string output; +int main (int argc, char * argv[]) { + //inits program + initgfx(400,600, "SDL calculator"); + //main loop, this is defined in main.h and global + loop = 1; + SDL_Texture * ttp = loadtexture("img/blue.bmp"); + sum = -1; + //adds the gui elements + butts.add(50,400,50,20, "reset"); + butts.add(250,400,100,20, "calculate"); + butts.add(380,0,20,20, "x"); + texts.add(50,50,300,20); + texts.add(50,100,300,20); + texts.add(50,150,300,20); + texts.add(50,200,300,20); + + while(loop) { + //polls events, which are in a buffer + //returns 1 if there is event in buffer + //returns 0 if buffer is empty + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch (event.type) { + //loop is a global defined in main.h + case SDL_QUIT: + printf("loop = 0;\n"); + loop = 0; + break; + //adds to the text input manager + case SDL_TEXTINPUT: + //if the input buffer was empty before, + //make it the text, which is char[] which + //is *char + texts.charin( event.text.text); + printf("text input event\n"); + break; + //this only applies if you're typing in chinese + case SDL_TEXTEDITING: + printf("text editing event\n"); + break; + //for when the moose moves + case SDL_MOUSEMOTION: + butts.hover(event.motion.x, event.motion.y); + texts.hover(event.motion.x, event.motion.y); + break; + //left click only, double clicks cancer out so only odd + case SDL_MOUSEBUTTONDOWN: + if(( event.button.button == SDL_BUTTON_LEFT) && ((event.button.clicks % 2) != 0)) { + butts.press(event.button.x, event.button.y); + texts.press(event.button.x, event.button.y); + } + break; + } + } + //checks the states of the buttons and handles them accordingly + if (butts.state(0) & TOGGLE) { + //returns all the text buffers to "" + texts.reset(); + //toggles the state of the button back to off + butts.unpress(0); + } + //actually calculates + if (butts.state(1) & TOGGLE) { + sum = 0; + //since only error is an exception + try { + sum += stof(texts.buffs[0]); + sum += stof(texts.buffs[1]); + sum += stof(texts.buffs[2]); + sum += stof(texts.buffs[3]); + sum = sum / 4.0; + output = std::to_string(sum); + //I know that sum can be -1, but NULL doesn't work well in cpp + //and I don't want to use a second variable + } catch (std::invalid_argument& a) { + sum = -1; + //untoggles buton + output = "inputs not valid"; + } + butts.unpress(1); + } + //quits the program + if (butts.state(2) & TOGGLE) { + loop = false; + butts.unpress(2); + } + cleargfx(); + //grade score color + SDL_Color outc; + outc.r = 255; + outc.g = 255; + outc.b = 255; + outc.a = 255; + //the text box labesl + drawtext(0,50,"Test1",outc); + drawtext(0,100,"Test2",outc); + drawtext(0,150,"Test3",outc); + drawtext(0,200,"Test4",outc); + //load grade image + SDL_Surface * tsp; + SDL_Texture * ttp; + + //so we don't assign a grade to NOT VALID + if (sum != -1) { + if (sum >= 90) { + tsp = SDL_LoadBMP("img/A.bmp"); + drawtext(100,450,"A",outc); + } else if( sum >= 80) { + tsp = SDL_LoadBMP("img/B.bmp"); + drawtext(100,450,"B",outc); + } else if (sum >= 70){ + tsp = SDL_LoadBMP("img/C.bmp"); + drawtext(100,450,"C",outc); + } else if (sum >= 60){ + tsp = SDL_LoadBMP("img/D.bmp"); + drawtext(100,450,"D",outc); + } else { + tsp = SDL_LoadBMP("img/F.bmp"); + drawtext(100,450,"F",outc); + } + ttp = SDL_CreateTextureFromSurface(renderp, tsp); + drawimg(100,450,50,50,ttp); + SDL_FreeSurface(tsp); + SDL_DestroyTexture(ttp); + } + + + //draws the grade score + drawtext(180,450,output.c_str(),outc); + //draws all buttons + butts.drawbutt(); + //draws text buffer + texts.drawtbuff(); + //updates frame + //since only error is an exception + //all the work is done here + + drawimg(0,0,20,20,"img/red.bmp"); + drawimg(20,20,10,10,ttp); + drawrect(0,20,10,10,255,255,255,50); + updategfx(); + } + SDL_DestroyTexture(ttp); + quitgfx(); + return 0; +} + -- cgit v1.1