From f67a1dfab41b215b06bf2a676098271cf291a89c Mon Sep 17 00:00:00 2001 From: "Amine B. Hassouna" Date: Tue, 20 Nov 2018 18:03:04 +0100 Subject: [PATCH] Add utility functions --- include/utils.h | 63 +++++++++++++++++++++++++++++++++++++++++++ src/main.c | 11 +++----- src/utils.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 include/utils.h create mode 100644 src/utils.c diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..772cb76 --- /dev/null +++ b/include/utils.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2018 Amine Ben Hassouna + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any + * person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the + * Software without restriction, including without + * limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software + * is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice + * shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef UTILS_H +#define UTILS_H + +#include + + +// Define MAX and MIN macros +#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) +#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) + + +#define COLOR_BREAKUP(COLOR) COLOR.r, COLOR.g, COLOR.b, COLOR.a + +extern const SDL_Color COLOR_TRANSPARENT; +extern const SDL_Color COLOR_BLACK; +extern const SDL_Color COLOR_WHITE; +extern const SDL_Color COLOR_GRAY; +extern const SDL_Color COLOR_DARK_GRAY; +extern const SDL_Color COLOR_LIGHT_GRAY; +extern const SDL_Color COLOR_RED; +extern const SDL_Color COLOR_GREEN; +extern const SDL_Color COLOR_BLUE; +extern const SDL_Color COLOR_YELLOW; + + +void Utils_setBackgroundColor(SDL_Renderer *renderer, SDL_Color color); + +long long Utils_time(); + +void Utils_randInit(); +int Utils_rand(int min, int max); + +#endif // UTILS_H diff --git a/src/main.c b/src/main.c index 0a7f61e..03b0483 100644 --- a/src/main.c +++ b/src/main.c @@ -33,9 +33,7 @@ #include -// Define MAX and MIN macros -#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) -#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) +#include "utils.h" // Define screen dimensions #define SCREEN_WIDTH 800 @@ -102,11 +100,8 @@ int main(int argc, char* argv[]) quit = true; } - // Initialize renderer color white for the background - SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); - - // Clear screen - SDL_RenderClear(renderer); + // Set backgroud color + Utils_setBackgroundColor(renderer, COLOR_WHITE); // Set renderer color red to draw the square SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF); diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 0000000..c4d84e4 --- /dev/null +++ b/src/utils.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2018 Amine Ben Hassouna + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any + * person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the + * Software without restriction, including without + * limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software + * is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice + * shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "utils.h" + +#include + + +const SDL_Color COLOR_TRANSPARENT = {0}; +const SDL_Color COLOR_BLACK = {0, 0, 0, 255}; +const SDL_Color COLOR_WHITE = {255, 255, 255, 255}; +const SDL_Color COLOR_GRAY = {100, 100, 100, 100}; +const SDL_Color COLOR_DARK_GRAY = {30, 30, 30, 30}; +const SDL_Color COLOR_LIGHT_GRAY = {200, 200, 200, 200}; +const SDL_Color COLOR_RED = {255, 0, 0, 255}; +const SDL_Color COLOR_GREEN = {0, 255, 0, 255}; +const SDL_Color COLOR_BLUE = {0, 0, 255, 255}; +const SDL_Color COLOR_YELLOW = {0, 255, 255, 255}; + +void Utils_setBackgroundColor(SDL_Renderer *renderer, SDL_Color color) +{ + // Initialize renderer color + SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a); + + // Clear screen + SDL_RenderClear(renderer); +} + +long long Utils_time() +{ + struct timespec t; + clock_gettime(CLOCK_MONOTONIC_RAW, &t); + return t.tv_sec * 1000 + t.tv_nsec / 1000000; +} + +void Utils_randInit() +{ + srand(time(NULL)); +} + +int Utils_rand(int min, int max) +{ + return ( rand() % (max + 1) ) + min; +}