From cdc5d643bb3256c50dd9787873b314c80e8f407e Mon Sep 17 00:00:00 2001 From: Richard Knight Date: Tue, 25 Aug 2020 16:14:43 +0100 Subject: initial --- src/tests.cpp | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 src/tests.cpp (limited to 'src/tests.cpp') diff --git a/src/tests.cpp b/src/tests.cpp new file mode 100644 index 0000000..2ca0ea4 --- /dev/null +++ b/src/tests.cpp @@ -0,0 +1,171 @@ +/*This source code copyrighted by Lazy Foo' Productions (2004-2019) +and may not be redistributed without written permission.*/ + +//Using SDL, SDL_image, standard IO, math, and strings +#include + +#include +#include +#include + +//Screen dimension constants +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +//Starts up SDL and creates window +bool init(); + +//Loads media +bool loadMedia(); + +//Frees media and shuts down SDL +void close(); + +//Loads individual image as texture +SDL_Texture* loadTexture( std::string path ); + +//The window we'll be rendering to +SDL_Window* gWindow = NULL; + +//The window renderer +SDL_Renderer* gRenderer = NULL; + +bool init() +{ + //Initialization flag + bool success = true; + + //Initialize SDL + if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) + { + printf( "SDL could not initialize! SDL Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Set texture filtering to linear + if( !SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "1" ) ) + { + printf( "Warning: Linear texture filtering not enabled!" ); + } + + //Create window + gWindow = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); + if( gWindow == NULL ) + { + printf( "Window could not be created! SDL Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Create renderer for window + gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED ); + if( gRenderer == NULL ) + { + printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Initialize renderer color + SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF ); + + } + } + } + + return success; +} + +bool loadMedia() +{ + //Loading success flag + bool success = true; + + //Nothing to load + return success; +} + +void close() +{ + //Destroy window + SDL_DestroyRenderer( gRenderer ); + SDL_DestroyWindow( gWindow ); + gWindow = NULL; + gRenderer = NULL; + + //Quit SDL subsystems + SDL_Quit(); +} + +int main( int argc, char* args[] ) +{ + //Start up SDL and create window + if( !init() ) + { + printf( "Failed to initialize!\n" ); + } + else + { + //Load media + if( !loadMedia() ) + { + printf( "Failed to load media!\n" ); + } + else + { + //Main loop flag + bool quit = false; + + //Event handler + SDL_Event e; + + //While application is running + while( !quit ) + { + //Handle events on queue + while( SDL_PollEvent( &e ) != 0 ) + { + //User requests quit + if( e.type == SDL_QUIT ) + { + quit = true; + } + } + + //Clear screen + SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF ); + SDL_RenderClear( gRenderer ); + + //Render red filled quad + SDL_Rect fillRect = { SCREEN_WIDTH / 4, SCREEN_HEIGHT / 4, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 }; + SDL_SetRenderDrawColor( gRenderer, 0xFF, 0x00, 0x00, 0xFF ); + SDL_RenderFillRect( gRenderer, &fillRect ); + + //Render green outlined quad + SDL_Rect outlineRect = { SCREEN_WIDTH / 6, SCREEN_HEIGHT / 6, SCREEN_WIDTH * 2 / 3, SCREEN_HEIGHT * 2 / 3 }; + SDL_SetRenderDrawColor( gRenderer, 0x00, 0xFF, 0x00, 0xFF ); + SDL_RenderDrawRect( gRenderer, &outlineRect ); + + //Draw blue horizontal line + SDL_SetRenderDrawColor( gRenderer, 0x00, 0x00, 0xFF, 0xFF ); + SDL_RenderDrawLine( gRenderer, 0, SCREEN_HEIGHT / 2, SCREEN_WIDTH, SCREEN_HEIGHT / 2 ); + + //Draw vertical line of yellow dots + SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0x00, 0xFF ); + for( int i = 0; i < SCREEN_HEIGHT; i += 4 ) + { + SDL_RenderDrawPoint( gRenderer, SCREEN_WIDTH / 2, i ); + } + + //Update screen + SDL_RenderPresent( gRenderer ); + } + } + } + + //Free resources and close SDL + close(); + + return 0; +} \ No newline at end of file -- cgit v1.2.3