LO27/LibGui/gui.h

93 lines
2.3 KiB
C

/*
* This is a gui for the cellular automaton library
*
* Copyright (C) 2016-2017 Antoine BARTUCCIO, Jean POREE DE RIDDER
*
* Licensed under the MIT License,(the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* hhttps://opensource.org/licenses/MIT
*
* 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 PIXEL_H_INCLUDED
#define PIXEL_H_INCLUDED
#include <SDL2/SDL.h>
#include <CellElement.h>
#include <matrix.h>
typedef struct {
SDL_Window * window;
SDL_Renderer * renderer;
int WIDTH;
int HEIGHT;
SDL_Event event;
} SCREEN;
/**
* Set a pixel on a given screen
* @param screen the screen to display the pixel
* @param x x position
* @param y y position
* @param value display white if true and black if false
*/
void setPixel(SDL_Renderer *renderer, int x, int y, bool value);
/**
* Display an entire matrix on a given screen
* @param screen the screen where the matrix should be displayed
* @param m a Matrix
*/
void displayMatrixSDL(SCREEN *screen, Matrix m);
/**
* Wait until the user press the enter key
* @param screen the screen where the renderer is
*/
void waitUntilEnter(SCREEN * screen);
/**
* Print a matrix in a new SDL window
* @param Matrix the matrix to display
* @return int error code
*/
int newWindowFromMatrix(Matrix m);
/**
* Display a message and ask for yes or no to the user
* @param message the message to display
* @return bool the answer
*/
bool inputYesOrNo(char message[]);
/**
* Display matrix choosing the right function
* @param m a Matrix
* @param useSDL a bool
*/
void displayMatrixGUI(Matrix m, bool useSDL);
/**
* Get a number from the user safely
* @param min the minimal authorized number
* @param max the maximal authorized number
* @return int the input number
*/
int safeNumberInput(int min, int max);
/**
* Clears the buffer of stdin
*/
void clearBuffer();
#endif