Add utility functions

This commit is contained in:
Amine B. Hassouna
2018-11-20 18:03:04 +01:00
parent 9a9d4df97a
commit f67a1dfab4
3 changed files with 137 additions and 8 deletions

63
include/utils.h Normal file
View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 2018 Amine Ben Hassouna <amine.benhassouna@gmail.com>
* 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 <SDL2/SDL.h>
// 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

View File

@@ -33,9 +33,7 @@
#include <SDL2/SDL.h>
// 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);

71
src/utils.c Normal file
View File

@@ -0,0 +1,71 @@
/*
* Copyright (c) 2018 Amine Ben Hassouna <amine.benhassouna@gmail.com>
* 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 <time.h>
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;
}